This shows you the differences between two versions of the page.
pm:prj2025:iotelea:robert.hazaparu [2025/05/29 23:22] robert.hazaparu |
pm:prj2025:iotelea:robert.hazaparu [2025/05/30 07:28] (current) robert.hazaparu Final edit |
||
---|---|---|---|
Line 17: | Line 17: | ||
Alegerea dintre cele două surse de sunet, cardul SD sau radio, se face prin intermediul multiplexorului. Astfel, este necesar un singur amplificator și difuzor pentru a reda conținutul. | Alegerea dintre cele două surse de sunet, cardul SD sau radio, se face prin intermediul multiplexorului. Astfel, este necesar un singur amplificator și difuzor pentru a reda conținutul. | ||
- | {{ pm:prj2025:iotelea:robert.hazaparu:sprech_diagram.png }} | + | {{ pm:prj2025:iotelea:robert.hazaparu:chor_diagram_v2.png }} |
===== Hardware Design ===== | ===== Hardware Design ===== | ||
Line 24: | Line 24: | ||
* Placă Plusivo ATMega328P: https://www.optimusdigital.ro/ro/compatibile-cu-arduino-uno/1678-placa-de-dezvoltare-compatibila-cu-arduino-uno-atmega328p-i-ch340.html | * Placă Plusivo ATMega328P: https://www.optimusdigital.ro/ro/compatibile-cu-arduino-uno/1678-placa-de-dezvoltare-compatibila-cu-arduino-uno-atmega328p-i-ch340.html | ||
- | * Cititor card microSD GroundStudio: https://ardushop.ro/ro/module/1553-groundstudio-microsd-module-6427854023056.html Nu îl recomand dar nu mai aveau la optimus | + | * Cititor card microSD GroundStudio: https://ardushop.ro/ro/module/1553-groundstudio-microsd-module-6427854023056.html Nu îl recomand dar nu mai aveau la Optimus |
- | * Modul radio cu RDS RDA5807M: https://ardushop.ro/ro/electronica/2332-modul-radio-fm-rrd-102-6427854004321.html Distanța dintre pini nu e standard | + | * Modul radio FM cu RDS RDA5807M: https://ardushop.ro/ro/electronica/2332-modul-radio-fm-rrd-102-6427854004321.html Distanța dintre pini nu e standard |
* Multiplexor CD4053BE: https://ardushop.ro/ro/circuite-integrate/649-circuit-integrat-multiplexor-cd4053be-6427854008084.html | * Multiplexor CD4053BE: https://ardushop.ro/ro/circuite-integrate/649-circuit-integrat-multiplexor-cd4053be-6427854008084.html | ||
* Modul GS26347 cu amplificator LM386: https://ardushop.ro/ro/electronica/2095-modul-amplificator-audio-lm386-6427854032065.html | * Modul GS26347 cu amplificator LM386: https://ardushop.ro/ro/electronica/2095-modul-amplificator-audio-lm386-6427854032065.html | ||
Line 34: | Line 34: | ||
* Rezistori | * Rezistori | ||
* Fire | * Fire | ||
- | {{ pm:prj2025:iotelea:robert.hazaparu:chor_electrical_diagram.png?750 }} | + | {{ pm:prj2025:iotelea:robert.hazaparu:chor_electrical_diagram_v2.png?750 }} |
* Antenă, aparent | * Antenă, aparent | ||
- | Butoanele sunt ținute la Vcc în mod normal, separat de linia principală printr-un rezistor, și legate la masă atunci când sunt apăsate. | + | Explicare cablaj: |
+ | * Butoanele sunt ținute la Vcc în mod normal, separat de linia principală printr-un rezistor, și legate la masă atunci când sunt apăsate. | ||
+ | * Cele două ieșiri stereo ale modulului radio sunt combinate într-unul singur, mono, protejat prin rezistori. | ||
+ | * Liniile SCL și SCK ale I2C sunt ținute la Vcc, separate de linia principală printr-un rezistor. | ||
+ | |||
+ | ^ Componentă ^ Pini folosiți ^ | ||
+ | | Buton 1 | PD3 (Arduino 3) | | ||
+ | | Buton 2 | PD4 (Arduino 4) | | ||
+ | | Buton 3 | PD5 (Arduino 5) | | ||
+ | | Buton 4 | PD6 (Arduino 6) | | ||
+ | | Buton 5 | PD7 (Arduino 7) | | ||
+ | | Multiplexor | PB0 (Arduino 8) | | ||
+ | | Cititor microSD | SS - PB2 (Arduino 10) | | ||
+ | | ::: | SCK - PB5 (Arduino 13) | | ||
+ | | ::: | MISO - PB4 (Arduino 12) | | ||
+ | | ::: | MOSI - PB3 (Arduino 11) | | ||
+ | | ::: | Output sunet - PB1 (Arduino 9) | | ||
+ | | Modul radio FM | SCL | | ||
+ | | ::: | SDA | | ||
+ | | LCD 16x2 I2C | SCL| | ||
+ | | ::: | SDA | | ||
===== Software Design ===== | ===== Software Design ===== | ||
Line 46: | Line 66: | ||
==== Biblioteci ==== | ==== Biblioteci ==== | ||
- | * TMRpcm pentru interfațarea cardului SD | + | * SD și TMRpcm pentru interfațarea cardului SD și redarea asincronă a fișierelor |
- | * LiquidCrystal I2C pentru interfațarea cu ecranul LCD | + | * LiquidCrystal_I2C pentru afișarea de informații pe ecranul LCD |
* PU2CLR RDA5708 pentru interfațarea cu modulul radio | * PU2CLR RDA5708 pentru interfațarea cu modulul radio | ||
==== Altele ==== | ==== Altele ==== | ||
- | * Întreruperi pentru a folosi butoanele | + | * Întreruperi folosind macro ISR pentru a folosi butoanele |
+ | * Lungimea maximă a numelui fișierelor este foarte mică, așa că numele au fost hardcode-ate | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | Un sunet static. | + | {{ pm:prj2025:iotelea:robert.hazaparu:chor_picture1.jpg?750 }} |
+ | |||
+ | Sistemul reușeste să redea conținutul de pe cardul SD la o calitate suficient de satisfăcătoare pentru componentele folosite. | ||
+ | |||
+ | Întreruperile funcționează. Există un feedback pe ecranul LCD atunci când sunt apăsate butoane. Pentru play/stop, este afișat un caracter custom ce indică starea sistemului, caracter ce rămâne permanent pe ecran. Pentru volume+/-, next și previous se afișează pentru o scurtă perioadă de timp un caracter ce indică acțiunea realizată, după care se revine la unul din cele două caractere menționate anterior. | ||
+ | |||
+ | Limita de 12 caractere (8 fără extensia ”.wav”) nu este suficientă pentru a afișa informații pertinente despre ce se difuzează. Am optat să hardcodez aceste informații. | ||
+ | |||
+ | Alte probleme întâmpinate: | ||
+ | |||
+ | * Placa ATMega328P nu are suficientă memorie pentru a facilita intefațarea cu modulul radio și cardul SD în același timp. | ||
+ | * ESP32 folosește cu totul alte biblioteci și module diferite. | ||
+ | * Se pare că placa ESP32 pe care am comandat-o era stricată :( | ||
+ | * Recunosc că ar fi trebuit să mă gândesc la asta mai devreme, dar pentru ca un radio să funcționeze, are nevoie de antenă. Nu am antenă. Nu funcționează modulul radio. | ||
+ | * Semnalele sonore sunt foarte predispuse la interferențe. Chiar și trecând doar prin multiplexor, apar destule interferențe încât sunetul să devină deranjant. Pentru scopuri demonstrative, am optat să trec sunetul direct în amplificator. | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
- | Murphy și legea lui. | + | Analiza cu atenție a cerințelor tehnice, precum și a capabilităților hardware a componentelor ce se vor folosite este un pas important în orice proiect. Fără o analiză corectă, se pot ajunge la întârzieri sau chiar la incapacitatea de la livra un produs după specificațiile cerute. |
+ | |||
+ | Proiectul este funțional, partea de SD este exact cum am dorit de la început. Deși am pierdut mult timp încercând să fac placa ESP32 să funcționeze, după ce am abandonat acea idee, nu pot spune că mi-a displăcut să lucrez la proiect. | ||
+ | |||
+ | Rezistorii de 100 de ohmi nu separă nimic. | ||
===== Download ===== | ===== Download ===== | ||
Line 71: | Line 110: | ||
* Placa cu ATMega328P nu e suficient de bună pentru ambele operații intensive de citire card SD + radio, trebuie un ESP32. | * Placa cu ATMega328P nu e suficient de bună pentru ambele operații intensive de citire card SD + radio, trebuie un ESP32. | ||
* Am comandat piesele necesare - ESP32, cablu + altele. | * Am comandat piesele necesare - ESP32, cablu + altele. | ||
- | * Bibliotecile pentru ESP32 au nevoie de piese pe care nu le am. | ||
* Nu reușesc să mă conectez la ESP32. | * Nu reușesc să mă conectez la ESP32. | ||
* Renunț la ESP32 și mă întorc la placa cu ATMega328P, măcar să iasă una din două. | * Renunț la ESP32 și mă întorc la placa cu ATMega328P, măcar să iasă una din două. | ||
- | * Am doar un sunet static. | + | * Placa reușește să redea fișiere audio stocate pe cardul SD. |
+ | * Nu am antenă. | ||
+ | * Am implementat butoanele și întreruperile. | ||
+ | * Am implementat ecranul LCD și afișearea de informații. | ||
+ | * Am pus decorațiuni legate de funcționarea sistemului pe ecran. | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
Resurse software: | Resurse software: | ||
+ | * https://arduinointro.com/lcdcustomcharacter/ | ||
+ | * https://www.instructables.com/Audio-Player-Using-Arduino-With-Micro-SD-Card/ | ||
+ | * yt-dlp | ||
+ | * ffmpeg | ||
Resurse hardware: | Resurse hardware: | ||
+ | * https://docs.arduino.cc/resources/pinouts/A000066-full-pinout.pdf | ||
+ | * https://www.instructables.com/Simple-Way-to-Convert-Stereo-to-Mono/ | ||
+ | * https://www.ti.com/lit/ds/symlink/cd4053b.pdf?ts=1748490646974 | ||
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||