This shows you the differences between two versions of the page.
pm:prj2024:mdinica:rares.constantin02 [2024/05/21 18:45] 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 pneuri. Apoi se adauga lungimea mesajului si datele in sine. Apoi, la 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 temperatura. De 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.g. AVR Studio, CodeVisionAVR) | + | |
- | * 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: surse, scheme, etc. 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 Fair, arata 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 ===== | ||
Line 86: | Line 85: | ||
<spoiler ESP action board - temperature display demo> | <spoiler ESP action board - temperature display demo> | ||
[[https://youtu.be/Uq4CxRAjQ4s|Temperature display demo]] | [[https://youtu.be/Uq4CxRAjQ4s|Temperature display demo]] | ||
+ | </spoiler> | ||
+ | |||
+ | <spoiler ESP action board - buzzer control demo> | ||
+ | [[https://youtube.com/shorts/e0VW5XEGw5M?feature=share|Buzzer control demo]] | ||
</spoiler> | </spoiler> | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== |