Opmerking: Voor dit programma is een actieve zoemer nodig (uitleg volgt later), let op de polariteit. Er is geen serieweerstand nodig voor de zoemer (luidspreker).
In deze blogpost willen we een zoemer en een LED laten oplichten of laten klinken met behulp van een Raspberry Pi microcontroller. Dit programma wordt vaak gebruikt op scholen om te laten zien hoe eenvoudige uitgangssignalen kunnen worden gebruikt met behulp van een Raspberry Pi met eenvoudige componenten.
Voordat we ingaan op de vraag wat het verschil is tussen een actieve en een passieve luidspreker, laten we eerst het schakelschema en de programmacode bekijken.
Het schakelschema: De zoemer en LED aansluiten op de Raspberry Pi
De broncode: Buzzer en LED aansluiten op de Raspberry Pi
# Deze keer gebruiken we ook het eerste programmadeel. Hier worden variabelen ingevoerd. Dit betekent dat er een cijfer achter een letter of een woord staat. In ons geval is de LED aangesloten op pin 23 en de piëzospeaker op pin 4. Om de twee pinnen later niet door elkaar te halen, hernoemen we pin 23 en pin 24 gewoon.
# We beginnen met het importeren van de programmamodules
importeer RPI.GPIO als GPIO
importeer tijd
GPIO.setmode(GPIO.BCM) # We stellen de modus in op BCM
LED=23; # Het woord "LED" staat nu voor het getal "23".
Beep=24; # Het woord "Beep" staat nu voor het getal "24".
GPIO.setup(LED,GPIO.OUT) # Pin "LED" (pin 23) is een uitgang.
GPIO.setup(Pieps,GPIO.OUT) # Pin "Pieps" (pin 24)is een uitgang
# De lus begint hier
proberen:
while True: # While-lus zodat het programma continu draait
GPIO.output(LED,GPIO.HIGH) # Schakelt de LED in.
GPIO.output(Pieps,GPIO.HIGH) # Schakelt de piëzoluidspreker in.
time.sleep(1) # Wacht 1 seconde
GPIO.output(LED,GPIO.LOW) # Schakelt de LED uit.
GPIO.output(Pieps,GPIO.LOW) # Schakelt de piëzoluidspreker uit.
time.sleep(1)
# Hier aan het einde springt het programma naar het begin van de while-lus. Het staat dus op het punt om weer te piepen en op te lichten. Als je de pauze (time.sleep) vergroot of verkleint, piept en licht hij sneller of langzamer op.
except KeyboardInterrupt: # Met CTRL+C onderbreken we het programma
print ("Finished") # Schrijf "Finished" in het commandoregelvenster
GPIO.cleanup() # Sluit het programma af
Verschil tussen actieve en passieve zoemer
De actieve zoemer heeft een ingebouwde oscillator die een zoemend geluid produceert wanneer er een spanning van 3,3V of 5V wordt toegepast. Door het ontwerp moet je letten op de polariteit van de zoemer. Bij levering hebben deze zoemers meestal een kleine sticker met het plusteken en de sticker "REMOVE SEAL AFTER WASHING". Er staat ook weer een plus + op de behuizing van het onderdeel zelf. Je moet twee keer kijken om het langere pootje te zien. Je kunt ook een klein breakout bordje nemen; hier zijn de contacten gemarkeerd met S (staat voor signaal) en - (min, massa).
Je kunt de zoemer uitproberen met een eenvoudig programma zoals dat voor de knipperende LED, waarbij de (bijna) elke pin een seconde lang op HOOG en een seconde lang op LAAG wordt gezet.
De passieve zoemer heeft geen ingebouwde oscillator, dus de Raspberry Pi moet deze functie overnemen. Als je het bovenstaande programma uitprobeert op een passieve buzzer, zul je elke seconde een zacht "klik"-geluid horen.
Als je echter de pauzetijd extreem verkort (sleep(0.001) of sleep(0.002)) en het aan/uit gedurende een bepaalde tijd herhaalt, kun je een geluid horen waarvan we de frequentie eenvoudig kunnen berekenen: één milliseconde elk van HIGH of LOW betekent (zonder rekening te houden met de uitvoeringstijd van de andere commando's) ongeveer 500 cycli aan/uit per seconde, dus ongeveer 500Hz.
Als je een korte waarschuwingstoon wilt laten horen, moet je een actieve zoemer gebruiken die net als een LED wordt in- en uitgeschakeld. Let op de polariteit.
Als je een tweetonige sirene (die duidelijker te horen is) of een korte herkenningsmelodie (jingle) wilt programmeren, moet je een passieve zoemer of een kleine luidspreker gebruiken.