Obsah:
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
Ahoj všetci, V tomto návode vysvetľujem, ako som vyrobil rekordér na prehrávanie pomocou Raspberry Pi. Zariadenie je Raspberry Pi model B+, so 7 tlačidlami na vrchu, reproduktorom pripojeným k jednému z USB portov Pi a mikrofónom pripojeným k iným USB portom. Každé tlačidlo je priradené zvuku, takže môže prehrávať 7 rôznych zvukov. Zvuky sa prehrajú po krátkom stlačení tlačidla. Ak chcete nahrať nový zvuk, stačí stlačiť tlačidlo na viac ako 1 sekundu, nahrať po pípnutí a pustiť tlačidlo na konci záznamu. Jednoduchšie to už nejde!
Krok 1: Potrebný materiál
Na tento projekt som potreboval:
- Karta Raspberry Pi model B + a micro SD - 29,95 $ + 9,95 $
- Plastové puzdro Raspberry Pi - 7,95 dolárov
- USB reproduktory - 12,50 $
- USB mikrofón - 5,95 $
- Polovičná doska perma-proto-4,50 $
- 7 okamžitých tlačidiel - 2,50 $
Tiež som potreboval:
- Nejaký elektrický drôt
- Pravé uhlové hlavičky
- Trochu dreva, čiernej farby a lepidla na puzdro na gombíky
- Spájkovačka a spájkovačka
Krok 2: Tlačidlá
Použité tlačidlá sú pomerne vysoké (6 mm), aby mohli prejsť hrúbkou puzdra.
Svojich 7 tlačidiel som umiestnil na dosku proto-proto, ktorá je ako doštička, ibaže sú na nej spájkované súčiastky. Je to robustnejšie ako doska na pečenie a lacnejšie ako tlač dosky plošných spojov. Každé tlačidlo spája zem s GPIO na Raspberry Pi. Nemám tu odpory, pretože Pi už má vnútorné výsuvné/spúšťacie odpory, ktoré budú nastavené v programe. V tomto prípade som ich nastavil na pull-up (pozri program nižšie).
Tlačidlá sú umiestnené každé 4 rady alebo každých 0,4 palca.
Krok 3: Prípad s tlačidlami
Na gombíky som vyrobil veľmi jednoduché puzdro s preglejkovými doskami a drevenou hranatou hmoždinkou. Veľkosť hmoždinky musí byť dostatočne veľká, aby obsahovala základňu a dosku s gombíkmi, ale dostatočne malá, aby mohla gombík vytiahnuť von z puzdra. Použil som hmoždinku 1/4 x 1/4.
Po uistení, že sa doska zmestí do puzdra, sú hmoždinky prilepené k základnému listu. Potom sú na horný list vyvŕtané otvory (dosku je možné použiť na presné označenie každých 0,4 palca). Všetky drevené diely sú namaľované, doska je umiestnená v puzdre a vrchná vrstva je nalepená.
Krok 4: Raspberry Pi
Nechcel som spájkovať vodiče priamo k Pi, v prípade, že chcem v budúcnosti použiť Pi na niečo iné. Preto som spájkoval káble k pravouhlým zásuvkám a zapojil som ich na Pi.
Použité GPIO sú 21, 26, 20, 19, 13, 6 a 5. Používa sa aj uzemňovací kolík.
Mikrofón a reproduktor sú jednoducho zapojené do 2 zo 4 portov USB.
Pi je napájaný z mikro USB zásuvky
Krok 5: Programovanie
Na programovanie Pi som ho pripojil k internetu pomocou ethernetového kábla a ovládal som ho zo vzdialeného počítača pomocou prehliadača VNC. Toto nastavenie však nemôžete použiť pri prvom pripojení k Pi, pretože operačný systém ešte nie je nainštalovaný a SSH nie je zakázané. Minimálne na prvýkrát teda budete musieť pripojiť obrazovku, klávesnicu a myš.
Nájdenie príkazov na nahrávanie a prehrávanie zvuku na pravej zvukovej karte bolo dosť náročné. Nasledujúce príkazy fungovali pre mňa:
-
aplay -D plughw: CARD = Device_1, DEV = 0 0.wav
Hrá 0. vl
-
arecord 0.wav -D sysdefault: KARTA = 1 -f cd -d 20
Zaznamenáva sa maximálne 20 sekúnd do súboru 0.wav, v kvalite cd
Zvukové súbory sú umiestnené v predvolenom adresári (/home/pi). Potrebný je aj zvukový súbor pre pípnutie, umiestnený v predvolenom adresári a nazvaný beep.wav.
Samotný kód pythonu je nasledujúci:
python kód pre rekordér prehrávania Raspberry Pi
importujte RPi. GPIO ako GPIO |
čas importu |
import os |
#premenné: |
butPressed = [True, True, True, True, True, True, True, True]#ak je stlačené tlačidlo i, potom butPressed je nepravdivé |
pin = [26, 19, 13, 6, 5, 21, 20] #GPIO pinov každého tlačidla |
recordBool = False#True, ak prebieha záznam |
GPIO.setmode (GPIO. BCM) |
pre i v rozsahu (0, 7): |
GPIO.setup (pin , GPIO. IN, pull_up_down = GPIO. PUD_UP)#nastaví vnútorné odpory Pi na vyťahovanie |
kým je pravda: |
pre i v rozsahu (0, 7): |
butPressed = GPIO.input (pin )#skontroluje, či je stlačené tlačidlo |
if butPressed == False:#ak je stlačené tlačidlo |
previousTime = time.time () |
while butPressed == False and recordBool == False: |
butPressed = GPIO.input (pin ) |
ak time.time () - previousTime> 1.0:#ak je tlačidlo stlačené dlhšie ako sekundu, potom recordBool je True |
recordBool = Pravda |
ak recordBool == True: #if recordBool je True, zaznie pípnutie a potom sa nahrajú |
os.system ("aplay -D plughw: CARD = Device_1, DEV = 0 píp.wav") |
os.system ("arecord %d.wav -D sysdefault: CARD = 1 -f cd -d 20 &" %i) #records for maximum 20 seconds in file i.wav, with cd quality |
while butPressed == Nepravda: |
butPressed = GPIO.input (pin ) |
os.system ("pkill -9 arecord")#záznam sa zastaví, keď tlačidlo pustíte alebo po 20 sekundách |
recordBool = False |
else: #if recordBool je False, prehráva zvuk i.wav |
os.system ("aplay -D plughw: CARD = Device_1, DEV = 0 %d.wav" %i) |
time.sleep (0,1) |
zobraziť rekordér rawPlayback hostený ❤ od GitHub
Krok 6: Pri každom spustení spustite skript Python
Na spustenie skriptu python pri každom štarte Pi sú do súboru s názvom playback.desktop vložené nasledujúce riadky do priečinka /home/pi/.config/autostart/
spustí playback.py pri štarte Raspberry Pi
[Záznam na plochu] |
Kódovanie = UTF-8 |
Typ = Aplikácia |
Názov = Prehrávanie |
Komentár = Toto je aplikácia na prehrávanie |
Exec = python /home/pi/playback.py |
StartupNotify = false |
Terminál = pravda |
Skrytý = nepravda |
zobraziť rawplayback.desktop hostený s ❤ od GitHub
Krok 7: Koniec poznámky
Napíšte mi, čo si myslíte o tomto projekte, do sekcie komentárov, dajte mi vedieť o vašich odporúčaniach a ak sa vám páčil, dajte mi hlas v súťaži o Raspberry Pi.
Teším sa na vás!