In deze sessie gaan we Raspberry Pi en de PYGAME-functies gebruiken om een soundboard te maken. In eenvoudige bewoordingen gaan we enkele knoppen aansluiten op de Raspberry Pi GPIO-pinnen en wanneer deze knoppen worden ingedrukt, speelt de Raspberry Pi audiobestanden af die in zijn geheugen zijn opgeslagen. Deze audiobestanden kunnen een voor een worden afgespeeld of ze kunnen allemaal samen worden afgespeeld. Met andere woorden, u kunt tegelijkertijd op een of meerdere knoppen drukken, de Raspberry Pi speelt een of meerdere audiobestanden tegelijkertijd af. Bekijk de demovideo aan het einde van dit artikel. Bekijk ook onze Raspberry Pi Tutorial-serie samen met enkele goede IoT-projecten.
We hebben 26 GPIO-pinnen in Raspberry Pi die kunnen worden geprogrammeerd, waarvan sommige worden gebruikt om een aantal speciale functies uit te voeren en dan hebben we nog 17 GPIO over. Elke GPIO-pin kan maximaal 15mA leveren of trekken. En de som van de stromen van alle GPIO's mag niet groter zijn dan 50mA. We kunnen dus gemiddeld maximaal 3mA trekken uit elk van deze GPIO-pinnen. We zullen weerstanden gebruiken om de stroom te beperken. Lees hier meer over GPIO-pinnen en interface-knop met Raspberry Pi.
Vereiste componenten:
Hier gebruiken we Raspberry Pi 2 Model B met Raspbian Jessie OS. Alle basis hardware- en softwarevereisten zijn eerder besproken, je kunt het opzoeken in de Raspberry Pi Introductie en Raspberry PI LED Knipperend om aan de slag te gaan, behalve dat we nodig hebben:
- Raspberry Pi met vooraf geïnstalleerd besturingssysteem
- Stroomvoorziening
- Spreker
- 1KΩ weerstand (6 stuks)
- Drukknoppen (6 stuks)
- 1000uF condensator
Werkende uitleg:
Hier spelen we geluid met behulp van knoppen met Raspberry Pi. We hebben 6 druktoetsen gebruikt om 6 audiobestanden af te spelen. We kunnen meer knoppen en audiobestanden toevoegen om dit bord uit te breiden om een mooier patroon te creëren door op deze knoppen te drukken. Voer de onderstaande stappen uit voordat u verder uitlegt.
1. Download allereerst de 6 audiobestanden via de onderstaande link of u kunt uw audiobestanden gebruiken, maar dan moet u de bestandsnamen in Code wijzigen.
Download audiobestanden van hier
2. Maak een nieuwe map op het Raspberry Pi-bureaubladscherm en noem deze "PI SOUND BOARD".
3. Pak de gedownloade audiobestanden uit in de map die we in de vorige stap op DESKTOP hebben gemaakt.
4. Open het terminalvenster in Raspberry Pi en voer de onderstaande opdracht in:
sudo amixer cset numid = 3 1
Deze opdracht vertelt PI om audio-uitvoer te leveren via een 3,5 mm audio-aansluiting aan boord.
Als u audio-uitvoer wilt vanaf de HDMI-poort, kunt u de onderstaande opdracht gebruiken:
$ sudo amixer cset numid = 3 2
5. Sluit luidsprekers aan op de 3,5 mm audio-uitgang op de Raspberry Pi-kaart.
6. Maak een PYTHON-bestand (*.py extensie) en sla het op in dezelfde map. Bekijk deze tutorial voor het maken en uitvoeren van het Python-programma in Raspberry Pi.
7. Pygame mixer wordt standaard geïnstalleerd in het besturingssysteem. Als het programma, na uitvoering, PYMIXER niet meer oproept, werk dan het besturingssysteem van Raspberry Pi bij door het onderstaande commando in het terminalvenster in te voeren. Zorg ervoor dat Pi is verbonden met internet.
sudo apt-get update
Wacht een paar minuten totdat het besturingssysteem is bijgewerkt.
Sluit nu elke component aan volgens het onderstaande schakelschema. Kopieer het PYHTON-programma naar het PYHTON-bestand dat op het bureaublad is gemaakt en druk ten slotte op run om de audiobestanden af te spelen via de knoppen. Python-programma wordt gegeven aan het einde van de Demo Video.
Schakelschema:
Programmering Toelichting:
Hier hebben we Python-programma gemaakt om de audiobestanden af te spelen door op de knop te drukken. Hier moeten we enkele commando's begrijpen die we in het programma hebben gebruikt.
importeer RPi.GPIO als IO
We gaan het GPIO-bestand uit de bibliotheek importeren, met het bovenstaande commando kunnen we GPIO-pinnen van PI programmeren. We hernoemen ook "GPIO" naar "IO", dus in het programma zullen we telkens wanneer we naar GPIO-pinnen willen verwijzen het woord 'IO' gebruiken.
IO.setwarnings (False)
Soms, wanneer de GPIO-pinnen die we proberen te gebruiken, mogelijk andere functies uitvoeren. Dan ontvang je waarschuwingen wanneer je een programma uitvoert. Deze opdracht vertelt Raspberry Pi om de waarschuwingen te negeren en door te gaan met het programma.
IO.setmode (IO.BCM)
Hier gaan we i / o-pinnen van PI verwijzen naar hun functienaam. Dus we programmeren de GPIO met BCM-pincodes, waardoor we pincodes kunnen bellen met hun GPIO-pincode. Alsof we PIN39 als GPIO19 in het programma kunnen noemen.
importeer pygame.mixer
We bellen pygame mixer om de audiobestanden af te spelen.
audio1 = pygame.mixer.Sound ("buzzer.wav")
We vragen om het audiobestand 'buzzer.wav' dat is opgeslagen in de map op het bureaublad. Als je een ander bestand wilt afspelen, verander dan gewoon de naam van het audiobestand in de bovenstaande functie. U kunt alle bestanden in de bureaubladmap een naam geven.
kanaal1 = pygame.mixer.Channel (1)
Hier stellen we een kanaal in voor elke knop, zodat we alle audiobestanden tegelijkertijd kunnen afspelen.
if (IO.input (21) == 0): channel1.play (audio1)
In het geval dat de voorwaarde in if-instructie waar is, wordt de onderstaande instructie één keer uitgevoerd. Dus als de GPIO-pin 21 laag of geaard wordt, wordt het audiobestand afgespeeld dat is toegewezen aan de variabele audio1 . Volgens het schakelschema kunnen we zien dat GPIO-pin 21 laag wordt wanneer we op de eerste knop drukken. We kunnen dus elk audiobestand afspelen door op de bijbehorende knop te drukken.
while 1: wordt gebruikt als forever loop, met dit commando worden de statements in deze loop continu uitgevoerd.
U kunt wijzigingen aanbrengen in het python-programma om de meest bevredigende Sound Board met Raspberry Pi te maken. U kunt zelfs meer knoppen toevoegen om dingen interessanter te maken en meer audiobestanden af te spelen.