Dans cet article, nous allons apprendre à utiliser un buzzer actif KY-012 avec une Raspberry Pi Pico. L’objectif est de comprendre comment produire des bips sonores, gérer le rythme et utiliser le temps comme information, jusqu’à construire un code Morse simplifié.
Contrairement au buzzer passif, ici la fréquence n’est pas contrôlable : le buzzer actif ne sait produire qu’une seule note.
Un buzzer actif contient un oscillateur interne. Dès qu’il est alimenté, il émet un son à une fréquence fixe.
Conséquence directe
Côté code, on travaille uniquement avec :
S (Signal) → GPIO15- (GND) → GND+ (VCC) → 3.3 VContrairement au buzzer passif, le buzzer actif doit être alimenté.
On commence par le cas le plus élémentaire : un bip, puis arrêt.
from machine import Pin
import utime
buzzer = Pin(15, Pin.OUT)
buzzer.value(1) # buzzer ON
utime.sleep(1) # 1 seconde
buzzer.value(0) # buzzer OFF
value(1) alimente le buzzervalue(0) coupe le sonsleepOn introduit maintenant la répétition.
from machine import Pin
import utime
buzzer = Pin(15, Pin.OUT)
while True:
buzzer.value(1)
utime.sleep(0.5)
buzzer.value(0)
utime.sleep(0.5)
Le buzzer émet un bip régulier, comparable à un métronome.
La différence entre un bip court et un bip long est uniquement temporelle.
from machine import Pin
import utime
buzzer = Pin(15, Pin.OUT)
while True:
# bip court
buzzer.value(1)
utime.sleep(0.2)
buzzer.value(0)
utime.sleep(0.3)
# bip long
buzzer.value(1)
utime.sleep(0.6)
buzzer.value(0)
utime.sleep(0.8)
À ce stade, on ne change jamais le son lui-même. On ne joue que sur :
Avec un buzzer actif, le rythme est l’unique information sonore.
C’est exactement le principe du code Morse.
Le code Morse repose sur :
Pour simplifier :
Nous n’utilisons pas ici les durées normalisées strictes, mais une version compréhensible et lisible.
On associe chaque lettre à une séquence de symboles.
morse = {
'S': '...',
'O': '---',
'I': '..',
'N': '-.',
'F': '..-.'
}
from machine import Pin
import utime
buzzer = Pin(15, Pin.OUT)
morse = {
'S': '...',
'O': '---'
}
dot = 0.2
dash = 0.6
pause = 0.3
while True:
for letter in "SOS":
for symbol in morse[letter]:
buzzer.value(1)
if symbol == '.':
utime.sleep(dot)
else:
utime.sleep(dash)
buzzer.value(0)
utime.sleep(pause)
utime.sleep(0.6) # pause entre lettres
morse = {
'I': '..',
'N': '-.',
'F': '..-.',
'O': '---'
}
message = "INFO"
Le reste du code est identique : seul le dictionnaire et le message changent.
Dans le prochain article, nous utiliserons un buzzer passif (KY-006) pour introduire la fréquence, le volume et la génération de sons évolutifs, jusqu’à des mélodies complètes.