Publié par Un commentaire

Sonnerie avec Raspberry Pi jouant une mélodie

raspberry pi buzzer melody

Dans ce tutoriel, nous apprenons comment une sonnerie (buzzer) peut jouer des notes de musique. Découvrez comment jouer une mélodie avec un script Python sur votre Raspberry Pi. Lorsque vous aurez terminé ce tutoriel, vous serez en mesure de générer différentes tonalités avec un buzzer. Vous aurez également le code Python pour laisser votre buzzer jouer une mélodie basique.

Préparez votre Pi

Tout d’abord, vous avez besoin d’un Raspberry Pi avec la dernière version de Raspberry Pi OS. Cette version comprend “Thonny”. Nous utiliserons cet environnement convivial pour écrire notre code Python. Si vous n’êtes pas familier avec Python ou avec Thonny ou avec les broches GPIO, je vous suggère de consulter nos tutoriels “Comment débuter à programmer en Python sur Raspberry Pi” et/ou “Comment utiliser les broches GPIO du Raspberry Pi” pour une introduction rapide. Pour avoir une idée comment la sonnerie active fonctionne et comment la connecter à votre Pi, consultez notre tutoriel “Sonnerie active avec Raspberry Pi”.

Préparez le matériel supplémentaire

Ensuite, vous aurez besoin d’un peu de matériel supplémentaire:

  • un breadboard (nous utilisons un breadboard de 400 points)
  • une sonnerie active de 5V
  • un transistor NPN
  • des câbles Dupont
  • un T-cobbler (optionnel)
  • un câble GPIO 40 broches (optionnel)

Si vous manquez des pièces, n’hésitez pas à visiter notre boutique. Nous avons un kit bien conçu contenant toutes les pièces dont vous avez besoin pour démarrer.
Raspberry Pi GPIO kit

A propos des notes de musique

music notes buzzer

Sur la page Wikipedia, nous pouvons apprendre qu’une note de musique est représentée par la hauteur et la durée d’un son. Chaque hauteur est un élément d’une catégorie de hauteur et a une fréquence bien définie. Cette fréquence peut être calculée. Mais nous ne traiterons pas ces sujets dans ce tutoriel. Pour notre projet, nous allons juste retenir que nous avons besoin de la fréquence et de la durée pour chaque note que nous voulons jouer sur la sonnerie. Nous allons utiliser ces deux éléments dans notre script.

Pour plus d’informations sur les notes de musique, visitez cette page Wikipedia.

Pour savoir les fréquences des différentes notes de musique, consultez ce tableau.

Mettre en place la partie matérielle

Soyez prudent ! Avant de brancher des câbles sur les broches GPIO de votre Raspberry Pi, assurez-vous d’éteindre correctement le Pi et de retirer le câble d’alimentation de la carte mère!

Nous utilisons la même configuration matérielle que celle utilisée dans notre tutoriel “Sonnerie active avec Raspberry Pi”.

Raspberry Pi active buzzer transistor
  • connectez le câble 40 broches sur les broches GPIO de votre Pi (si nécessaire, retirez d’abord le cache de votre Pi)
  • branchez le T-cobbler sur le breadboard comme indiqué sur la figure ci-dessus ou ci-dessous
  • branchez l’autre extrémité du câble 40 broches dans le T-cobbler
  • placez la sonnerie sur le breadboard, la jambe longue est la jambe positive, assurez-vous de la placer près du bord du breadboard
  • placez le transistor NPN: sur notre image, le courant circule de la broche droite (3) vers la broche gauche (1), la broche centrale (2) est la base (commande).
  • reliez la broche du transistor (3) à une broche 5V du Pi (fil rouge)
  • reliez la broche du transistor (2) à la broche 23 (fil jaune)
  • assurez-vous que la longue jambe (+) de la sonnerie est placée dans la même rangée que de la broche du transistor (1)
  • connectez la jambe courte (-) de la sonnerie à une broche GPIO GND (fil noir)
Raspberry Pi active buzzer transistor

Ecrivez le code

Le but de ce tutoriel est d’écrire un script Python simple qui permet à la sonnerie de jouer une mélodie simple. Pour écrire le code, nous utilisons l’EDI Thonny. Vous pouvez trouver Thonny dans le menu d’applications de votre Raspberry Pi.

Écrivez ou collez le code suivant dans l’EDI:

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()

Quelques explications à propos du code:

  • GPIO.setmode (GPIO.BCM): L’option GPIO.BCM signifie que nous faisons référence aux broches par le numéro “Broadcom SOC channel”, ce sont les numéros après “GPIO”
  • GPIO.setwarnings (False): Nous l’utilisons ceci pour éviter les messages d’avertissement si nous ne terminons pas correctement la connexion GPIO lorsque nous interrompons le programme
  • GPIO.setup(BUZZER, GPIO.OUT): Nous définissons la broche BUZZER (= 23) comme une broche de sortie
  • def buzz(noteFreq, duration): Ici, nous définissons la fonction “buzz” avec les arguments “noteFreq” et “duration”
  • Attention, Python est sensible aux espaces. Ne supprimez pas le “tab” avant les prochaines lignes de code
  • halveWaveTime = 1 / (noteFreq * 2 ): Le calcul pour la moitié d’une onde d’une fréquence donnée
  • int(duration * noteFreq): Le calcul pour le nombre d’ondes à émettre
  • for i in range(waves):: Une boucle qui se répétera jusqu’à ce que le nombre d’ondes soit atteint
  • def play():: Nous définissons la fonction “play”
  • notes=[…]: Un tableau avec toutes les fréquences des notes de musique à jouer (Hz)
  • duration=[…]: Un tableau avec toutes les durées des notes de musique à jouer (secondes)
  • for n in notes:: Ce qui suit sera répété pour chaque élément du tableau “notes”
  • buzz(n, duration[t]): Appel de la fonction “buzz” avec les éléments des deux tableaux
  • time.sleep(duration[t] *0.1): Attendez un court moment entre chaque note de musique
  • #buzz(262, 0.5): Cette ligne a été mis en commentaire. Enlevez le “#” pour jouer juste une note de musique
  • play(): En appelant la fonction “play”, la mélodie sera jouée.

Exécutez le programme

Avant de lancer le programme, vous devrez le donner un nom et le sauvegarder.

raspberry pi python script buzzer melody

Aprés avoir sauvegardé le code, cliquez sur le bouton Exécuter. Vous entendrez une mélodie bien connue.

Félicitations! Avec cette configuration, vous pouvez maintenant jouer une mélodie avec une simple sonnerie sur votre Raspberry Pi. N’hésitez pas à modifier ou à ajouter des notes dans les tableaux “notes” et “duration” pour différentes mélodies. Encore beaucoup de plaisir!

Cette publication vous a-t-elle été utile ?

Cliquez sur une étoile pour la noter !

Note moyenne 5 / 5. Nombre de voix : 2

Aucune évaluation jusqu’à présent ! Soyez le premier à évaluer cette publication.

Nous sommes désolés que ce tutoriel ne vous ait pas été utile !

Améliorons ce tuto !

Dites-nous comment nous pouvons améliorer ce tuto ?

Une réflexion au sujet de « Sonnerie avec Raspberry Pi jouant une mélodie »

  1. Merci pour ce prog simple qui fonctionne très bien

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Cette publication vous a-t-elle été utile ?

Cliquez sur une étoile pour la noter !

Note moyenne 5 / 5. Nombre de voix : 2

Aucune évaluation jusqu’à présent ! Soyez le premier à évaluer cette publication.

Nous sommes désolés que ce tutoriel ne vous ait pas été utile !

Améliorons ce tuto !

Dites-nous comment nous pouvons améliorer ce tuto ?

découvrez ici plus de produits

Soyez le premier informé de nos derniers tutoriels et produits en vous inscrivant à notre Newsletter

freva.com respecte votre vie privée. Lisez notre politique de protection de la vie privée sur la façon dont nous traitons vos informations personnelles.