Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-13 06:57
Zdravo svima, U ovom uputstvu objašnjavam kako sam napravio snimač reprodukcije koristeći Raspberry Pi. Uređaj je Raspberry Pi model B+, sa 7 tastera na vrhu, zvučnikom povezanim na jedan od Pi -ovih USB portova i mikrofonom povezanim sa drugim USB portovima. Svako dugme je povezano sa zvukom, pa može reprodukovati 7 različitih zvukova. Zvukovi se puštaju nakon kratkog pritiska na dugme. Za snimanje novog zvuka, jednostavno pritisnite dugme duže od 1 sekunde, snimite nakon zvučnog signala i pustite dugme na kraju snimanja. Ne postaje jednostavnije od toga!
Korak 1: Potreban materijal
Za ovaj projekat mi je bilo potrebno:
- Raspberry Pi model B + i mikro SD kartica - 29,95 USD + 9,95 USD
- Plastično kućište Raspberry Pi - 7,95 USD
- USB zvučnici - 12,50 USD
- USB mikrofon - 5,95 USD
- Perma-proto ploča polovice veličine-4,50 USD
- 7 kratkih tipki - 2,50 USD
Takođe mi je bilo potrebno:
- Neka električna žica
- Ženska zaglavlja pod pravim uglom
- Malo drveta, crne boje i ljepila za kućište dugmeta
- Lemilica i lemljenje
Korak 2: Dugmad
Dugmad koja se koriste su prilično visoka (6 mm) tako da mogu proći kroz debljinu kućišta.
Stavio sam svojih 7 tipki na perma-proto ploču, koja je poput matične ploče, osim što su komponente lemljene na njoj. Ovo je robusnije od matične ploče i jeftinije je od štampanja PCB -a. Svako dugme povezuje zemlju sa GPIO -om na Raspberry Pi -u. Ovdje nemam otpornike jer Pi već ima unutrašnje pull-up/down otpornike koji će biti postavljeni u programu. U ovom slučaju postavio sam ih na pull-up (pogledajte program ispod).
Dugmad se postavljaju svaka 4 reda ili svakih 0,4 inča.
Korak 3: Slučaj dugmadi
Napravio sam vrlo jednostavnu futrolu za dugmad, sa listovima šperploče i drvenim kvadratnim tiplom. Veličina tipli mora biti dovoljno velika da sadrži podnožje dugmeta i ploču, ali dovoljno mala da gumb izlazi iz kućišta. Koristio sam tiple 1/4 in x 1/4.
Nakon što provjerite da li ploča pristaje u kućište, tiple se lijepe na podlogu. Zatim se na gornjoj ploči izbuše rupe (ploča se može koristiti za precizno označavanje svakih 0,4 inča). Svi drveni dijelovi su obojeni, ploča je postavljena u kućište, a gornji lim zalijepljen na nju.
Korak 4: Raspberry Pi
Nisam želio lemiti žice direktno na Pi, u slučaju da u budućnosti želim koristiti Pi za nešto drugo. Stoga sam lemio žice na ženskim zaglavljima pod pravim uglom i priključio zaglavlja na Pi.
GPIO -i koji se koriste su 21, 26, 20, 19, 13, 6 i 5. Koristi se i pin za uzemljenje.
Mikrofon i zvučnik jednostavno su priključeni u 2 od 4 USB priključka.
Pi se napaja preko mikro-USB utičnice
Korak 5: Programiranje
Da bih programirao Pi, povezao sam ga s internetom pomoću Ethernet kabela i kontrolirao ga s udaljenog računara pomoću VNC preglednika. Međutim, ne možete koristiti ovu postavku pri prvom povezivanju na Pi jer OS još nije instaliran i SSH nije onemogućen. Zato ćete morati povezati ekran, tastaturu i miša, barem prvi put.
Bilo je prilično mučno pronaći komande za snimanje i reprodukciju zvuka na desnoj zvučnoj kartici. Ovo su naredbe koje su mi uspjele:
-
aplay -D plughw: CARD = Device_1, DEV = 0 0.wav
Igra 0.wav
-
arecord 0.wav -D sysdefault: CARD = 1 -f cd -d 20
Snima maksimalno 20 sekundi u datoteci 0.wav, sa CD kvalitetom
Zvučne datoteke se nalaze u zadanom direktoriju (/home/pi). Zvučna datoteka za zvučni signal je takođe neophodna, smeštena u podrazumevani direktorijum i nazvana beep.wav.
Python kôd je sljedeći:
python kod za snimač reprodukcije Raspberry Pi
uvezite RPi. GPIO kao GPIO |
vreme uvoza |
import os |
#varijable: |
butPressed = [True, True, True, True, True, True, True] #ako je dugme i pritisnuto, onda je butPressed netačno |
pin = [26, 19, 13, 6, 5, 21, 20] #GPIO pinovi svakog dugmeta |
recordBool = False#Tačno ako je zapis u toku |
Način rada GPIO.set (GPIO. BCM) |
za i u rasponu (0, 7): |
GPIO.setup (pin , GPIO. IN, pull_up_down = GPIO. PUD_UP)#postavlja Pi-ove unutrašnje otpornike na povlačenje |
dok je True: |
za i u rasponu (0, 7): |
butPressed = GPIO.input (pin )#provjerava je li pritisnuto dugme |
if butPressed == False: #ako je pritisnuto dugme |
previousTime = time.time () |
while butPressed == Netačno i recordBool == Netačno: |
butPressed = GPIO.input (pin ) |
ako je time.time () - previousTime> 1.0:#ako je dugme pritisnuto duže od sekunde, tada je recordBool True |
recordBool = Tačno |
if recordBool == True: #if recordBool je True, pušta zvučni signal, a zatim snima |
os.system ("aplay -D plughw: CARD = Device_1, DEV = 0 beep.wav") |
os.system ("arecord %d.wav -D sysdefault: CARD = 1 -f cd -d 20 &" %i)#snima maksimalno 20 sekundi u datoteci i.wav, sa kvalitetom cd -a |
while butPressed == Netačno: |
butPressed = GPIO.input (pin ) |
os.system ("pkill -9 arecord")#zapis se zaustavlja kada se dugme pusti ili nakon 20 sekundi |
recordBool = Netačno |
else: #ako je recordBool False, reproducira zvuk i.wav |
os.system ("aplay -D plughw: CARD = Device_1, DEV = 0 %d.wav" %i) |
time.sleep (0,1) |
pogledajte rawPlayback snimač hostiran sa ❤ na GitHub -u
Korak 6: Pokrenite Python skriptu pri svakom pokretanju
Da biste pokrenuli python skriptu pri pokretanju svakog Pi -a, sljedeći redovi se stavljaju u datoteku pod nazivom playback.desktop u folder /home/pi/.config/autostart/
pokreće playback.py pri pokretanju Raspberry Pi
[Unos sa radne površine] |
Kodiranje = UTF-8 |
Vrsta = Aplikacija |
Naziv = Reprodukcija |
Komentar = Ovo je aplikacija za reprodukciju |
Exec = python /home/pi/playback.py |
StartupNotify = false |
Terminal = istina |
Skriveno = netačno |
pogledajte rawplayback.desktop hostovan sa ❤ na GitHub -u
Korak 7: Završite napomenu
Recite mi šta mislite o ovom projektu u odjeljku za komentare, javite mi svoje preporuke i glasajte za mene na takmičenju Raspberry Pi ako vam se svidjelo.
Radujem se čitanju!