Differences

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

Link to this comparison view

pm:prj2024:mdinica:rares.constantin02 [2024/05/21 18:47]
rares.constantin02 [Jurnal]
pm:prj2024:mdinica:rares.constantin02 [2024/05/25 11:01] (current)
rares.constantin02 [Download]
Line 22: Line 22:
 **ESP32 - Action board schematic** **ESP32 - Action board schematic**
  
-Mai jos se regăsește schema electrică pentru placa care se va ocupa de acționarea diverselor module în funcție de datele venite de la placa de achiziție. Setul de butoane probabil va fi extins pentru a suporta mai multe funcționalități.+Mai jos se regăsește schema electrică pentru placa care se va ocupa de acționarea diverselor module în funcție de datele venite de la placa de achiziție.
  
 <spoiler ESP32 Action board schematic>​ <spoiler ESP32 Action board schematic>​
Line 39: Line 39:
 ===== Software Design ===== ===== Software Design =====
  
-[[https://​github.com/​RaresCon/​pm-project|Github repo]]+Am folosit PlatformIO (VSC extension), fiind o alternativa foarte buna pentru Arduino IDE. Peste framework-ul standard de ESP32-DevKit am adaugat mai multe librarii pe care le-am folosit pentru a comunica cu perifericele. Lista se poate gasi pe repo-ul GitHub al proiectului lasat mai jos sau la urmatorul ​[[https://​github.com/​RaresCon/​pm-project/​blob/​main/​ESP-action-board/​platformio.ini|link]], care reprezinta fisierul de configuratie al proiectului,​ in sectiune `lib_deps`. De asemenea, am adaugat o librarie proprie, si anume protocolul de comunicatie comun celor doua placi, acesta va fi explicat mai jos.
  
-<note tip> +Protocolul ​de comuncatie se bazeaza pe un SERDES simplu de pachete, care la nivelul inferior contine tipul de transmisie, care poate reprezenta atat un request al placii de actiune, cat si un response de la placa de achizitie sau chiar o transmisie de urgenta de la aceasta in cazul unor valori extreme de la senzori, in principal cei de temperatura/​presiune care s-ar ocupa de pneuriApoi se adauga lungimea mesajului si datele in sineApoila nivelul urmator al protocolului,​ se serializeaza in cadrul de date informatiile venite de la senzori intr-o structura care suporta mai multi senzori de temperatura,​ fiind modular, deci pot fi adaugati senzori de temperaturaDe asemenea aceste ​structuri ​pot fi modificate si implementate ​functii de serializare pentru a suporta mai multe tipuri de senzori.
-Descrierea codului aplicaţiei (firmware):​ +
-  * mediu de dezvoltare (if any) (e.gAVR StudioCodeVisionAVR) +
-  * librării şi surse 3rd-party (e.g. Procyon AVRlib) +
-  * algoritmi şi structuri ​pe care plănuiţi să le implementaţi +
-  * (etapa 3) surse şi funcţii ​implementate +
-</​note>​+
  
-===== Rezultate Obţinute =====+Pentru implementarea procesului de comunicare am folosit un timer care va genera o intrerupere atunci cand ajunge sa numere 800 milisecunde,​ cand va seta un flag pentru a face request catre placa de achizitie. Toata comunicatia este implementata peste ESP Now, protocol proprietar Espressif, care suporta comunicatie rapida si implementare de callbacks pentru transmisie si receptie de date, putand adauga asa numiti peers, adrese MAC de placi cu care poate comunica, astfel se poate face pairing la producator pentru cele doua placi.
  
-<note tip> +In partea de control al perifericelor pe placa de actiune, toate sunt controlate prin intreruperi date de butoanele conectate la GPIO pins, lasand placa sa isi desfasoare afisarea datelor pe display. Legat de display, implementarea nu face refresh la tot ecranul atat timp cat ecranul nu a fost schimbat de catre utilizator, salvand astfel performanta si lasand ce este rendered la un anumit timp pe ecran si facand update doar la datele afisate efectiv.
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +
-</​note>​+
  
-===== Concluzii =====+Perifericele de actiune (servo, buzzer si faruri) sunt controlate in functie de valorile date de senzori.
  
-===== Download =====+Am folosit un display TFT ST7789, folosind protocolul SPI, pentru a putea suporta schimbarile rapide de date care vin de la senzori si pentru a putea arata user-ului aproape in timp real controlul sistemului. Pentru senzorii de temperatura am folosit I2C, fiind usor sa adaugi senzori pe alt canal si suportand viteze decente de transmisie. De asemenea, am folosit si lucruri mai simple, cum sunt GPIO pins si ADC pentru senzori. Calibrarea senzorilor de temperatura,​ fiind integrata in chip-ul on board.
  
-<note warning> +Optimizari am realizat atat in zona protocolului de comunicatie,​ trimitand doar cantitatea necesara de data, cat si in zona display-ului,​ care va face refresh doar la partea de ecran care se schimba si doar atunci cand si se schimba afisajul refresh la tot display-ul. 
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute ​în urma realizării ​proiectului: surseschemeetc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).+ 
 +[[https://​github.com/​RaresCon/​pm-project|Github repo]] 
 + 
 +===== Rezultate Obţinute ​===== 
 + 
 +Aici gasiti demo-ul ​proiectului, ​nu este in forma finala pentru PM Fairarata doar functionalitatile:​ 
 + 
 +[[https://​youtu.be/​Uq4CxRAjQ4s|Demo proiect]] 
 + 
 +===== Concluzii =====
  
-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>​ 
  
 ===== Jurnal ===== ===== Jurnal =====
pm/prj2024/mdinica/rares.constantin02.1716306466.txt.gz · Last modified: 2024/05/21 18:47 by rares.constantin02
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