Differences

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

Link to this comparison view

pm:prj2024:cpatru:david_matache [2024/05/26 11:30]
david.matache [Hardware Design]
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ă =====
  
Line 94: Line 94:
 Schema electrica: Schema electrica:
  
-{{:​pm:​prj2024:​cpatru:​schematic_radio2_2024-05-19.png?800|}}+{{:​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.1716712259.txt.gz · Last modified: 2024/05/26 11:30 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