Raspberry Pi - Capteur à ultrasons - Buzzer piézoélectrique

Ce tutoriel vous explique comment utiliser un Raspberry Pi et un capteur ultrasonique pour contrôler un buzzer piézoélectrique. En détail :

Préparation du matériel

1×Raspberry Pi 5
1×Capteur à ultrasons
1×Buzzer piézo actif 3-24V
1×Module buzzer piézo actif
1×Module buzzer piézo passif
1×Plaque d'essai
1×Fils de connexion
1×Recommandé: Shield à bornier à vis pour Raspberry Pi
1×Recommandé: Kit plaque de base prototypage et plaque d'essai pour Raspberry Pi
1×Recommandé: Écran tactile HDMI pour Raspberry Pi

Ou vous pouvez acheter les kits suivants:

1×Kit de Capteurs DIYables (30 capteurs/écrans)
1×Kit de Capteurs DIYables (18 capteurs/écrans)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos du Buzzer Piézoélectrique et du Capteur Ultrasonique

Si vous n'êtes pas familier avec le buzzer piézoélectrique et le capteur ultrasonique (y compris le brochage, le fonctionnement et la programmation), les tutoriels suivants peuvent vous fournir plus d'informations :

Diagramme de câblage

Diagramme de câblage du capteur à ultrasons Raspberry Pi avec buzzer piézoélectrique

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Pour simplifier et organiser votre montage de câblage, nous recommandons l'utilisation d'un shield à bornier à vis pour Raspberry Pi. Ce shield assure des connexions plus sûres et mieux gérées, comme illustré ci-dessous :

Shield à bornier à vis pour Raspberry Pi

Code Raspberry Pi - Son Simple

Dans cette section, nous programmerons le Raspberry Pi pour faire en sorte qu'un buzzer piézo génère un son simple chaque fois que la distance mesurée par le capteur ultrasonique est inférieure à un seuil.

Étapes rapides

  • Assurez-vous d'avoir Raspbian ou tout autre système d'exploitation compatible avec Raspberry Pi installé sur votre Pi.
  • Assurez-vous que votre Raspberry Pi est connecté au même réseau local que votre PC.
  • Assurez-vous que votre Raspberry Pi est connecté à Internet si vous avez besoin d'installer des bibliothèques.
  • Si c'est la première fois que vous utilisez Raspberry Pi, voyez Installation du logiciel - Raspberry Pi.
  • Connectez votre PC au Raspberry Pi via SSH en utilisant le client SSH intégré sur Linux et macOS ou PuTTY sur Windows. Voyez comment connecter votre PC au Raspberry Pi via SSH.
  • Assurez-vous que vous avez la bibliothèque RPi.GPIO installée. Sinon, installez-la en utilisant la commande suivante :
sudo apt-get update sudo apt-get install python3-rpi.gpio
  • Créez un fichier script Python ultrasonic_sensor_buzzer.py et ajoutez le code suivant :
# Ce code Raspberry Pi a été développé par newbiely.fr # Ce code Raspberry Pi est mis à disposition du public sans aucune restriction. # Pour des instructions complètes et des schémas de câblage, veuillez visiter: # https://newbiely.fr/tutorials/raspberry-pi/raspberry-pi-ultrasonic-sensor-piezo-buzzer import RPi.GPIO as GPIO import time # GPIO pin numbers for the ultrasonic sensor TRIG_PIN = 14 ECHO_PIN = 15 # GPIO pin number for the piezo buzzer BUZZER_PIN = 16 # Threshold distance in centimeters THRESHOLD_DISTANCE_CM = 20 def get_distance(): GPIO.output(TRIG_PIN, GPIO.HIGH) time.sleep(0.00001) GPIO.output(TRIG_PIN, GPIO.LOW) while GPIO.input(ECHO_PIN) == 0: pulse_start = time.time() while GPIO.input(ECHO_PIN) == 1: pulse_end = time.time() pulse_duration = pulse_end - pulse_start speed_of_sound = 34300 # Speed of sound in cm/s distance = (pulse_duration * speed_of_sound) / 2 return distance GPIO.setmode(GPIO.BCM) GPIO.setup(TRIG_PIN, GPIO.OUT) GPIO.setup(ECHO_PIN, GPIO.IN) GPIO.setup(BUZZER_PIN, GPIO.OUT) GPIO.output(TRIG_PIN, GPIO.LOW) GPIO.output(BUZZER_PIN, GPIO.LOW) try: while True: distance = get_distance() print(f"Distance: {distance:.2f} cm") if distance < THRESHOLD_DISTANCE_CM: GPIO.output(BUZZER_PIN, GPIO.HIGH) # Turn the buzzer on else: GPIO.output(BUZZER_PIN, GPIO.LOW) # Turn the buzzer off except KeyboardInterrupt: GPIO.cleanup()
  • Enregistrez le fichier et exécutez le script Python en entrant la commande suivante dans le terminal :
python3 ultrasonic_sensor_buzzer.py
  • Agitez votre main devant le capteur.
  • Écoutez le son du buzzer piezo.

Le script s'exécute dans une boucle infinie en continu jusqu'à ce que vous appuyiez sur Ctrl + C dans le terminal.

Explication du code

Consultez l'explication ligne par ligne contenue dans les commentaires du code source !

Raspberry Pi joue la mélodie de la chanson

Dans cette section, nous programmerons le Raspberry Pi pour déclencher un buzzer piézoélectrique afin de jouer la chanson "Jingle Bells" lorsque la distance est inférieure à un seuil.

Étapes rapides

  • Créez un fichier de script Python ultrasonic_sensor_buzzer_Jingle_Bells.py et ajoutez le code suivant :
# Ce code Raspberry Pi a été développé par newbiely.fr # Ce code Raspberry Pi est mis à disposition du public sans aucune restriction. # Pour des instructions complètes et des schémas de câblage, veuillez visiter: # https://newbiely.fr/tutorials/raspberry-pi/raspberry-pi-ultrasonic-sensor-piezo-buzzer import RPi.GPIO as GPIO import time # GPIO pin numbers for the ultrasonic sensor TRIG_PIN = 14 ECHO_PIN = 15 # GPIO pin number for the piezo buzzer BUZZER_PIN = 16 # Threshold distance in centimeters THRESHOLD_DISTANCE_CM = 20 # Constants for note names and their corresponding frequencies C4 = 261 D4 = 293 E4 = 329 F4 = 349 G4 = 392 A4 = 440 B4 = 493 # Dictionary to map numeric values to note names note_names = { C4: "C4", D4: "D4", E4: "E4", F4: "F4", G4: "G4", A4: "A4", B4: "B4", } # List of notes in the "Jingle Bells" melody melody = [ E4, E4, E4, E4, E4, E4, E4, G4, C4, D4, E4, F4, F4, F4, F4, F4, E4, E4, E4, E4, E4, D4, D4, E4, D4, G4 ] # List of note durations (in milliseconds) note_durations = [ 200, 200, 400, 200, 200, 400, 200, 200, 200, 200, 200, 200, 200, 400, 200, 200, 200, 200, 200, 200, 200, 200, 200, 400, 200, 200 ] # Pause duration between notes (in milliseconds) pause_duration = 300 def play_tone(pin, frequency, duration): # Calculate the period based on the frequency period = 1.0 / frequency # Calculate the time for half of the period half_period = period / 2.0 # Calculate the number of cycles for the given duration cycles = int(duration / period) for _ in range(cycles): # Set the GPIO pin to HIGH GPIO.output(pin, GPIO.HIGH) # Wait for half of the period time.sleep(half_period) # Set the GPIO pin to LOW GPIO.output(pin, GPIO.LOW) # Wait for the other half of the period time.sleep(half_period) def play_jingle_bells(): for i in range(len(melody)): note_duration = note_durations[i] / 1000.0 note_freq = melody[i] note_name = note_names.get(note_freq, "Pause") print(f"Playing {note_name} (Frequency: {note_freq} Hz) for {note_duration} seconds") play_tone(BUZZER_PIN, note_freq, note_duration) time.sleep(pause_duration / 1000.0) GPIO.output(BUZZER_PIN, GPIO.LOW) def get_distance(): GPIO.output(TRIG_PIN, GPIO.HIGH) time.sleep(0.00001) GPIO.output(TRIG_PIN, GPIO.LOW) while GPIO.input(ECHO_PIN) == 0: pulse_start = time.time() while GPIO.input(ECHO_PIN) == 1: pulse_end = time.time() pulse_duration = pulse_end - pulse_start speed_of_sound = 34300 # Speed of sound in cm/s distance = (pulse_duration * speed_of_sound) / 2 return distance GPIO.setmode(GPIO.BCM) GPIO.setup(TRIG_PIN, GPIO.OUT) GPIO.setup(ECHO_PIN, GPIO.IN) GPIO.setup(BUZZER_PIN, GPIO.OUT) GPIO.output(TRIG_PIN, GPIO.LOW) GPIO.output(BUZZER_PIN, GPIO.LOW) try: while True: distance = get_distance() print(f"Distance: {distance:.2f} cm") if distance < THRESHOLD_DISTANCE_CM: play_jingle_bells() except KeyboardInterrupt: GPIO.cleanup()
  • Enregardez le fichier et exécutez le script Python en lançant la commande suivante dans le terminal :
python3 ultrasonic_sensor_buzzer_Jingle_Bells.py
  • Déplacez votre main devant le capteur.
  • Écoutez la mélodie jouée par le buzzer piézo.

Explication du code

Consultez l'explication ligne par ligne contenue dans les commentaires du code source !

Vidéo

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !