Geplaatst op Geef een reactie

Zoemer met Raspberry Pi speelt melodie

raspberry pi buzzer melody

In deze tutorial leren we hoe een zoemer muzieknoten kan spelen. Verken hoe een melodie te programmeren met een Python-script op je Raspberry Pi. Wanneer je deze tutorial hebt voltooid, kan je verschillende tonen genereren met een zoemer. Je hebt ook de Python-code om je zoemer een eenvoudige melodie te laten spelen.

Je Raspberry Pi voorbereiden

Allereerst dien je een Raspberry Pi te hebben die op de nieuwste versie van Raspberry Pi OS draait. Deze versie bevat “Thonny”. We zullen deze gebruiksvriendelijke IDE gebruiken om onze Python-code te schrijven. Als je niet bekend bent met Python of met Thonny en de GPIO-pinnen, raad ik je aan onze volgende tutorials te bekijken “Hoe je eerste Python programma op de Raspberry Pi schrijven” en “Hoe de GPIO pinnen van de Raspberry Pi gebruiken” voor een snelle introductie. Voor een basiskennis over de actieve zoemer en hoe je deze op je Pi kan aansluiten, kun je onze tutorial “Zoemer met Raspberry Pi gebruiken” bekijken .

De extra hardware voorbereiden

Vervolgens heb je wat extra hardware nodig:

  • een breadboard (we gebruiken een breadboard van 400 punten)
  • een actieve zoemer (=buzzer)
  • Dupont jumper kabels
  • NPN transistor
  • een T-cobbler (optioneel)
  • een 40 pins GPIO-kabel (optioneel)

Indien je dingen zou missen, aarzel dan niet om onze shop te bezoeken. We hebben een goed bedachte kit die alle nodige componenten bevat .Raspberry Pi GPIO kit

Over muzieknoten

music notes buzzer

Van Wikipedia leren we dat een muzieknoot de toon(hoogte) en de duur van een geluid is. Elke toon heeft een welbepaalde frequentie. Deze frequentie kan worden berekend. Maar we behandelen deze onderwerpen niet in deze tutorial. We onthouden enkel dat we de frequentie en de duur nodig hebben voor elke noot die we op de zoemer willen spelen. We zullen deze twee elementen gebruiken in ons script.

Voor meer informatie over muzieknoten, bezoek deze Wikipedia pagina.

Voor de frequenties van de verschillende tonen, raadpleeg deze tabel.

Stel de hardware op

Let op! Voordat je begint met het aansluiten van draden op de GPIO-pinnen van je Raspberry Pi, dien je ervoor te zorgen dat je de Pi goed afsluit en de voedingskabel van het bordje hebt verwijderd!

We gebruiken dezelfde hardwareconfiguratie als deze van onze tutorial “Zoemer met Raspberry Pi gebruiken”.

Raspberry Pi active buzzer transistor
  • sluit de 40-pins kabel op de GPIO-pinnen van je Pi aan (verwijder indien nodig eerst het deksel van je Pi)
  • sluit de T-cobbler op het breadboard aan zoals wordt weergegeven in de afbeelding hierboven of hieronder
  • sluit het andere uiteinde van de 40-pins kabel aan op de T-cobbler
  • plaats de zoemer op het breadboard, de lange poot is positief, plaats het in de buurt van de rand van het breadboard
  • plaats de NPN-transistor: op ons beeld stroomt de stroom van de rechterpin (3) naar de linkerpin (1), de middelste pin (2) is de poort
  • verbind transistorpen (3) met een 5V pin van de Pi (rode draad)
  • sluit transistorpen (2) aan op pin 23 (gele draad)
  • kijk na of de lange poot (+) van de zoemer in dezelfde rij geplaatst werd als de transistorpin (1)
  • sluit de korte poot (-) van de zoemer op een GPIO GND-pin aan (zwarte draad)
Raspberry Pi active buzzer transistor

Schrijf de code

Het doel van deze tutorial is om een eenvoudig Python-script te schrijven waarmee de zoemer een eenvoudige melodie kan spelen. Om de code te schrijven, gebruiken we de Thonny IDE. Je kan Thonny vinden in het applicatiemenu van je Raspberry Pi.

Schrijf of plak de volgende code in de IDE:

import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
BUZZER = 23
GPIO.setup(BUZZER, GPIO.OUT)
def buzz(noteFreq, duration):
    halveWaveTime = 1 / (noteFreq * 2 )
    waves = int(duration * noteFreq)
    for i in range(waves):
       GPIO.output(BUZZER, True)
       time.sleep(halveWaveTime)
       GPIO.output(BUZZER, False)
       time.sleep(halveWaveTime)
def play():
    t=0
    notes=[262,294,330,262,262,294,330,262,330,349,392,330,349,392,392,440,392,349,330,262,392,440,392,349,330,262,262,196,262,262,196,262]
    duration=[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,1,0.5,0.5,1,0.25,0.25,0.25,0.25,0.5,0.5,0.25,0.25,0.25,0.25,0.5,0.5,0.5,0.5,1,0.5,0.5,1]
    for n in notes:
        buzz(n, duration[t])
        time.sleep(duration[t] *0.1)
        t+=1
#buzz(262, 0.5)
play()

Wat verklaringen over de code:

  • GPIO.setmode (GPIO.BCM): De GPIO.BCM-optie betekent dat we naar de pinnen verwijzen via het “Broadcom SOC-kanaal” -nummer, dit zijn de cijfers na “GPIO”
  • GPIO.setwarnings (False): we gebruiken deze coderegel om waarschuwingsberichten te vermijden. Dit is nodig omdat we de GPIO-verbinding niet goed beëindigen tijdens het onderbreken van het programma
  • GPIO.setup(BUZZER, GPIO.OUT): We definiëren de BUZZER-pin (= 23) als een uitvoerpin
  • def buzz(noteFreq, duration): Hier definiëren we de “buzz” functie met als argumenten “noteFreq” en “duration”
  • Wees voorzichtig, Python is witruimte gevoelig. Verwijder de “tab” niet vóór de volgende regels code
  • halveWaveTime = 1 / (noteFreq * 2 ): Berekening van de tijd voor een halve golflengte van een gegeven frequentie
  • int(duration * noteFreq): Berekening van het aantal golflentes
  • for i in range(waves):: Een lus die wordt herhaald tot het aantal golflengtes bereikt wordt
  • def play():: Definiëren van de “play” functie
  • notes=[…]: Een array met alle frequenties van de te spelen muzieknoten (Hz)
  • duration=[…]: Een array met alle tijden van de te spelen muzieknoten (seconden)
  • for n in notes:: Wat volgt zal worden herhaald voor elk element van de array “notes”
  • buzz(n, duration[t]): Oproepen van de “buzz”-functie met de elementen van beide arrays
  • time.sleep(duration[t] *0.1): Wacht even tussen het afspelen van elke muzieknoot
  • #buzz(262, 0.5): Deze regel is becommentarieerd. Verwijder de “#” om slechts één muzieknoot te spelen
  • play(): Door de “play” -functie aan te roepen, wordt de melodie gespeeld.

Voer het script uit

Vooraleer je het programma laat uitvoeren, dien je het een naam te geven en op te slaan.

raspberry pi python script buzzer melody

Eens opgeslagen, 

klik op de knop Uitvoeren. Je zal een bekende melodietje horen.

Gefeliciteerd! Met deze opstelling kan je nu een melodie spelen met een eenvoudige actieve zoemer op je Raspberry Pi. Je kan de arrays “notes” en “duration” wijzigen of noten toevoegen voor andere melodieën. Nog veel plezier ermee!

Hoe nuttig was deze tutorial?

Klik op een ster om deze te beoordelen!

Gemiddelde score 0 / 5. Aantal stemmen: 0

Geen stemmen tot nu toe! Wees de eerste die dit bericht beoordeelt.

Jammer dat deze tutorial voor jou niet nuttig was!

Laten we deze tutorial verbeteren!

Hoe kunnen we deze tutorial verbeteren?

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Hoe nuttig was deze tutorial?

Klik op een ster om deze te beoordelen!

Gemiddelde score 0 / 5. Aantal stemmen: 0

Geen stemmen tot nu toe! Wees de eerste die dit bericht beoordeelt.

Jammer dat deze tutorial voor jou niet nuttig was!

Laten we deze tutorial verbeteren!

Hoe kunnen we deze tutorial verbeteren?

ontdek hier meer producten

Blijf als eerste op de hoogte van onze nieuwste tutorials en producten door u in te schrijven op onze nieuwsbrief

freva.com respecteert uw privacy. Lees ons privacybeleid over hoe wij omgaan met uw persoonlijke gegevens.