Differences

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

Link to this comparison view

pm:prj2023:alucaci:alarm-clcok [2023/05/29 23:02]
mihaela.sandru [Hardware Journey]
pm:prj2023:alucaci:alarm-clcok [2023/05/30 03:06] (current)
mihaela.sandru [Bibliografie/Resurse]
Line 40: Line 40:
  
 ==== Hardware Journey ==== ==== 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 ​si RTC si firele dintre ele si am plasat-o in cutia numarul 1 (stanga). \\+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_img11.jpg?​210|}}
 {{:​pm:​prj2023:​alucaci:​ac_img12.jpg?​180|}} {{:​pm:​prj2023:​alucaci:​ac_img12.jpg?​180|}}
 {{:​pm:​prj2023:​alucaci:​ac_img3.jpg?​280|}} \\ {{:​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. \\ 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?​250|}}+{{:​pm:​prj2023:​alucaci:​ac_img14.jpg?​280|}}
 {{:​pm:​prj2023:​alucaci:​ac_img5.jpg?​180|}} {{:​pm:​prj2023:​alucaci:​ac_img5.jpg?​180|}}
 {{:​pm:​prj2023:​alucaci:​ac_img6.jpg?​200|}} {{:​pm:​prj2023:​alucaci:​ac_img6.jpg?​200|}}
Line 53: Line 53:
 ===== 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.1685390562.txt.gz · Last modified: 2023/05/29 23:02 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