This shows you the differences between two versions of the page.
pm:prj2024:amocanu:florin.romulescu [2024/05/04 14:47] florin.romulescu [Introducere] |
pm:prj2024:amocanu:florin.romulescu [2024/05/27 12:22] (current) florin.romulescu [Concluzii] |
||
---|---|---|---|
Line 9: | Line 9: | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | <note tip> | + | {{:pm:prj2024:amocanu:diagramabloc-cryptowatch.png?200|}} |
- | O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează. | + | |
- | + | ||
- | Exemplu de schemă bloc: http://www.robs-projects.com/mp3proj/newplayer.html | + | |
- | </note> | + | |
===== Hardware Design ===== | ===== Hardware Design ===== | ||
- | <note tip> | + | == Lista piese == |
- | Aici puneţi tot ce ţine de hardware design: | + | * Placă de dezvoltare ESP32 |
- | * listă de piese | + | * Ecran OLED |
- | * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/electronic-atmega16-mmc-schematic.png) | + | * 2 x butoane |
- | * diagrame de semnal | + | |
- | * rezultatele simulării | + | |
- | </note> | + | |
+ | {{:pm:prj2024:amocanu:schema-cw.jpg?200|}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | == Mediu de dezvoltare == | ||
+ | Proiectul a fost dezvoltat în ArduinoIDE. | ||
- | <note tip> | + | == Librării == |
- | Descrierea codului aplicaţiei (firmware): | + | * Wifi => gestionează conexiunea wifi a plăcii esp32 |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * ArduinoJson => este folosit pentru lucrul cu formate json |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * WebServer => este folosit de esp32 pentru a gestiona requesturi de tip http |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | * U8g2lib => este folosit pentru lucrul cu fonturi pentru afișajul ecranului oled |
- | * (etapa 3) surse şi funcţii implementate | + | * HttpClient => este folosit pentru a face requesturi către api-uri externe. |
- | </note> | + | * FreeRTOS => folosită pentru multithreading |
- | ===== Rezultate Obţinute ===== | + | == Algoritmi == |
+ | Se vor implementa două taskuri(threaduri) care vor gestiona butoanele și afișajul displayului. În loopul principal se vor face requesturi către api-ul celor de la CoinGecko (site: https://www.coingecko.com/ ; documentație: https://docs.coingecko.com/reference/introduction). Aceste requesturi se vor trimite o dată la un minut când există deja un rezultat pe ecran, altfel se vor trimite la 1 secundă până când obținem un rezultat. | ||
- | <note tip> | + | În fișierul display.h se găsește logica pentru afișaj. Ecranul se poate afla în 3 stări: unul în care așteaptă o conexiune wifi și afișează că are nevoie de conexiune pentru a continua, unul în care afișează ora curentă, trimițând la 10 secunde requesturi către http://worldtimeapi.org/ pentru a obține timpul și un mod în care afișează informațiile despre crypto monede. |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | |
- | ===== Concluzii ===== | + | În fișierul button.h se află funcțiile care gestionează comenzile primite de la butoane. |
+ | * Prin apăsarea celor 2 butoane simultan se comută între afișajul orei și cel al crypto monedelor. | ||
+ | * În modul de afișare a crypto monedelor se poate apăsa primul buton pentru a comuta între crypto monedele existente, iar cel de-al doilea buton pentru a comuta între monele în care se convertește. | ||
- | ===== Download ===== | + | În fișierele coinapi.h și clockapi.h este implementată logica pentru requesturi. |
- | <note warning> | + | == Logică == |
- | 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ă ;-). | + | Plăcuța la pornire se va seta ca și access point unde mai multe dispozitive se pot conecta pentru a o configura. Aici se pot trimite requesturi către plăcuță pentru a adăuga noi crypto monede și pentru a face conexiunea la internet. După ce se face conexiunea, dispozitivul nu se mai poate configura, începând să facă requesturi pentru timp și cryptomonedele adăugate. |
+ | ===== Rezultate Obţinute ===== | ||
- | 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**. | + | {{:pm:prj2024:amocanu:pm-1.jpg?200|}} |
- | </note> | + | |
- | ===== Jurnal ===== | + | {{:pm:prj2024:amocanu:pm-2.jpg?200|}} |
+ | ===== Concluzii ===== | ||
- | <note tip> | + | Dispozitivul funcționează cum a fost intenționat. A fost setat să dea requesturi către api-ul de la Coin Gecko la 25 de secunde, deci nu va depăși limita de 30 de requesturi pe minut decât dacă se schimbă foarte repede între cripto monede. Deoarece am folosit acest api utlizatorii au o gamă foarte mare de monede din care pot alege la configuare. |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | |
- | </note> | + | |
+ | Datorită dimensiunii sale mici este plăcut de utlizabil, neatrăgând atenția. | ||
+ | |||
+ | Câteva probleme: | ||
+ | - uneori butoanele nu răspund corespunzător la apăsare (probabil de la delayuri). | ||
+ | - reconfigurarea dispozitivului se face doar prin reconectarea acestuia la o sursă de curent. | ||
+ | ===== Download ===== | ||
+ | |||
+ | {{:pm:prj2024:amocanu:cryptowatch.zip|}} | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | <note> | + | Componente Hardware folosite: |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | - <html><a href="https://www.sigmanortec.ro/placa-dezvoltare-esp32-cu-wifi-si-bluetooth?fast_search=fs">Esp32</a></html> |
- | </note> | + | - <html><a href="https://www.sigmanortec.ro/Display-OLED-1-3-Alb-128x64-p136081872?fast_search=fs">Display</a></html> |
+ | |||
+ | Resurse software: | ||
+ | - <html><a href="https://www.freertos.org/index.html">FreeRTOS</a></html> | ||
+ | - <html><a href="https://github.com/olikraus/u8g2">U8g2 Fonts</a></html> | ||
<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> | ||