BirdBox

by Ravixan in Circuits > Arduino

355 Views, 1 Favorites, 0 Comments

BirdBox

DSC_0113.JPG
DSC_0112.JPG

Voor het vak ITTT wilde ik iets maken wat de verveling van mijn katten zou bestrijden. Vooral mijn jongste kat doet vaak irritant nu we de hele dag thuiszitten met de lockdown, maar haar geen aandacht kunnen geven i.v.m. shool/werk. Daarom heb ik een interactief kattenspeeltje bedacht zodat zij zichzelf kunnen bezighouden wanneer er niemand met ze kan spelen: de BirdBox

Het idee achter de BirdBox kwam voort uit 2 ervaringen:

De eerste was toen ik een nieuwe speakerset had gekocht en in een game stilstond waar vogeltjes aan het fluiten waren. Mijn kat reageerde daar heel heftig op en ging mijn kamer doorzoeken in alle gaten en kieren om het geluid te vinden.
De tweede was de opmerking van Tim dat katten vaak een speeltje minder interessant vinden dan de doos zelf waarin je het gekocht hebt.
Ik heb daarom deze twee ingevingen gebruikt voor mijn concept.

Supplies

Arduino:

  • Arduino Uno + USB kabel
  • 1 x HC-SR04 Ultrasonic distance sensor
  • MicroSD card module voor Arduino
  • MicroSD kaart
  • Speakertje (niet te groot)
  • Jumper Wires

Behuizing:

  • Hout (5 vlakken van 40x40 cm, 1-1,5 cm dik)
  • Textiel en textiellijm (bekleding over hout)
  • Schroeven

Iteratie 1

Concept.png

Zoals je kunt zien aan het eerste ontwerp, is het een kleine, kubisch vormgegeven speelplaats voor katten waar sensoren reageren op de bewegingen van de kat en daardoor een vogelgeluidje laat afspelen. Zo doende, zou de kat moeten gaan rondzoeken om de bron van het geluid te vinden door het kleine huisje (want de speaker zit verstopt in een boxje waar de kat niet bij kan). Het is de bedoeling dat de kat rondjes blijft lopen om "het vogeltje" te vinden en zich zo bezighoudt.

In dit ontwerp wilde ik gebruik maken van druksensoren die in de ondergrond verwerkt zouden zijn. Na wat overleg en het onderzoeken van mogelijkheden heb ik besloten om de Ultrasonic distance sensor te gaan gebruiken voor het project, omdat die beter te verwerken zou zijn in het huisje.

Iteratie 2

Capture.PNG
Format design.png
DSC_0055.JPG

Ik vond het een prettige werkwijze om het ontwerp te visualiseren in 3D zodat je meteen alles op maat hebt en een sterker beeld krijg van wat je wilt maken, omdat je er omheen kan draaien.

De 3D visualisatie van mijn vorige ontwerp bleek te onpraktisch, omdat ik het object fysiek moet kunnen meenemen naar school. Ik heb het ontwerp daarom wat aangepast en daarbij rekening gehouden met het verwerken van de arduino en de Ultrasonic distance sensor in het design.

Daarna heb ik de houten vlakken uitgetekent en er voorlopige maten bij gezet. Deze maten zouden nog afwijken, omdat de dikte van de houtplaat ook invloed heeft op de contructie van de kubus. Dit heb ik later erbij berekend.

Zagen, Boren, Bekleden, Verven...

xanderinactie.png
xanderinactie2.png
DSC_0078.JPG
bekleden.jpg
final.jpg

Omdat het object in de woonkamer geplaatst zou worden, heb ik het uiterlijk erg serieus genomen van het ontwerp. Mijn moeder is namelijk niet de makkelijkste, alles moest zwart wit!

Met het zagen heb ik geprobeerd het speels te houden met gaten en kleinere ingangen zodat het de katten aantrekt om eens te gaan snuffelen. (Credits naar mijn vader om me hierbij te begelijden met alle verschillende zagen en opties om mijn ontwerp te verwezelijken!)
Hierbij moest ook rekening gehouden worden met de kastjes waarin de arduino, bedrading en speaker weggewerkt zou worden.

Het bekleden heb ik met een mooi zebraprint stofje gedaan, wat op maat geknipt moest worden en vervolgens gelijmd werd aan het hout. Het lapje stof was helaas niet groot genoeg om optimaal te bekleden, dus heb ik sommige vlakken met meerdere lappen bekleed (waardoor naden onstaan).

Vervolgens wat viltjes geplaatst op de onderkant, een lakje verf en wat laatste aanpassingen. Het resultaat was toen compleet en zelfs mijn moeder vond het mooi! Die blijft dus in de woonkamer.

Arduino: Circuit En Code

Code.png
Circuit_Final.png
DSC_0087.JPG

Het circuit is niet heel complex en de code is vooral afhankelijk van if-statements die de componenten met elkaar laten interacteren.
De code doorloop zou als volgt werken: de ultrasonic distance sensor meet een afstand, als die afstand binnen 2 bepaalde waardes wordt gemeten, triggert er een geluidsfragment uit de MicroSD card module die wordt afgespeeld uit de speaker. Hier zit een delay op om het geluidsfragment volledig te kunnen laten afspelen voordat de loop zich herhaalt.

Code beschrijving:

A: Deze sectie staat voor de setup en de loop. Hierin worden bepaalde pins aangespoort en libraries toegevoegd aan de code.

B: TMRpcm is een library die wordt gebruikt om .wav bestanden af te spelen van een SD kaart. In de setup staan ook een paar lijnen die checken of de SD kaart module werkt met de arduino voordat de loop start.

C: In de loop, wordt de afstand van de ultrasonic distance sensor gemeten in de serial monitor. Als de afstandswaarde binnen 1 en 50 centimeter is, wordt de aangewezen .wav file (bird sounds) afgespeeld. Daarna staat er een delay van 25000 milliseconds om zeker te stellen dat het audiofragment compleet is uitgespeeld voordat de loop zich herhaalt.
De basic tutorial die ik heb gevolgd voor de sensor:

D: Dit was een ongelukkig stukje code wat ik moest toevoegen om een probleem op te lossen: hoe vaker het audiofragment afspeelde, hoe zachter het werd en het krakeliger klonk. (zie volgende stap voor meer details)
Ik vermoed dat het met memory usage te maken had, maar ik ben niet achter het probleem gekomen. Dit stukje code ''reset'' de arduino naar de setup, zodat het niet alleen de loop herhaalt, maar eerst terugkeert naar de setup. Dit heeft gelukkig het probleem verholpen.
Code reference hiervoor: https://forum.arduino.cc/t/a-way-to-reenter-setup-...

Ervaringen

Tijdens het proces, kwam ik erachter dat audio en arduino een aantal valkuilen heeft. in mijn geval gebruikte ik een SD kaart met een audiobestandje en een kleine speaker. Tijdens het testen, kreeg ik enkel verschrikkelijk harde en krakende geluiden terug uit de speaker:

Na het bekijken van wat uitgebreidere tutorials, kwam ik erachter dat de audiobestanden moeten voldoen aan
bepaalde criterea, namelijk:

  • Het moet een .wav file zijn (uncompressed, geen .mp3)
  • De .wav moet omgezet worden naar 16000 Hz Mono, 8-bit

De informatie kwam uit deze video:

Helaas bleef ik hetzelfde probleem houden na deze stap. Na wat wikken en wegen, bleek het geluid van het audiobestand te hard te zijn voor de arduino, dus:

  • Amplificeer het geluid van je audio naar -21 dB (vrij zacht)

Het geluid speelt hierdoor minder hard af, maar omdat de frequenties van vogelgeluiden zo hoog zijn bleven mijn katten het goed horen (getest) en speelt het geluid normaal af.

Met het uiteindelijk toevoegen van alle code, herhaalde het probleem zich wederom... Dit gebeurde pas na de 2e keer dat de audio werd getriggerd, dus heb ik met code ervoor gezorgd dat arduino gereset wordt naar de setup, wat het probleem verhielp.


Het audiofragment dat ik heb gebruikt voor mijn project: https://freesound.org/people/InspectorJ/sounds/339...

Wat Zou Ik De Volgende Keer Anders Doen?

DSC_0107.JPG
solderen.png

Tijdens het hele proces, merkte ik dat ik vaak erachter kwam niet alles goed uitgedacht te hebben. Dit is vervelend, omdat je dan misschien iets gaat maken wat niet gaat kloppen in de uiteindelijke bevestiging van alle onderdelen. Dit is gebeurd met de maten van het hout, de positie van de arduino binnen het hok, de manier hoe hout bevestigd werd in combinatie met de speaker en bedrading... etc.

Daarnaast is het checken van de specs van de onderdelen zelf ook handig, ik wist bijvoorbeeld niet dat de ultrasonic distance sensor een kijkhoek heeft van 30 dragen. Hierdoor kon ik dus niet buiten het hok meten, omdat de sensor naast een muur is geplaatst. Als ik dit had geweten, had ik het design aangepast.

Ook het solderen was een drama, omdat sommige draadjes zijn afgebroken doordat ik de arduino nog vaak moest verplaatsen daarna. Het opnieuw solderen van pinnen is riskant omdat alles zo dicht op elkaar zit en je per ongeluk ook andere pinnen loshaalt hierdoor.

Ik miste vaak een plan van aanpak en werkte ook heel stapgewijs, waardoor ik gelukkig veel fouten heb kunnen voorkomen. Het is natuurlijk de eerste keer dat ik hiermee werk, dus heb ik veel kunnen leren.

Ook zou ik de volgende keer meer onderzoek kunnen doen naar wat mijn katten specifiek leuk vinden, aangezien mijn theorie in praktijk niet helemaal werkte. Bekijk onderstaande video!

Xander Stuivenberg GAR 1D

Project: If This Then That

Klas D, begeleid door Tim.