Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2024:cpatru:david_matache [2024/05/05 13:12]
david.matache [Descriere generală]
pm:prj2024:cpatru:david_matache [2024/05/26 12:17] (current)
david.matache [Download]
Line 9: Line 9:
 </​note>​ </​note>​
  
-Proiectul va fi compus dintr-un radio dotat cu o antena, doua butoane de schimbat frecventa, un potentiometru pentru schimbarea volumului, un ecran LCD pentru afisarea frecventei/​orei,​ doua butoane de setat alarma si schimbat ​ora alarmei, un difuzor si un buton de on/off.+Proiectul va fi compus dintr-un radio dotat cu o antena, doua butoane de schimbat frecventa, un potentiometru pentru schimbarea volumului, un ecran LCD pentru afisarea frecventei/​orei,​ doua butoane de setat alarma si schimbat ​timpul ​alarmei, un difuzor si un buton de on/off.
 ===== Descriere generală ===== ===== Descriere generală =====
  
-{{:​pm:​prj2024:​cpatru:​schemaradioalarm.png?​200|}}+{{:​pm:​prj2024:​cpatru:​schemaradioalarm.png?​800|}}
 ===== Hardware Design ===== ===== Hardware Design =====
  
 Acestea sunt piesele pe care va trebui să le utilizez: Acestea sunt piesele pe care va trebui să le utilizez:
-  * arduino +  * 1 x Arduino Uno 
-  * ecran LCD + 
-  * breadboard +Arduino Uno este un microcontroler,​ rolul acestuia este de a primi datele senzorilor ( transmise prin impulsuri electrice ), procesarea acestor date si controlul sistemului electronic. 
-  * cabluri + 
-  * butoane +Sunt utilizatii urmatorii pini: 
-  * difuzor + 
-  * led verde + GND - impamantarea 
-  * baterie +  
-  * antena + 5V - Alimentarea placutei 
-  * switch on/off+ 
 + ​Pin-urile de semnal analog - Pentru a putea procesa semnalul ecranului LCD 
 + 
 + ​Pin-urile PWM ( Digital Pulse Width Modulation ) - Utilizate pentru controlul pulsului electric astfel incat in urma variatiei de semnal, sa se poata modifica frecventa. 
 + 
 +  * 1 X Modul display OLED 
 + 
 +Modulul de display OLED I2C are rolul de a afisa frecventa statiei radio, de a actiona ca si ceas si alarma ( in cazul acesta specific ) si de a vizualiza grafic alti parametri si setari. 
 + 
 +GND - impamantarea 
 + 
 +VCC ( voltage at the collector )  - alimentarea 
 + 
 +SDA ( Serial Data Line ) - Rolul SDA este de a creea o linie de date pentru comunicatia prin protocolul I2C ( Inter-Integrated Circuit ).   
 + 
 +SLC ( Serial Clock Line ) -  Linia de ceas pentru comunicatia I2C, este folosit pentru a sincroniza transferul de date intre dispozitive. Ceasul este control de dispozitivul master al busului. 
 + 
 +SDA si SLC sunt utilizate pentru a seta frecventele,​ volumulul si alte setari ale modului prin intermediul microcontrolerului si al amplificatorului audio cu potentiometru ( microcontrolerul trimite comenzi pe linia SDA, SDC sgestoneaza sincronizarea ceasului, amplificatorul cu potentiometru controleaza volumul ( in urma traducerii ) al semnalului radio. 
 + 
 +  * 1 x Breadboard 
 +  
 +  * 4 x Butoane 
 +2 Butoane sunt folosite pentru a controla frecventa iar celelate 2 sunt folosite pentru a controla alarma 
 +  * 2 x Boxa 40mm 3W 
 + 
 +Boxele au rolul de a transforma semnalul transmis prin amplificatorul radio din unde audio in semnal sonor. Acestea au necesara doar alimentarea. 
 +  *1 x Modul radio TEA5767 
 + 
 +Rolul functional al modului radio este de a capta undele radio si a le transmite amplificatorului audio astfel incat sa poata fi traduse in semnal audio de catre boxe. 
 + 
 +Pini folositi sunt: 
 + 
 +Alimentare - pentru alimentarea modului 
 + 
 +GND - impamantarea 
 + 
 +LOUT/ROUT - Prin intermediul unui cablu audio transmite date audio catre amplificator  
 + 
 +Antena - Capteaza unde radio 
 + 
 +SDA ( Serial Data Line ) - Rolul SDA este de a creea o linie de date pentru comunicatia prin protocolul I2C ( Inter-Integrated Circuit ).   
 + 
 +SLC ( Serial Clock Line ) -  Linia de ceas pentru comunicatia I2C, este folosit pentru a sincroniza transferul de date intre dispozitive. Ceasul este control de dispozitivul master al busului. 
 + 
 +SDA si SLC sunt utilizate pentru a seta frecventele,​ volumulul si alte setari ale modului prin intermediul microcontrolerului si al amplificatorului audio cu potentiometru ( microcontrolerul trimite comenzi pe linia SDA, SDC sgestoneaza sincronizarea ceasului, amplificatorul cu potentiometru controleaza volumul ( in urma traducerii ) al semnalului radio. 
 + 
 +  * 1 x Led 5 mm 
 + 
 +Led-ul este utilizat ca si forma de control si audit, prin led-ul acesta putem verifica daca sistemul este functional in parametrii optimi ( i.e exista alimentare ). 
 + 
 +  * 1 x Baterie de 9V 
 +  * 1 x Antena radio 
 +  * 1 x Amplificator audio TDA7297, 2x15W, 12V 
 + 
 +Rolul amplificatorului audio cu potentiometru este de a mari puterea unui semnal audio, facandu-l suficient de puternic pentru a fi redat prin difuzoare.  
 + 
 +Sunt utilizati urmatorii pini: 
 + 
 +Alimentare si impamantare - pentru amplificatorul in sine  
 + 
 +LOUT/ROUT - Alimentarea pentru boxe  
 + 
 +Modulul Aux_In (In1+/In2+) - Prin cablul jack se transmite semnalul de la modulul radio  la amplificatorul audio, acest semnal este amplificat si transformat prin boxe in semnal sonor. 
 + 
 +  * 1 x Switch SPST 
 +Intrerupatorul are rolul de a opri alimentarea cu electricitate a sistemului. 
 + 
 +Schema electrica:​ 
 + 
 +{{:​pm:​prj2024:​cpatru:​schematic_radio2_2024-05-26.png?​800|}} 
 + 
 + 
 +Radio-ul cu alarma in functiune:​ 
 + 
 +{{:​pm:​prj2024:​cpatru:​radioalarmimage.jpg?​800|}}
  
 ===== Software Design ===== ===== Software Design =====
  
 + 
 +===== Motivatia alegerii bibliotecilor folosite in cadrul proiectului =====
  
-<note tip> +Pentru acest proiect, au fost utilizate mai multe biblioteci pentru a facilita comunicarea si interactiunea cu diferite componente hardware. Acestea includ: 
-Descrierea codului aplicaţiei ​(firmware): + 
-  mediu de dezvoltare ​(if any(e.gAVR StudioCodeVisionAVR+1. **Adafruit_GFX si Adafruit_SSD1306:​** Aceste biblioteci sunt utilizate pentru a controla afisajul OLED. Biblioteca Adafruit_GFX ofera functii grafice de baza, cum ar fi desenarea de forme si text, in timp ce Adafruit_SSD1306 permite controlul specific al afisajului OLED SSD1306. Am ales aceste biblioteci datorita compatibilitatii lor excelente si a documentatiei detaliate, care faciliteaza implementarea rapida si eficienta a functionalitatilor de afisare. 
-  librării şi surse 3rd-party (e.gProcyon AVRlib) + 
-  algoritmi şi structuri pe care plănuiţi ​să le implementaţi +2. **Wire:** Biblioteca Wire este utilizata pentru comunicarea I2C. Este necesara pentru interactiunea cu modulul TEA5767 ​(radio FMsi afisajul OLED. Aceasta simplifica foarte mult procesul de initializare si comunicare cu dispozitivele I2C. 
-  (etapa 3) surse şi funcţii implementate + 
-</​note>​+3. **Tone:** Aceasta biblioteca este folosita pentru a controla un buzzer piezo. Permite generarea de tonuri audio, care sunt utilizate pentru notificari sonore in proiect. Am ales aceasta biblioteca datorita usurintei sale de utilizare si a flexibilitatii in generarea diferitelor frecvente sonore. 
 + 
 + 
 + 
 +===== Evidentierea elementului de noutate al proiectului ===== 
 + 
 +Elementul de noutate al acestui proiect consta in integrarea unui sistem de alarma cu functionalitati de radio FM si afisaj OLED, toate controlate printr-un set simplu de butoane. Proiectul combina mai multe functionalitati independente intr-un singur dispozitiv compact: 
 + 
 +- Controlul frecventei radio FM. 
 +- Setarea si afisarea unui cronometru care declanseaza o alarma sonora si vizuala la expirare. 
 +- Utilizarea unui afisaj OLED pentru a furniza feedback vizual utilizatorului. 
 + 
 + 
 + 
 +===== Justificarea utilizarii functionalitatilor din laborator in cadrul proiectului ===== 
 + 
 +**Laboratorul 0: GPIO** 
 +- **Justificare:​*Proiectul utilizeaza pinii GPIO pentru a citi starea butoanelor ​de control ​(crestere/​scadere frecventa si setare cronometru). 
 + 
 +**Laboratorul 1: UART** 
 +- **Justificare:​** Comunicarea seriala UART este utilizata pentru a debuga si a monitoriza functionalitatea proiectului prin intermediul Serial Monitor. 
 + 
 +**Laboratorul 2: Intreruperi** 
 +- **Justificare:​** Desi proiectul nu utilizeaza intreruperi hardwareutilizarea delay-urilor mici (debouncepentru butoane poate fi vazuta ca o forma simpla de gestionare a evenimentelor asemanatoare intreruperilor. 
 + 
 +**Laboratorul 3: Timere. PWM** 
 +**Justificare:​** Proiectul utilizeaza un cronometru pentru a numara secundele si a declansa alarmaPWM este utilizat pentru a genera tonuri cu buzzer-ul
 + 
 +**Laboratorul 6: I2C** 
 +- **Justificare:​** Biblioteca Wire pentru I2C este esentiala pentru comunicarea cu modulul TEA5767 si afisajul OLED. 
 + 
 + 
 + 
 +===== Explicarea scheletului proiectului,​ interactiunea dintre functionalitati si modul de validare ===== 
 + 
 +Proiectul este structurat in functii separate pentru initializare si pentru bucla principala de executie: 
 +- **Setup:** Initializeaza comunicatiile I2C, afisajul OLED, si buzzer-ul, si seteaza pinii pentru butoane. 
 +- **Loop:** Verifica starea butoanelor, actualizeaza cronometrul si declanseaza alarma la expirarea timpului. Afisajul OLED este actualizat in mod regulat pentru a reflecta modificarile. 
 + 
 +Interactiunea dintre functionalitati este gestionata prin variabile globale si functii dedicate pentru fiecare componenta. Validarea functionalitatilor ​s-a realizat prin teste iterative, monitorizarea seriala si ajustari pentru debounce si controlul timpurilor. 
 + 
 +===== Explicarea optimizarilor realizate ===== 
 + 
 +Optimizarile au inclus: 
 +**Debounce pentru butoane:** Utilizarea unui delay scurt pentru a preveni declansarea multipla a evenimentelor de buton. 
 +- **Reducerea sarcinilor inutile:** Actualizarea afisajului OLED si a frecventei radio doar atunci cand este necesar. 
 +- **Eficientizarea codului:** Divizarea functionalitatilor in functii separate pentru a creste lizibilitatea si usurinta de intretinere a codului. 
 + 
 +Aceste optimizari au fost implementate pentru a asigura un raspuns rapid al dispozitivului si pentru a minimiza consumul de resurse.
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip> +Am reusit sa implementez un radio ce poate capta unde din frecventa 76-108MHZ si il reda printr-un amplificator.
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +
-</​note>​+
  
 +De altfel folosind acelasi display OLED pentru Radio pot sa afisez o alarma ce poate fi setata de 2 butoane separate. O data ce timer-ul ajunge la 0 un alt speaker va suna pentru 3 secunde pentru a alerta de trecerea timpului.
 ===== Concluzii ===== ===== Concluzii =====
  
 ===== Download ===== ===== Download =====
  
-<note warning>​ +Aici e codul Arduino pentru radio-ul cu alarma
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). +
- +
-Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:​pm:​prj20??:​c?​** sau **:​pm:​prj20??:​c?:​nume_student** (dacă este cazul). **Exemplu:​** Dumitru Alin, 331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**. +
-</​note>​+
  
 +{{:​pm:​prj2024:​cpatru:​radioalarmpm.txt|}}
 ===== Jurnal ===== ===== Jurnal =====
  
pm/prj2024/cpatru/david_matache.1714903937.txt.gz · Last modified: 2024/05/05 13:12 by david.matache
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0