Inhoudsopgave:

Een jukebox voor de allerjongsten Aka Raspi-Music-Box - Ajarnpa
Een jukebox voor de allerjongsten Aka Raspi-Music-Box - Ajarnpa

Video: Een jukebox voor de allerjongsten Aka Raspi-Music-Box - Ajarnpa

Video: Een jukebox voor de allerjongsten Aka Raspi-Music-Box - Ajarnpa
Video: Zie hoe Hoeratheater met de workshop drama 'Let the music PLAY' deze kleuters in beweging zet 2024, November
Anonim
Een jukebox voor de allerjongsten… Aka Raspi-Music-Box
Een jukebox voor de allerjongsten… Aka Raspi-Music-Box

Geïnspireerd door de instructable "Raspberry-Pi-based-RFID-Music-Robot" die een muziekspeler beschrijft die ROALDH voor zijn 3-jarige bouwt, besloot ik een jukebox te bouwen voor mijn nog jongere kinderen. Het is eigenlijk een doos met 16 knoppen en een Raspi 2 erin die liedjes afspeelt via de aangesloten stereo wanneer een van de knoppen wordt ingedrukt.

Wat je nodig hebt:

  • Een Raspberry Pi met voeding
  • 16 knoppen - het soort dat tijdelijk wordt gesloten wanneer je erop drukt (of hoeveel knoppen je ook wilt - advies: niet meer dan je invoerpinnen hebt …;)) Ik gebruikte deze: knop voor € 0,50)
  • wat dunne draad
  • één weerstand van 10kOhm en één weerstand van 1kOhm per knop (tenzij je wilt vertrouwen op de interne pull-up/down-weerstanden van de Raspi, dan kun je dit overslaan)
  • stripbord
  • vrouwelijke kop (2x20 pin)
  • wat dun hout om de doos te bouwen (ik gebruikte 2 vellen 5x400x400 mm voor de voor- en achterkant plus een strook van 2000x50x5 mm om de zijkanten uit te snijden)
  • 24 schroeven en een beetje lijm om de doos in elkaar te zetten
  • wat verf om het kleurrijk te maken
  • audiokabel om de Raspi op je stereo of actieve luidsprekers aan te sluiten (jack naar wat je maar nodig hebt aan de andere kant)
  • gereedschap: een soldeerbout, draadknipper, idealiter draadstripper, zaag, boor, schroevendraaier, penseel …
  • optioneel: USB-geluidskaart als je wilt dat de muziek goed klinkt
  • optioneel: wifi-kaart als je verbinding wilt maken met een oude Raspi zonder de doos te openen

Houd er rekening mee dat dit mijn eerste instructable is en dat ik dit project al een tijdje geleden heb gedaan … Ik ben het aan het maken omdat ik steeds wordt gevraagd naar de VLC-manier om de nummers te spelen in het commentaargedeelte van de hierboven genoemde instructable (de mplayer die daar wordt gebruikt wordt voor zover ik weet niet meer ondersteund). Ik weet dat deze instructies niet erg goed zijn, maar ik hoop dat je het kunt volgen… zo niet, kijk dan ook naar de originele instructable en laat hieronder opmerkingen achter om me te vertellen waar je bent vastgelopen… Ik zal dan proberen te verbeteren…

Stap 1: Bouw een doos…

Bouw een doos…
Bouw een doos…
Bouw een doos…
Bouw een doos…

Dus het eerste wat je moet doen is een doos bouwen… Ik heb de mijne behoorlijk groot gemaakt omdat ik wat ruimte onder elke knop liet voor een label… Ik was van plan wat foto's voor elk nummer af te drukken, ze misschien te lamineren en ze blauw te labelen onder de knoppen… geleerde les: tegen de tijd dat je de labels afdrukt, kennen je kinderen alle liedjes door en door en eisen ze dat je er een paar verandert… Dus de volgende keer zou ik een kleinere doos bouwen en de knoppen dichter bij elkaar plaatsen…

Dus, terug naar mijn doos… ik kocht twee platen multiplex 400 x 400 x 5 mm en een strook van 2000 x 50 x 5 mm… toen de eerste, belangrijkste stap: mijn dochter mocht het voorpaneel schilderen in haar keuze van kleuren…:) Terwijl ze aan het schilderen was, sneed ik het lange stuk in 5 stroken - twee 400 mm lang, twee 390 mm lang en de restjes…;) deze plakte ik op de achterkant van het pas geverfde vel… toen boorde ik 12 gaten van de buitenkant en schroefde 12 schroeven in … Ik lijnde toen zorgvuldig het andere blad aan de achterkant uit, boorde nog eens 12 gaten voor nog eens 12 schroeven om de doos te sluiten toen ik klaar was. (Ik weet dat 12 schroeven misschien een beetje overdreven zijn, maar kinderen zijn sterk …:))

Aan de ene kant heb ik een vijl gebruikt (je zou een dremel kunnen gebruiken om dingen te versnellen) om een stukje hout uit te snijden om door de kabels te gaan. Ik heb toen ook de gaten voor de 16 knoppen geboord en geïnstalleerd.

Stap 2: Sluit de knoppen aan

Sluit de knoppen aan
Sluit de knoppen aan

Dus nu heb je een doos met 16 knoppen … vervolgens moet je deze aansluiten … Ik heb een van hun polen op een daisy chain-manier met aarde verbonden. In het ideale geval heb je kleine connectoren om dit te doen … Ik heb ze erop gesoldeerd, wat een grote nachtmerrie was en nog meer problemen zal veroorzaken als ik ooit een van de knoppen moet verwijderen. Daarna bevestigde ik hun andere polen elk aan een rode draad … Deze heb ik vervolgens gesoldeerd aan het connectorbord dat je in het midden kunt zien liggen …

Welke knop op welke pin? Knop 1-16 in deze volgorde: GPIO 18. 27, 17, 04, 23, 24, 22, 05, 16, 12, 06, 13, 21, 20, 19, 26. Controleer ook de "catch button press events" sectie" in de code later.

(Vraag me alsjeblieft niet waar de opgerolde draden voor waren … ik kan het me niet herinneren)

Stap 3: Optioneel: een bord maken met op- en neerwaartse weerstanden

Optioneel: een bord maken met pull-up- en pull-down-weerstanden
Optioneel: een bord maken met pull-up- en pull-down-weerstanden
Optioneel: een bord maken met pull-up- en pull-down-weerstanden
Optioneel: een bord maken met pull-up- en pull-down-weerstanden

Als je niet zeker weet wat pull-up en pull-down weerstanden zijn, zou je gemakkelijk heel veel informatie online moeten vinden. De raspi heeft een aantal ingebouwde of je kunt externe doen zoals ik hier deed. Deze stap is optioneel omdat ik denk dat je deze niet echt nodig hebt.

Dus waarom deed ik het? Soms begon de muziek te spelen als ik apparaten in de flat in- of uitschakelde. Ik dacht eerst dat het elektromagnetische golven oppikte of zoiets. Dus voegde ik de pull-up/down weerstanden toe… Omdat dit de situatie niet verbeterde, heb ik er nog wat condensatoren aan toegevoegd. Dit hielp nog steeds niet… het volgende wat ik wilde proberen was de binnenkant van de doos af te dekken met aluminiumfolie als afscherming. Omdat het probleem stopte toen we verhuisden, heb ik dit uiteindelijk nooit geprobeerd … Dus wat was het probleem? Ik weet het niet… het kunnen variaties in de hoogspanningsleiding zijn geweest?

Conclusie: Ik zou je aanraden om eerst de knoppen gewoon direct aan te sluiten (je ziet later in de code welke knop op welke pin komt) en deze stap alleen te doen als je wat problemen hebt. Ik hoop dat je op de foto's hierboven kunt zien hoe ik dit heb gedaan. In principe is er een balk om op de header in het midden te plaatsen en vervolgens heb ik aan elke kant de twee weerstanden en de kabels van de knoppen in één rij aangesloten.

Stap 4: De Python-code

Bijgevoegd vind je de code (in python) die de muziekdoos beheert. Ik heb nogal wat opmerkingen toegevoegd, dus hopelijk spreekt het voor zich. Voor het geval hier een korte uitleg. Het is het beste om het gedeelte met variabelen bovenaan te lezen en dan helemaal naar beneden te gaan.

Onderaan vind je een lus, die de hele tijd doorloopt. Het controleert eerst of een bepaalde reeks knoppen is ingedrukt - dit was mijn manier om wat ouderlijk toezicht te gebruiken. Dan zijn er nog de functies die de muziek afspelen.

Boven de hoofdlus vindt u enkele gebeurtenisdetecties - deze worden uitgevoerd als een van de knoppen wordt ingedrukt. Elke knop roept de ButtonPress-functie aan en geeft een ID door.

Dus hoe zorg je ervoor dat het de muziek speelt? Om het simpel te houden, heb ik voor elke knop een map gegenereerd. Welke mp3's je ook in deze mappen plaatst, de functie wordt toegevoegd aan de afspeellijst.

Let op, als je geen fysieke pull-up weerstanden hebt gebruikt, moet je de sectie met de BCM-nummering hierin veranderen:

# setup met BCM-nummeringGPIO.setmode(GPIO. BCM) GPIO.setup(04, GPIO. IN, pull_up_down = GPIO. PUD_UP) GPIO.setup (17, GPIO. IN, pull_up_down = GPIO. PUD_UP) GPIO.setup(27, GPIO. IN, pull_up_down = GPIO. PUD_UP) GPIO.setup(22, GPIO. IN, pull_up_down = GPIO. PUD_UP) GPIO.setup(05, GPIO. IN, pull_up_down = GPIO. PUD_UP) GPIO.setup(06, GPIO. IN, pull_up_down = GPIO. PUD_UP) GPIO.setup(13, GPIO. IN, pull_up_down = GPIO. PUD_UP) GPIO.setup(19, GPIO. IN, pull_up_down = GPIO. PUD_UP) GPIO.setup(26, GPIO. IN, pull_up_down = GPIO. PUD_UP) GPIO.setup (18, GPIO. IN, pull_up_down = GPIO. PUD_UP) GPIO.setup (23, GPIO. IN, pull_up_down = GPIO. PUD_UP) GPIO.setup (24, GPIO. IN, pull_up_down = GPIO. PUD_UP) GPIO.setup (12, GPIO. IN, pull_up_down = GPIO. PUD_UP) GPIO.setup (16, GPIO. IN, pull_up_down = GPIO. PUD_UP) GPIO.setup (20, GPIO. IN, pull_up_down = GPIO. PUD_UP) GPIO.setup(21, GPIO. IN, pull_up_down = GPIO. PUD_UP)

Stap 5: Je Rapsi. instellen

Je moet natuurlijk ook de raspi instellen … Ik heb zojuist de standaard Noop-installatie gebruikt. Ik weet zeker dat je heel veel instructies zult vinden over hoe je dat moet doen …

Om python te gebruiken, moet je "sudo apt-get install python-dev"

Mijn programma gebruikt VLC om de muziek af te spelen:

  • Ik heb de Python-verbinding hier vandaan (hoop dat dit nog steeds up-to-date is):
  • Toen heb ik het geïnstalleerd met behulp van "sudo python setup.py install"
  • Vervolgens VLC "sudo apt-get install vlc" geïnstalleerd
  • Plak de bestanden vlc.py en vlc.pyc in dezelfde map als uw programma
  • Meer info op

Mijn aantekeningen zeggen dat je ook het volgende moet installeren om toegang te krijgen tot de GPIO-pinnen van python (maar dit kan verouderd zijn):

  • wget https://www.airspayce.com/mikem/bcm2835/bcm2835-1…. zxvf bcm2835-1.xx.tar.gz
  • cd bcm2835-1.xx
  • ./configureren
  • maken
  • sudo check
  • sudo make install

Om uw programma te laten werken, moet u "sudo python uwbestandsnaam.py" aanroepen.

Aanbevolen: