Differences

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

Link to this comparison view

pm:prj2023:alucaci:alarm-clcok [2023/05/10 11:12]
mihaela.sandru
pm:prj2023:alucaci:alarm-clcok [2023/05/30 03:06] (current)
mihaela.sandru [Bibliografie/Resurse]
Line 6: Line 6:
  
 ===== Introducere ===== ===== Introducere =====
-Tema proiectului reprezinta un ceas digital, care are posibilitatea de a-i seta un numar maxim de alarme. In plus, ceasul afiseaza temperatura si umiditatea din camera, iar pentru anumite valori critice ale acestora se declanseaza pornirea unui umidificator alimentat prin usb-c.+Tema proiectului reprezinta un ceas digital, care are posibilitatea de a-i seta un numar maxim de alarme. Are optiunea de a-i configura ceasul si luminozitatea display-ului. In plus, ceasul afiseaza temperatura si umiditatea din camera, iar pentru anumite valori critice ale acestora se declanseaza pornirea unui umidificator alimentat prin usb-c.
 {{ :​pm:​prj2023:​alucaci:​frekvens_back.jpg?​200|}} {{ :​pm:​prj2023:​alucaci:​frekvens_back.jpg?​200|}}
 {{ :​pm:​prj2023:​alucaci:​frekvens_front.jpg?​200|}} {{ :​pm:​prj2023:​alucaci:​frekvens_front.jpg?​200|}}
Line 18: Line 18:
  
 Pentru ca este vorba de un ceas, folosesc un modul extern RTC (Real Time Clock) pentru a tine evidenta timpului. Acest modul comunica cu Masterul prin protocolul I2C. Alarmele se configureaza prin intermediul butoanelor de pe spatele cuburilor Frekvens. La momentul setat, se va declansa o alarma prin difuzor. De asemenea, Masterul primeste informatii de la senzorul de temperatura si umiditate, iar la anumite valori critice ale acestora va porni umidificatorul prin intermediul mosfetului. Pentru ca este vorba de un ceas, folosesc un modul extern RTC (Real Time Clock) pentru a tine evidenta timpului. Acest modul comunica cu Masterul prin protocolul I2C. Alarmele se configureaza prin intermediul butoanelor de pe spatele cuburilor Frekvens. La momentul setat, se va declansa o alarma prin difuzor. De asemenea, Masterul primeste informatii de la senzorul de temperatura si umiditate, iar la anumite valori critice ale acestora va porni umidificatorul prin intermediul mosfetului.
 +
 +==== Block diagram ====
 {{ :​pm:​prj2023:​alucaci:​schema_bloc_smi.png |}} {{ :​pm:​prj2023:​alucaci:​schema_bloc_smi.png |}}
  
 ===== Hardware Design ===== ===== Hardware Design =====
 Lista de componente: Lista de componente:
-  * 2 cuburi Frekvens (32 shift-registere + 256 LED-uri + 4 butoane)+  * 2 cuburi Frekvens (32 shift-registere ​SCT2024 ​+ 256 LED-uri + 4 butoane)
   * 3 placi A-Star ATmega328PB   * 3 placi A-Star ATmega328PB
   * amplificator audio PAM8403   * amplificator audio PAM8403
   * difuzor   * difuzor
   * senzor de temperatura si umiditate DHT11   * senzor de temperatura si umiditate DHT11
-  * RTC+  * modul de PCF8563 ​RTC (Real Time Clock)
   * 2 USB-C   * 2 USB-C
-  * Mosfet ​AO3400 +  * mosfet ​AO3400 
-  * USBASP+  * USBASP ​AVR Programmer
   * 2 AC-DC Power Supply (una de 3.3v si una de 5V)   * 2 AC-DC Power Supply (una de 3.3v si una de 5V)
  
 +==== Electrical Schematic ====
 {{:​pm:​prj2023:​alucaci:​electrical_schematic.png?​direct&​800|}} \\ {{:​pm:​prj2023:​alucaci:​electrical_schematic.png?​direct&​800|}} \\
 {{:​pm:​prj2023:​alucaci:​electrical_schematic.pdf|}} {{:​pm:​prj2023:​alucaci:​electrical_schematic.pdf|}}
 +
 +==== Hardware Journey ====
 +De pe placile cu leduri si shift-registere am scos chip-ul care le controla. Am pus cele 2 surse izolate de 3.3V si 5V si USB-C-urile in capacele cuburilor Frekvens, izoland astfel traseele de putere de cele de semnal. Pe placuta de prototipare am lipit cele 3 placi A-Star ATmega328PB,​ USBASP-ul, modulul RTC si firele dintre ele si am plasat-o in cutia numarul 1 (stanga). \\
 +{{:​pm:​prj2023:​alucaci:​ac_img11.jpg?​210|}}
 +{{:​pm:​prj2023:​alucaci:​ac_img12.jpg?​180|}}
 +{{:​pm:​prj2023:​alucaci:​ac_img3.jpg?​280|}} \\
 +In cutia numarul 2 (dreapta) am adaugat difuzorul cu amplificatorul audio PAM8403 si mosfetul AO3400. Si am scos senzorul de temperatura si umiditate in afara cutiei. \\
 +{{:​pm:​prj2023:​alucaci:​ac_img14.jpg?​280|}}
 +{{:​pm:​prj2023:​alucaci:​ac_img5.jpg?​180|}}
 +{{:​pm:​prj2023:​alucaci:​ac_img6.jpg?​200|}}
 +
  
  
 ===== Software Design ===== ===== Software Design =====
  
 +==== Flow Chart ====
 +Codul se bazeaza pe un automat de stari, conform diagramei de mai jos. 
  
-<note tip> +Automatul porneste din starea Clock in care afiseaza pe display ora curenta primita de la modulul RTC. La o apasare lunga a butonului Select (de aici inainte vom trata acest eveniment ca buton de Return) se va afisa pe ecran intensitatea luminoasa a ecranului, care poate fi modificata prin butoanele de Up si Down.  
-Descrierea codului aplicaţiei ​(firmware): + 
-  * mediu de dezvoltare ​(if any) (e.gAVR StudioCodeVisionAVR+Prin apasarea butonului Select in starea Clock se ajunge in starea Menu, in care se va afisa pe ecran optiunile pe care le are utilizatorul:​ setarea a patru alarme, configurarea ceasului si a valorii critice la care sa porneasca umidificatorul ​(mosfetul), afisarea temperaturii si umiditatii. Modificarea valorilor se face prin intermediul butoanelor Up, Down si Select (acolo unde este cazul). 
-  * librării şi surse 3rd-party (e.gProcyon AVRlib+ 
-  * algoritmi şi structuri ​pe care plănuiţi să le implementaţi +Revenirea dintr-o stare la o stare anterioara se face prin butonul Return (valabil pentru orice stare). 
-  * (etapa 3surse şi funcţii implementate +{{ :pm:​prj2023:​alucaci:​ac_flow_chart.png |}} 
-</​note>​+ 
 +==== Code Structure ==== 
 +Codul este impartit in doua mari categorii ​de fisiere: cele destinate componentei master ​(master.ino, button.h, settings.h), respectiv cele pentru slave-uri ​(slave.inostandard_matrices_draw.h). \\ 
 +=== Slave === 
 +In fisierul standard_matrices_draw.h,​ se gasesc matricile pe care le foloseste slave-ul ca sa deseneze pe display, salvate in PROGMEM ​(memoria flash) 
 + 
 +In fisierul slave.ino este implementata logica pentru componenta slave. Sunt initializate o interfata UART Software (comunicarea cu masterul), o interfata seriala de tip hardware pentru debugging si pinii pentru shiftarea bitilor. Slave-ul asteapta inputuri de la master si pe baza comenzilor primite deseneaza in frame buffer imaginea ceruta si shifteaza bitii la output. Inputurile sunt de forma //<​nr_slave><​luminosity><​command>//,​ unde //​nr_slave//​ reprezinta numarul slave-ului pentru care este destinat mesajul, iar //​luminosity//​ se foloseste la realizarea PWM-ului pentru reglarea intensitatii led-urilor. 
 + 
 + 
 +=== Master === 
 +Masterul comunica cu slave-urile prin Software UART. 
 +La fiecare trecere prin loop, masterul: 
 +  * citeste ceasul de la modulul RTC si trimite comanda la slave o data pe minut, atunci cand e in starea CLOCK; 
 +  * verifica starea alarmelor ​(porneste difuzorul timp de un minut la momentul configurat de alarme); 
 +  * verifica umiditatea din aer (daca este peste o valoare critica setata,va porni umidificatorul);​ 
 +  * schimba starea automatului in functie de actiunile butoanelor. 
 +Alarmele, valoarea critica pentru umiditate si luminozitatea sunt salvate persistent in EEPROM.
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
 +**Am pornit de aici!**
 +{{ :​pm:​prj2023:​alucaci:​frekvens_front.jpg?​230 |}}
 +**Am trecut pe aici** 8-)
 +{{ :​pm:​prj2023:​alucaci:​ac_mess.jpg?​360 |}}
 +**Si am ajuns la:**
 +{{ :​pm:​prj2023:​alucaci:​ac_fin_frekvens.jpg?​nolink&​360 |}}
 +
  
-<note tip> 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. 
-</​note>​ 
  
 ===== Concluzii ===== ===== Concluzii =====
 +Acest proiect a fost complex atat din punct de vedere hardware, cat si software.
  
-===== Download =====+Am invatat despre interfatarea software-ului cu hardware-ul,​ despre stocarea datelor in PROGMEM si EEPROM.
  
-<note warning>​ +Desigur, am intampinat multiple probleme: 
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectuluisurseschemeetc. Un fişier README, un ChangeLog, un script ​de compilare şi copiere automată ​pe uC crează întotdeauna o impresie bună ;-).+  * de cateva oriam facut lipituri reciasa ca s-au desprins din loc; 
 +  * cutiile sunt facute sa fie asamblate/​dezasamblate foarte greu; 
 +  * declararea unei variabile locale intr-o ramura ​de case afecteaza functionarea switch-ului (compilatorul presupune ca varful stivei ramane la fel pe tot parcursul switch-ului)
 +  * am avut nevoie de un delay mare de debouncing, deoarece butoanele sunt springy.
  
-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**. +===== Download ===== 
-</​note>​+{{:pm:prj2023:alucaci:alarm_clock.zip|}}
  
 ===== Jurnal ===== ===== Jurnal =====
  
-<note tip> +  * 7 aprilie: documentare asupra unei teme de proiect 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul ​de proiect ​progresul proiectului. +  * 12 aprilie: alegerea temei de proiect  
-</​note>​+  * 18 aprilie: comandarea componentelor de la magazinul Optimus Digital 
 +  * 27 aprilie: realizarea documentatiei initiale (introducere,​ descriere generala, schema bloc, schema electrica) 
 +  * 24 aprilie - 16 mai: realizarea componentei hardware 
 +  * 17 mai - 28 mai: realizarea componentei software 
 +  * 29 mai: definitivarea documentatiei
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +=== Datasheet === 
-Listă cu documente, ​datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**+Datasheet ATmega328PB:​ 
-</note>+https://​ww1.microchip.com/​downloads/​en/​DeviceDoc/​40001906A.pdf \\ 
 +Datasheet RTC PCF8563: 
 +https://​www.nxp.com/​docs/​en/​data-sheet/​PCF8563.pdf \\ 
 +Datasheet DHT11 sensor: 
 +https://​www.mouser.com/​datasheet/​2/​758/​DHT11-Technical-Data-Sheet-Translated-Version-1143054.pdf \\ 
 +Datasheet SCT2024 shift register:  
 +http://​www.starchips.com.tw/​pdf/​datasheet/​SCT2024V01_03.pdf \\ 
 + 
 +=== Another === 
 +https://​reference.arduino.cc/​reference/​cs/​language/​functions/​analog-io/​analogwrite/​ \\ 
 +https://​reference.arduino.cc/​reference/​en/​language/​variables/​utilities/​progmem/ ​ \\ 
 +https://​docs.arduino.cc/​learn/​built-in-libraries/eeprom
  
 <​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>​
  
  
pm/prj2023/alucaci/alarm-clcok.1683706373.txt.gz · Last modified: 2023/05/10 11:12 by mihaela.sandru
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