Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
Zdravo vsi, V tem navodilu razlagam, kako sem s pomočjo Raspberry Pi naredil snemalnik predvajanja. Naprava je model Raspberry Pi modela B+, s 7 potisnimi gumbi na vrhu, zvočnikom, priključenim na eno od USB -vhodov Pi, in mikrofonom, priključenim na druga vrata USB. Vsak gumb je povezan z zvokom, zato lahko predvaja 7 različnih zvokov. Zvoki se predvajajo po kratkem pritisku gumba. Če želite posneti nov zvok, preprosto pritisnite gumb za več kot 1 sekundo, posnemite po pisku in spustite gumb na koncu zapisa. Preprosteje od tega ne gre!
Korak: Potreben material
Za ta projekt sem potreboval:
- Raspberry Pi model B + in kartica micro SD - 29,95 $ + 9,95 $
- Plastično ohišje Raspberry Pi - 7,95 USD
- USB zvočniki - 12,50 $
- USB mikrofon - 5,95 USD
- Pol velika perma-proto plošča-4,50 $
- 7 trenutnih gumbov - 2,50 $
Potreboval sem tudi:
- Nekaj električne žice
- Pravokotne ženske glave
- Nekaj lesa, črne barve in lepila za ohišje gumbov
- Spajkalnik in spajkalnik
2. korak: Gumbi
Uporabljeni gumbi so precej visoki (6 mm), tako da lahko gredo skozi debelino ohišja.
Svih 7 gumbov sem postavil na ploščo perma-proto, ki je kot plošča, le da so komponente na njej spajkane. To je robustnejše od plošče in cenejše od tiskanja tiskanega vezja. Vsak gumb poveže zemljo z GPIO na Raspberry Pi. Tu nimam uporov, saj ima Pi že notranje vlečne/navzdolne upore, ki bodo nastavljeni v programu. V tem primeru sem jih nastavil na pull-up (glej program spodaj).
Gumbi so nameščeni vsake 4 vrstice ali vsakih 0,4 palca.
3. korak: ohišje gumbov
Naredil sem zelo preprosto ohišje za gumbe s ploščami iz vezanega lesa in lesenim kvadratnim moznikom. Velikost moznikov mora biti dovolj velika, da vsebuje osnovo gumba in ploščo, vendar dovolj majhna, da gumb izstopa iz ohišja. Uporabil sem moznik 1/4 v x 1/4.
Ko se prepričate, da se deska prilega ohišju, se mozniki prilepijo na podlago. Nato se na zgornjem listu izvrtajo luknje (ploščo lahko uporabite za natančno označevanje vsakih 0,4 palca). Vsi leseni deli so pobarvani, plošča je nameščena v ohišje, nanjo pa je lepljen zgornji list.
4. korak: Raspberry Pi
Nisem želel spajati žic neposredno na Pi, če bi v prihodnosti želel uporabiti Pi za kaj drugega. Zato sem žice spajkal na pravokotne ženske glave in priključil glave na Pi.
Uporabljeni GPIO so 21, 26, 20, 19, 13, 6 in 5. Uporablja se tudi ozemljitveni pin.
Mikrofon in zvočnik sta preprosto priključena v 2 od 4 vhodov USB.
Pi se napaja prek vtičnice micro-usb
5. korak: Programiranje
Za programiranje Pi sem ga z ethernetnim kablom povezal z internetom in ga upravljal z oddaljenega računalnika s pregledovalnikom VNC. Te nastavitve pa ne morete uporabiti ob prvi priključitvi na Pi, ker OS še ni nameščen in SSH ni onemogočen. Tako boste morali vsaj prvič povezati zaslon, tipkovnico in miško.
Bilo je precej težav pri iskanju ukazov za snemanje in predvajanje zvoka na desni zvočni kartici. To so ukazi, ki so mi delovali:
-
aplay -D plughw: KARTICA = Naprava_1, DEV = 0 0.wav
Predvaja 0.wav
-
arecord 0.wav -D sysdefault: KARTICA = 1 -f cd -d 20
Snema največ 20 sekund v datoteki 0.wav s kakovostjo CD -ja
Zvočne datoteke se nahajajo v privzetem imeniku (/home/pi). Zvočna datoteka za pisk je prav tako potrebna, postavljena v privzeti imenik in imenovana beep.wav.
Koda pythona je naslednja:
koda python za snemalnik predvajanja Raspberry Pi
uvozite RPi. GPIO kot GPIO |
čas uvoza |
uvoz os |
#spremenljivke: |
butPressed = [True, True, True, True, True, True, True]#če pritisnete gumb i, potem je butPressed napačno |
pin = [26, 19, 13, 6, 5, 21, 20] #GPIO zatiči vsakega gumba |
recordBool = False#True, če je zapis v teku |
Način nastavitve GPIO (GPIO. BCM) |
za i v območju (0, 7): |
GPIO.setup (pin , GPIO. IN, pull_up_down = GPIO. PUD_UP)#nastavi notranje upore Pi za vlečenje |
medtem ko je res: |
za i v območju (0, 7): |
butPressed = GPIO.input (pin )#preveri, ali je pritisnjen gumb |
if butPressed == False:#če pritisnete gumb |
previousTime = time.time () |
while butPressed == False in recordBool == False: |
butPressed = vhod GPIO. (pin ) |
če je time.time () - previousTime> 1.0:#če je gumb pritisnjen za več kot sekundo, potem je recordBool True |
recordBool = Res |
if recordBool == True: #if recordBool je True, predvaja pisk in nato snema |
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)#snema največ 20 sekund v datoteki i.wav, s kakovostjo CD -ja |
medtem ko butPressed == False: |
butPressed = vhod GPIO. (pin ) |
os.system ("pkill -9 arecord")#zapis se ustavi, ko gumb spustite ali po 20 sekundah |
recordBool = False |
else: #if recordBool je False, predvaja zvok i.wav |
os.system ("aplay -D plughw: CARD = Device_1, DEV = 0 %d.wav" %i) |
time.sleep (0,1) |
oglejte si snemalnik rawPlayback, ki ga gosti ❤ pri GitHubu
6. korak: Zaženite skript Python pri vsakem zagonu
Če želite zagnati skript python pri vsakem zagonu Pi, se v datoteko, imenovano playback.desktop, v mapo /home/pi/.config/autostart/ vnesejo naslednje vrstice.
teče playback.py pri zagonu Raspberry Pi
[Vnos na namizje] |
Kodiranje = UTF-8 |
Vrsta = Aplikacija |
Ime = Predvajanje |
Komentar = To je aplikacija za predvajanje |
Exec = python /home/pi/playback.py |
StartupNotify = false |
Terminal = res |
Skrita = napačna |
oglejte si rawplayback.desktop, ki ga gosti ❤ GitHub
Korak 7: Konec opombe
Prosim, povejte mi, kaj mislite o tem projektu, v razdelku s komentarji, sporočite mi vaša priporočila in glasujte zame na natečaju Raspberry Pi, če vam je bil všeč.
Veselim se vašega branja!