Table des matières:
2025 Auteur: John Day | [email protected]. Dernière modifié: 2025-01-13 06:57
Salut à tous, Dans ce instructable, j'explique comment j'ai fait un enregistreur de lecture à l'aide de Raspberry Pi. L'appareil est un Raspberry Pi modèle B+, avec 7 boutons poussoirs sur le dessus, un haut-parleur connecté à l'un des ports USB du Pi et un microphone connecté à un autre port USB. Chaque bouton est associé à un son, il peut donc jouer 7 sons différents. Les sons sont joués après une brève pression sur le bouton. Pour enregistrer un nouveau son, il suffit d'appuyer sur le bouton pendant plus d'1 seconde, d'enregistrer après le bip, et de relâcher le bouton à la fin de l'enregistrement. Rien de plus simple que ça !
Étape 1: Matériel nécessaire
Pour ce projet j'avais besoin de:
- Un Raspberry Pi modèle B+ et une carte micro SD - 29,95 $ + 9,95 $
- Un boîtier en plastique Raspberry Pi - 7.95 $
- Haut-parleurs USB - 12.50 $
- Un micro USB - 5.95 $
- Une planche perma-proto demi-taille - 4.50 $
- 7 boutons poussoirs momentanés - 2.50 $
J'avais aussi besoin de:
- Quelques fils électriques
- Embases femelles à angle droit
- Du bois, de la peinture noire et de la colle pour l'étui à boutons
- Un fer à souder et de la soudure
Étape 2: les boutons
Les boutons utilisés sont assez hauts (6 mm) pour pouvoir traverser l'épaisseur du boîtier.
J'ai placé mes 7 boutons sur une carte perma-proto, qui ressemble à une planche à pain, sauf que les composants sont soudés dessus. C'est plus robuste qu'une maquette et moins cher que l'impression d'un circuit imprimé. Chaque bouton relie la masse à un GPIO sur le Raspberry Pi. Je n'ai pas de résistances ici car le Pi a déjà des résistances internes pull-up/down qui seront définies dans le programme. Dans ce cas, je les ai mis en pull-up (voir programme ci-dessous).
Les boutons sont placés toutes les 4 rangées, ou tous les 0,4 pouces.
Étape 3: Le cas des boutons
J'ai fait un étui très simple pour les boutons, avec des feuilles de contreplaqué et une cheville carrée en bois. La taille du goujon doit être suffisamment grande pour contenir la base du bouton et la planche, mais suffisamment petite pour laisser le bouton sortir du boîtier. J'ai utilisé une cheville de 1/4 po x 1/4 po.
Après s'être assuré que la planche tient dans le boîtier, les chevilles sont collées à la feuille de base. Des trous sont ensuite percés sur la feuille supérieure (la planche peut être utilisée pour faire des marques avec précision tous les 0,4 pouces). Toutes les pièces en bois sont peintes, la planche placée dans le boîtier et la feuille supérieure collée dessus.
Étape 4: Le Raspberry Pi
Je ne voulais pas souder les fils directement au Pi, au cas où je voudrais utiliser le Pi pour autre chose à l'avenir. J'ai donc soudé les fils à des embases femelles à angle droit et branché les embases sur le Pi.
Les GPIO utilisés sont 21, 26, 20, 19, 13, 6 et 5. La broche de masse est également utilisée.
Le microphone et le haut-parleur sont simplement branchés sur 2 des 4 ports USB.
Le Pi est alimenté par la prise micro-usb
Étape 5: Programmation
Pour programmer le Pi, je l'ai connecté à Internet à l'aide d'un câble Ethernet et je l'ai contrôlé depuis un ordinateur distant à l'aide de la visionneuse VNC. Cependant, vous ne pouvez pas utiliser cette configuration la première fois que vous vous connectez au Pi, car le système d'exploitation n'est pas encore installé et SSH n'est pas désactivé. Il vous faudra donc connecter un écran, un clavier et une souris, au moins la première fois.
C'était assez compliqué de trouver les commandes pour enregistrer et jouer un son sur la bonne carte son. Voici les commandes qui ont fonctionné pour moi:
-
aplay -D plughw:CARD=Device_1, DEV=0 0.wav
Joue 0.wav
-
acord 0.wav -D sysdefault:CARD=1 -f cd -d 20
Enregistre pendant 20 secondes maximum dans le fichier 0.wav, avec une qualité cd
Les fichiers son sont situés dans le répertoire par défaut (/home/pi). Un fichier son pour le bip est également nécessaire, placé dans le répertoire par défaut et appelé beep.wav.
Le code python lui-même est le suivant:
code python pour un enregistreur de lecture Raspberry Pi
importer RPi. GPIO en tant que GPIO |
heure d'importation |
importer le système d'exploitation |
#variables: |
butPressed = [True, True, True, True, True, True, True]#si le bouton i est enfoncé, alors butPressed est False |
broche = [26, 19, 13, 6, 5, 21, 20]#broches GPIO de chaque bouton |
recordBool = False#True si un enregistrement est en cours |
GPIO.setmode(GPIO. BCM) |
pour i dans la plage (0, 7): |
GPIO.setup(pin, GPIO. IN, pull_up_down=GPIO. PUD_UP)#définit les résistances internes de Pi sur pull-up |
tant que vrai: |
pour i dans la plage (0, 7): |
butPressed = GPIO.input(pin)#vérifie si un bouton est enfoncé |
if butPressed == False:#si un bouton est enfoncé |
heure précédente = heure.heure() |
while butPressed == False et recordBool == False: |
butPressed = GPIO.input(pin) |
if time.time() - previousTime > 1.0:#si le bouton est enfoncé pendant plus d'une seconde, alors recordBool vaut True |
recordBool = True |
if recordBool == True:#if recordBool est True, il émet un bip puis enregistre |
os.system("aplay -D plughw:CARD=Device_1, DEV=0 bip.wav") |
os.system("arecord %d.wav -D sysdefault:CARD=1 -f cd -d 20 &" %i)#enregistre pendant 20 secondes maximum dans le fichier i.wav, avec une qualité cd |
while butPressed == False: |
butPressed = GPIO.input(pin) |
os.system("pkill -9 arecord")#l'enregistrement est arrêté lorsque le bouton est relâché, ou après 20 secondes |
recordBool = False |
else:#si recordBool est False, il joue le son i.wav |
os.system("aplay -D plughw:CARD=Device_1, DEV=0 %d.wav" %i) |
temps.sommeil(0.1) |
voir rawPlayback recorder hébergé avec ❤ par GitHub
Étape 6: Exécutez le script Python à chaque démarrage
Pour exécuter le script python au démarrage de chaque Pi, les lignes suivantes sont placées dans un fichier appelé playback.desktop dans le dossier /home/pi/.config/autostart/
exécute playback.py au démarrage de Raspberry Pi
[Entrée de bureau] |
Encodage=UTF-8 |
Type=Application |
Nom=Lecture |
Comment=Ceci est une application de lecture |
Exec=python /home/pi/playback.py |
StartupNotify=false |
Terminal=vrai |
Caché=faux |
voir rawplayback.desktop hébergé avec ❤ par GitHub
Étape 7: Note de fin
Dites-moi ce que vous pensez de ce projet dans la section des commentaires, faites-moi part de vos recommandations et votez pour moi au concours Raspberry Pi si vous l'avez aimé.
Au plaisir de vous lire !