Cuprins:
- Provizii
- Pasul 1: Descrierea piesei zmeură:
- Pasul 2: Codurile de la distanță IR
- Pasul 3: Programul principal
- Pasul 4: Raspberry Part: pornire automată și adăugarea de fișiere noi
- Pasul 5: Gestionarea energiei prin Arduino Nano
- Pasul 6: Cablarea
- Pasul 7: Cutia
Video: Raspitone: Jukebox ușor de utilizat: 7 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:43
Bună ziua, următorul meu proiect este, așa cum făceam, un proiect nu foarte util:
Acesta este un tonomat bazat pe un Raspberry 3 B +
Știu, așa ceva se poate face cu ușurință cu un smartphone și un difuzor Bluetooth.
Dar pentru proiectul meu, aveam două condiții prealabile:
Am vrut să fac ceva „vintage”.
Și, în general, dat fiind faptul că doamna mea este definitiv lipsită de speranță pentru computer sau bluetooth sau orice altceva din secolul al XXI-lea (și chiar al XX-lea), a trebuit să fac ceva foarte simplu de utilizat …
Deci, specificațiile au fost după cum urmează:
Un singur buton pentru a porni aparatul
Un ecran tactil (foarte simplu) pentru a gestiona muzica.
O singură atingere pe ecran pentru a opri aparatul.
Și pentru a avea un sunet bun ………
Provizii
Pentru aceasta am folosit:
1 Zmeură 3 B +
1 home cinema vechi care a fost inutil datorită cititorului de DVD OOS (un Samsung 2.1 vechi cu woofer și 2 difuzoare pe care le-am modificat pentru a se potrivi la cutie)
1 placă HIFIBERRY DIGI + (cu ieșire optică pentru amplificatorul de putere)
1 ecran tactil capacitiv de 7 (al meu este Makeasy pentru zmeură cu intrare HDMI și alimentat prin USB, dar orice ecran tactil HDMI ar trebui să fie OK)
1 alimentare de alimentare 5V 5A
1 scut de releu
1 Arduino nano pentru a gestiona procesul de pornire / oprire
1 led IR pentru a conduce home cinema (condus de un tranzistor 2N2222 NPN)
1 receptor IR (pentru o parte a proiectului de învățare a codurilor IR, o primesc pe a mea de pe un hard disk multimedia vechi cu comandă de la distanță)
3 led-uri
1 comutator pentru modul de întreținere
1 comutator pentru lucrul pe arduino (în timpul încărcării, arduino este resetat)
niște conectori JST și Dupont
Și pentru cutie
Lemn și placaj (dar nu voi descrie profund realizarea cutiei). doar să spun că, în ceea ce privește boomerul din interiorul cutiei, placajul de 10 mm și lemnul de 18 mm sunt obligatorii dacă nu doriți să vedeți Jukebox traversând camera de zi în timp ce jucați !!!!
Pasul 1: Descrierea piesei zmeură:
Raspi trebuie să gestioneze diferite lucruri:
1) comenzile către home cinema (prin telecomandă IR)
2) fișierele muzicale
3) ecranul tactil
4) Bătăile inimii către Arduino (care gestionează Wdt (cronometrul câinelui de supraveghere))
Am început de la o distribuție Raspbian strech pe un card SD de 16 G (Deoarece vom citi doar fișiere de pe cardul SD, nu este necesară utilizarea unui HDD). Nu voi petrece timp pe această parte, deoarece web-ul este plin de tuto despre asta..
Să vedem diferitele părți în pașii următori ….
Pasul 2: Codurile de la distanță IR
Deoarece nu am putut găsi planul de circuit al home cinema-ului, am decis să îl conduc prin intermediul comenzilor de la distanță
Primul pas pe care a trebuit să-l parcurg a fost să învăț să Raspi codurile comenzii de la distanță Home cinema.
Am avut unele diferențe, probabil din cauza versiunii noi, deoarece instructabilele sunt destul de vechi, fișierul hardware.conf nu mai există (cel puțin nu l-am găsit)
Se pare, de asemenea, că tranzistorul utilizat în tuto este un tranzistor PNP, din partea mea am folosit un 2N2222 care este NPN, dar rezultatul este același. (Cu excepția cablării !!!!!!!!)
Alocarea pinului este dată în /boot/config.txt:
#autorisation de lirc le 07/07 / 2019dtoverlay = lirc-rpi, gpio_out_pin = 22, gpio_in_pin = 23
LED-ul IR va fi astfel conectat la pinul 22 al Raspi.
O remarcă importantă: atunci când învățați codurile către Raspi, este obligatoriu să utilizați cuvintele cheie enumerate în comandă
irrecord --list-namespace
Iată fișierul pe care l-am construit pentru tonomatul meu:
pi @ raspitone: / etc / lirc $ cat lircd.conf
# Vă rugăm să luați timp pentru a finaliza acest fișier așa cum este descris în # https://sourceforge.net/p/lirc-remotes/wiki/Check… # și puneți-l la dispoziția altora, trimițându-l la # #
# Acest fișier de configurare a fost generat automat
# folosind lirc-0.9.4c (implicit) pe Joi 9 mai 17:33:37 2019 # Linia de comandă utilizată: -d / dev / lirc0 /root/lircd.conf
# Versiunea kernel (uname -r): 4.14.98-v7 + # # Numele la distanță (conform fișierului de configurare): jukebox
# Marca dispozitivului la distanță, ceea ce ții în mână: # Modelul dispozitivului la distanță nr:
# Adresa URL a informațiilor dispozitivului la distanță:
# Dispozitivul la distanță are un dispozitiv de captare la pachet e. g., a
# USB dongle?:
# Pentru dispozitive USB incluse: codul furnizorului USB, codul produsului
# și șirul dispozitivului (utilizați dmesg sau lsusb):
# Tipul dispozitivului controlat
# (TV, VCR, Audio, DVD, Satelit, Cablu, HTPC, …):
# Dispozitive controlate de această telecomandă:
începe la distanță
nume tonomat
biții 16
steaguri SPACE_ENC | CONST_LENGTH
eps 30
aeps 100
antet 4470 4496
unul 542 1693
zero 542 581
ptrail 553
pre_data_bits 16
pre_data 0xC2CA
107863
toggle_bit_mask 0x0
frecvența 38000
începe codurile
KEY_POWER 0x807F
KEY_AUX 0x8877
KEY_VOLUMEUP 0xCC33
KEY_VOLUMEDOWN 0xDC23
coduri finale
terminați la distanță
După cum puteți vedea, am nevoie doar de 4 comenzi pentru a conduce Home Cinema
Putere (PORNIT / OPRIT)
AUX => pentru a comuta la canalul de intrare optică (deoarece HC pornește întotdeauna pe cititorul de DVD)
Și Volumul +/-
Comenzile aferente sunt executate prin comenzile LIRC:
de exemplu: „irsend SEND_ONCE jukebox KEY_VOLUMEUP”
Pasul 3: Programul principal
Programul principal este scris în Python:
Deoarece sunt nou în Python, cred că se pot face multe îmbunătățiri, dar rulează …
Specificațiile:
1) gestionați ecranul grafic:
Pentru aceasta, am folosit APPJAR care este TKINTER dar civilizat pentru student (cazul meu), asta înseamnă mult mai ușor de utilizat, probabil cu mai puține posibilități, dar a fost suficient pentru scopul meu.
2) redați fișierele mp3:
Am folosit mplayer pentru python.
3) generați numere aleatorii pentru redare în modul shuffle:
Deoarece nu am vrut să aud aceeași melodie în fiecare trimestru, am construit un mic program pentru a verifica dacă numărul nu era prezent în lista de numere anterioare x (x în funcție de lungimea listei de redare).
Funcția randint în python nu este atât de "aleatorie" din câte am văzut.
4) trimiteți „bătăile inimii” către Arduino
5) gestionați fișierele player:
Deoarece Mplayer este asincron, când fișierul este pornit nu există nicio modalitate de a ști pentru Python când este terminat (cel puțin nu am găsit o modalitate simplă)
Pentru a rezolva acest lucru, am folosit comenzile mplayer care indică lungimea fișierului și progresul în fișierul curent
Atât pentru 4 cât și pentru 5 am folosit posibilitatea dată de Appjar de a genera o sarcină periodică (deoarece appjar este un program de evenimente, acesta este un mod de a crea un eveniment periodic). funcția este:
# ******************* începe taskman ********************* app.registerEvent (taskman)
p.setPollTime (1000)
Taskman pentru „task manager”, care este o definiție a programului care gestionează toate evenimentele de pe ecran (sfârșitul fișierului redat, completează bara de progres, trimite bătăile inimii către Nano,…)
Odată pornit, ecranul arată astfel:
Iată programul: (poate fi deschis prin Notepad ++ sau Geany)
Pasul 4: Raspberry Part: pornire automată și adăugarea de fișiere noi
Dacă vă uitați la program, puteți vedea că folosesc câteva fișiere bash:
1) Start_jukebox:
De fapt, scopul este de a porni Home Cinema și de a trece la intrarea D. IN (intrare optică în Home Cinema)
pi @ raspitone: / bin $ cat start_jukebox #! / bin / bash
trimite SEND_ONCE tonomat KEY_POWER
dormi 7
trimiteți SEND_ONCE tonomatul KEY_AUX
dormi 2
2) stop_jukebox:
Pentru a opri Home Cinema
pi @ raspitone: / bin $ cat stop_jukebox
#! / bin / bash
trimite SEND_ONCE tonomat KEY_POWER
Aceste două fișiere bash sunt apelate de Python cu comanda os.system
Pentru a începe scriptul Python am făcut un mic bash
pi @ raspitone: ~ $ cat dem_jukebox.bash #! / bin / bash
cd / home / pi
python jukebox_gui.py
Pentru pornirea automată în modul GUI tocmai am modificat fișierul de pornire automată în / etc / xdg / lxsession / LXDE-pi
pi @ raspitone: / etc / xdg / lxsession / LXDE-pi $ cat autostart @ lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
@lxterminal --command = "dem_jukebox.bash"
punct-rpi
Adăugarea de fișiere mp3 noi:
Pentru a adăuga fișiere noi, am preferat să creez un mic script dedicat Python:
new_song_file.py
Mai întâi voi explica organizarea fișierelor de sistem:
Toate fișierele sunt în / home / pi
fișierele mp3 sunt stocate în directorul / home / pi / Music
Fiecare artist are propriul său subdirector care găzduiește fișierele mp3 aferente
pi @ raspitone: ~ / Music / Mike_oldfield $ ls -ltotal 760516
-rwxr ----- 1 pi pi 2254923 juin 30 2017 A_New_Beginning.mp3
-rwxr ----- 1 pi pi 2691736 juin 30 2017 Sosire.mp3
-rwxr ----- 1 pi pi 8383244 juin 30 2017 Ascension.mp3
-rwxr ----- 1 pi pi 5410816 juin 30 2017 Blue_Night.mp3
-rwxr ----- 1 pi pi 13125199 juin 30 2017 Castaway_ (Instrumental).mp3
-rwxr ----- 1 pi pi 12903583 juin 30 2017 Castaway.mp3
-rwxr ----- 1 pi pi 2969869 juin 30 2017 Celt.mp3
-rwxr ----- 1 pi pi 9047745 juin 30 2017 Chariots_ (Instrumental).mp3
-rwxr ----- 1 pi pi 9403263 juin 30 2017 Chariots.mp3
În directorul Documente putem găsi lista construită a fișierelor de redat.
pi @ raspitone: ~ / Documents $ cat list.txtFranz_Ferdinand / Michael_live.mp3
Franz_Ferdinand / evil_and_a_heathen.mp3
Franz_Ferdinand / Walk_Away_live.mp3
Franz_Ferdinand / love_and_destroy.mp3
Franz_Ferdinand / his_fffire.mp3
Franz_Ferdinand / eleanor_put_your_boots_on.mp3
Franz_Ferdinand / missing_you.mp3
Franz_Ferdinand / this_fire_ (playgroup_remix).mp3
Franz_Ferdinand / Jacqueline.mp3
De asemenea, putem găsi datele listelor de redare (dar aceasta este construită de scriptul Python)
Micul script Python adaugă noile melodii, salvate în Muzică, în list.txt după ce a formatat titlurile în format UNIX
Iată scriptul: (poate fi deschis prin Notepad ++ sau Geany)
Pasul 5: Gestionarea energiei prin Arduino Nano
Întrucât am vrut să am ceva ușor de început, am decis să fac asta de către un nano mic:
Principiul:
Când apăsați butonul de pornire, dispozitivele sunt toate alimentate, nano pornește (1 sau 2 secunde) și preia gestionarea energiei prin declanșarea unui releu care shuntează contactele butonului.
Apoi Nano așteaptă 35 de secunde pentru a primi bătăile inimii de la Raspberry (înseamnă că procesul de pornire este finalizat și programul jukebox rulează).
Atâta timp cât nano primește bătăile inimii, acesta menține releul pornit
Dacă nu mai există bătăi de inimă (înseamnă că programul tonomatului este oprit) Nano așteaptă 20 de secunde (pentru a fi sigur că raspi-ul este complet oprit) pentru a elibera releul de alimentare.
Tonomatul este apoi complet oprit
Am adăugat un comutator pentru a activa o intrare a nano-ului pentru a indica modul de întreținere (folosesc tonomatul pentru a-mi gestiona celelalte servere raspi prin ssh și vnc). Nano dezactivează apoi procesul câinelui de pază
Observație:
intrarea pentru bătăile inimii de la Raspi trebuie să fie trasă în jos (dar 3,3V de la Raspi este considerat ca fiind de nivel înalt de către Nano)
S-ar putea face cu NE555, dar sunt leneș și am întotdeauna niște nano-uri în sertarul meu !!!!
Iată programul scurt C (poate fi deschis cu Notepad ++)
Pasul 6: Cablarea
Pentru ecran:
Un cablu HDMI și un cablu USB sunt utilizate pe Raspi pentru a alimenta și conduce ecranul.
Pentru panoul frontal:
Un cablu USB este, de asemenea, conectat de la Raspi pentru a putea încărca fișiere noi sau face copii de rezervă.
Un cablu USB este conectat de la Nano pentru a putea accesa softul (pentru modificări dacă este necesar)
Conectez, de asemenea, un dongle de tastatură wireless pe zmeură pentru a putea face întreținere fără a utiliza mufa USB externă
Pe măsură ce se folosesc Raspberry și Arduino, cablarea este destul de simplă.
Totul este situat pe o placă matricială.
De la zmeură 2 GPIO se folosesc:
Pin22 pentru LED IR
Pinul 27 pentru bătăile inimii la Arduino
pe Arduino
Pinul 2 este folosit ca pin de întrerupere pentru bătăile inimii de la Raspi.
Pinii de la 3 la 5 sunt folosiți pentru conducerea ledurilor (Start, Wdt, Maintenance).
Pinul 6 este pentru comutatorul de întreținere.
Pinul 7 este ieșit la scutul de releu.
Iată fișierul fritzing:
Pasul 7: Cutia
Nu voi descrie foarte mult ce am făcut deoarece depinde de amplificatorul de putere și de difuzoarele utilizate.
Ca informație, home cinema-ul este situat în partea de jos a casetei.
Chiar peste boxe:
1 woofer
2 difuzoare medii, pe care le-am modificat pentru a le introduce în cutie.
Deasupra:
Panoul frontal cu ecranul, LED-urile, comutatoarele și mufele USB.
Lemnul:
Pentru difuzoare, panourile laterale de sus și de jos am folosit scândură de lemn de 18 mm.
Partea din față este din placaj de 10 mm cu șuruburi de 40 mm.
Pentru a facilita cablarea și întreținerea (dacă este necesar !!!) am pus circuitele pe un sertar în spatele panoului frontal
Pentru a evita supraîncălzirea, se face o gaură mare pe partea inferioară a panoului din spate și am pus un ventilator de 5V (8 cm) pe panoul din spate chiar lângă circuit.
Imaginea de mai sus este doar pentru a da o idee.
Deci asta este !!!!!!!!!
Mulțumesc că m-ai citit
Și ne vedem data viitoare pentru noi aventuri
Recomandat:
Mod ușor de utilizat Makey Makey cu o punte tehnică: 5 pași
Mod ușor de utilizat Makey Makey cu o punte tehnică: Bună. Recent am văzut un program de punte tehnică makey makey în acest concurs, care a fost foarte cool, dar mi s-a părut greu, așa că am făcut o modalitate ușoară de a juca jocuri cu un pachet tehnologic. Dacă îți place instructabilul meu, te rog votează-l în cadrul concursului makey makey
Modul EuroRack DIY ușor de utilizat (convertor de 3,5 mm la 7 mm): 4 pași (cu imagini)
Modul EuroRack DIY ușor de utilizat (convertor de 3,5 mm la 7 mm): în ultima vreme am făcut multe lucruri de bricolaj pentru instrumentele mele modulare și semi-modulare și recent am decis că doresc un mod mai elegant de a împleti sistemul Eurorack cu 3.5 prize de mm pentru efecte de tip pedală care au 1/4 "; intrari si iesiri. Rezultatul
PiTextReader - un cititor de documente ușor de utilizat pentru o viziune deficitară: 8 pași (cu imagini)
PiTextReader - un cititor de documente ușor de utilizat pentru o viziune deficitară: prezentare generală Actualizare: scurtă demonstrație video: https://youtu.be/n8-qULZp0GoPiTextReader permite unei persoane cu deficiențe de vedere să „citească” text din plicuri, litere și alte articole. Face instantanee o imagine a elementului, se convertește în text simplu folosind OCR (Optical Char
DIY MusiLED, LED-uri sincronizate muzicale cu aplicație Windows și Linux cu un singur clic (32-bit și 64-bit). Ușor de recreat, ușor de utilizat, ușor de portat: 3 pași
DIY MusiLED, LED-uri sincronizate muzicale cu aplicație Windows și Linux cu un singur clic (32-bit și 64-bit). Ușor de recreat, ușor de utilizat, ușor de portat: acest proiect vă va ajuta să conectați 18 LED-uri (6 roșii + 6 albastre + 6 galbene) la placa Arduino și să analizați semnalele în timp real ale plăcii de sunet ale computerului și să le retransmiteți la LED-urile pentru a le aprinde conform efectelor de bătăi (Snare, High Hat, Kick)
Anulați ștergerea fișierelor șterse, foarte ușor și ușor de utilizat: 7 pași
Anulați ștergerea fișierelor șterse, foarte ușor și ușor de utilizat: ați șters vreodată un fișier de pe hard disk-ul de rezervă, camera foto, mp3 sau chiar ați golit coșul de reciclare și apoi ați realizat că doriți în continuare acel fișier? Acesta este un mod simplu de a recupera acele fișiere. Am adăugat acest instrucat, pentru că am șters fiecare episod din familia g