Birduino: Een kaartgestuurde audiospeler om vogels te leren kennen
In dit artikel wordt beschreven hoe de Birduino is ontworpen en gebouwd.
Achtergrond
De kern van dit project is een TonUINO, een open-source audiospeler die oorspronkelijk is ontwikkeld door Thorsten Voss en nu wordt onderhouden door een community van enthousiastelingen.
De bouw van de Birduino bestond uit het instellen van een TonUINO, het ontwerpen en assembleren van een transparante acrylbehuizing, en het voorbereiden van een set vogelkaarten. Op elke kaart is een NFC-sticker geplakt die is gekoppeld aan de specifieke opnames van de vogel op de TonUINO. De uitgebreide FAQ van de TonUINO-community was zeer nuttig bij deze installatie, evenals Google Translate, aangezien de documentatie van TonUINO volledig in het Duits is.
Hardware: Het assembleren van een TonUINO-speler
Ik heb de basiscomponenten van mijn TonUINO als kit gekocht bij AZ-Delivery; deze bevatten:
- Een microcontroller (AZ-Nano V3, gebaseerd op een ATmega328P)
- Een RC522 RFID-lezer module
- Een mp3-module
Deze componenten heb ik gecombineerd met drie knoppen die ik al had, een luidspreker en een draaibare potentiometer. Als basis heb ik een prototypebord gebruikt. TonUINO leverde een schema, waarbij ik elke draad met een kleurcode heb gemarkeerd tijdens het solderen.²'³
Waarschuwing: Leer van mijn fouten
Dit project zou aanzienlijk makkelijker zijn geweest met (a) een groter prototypebord en (b) een andere keuze in bedrading.
Het prototypebord was het enige dat we op dat moment hadden. Omdat ik niet verwachtte dat dit meer zou kosten dan één avond werk, wilde ik niet wachten op een beter bord. Achteraf was het een paar dagen wachten op een groter bord waard geweest; ik had dan namelijk geen sporen met een mes hoeven wegschrapen of mijn soldeerwerk in een minuscule ruimte hoeven proppen (om vervolgens kortsluitingen te moeten herstellen).
Ook de keuze voor de draden was niet ideaal. Ik koos voor regenboogkleurige draden omdat ze connectoren hadden die goed in de headers pasten die al op de componenten waren gesoldeerd. Dit was ideaal voor een breadboard, maar ik moest de andere uiteinden op het prototypebord solderen, wat betekende dat ik de pinnen eraf moest knippen en de draden direct moest solderen. Deze specifieke draden lieten zich niet goed solderen, wat leidde tot slordige verbindingen en onbedoelde overbruggingen die ik moest opsporen en herstellen.
Mijn advies: zorg voor een prototype- of perfboard met de juiste eigenschappen en gebruik deze specifieke draden niet als je moet solderen!
Software: De TonUINO-applicatie configureren en laden
De TonUINO-applicatie is geschreven in C++. Ik heb de repository gekloond en diverse secties ontcommentaard om deze aan te passen aan mijn hardwareconfiguratie. Daarna heb ik de Arduino IDE gebruikt om de software op de microcontroller te laden.
Configuratiespecificaties
Ik heb de volgende #defines ontcommentaard: TonUINOClassic, THREEBUTTONS, DISABLESHUTDOWNVIABUTTON, POTI, SPKONOFF.
Daarnaast moest ik één wijziging aanbrengen in de software voor de max input constante die wordt gebruikt bij de mapping van de volumeknop: van static constexpr int16t maxLevel = 1023; naar static constexpr int16t maxLevel = 700;. (De logging van het project is goed ingericht, waardoor ik deze waarde empirisch kon bepalen.)
Audio: De Cornell Guide to Bird Sounds
Het laden van audio op een TonUINO is eenvoudig: je plaatst de bestanden op de microSD-kaart van de mp3-module, volgens een eenvoudige naamgevings- en mappenstructuur.
Voor dit project wilde ik meerdere hoogwaardige opnames per vogel. Daarom heb ik The Cornell Guide to Bird Sounds: United States and Canada aangeschaft.
De Cornell Guide to Bird Sounds: United States and Canada (v2025) is een compilatie van gecureerde audiobestanden met zang, roepen, vluchtroepen en andere geluiden van 908 soorten vogels die voorkomen in de Verenigde Staten en Canada. De download van 1,7 GB bevat 4.959 MP3-bestanden. De audio in deze collectie is zorgvuldig geselecteerd en bewerkt om een premium geluidskwaliteit te garanderen, terwijl het volledige spectrum aan vocalisaties per soort wordt getoond. De collectie is mogelijk gemaakt door bijdragen van meer dan 515 geluidsopname-experts die hun opnames archiveerden in de Macaulay Library.
De 20 dollar was goed besteed! Niet alleen is de geluidskwaliteit uitstekend, maar de naamgevingsconventies van elk spoor maakten het triviaal eenvoudig om de opnames van elke soort te koppelen aan de bijbehorende vogelkaart.
Kaartendeel: Vogels van Noord-Amerika
Ik zocht een set vogelafbeeldingen die ik niet zelf hoefde te cureren, ontwerpen of printen. Daarom heb ik gekozen voor speelkaarten met vogels erop. Ik was kritisch over de keuze; hoewel er prachtige geïllustreerde decks zijn, wilde ik foto's. Uiteindelijk kocht ik het "Birds of North America"-deck van Gerrit Vyn. Vervolgens heb ik op de achterkant van elke kaart een NFC-tag geplakt.
Vogelkaarten koppelen aan vogelgeluiden
Het programmeren van de NFC-tags op de vogelkaarten om ze te koppelen aan de juiste audio was eenvoudig dankzij het TonUINO Cards Manager project van Max Mehl. Dit programma koppelt een manifest van audiobestanden aan de bijbehorende byte-strings die geschikt zijn voor TonUINO-kaarten, welke vervolgens op de NFC-tags worden geschreven. Dit betekende dat ik een manifest moest maken waarin elke vogelnaam was gekoppeld aan zijn set audio-opnames.
Ik heb het manifest programmatisch aangemaakt: nadat ik de namen van de vogels handmatig had getypt (in dezelfde volgorde als in het gesorteerde kaartendeel), schreef ik een klein programma om door de lijst te itereren en de Cornell Guide-opnames te filteren op bestanden waarvan de naam de vogel bevatte.
De functie om de relevante vogelzang toe te voegen zag er als volgt uit:
function append_birdsong_files() {
local I_BIRD="$1"
local BIRD="$2"
printf " $I_BIRD:\n description: $BIRD\n source:\n" >> "$OUTFILE"
cat audio-full-tracklist.txt \
| grep "$BIRD" \
| sort \
| awk '{ print " - " $0 }' \
>> "$OUTFILE"
printf " mode: party-from-to\n from_song: 1\n to_song: " >> "$OUTFILE"
cat audio-full-tracklist.txt \
| grep "$BIRD" \
| wc -l \
| tr -d ' ' \
>> "$OUTFILE"
printf "\n" >> "$OUTFILE"
}
Met de TonUINO NFC Tools applicatie voor Android-telefoons kon ik deze lijst met byte-strings vervolgens naar de NFC-tags op de vogelkaarten schrijven. Dit proces verliep zeer snel.⁴
Behuizing: Transparante boxen ontwerpen en maken
Ik wilde dat de Birduino relatief compact was en niet wilde dat er een bos draden uitstak. Daarom heb ik een behuizing gemaakt.
Met het parametrische CAD-programma Cuttle.xyz heb ik een basis "press-fit" box aangepast met uitsparingen voor de knop en de luidspreker. De afmetingen zijn zo gekozen dat het prototypebord als bovenkant van de box kan dienen.
Ik heb daarnaast een tweede box ontworpen om de kaarten in te bewaren, en een tray met inzetstukken waar beide boxen in passen, zodat de audiospeler optioneel samen met de kaarten gepresenteerd kan worden.
Ik heb de onderdelen uit 1/8 inch transparant acryl gesneden met de lasersnijder in de maker space van mijn openbare bibliotheek.⁵ De keuze voor een lijm was lastig, omdat ik een lijm nodig had die het acryl niet troebel maakte. Na het testen van verschillende opties, zijn we⁶ uitgekomen op "Clear Gorilla Glue Gel".⁷
Nadat de lijm was gekozen, heb ik het geheel in elkaar gezet. En dat is alles: de complete Birduino!
***
Mijn enige spijt is dat de Birduino niet genoeg vogels bevat. Deze initiële selectie van 54 vogels is een goed begin, maar ik zou graag vogels uit andere delen van de wereld toevoegen, of nog meer soorten uit Noord-Amerika.⁸ Voor de toekomst: Birduino uitbreidingspakketten!
Dank aan: de TonUINO-ontwikkelingscommunity, de geluidsopname-experts en anderen die hebben bijgedragen aan de Cornell Guide-opnames, Gerrit Vyn voor het prachtige kaartendeel, en AF voor haar hulp bij het lijmen! Ook dank aan de vogels wiens vocalisaties voor projecten als deze zijn vereeuwigd.
Voetnoten
- De opnames worden elke keer dat de kaart wordt gescand willekeurig geschud, zodat je niet gewoon gewend raakt aan de specifieke achtergrondgeluiden van een bepaalde opname in plaats van aan de roep van de vogel zelf.
- Dit project was bovenal een oefening in kabelmanagement, dus de kleurcodering was zowel esthetisch als functioneel.
- Ons onlangs geassembleerde soldeerstation maakte het solderen een plezier. Compact en gemakkelijk draagbaar!
- "Dit proces" is hier het sleutelwoord; voordat ik AF vroeg haar oude Android-telefoon uit de kast te halen, probeerde ik eerst verschillende niet-behulpzame RFID-programmeer-apps uit de Apple App Store. Deze zijn te "gebruiksvriendelijk" en bedoeld voor het schrijven van URL's of tekstblokken. Ik kon geen app vinden die het schrijven van een eenvoudige binaire string ondersteunt, wat nodig is voor de TonUINO-tags. Apple-app-ontwerpers: er is een gat in de markt voor een lichtgewicht, no-nonsense RFID-writer die byte-blobs ondersteunt.
- Waarom transparant acryl? Ik vind elektronische objecten met zichtbare binnenkant cool. Ik realiseerde me pas later dat ik in dit project relatief veel draden heb gebruikt voor de grootte van de behuizing, waardoor het er minder "cool" en meer "ongemakkelijk gepropt" uitziet. �
- "We", omdat ik deze stap niet alleen heb gedaan: AF was de MVP van het lijmproces. Toen ze zag dat ik er bijna gek van werd, nam zij het onderzoek naar en de inkoop van de lijm over. Een nuttige bron was The Acrylic Gluing Guide van Danielle Feliciano Wethington.
- Geen dank aan de branding van Gorilla Glue, die veel verschillende vormen en formuleringen van lijm heeft, die allemaal vergelijkbaar zijn benoemd ondanks chemische verschillen. Het is genoeg om me een baan in hun branding-afdeling te laten aanvragen, de specificaties en verpakkingen te herzien, en dan ontslag te nemen. Maak het me makkelijk! Maak een FAQ-pagina die mijn FAQ's beantwoordt!
- Ja, 54! Zelfs de Jokers hebben vogels: 🐦⬛🐦.
Groetjes,