Interactive Cat Toy -- Eddie Lever ITTT

by nresdga in Living > Pets

276 Views, 0 Favorites, 0 Comments

Interactive Cat Toy -- Eddie Lever ITTT

Vocer.jpg
MainV1.jpg

Het beste idee dat ik ooit voor dit project kreeg was om een katten speeltje te maken. Het speeltje is een interactieve doos die wordt geactiveerd door een bewegingssensor waarna een prooi verschijnt of verdwijnt. De foto is ter illustratie. Ze vonden het interessant nog voordat ik hem aan had gezet.

Dit was niet mijn oorspronkelijke idee, maar na hard nadenken over het concept ben ik toch van gedachte veranderd. Ik houd van mijn katten en dat maakt ook dat ik het leuk vind om te zien dat ze interesse tonen in iets dat ik speciaal voor hun heb gemaakt.


Deze Instructable beschrijft hoe ik het project heb doorlopen. Het is een persoonlijk speeltje voor je katten, dus pas sommige visuele aspecten dan ook aan naar de interesses van je eigen katten.

Supplies

Voor de doos heb je de volgende onderdelen nodig:

  • Arduino Uno
  • Arduino IDE Software (https://www.arduino.cc/en/Main/Software)
  • Bewerkbare doos
  • Micro Servo SG90
  • PIR HCSR-501 Motion Sensor
  • 3 Male to Male Jumper Kabels
  • 3 Female to Male Jumper Kabels
  • Soldeer tin
  • 9V Batterij
  • 9V Batterijclip
  • Stukje dun karton of dik papier
  • Stuk piepschuim
  • Isolatietape
  • Schuurpapier
  • Stift

Circuit

Brilliant Fulffy-Blad.png
PIR_Cables.jpg
PIRGesoldeerd.jpg
RoodGewikkeld.jpg
RoodGesoldeerd.jpg

PIR HCSR-501 Motion Sensor

De jumper kabels die ik voor de PIR heb gebruikt zijn de kleuren rood, kers-achtig en bruin. Op de foto zie je hoe ik de kabels heb gesoldeerd aan de sensor. De enige reden waarom ik dat deel heb gesoldeerd is omdat ik geen FM kabels tot mijn beschikking had. Maak niet dezelfde fout als ik.

Het was even puzzelen hoe ik de bewegingssensor kon verbinden met de rest. Ik had oprecht geen idee hoe ik dit moest aanpakken. De manier waarop ik dat probleem toch heb weten te tackelen, is door aan 1 kant van de jumper kabels de Male uiteindes en het laatste stuk gekleurd plastic eraf te snijden en het metaal eronder blootleggen. Die heb ik vervolgens gewikkeld om de pinnen van de PIR, ook nog eens gesoldeerd zodat de kabels op hun plek blijven en niet in aanraking komen met de naastliggende pinnen.

LET OP: rood is hierbij de uitzondering. Bij rood heb ik beide uiteindes verwijderd en het metalen draad blootgelegd. Dit zal in de vervolgstappen duidelijk worden waarom.

Daarna kan je de kabels in de pinnen van de Arduino Uno doen:

  • kers-achtig --> digital 7
  • bruin --> digital GND

Samenvatting

  1. Rode kabel: beide Male uiteindes eraf snijden en deel van metalen draad blootleggen
  2. Kers- en Bruine kabel: alleen 1 kant van de Male uiteindes eraf snijden en deel van metalen draad blootleggen
  3. Kabels om de pinnen van de PIR wikkelen zoals te zien is op de eerste foto van Stap 1
  4. De gewikkelde kabels solderen aan de PIR pinnen
  5. De kabels kers en bruin in de desbetreffende Arduino pinnen doen


Of dit de beste manier was geweest? Waarschijnlijk niet, zou ik het de volgende keer weer zo doen? Waarschijnlijk wel, tenzij ik Female to Male jumper kabels heb.


Micro Servo SG90

Het Servo kabeltje heeft Female uiteindes van 3 verschillende kleuren. Voor eigen gemak heb ik dezelfde kleuren voor de jumper kabels proberen te gebruiken. Hieronder zie je welke kabels ik aan elkaar heb gekoppeld en in welke pinnen van de Arduino Uno ze horen.

  • rood1 --> rood2 --> analog pin 5V
  • bruin --> zwart --> analog pin GND (onder de rode kabel)
  • geel --> oranje --> digital pin ~9

Maar voordat je de kabels op de goede positie plaatst, moet je eerst nog wat doen voor de rood2. Rood2 moet namelijk gekoppeld worden aan de rode kabel van de PIR. Hoe? Ook dit moest ik eerst ondervinden voordat ik een idee had. Op de foto zie je dat er 2 rode kabels gesoldeerd zijn aan elkaar. Je moet een klein stukje van het plastic verwijderen en daar de andere uiteinde van de rode PIR kabel omheen wikkelen. Ook dit had ik vervolgens aan elkaar gesoldeerd. Als je dit heb gedaan kan je de kabels in de juiste pinnen plaatsten van de Arduino. Als je deze stap overslaat heeft de PIR geen stroom. De 5V zorgt er namelijk voor de output.


Had ook dit anders gekund? Waarschijnlijk wel, weet ik hoe? Eerlijk, nee.

Code

CicuitWroks

Ik was op werk bezig met andere dingen toen ik me later realiseerde dat het circuit/code werkte! Om het ook werkend te krijgen, moet je de onderstaande code in je project plakken:


/*

 * Created by ArduinoGetStarted.com

 *

 * This example code is in the public domain

 *

 * Tutorial page: https://arduinogetstarted.com/tutorials/arduino-motion-sensor-servo-motor

 */


#include <Servo.h>


// constants won't change

const int MOTION_SENSOR_PIN = 7; // Arduino pin connected to motion sensor's pin

const int SERVO_PIN    = 9; // Arduino pin connected to servo motor's pin


Servo servo; // create servo object to control a servo


// variables will change:

int angle = 0;     // the current angle of servo motor

int lastMotionState;  // the previous state of motion sensor

int currentMotionState; // the current state of motion sensor


void setup() {

 Serial.begin(9600);        // initialize serial

 pinMode(MOTION_SENSOR_PIN, INPUT); // set arduino pin to input mode

 servo.attach(SERVO_PIN);     // attaches the servo on pin 9 to the servo object


 servo.write(angle);

 currentMotionState = digitalRead(MOTION_SENSOR_PIN);

}


void loop() {

 lastMotionState  = currentMotionState;      // save the last state

 currentMotionState = digitalRead(MOTION_SENSOR_PIN); // read new state


 if (currentMotionState == LOW && lastMotionState == HIGH) { // pin state change: LOW -> HIGH

  Serial.println("Motion detected!");

  servo.write(90);

 }

 else

 if (currentMotionState == HIGH && lastMotionState == LOW) { // pin state change: HIGH -> LOW

  Serial.println("Motion stopped!");

  servo.write(0);

 }

}


*de code heb ik niet zelf geschreven, staat ook vermeld in de code zelf waar hij vandaan komt.

Behuizing

Doos_Slit_Ex3.jpg
Doos_Slit_Ex4.jpg
StipPIR.jpg
HolePIR.jpg

De doos die ik heb gebruikt heb ik bij de action gehaald. Je kan natuurlijk ook een kartonnen doos gebruiken. Zorg er wel voor dat hij voornamelijk niet te klein is om het circuit weg te werken. Mijn behuizing is ongeveer 20 x 15 x 12 cm.

Het idee is dat de prooi door de doos omhoog en omlaag beweegt. Hiervoor moet je een sleuf maken aan de bovenkant van de doos. Het is belangrijk dat je de sleuf breed genoeg maakt voor enige speling als het prooi van binnen naar buiten beweegt. Deze doos had al een mini sleuf, die heb ik breder gemaakt door een stukje schuurpapier heen en weer te bewegen. De dikte van de sleuf hangt af of je dun karton of dik papier gebruikt. Mocht je dit gaan laser snijden, dan kan je in je ontwerp een sleuf tekenen. Doe je dit met een kartonnen doos, dan kan je aan de bovenkant van de doos een sleuf afmeten en eruit snijden.

Voor de prooi kan je van alles bedenken. Mijn katten houden van karton en jagen graag op vliegen en spinnen. Ik heb daarom voor gekozen om op het uiteinde van het stukje karton een spin te tekenen met stift.


Aan de voorkant van de behuizing moet de PIR bewegingssensor komen. Zonder de sensor is het niet een interactief speeltje en zal de prooi niet tevoorschijn komen. Ik heb met een stift een stipje gemaakt en dat stipje uitgeschuurd tot de grootte van de PIR. Hij heeft een kijkhoek van 120ยบ dus geen zorgen als het 'oog' er niet helemaal doorheen komt.

De Binnenkant

InsideFinished.jpg
InsideInspection.jpg

LET OP: doe het veilig met ISOLATIETAPE!

Heb ik duidelijk niet gedaan. Ik dacht: 'Ahh, dat kan wel.' Laat het speeltje niet te lang aan staan als je het ook met plakband doet, maar liever niet. En laat hem ook niet alleen achter met de katten zolang de Arduino aangesloten is op een stroomvoorziening.


In principe is het nu de losse componenten aan de binnenkant van de behuizing vastmaken. Het piepschuim heb ik daarentegen vastgelijmd aan de doos op hoogte voor de prooi sleuf, maar de rest heb ik met plakband vastgemaakt. De batterij zit voor het gemak los. Dan kon ik makkelijker de batterij vervangen en het speeltje sneller van het stroom afhalen mocht het te warm worden. MAAK HET VAST MET ISOLATIETAPE! Of gebruik helemaal geen tape als de doos dicht kan en het circuit veilig kan liggen.

Voordat we gingen playtesten wilde Pancake nog een laatste inspectie doen. Natuurlijk was ik gezakt, maar ze wilde zo graag spelen dat we het toch even hebben gedaan.

SPELEN MAAR!

Mooncake's Review
Pancake's Review

Mooncake vond het een eng ding. Ze was nieuwsgierig genoeg om te komen kijken, maar daar hielt het dan ook bij op. Ze durfde alleen te komen sniffen als de batterij niet aangesloten was.

Pancake aan de andere kant, vond het zo leuk dat ze na een paar keer uitproberen besloot dat vangen met haar mondje de beste manier was zoals je kan zien in de video. En zoals je ook kon horen is het speeltje nog niet helemaal catto-proof. Toch vind ik het een geslaagd speeltje. Ik kon de servo en prooi makkelijk herstellen naar Pancake's grote plezier.


Dit speeltje raad ik aan voor katten die niet zo snel bang zijn voor nieuw en onbekende dingen. Zeker als de kat niet gelijk weg schrikt door onverwachte geluidjes of bewegingen. Misschien vinden andere soorten huisdiertjes zoiets ook leuk, maar ik kan daar geen eerlijk antwoord opgeven aangezien ik alleen ervaring met katten heb.

Reflectie

Proof_She_Killed_It.jpg

Zie bewijs. Pancake, AKA Terror Kitten, heeft haar prooi ernstig verwond. Dat is voor mij het belangrijkste, meisje Pancake had het leuk jagen op haar speeltje.


Wat ik heb geleerd over de PIR HCSR-501 Motion Sensor is dat het eigenlijk geen bewegingssensor is. PIR staat voor Passive InfraRed. Wat betekend dat het een sensor is die fluctuaties in thermische uitstoot waarneemt, oftewel een soort warmte sensor. Dit is iets waar ik tijdens het in elkaar zetten van de behuizing niet aan dacht. Om te testen of het werkte zwaaide ik met mijn hand voor de PIR, maar elke keer werkte hij niet. Hij werkte alleen als er iemand van een afstandje langs liep. Ik was zo erg gefrustreerd, want ik begreep het oprecht niet. Maar, dus een bewegingssensor is een 'warmte sensor' die geactiveerd wordt als het een 'beweging' ziet in hitte. Ik wist voordat ik begon met dit project dat de automatische papier dispensers bij openbare toiletten ook zo'n PIR sensor hebben. Als hij niet werkt als je ervoor met je hand zwaait, dan moet je eerst in je handen wrijven om ze warm te maken en dan pas 'ziet' de sensor jouw hand. Toen ik hier opeens aan dacht wreef ik in mijn handen en zwaaide ik voor de sensor, en jawel hoor: hij werkte!

Verder vond ik zelf dat ik wel met goeie alternatieven was gekomen om toch het speeltje in elkaar te zetten zonder Arduino ervaring. Sommige oplossingen waren niet echt veilig, maar het werkte voor nu.

Bronvermelding

  1. Arduino - Motion sensor - Servo motor | Arduino Getting started. (z.d.). Arduino Getting Started. https://arduinogetstarted.com/tutorials/arduino-motion-sensor-servo-motor
  2. Login | TinkerCad. (z.d.-b). Tinkercad. https://www.tinkercad.com/things/fCoTJE8UOth