This shows you the differences between two versions of the page.
pm:prj2024:amocanu:florin.romulescu [2024/05/04 13:48] florin.romulescu created |
pm:prj2024:amocanu:florin.romulescu [2024/05/27 12:22] (current) florin.romulescu [Concluzii] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Nume proiect ====== | + | ====== CryptoWatch ====== |
===== Introducere ===== | ===== Introducere ===== | ||
- | <note tip> | + | Crypto Watch reprezintă un instrument util și eficient pentru cei interesați de lumea criptomonedelor, o lume care este în continuă schimbare. Cu funcționalitatea sa intuitivă și designul său compact, acest proiect oferă utilizatorilor o modalitate simplă și accesibilă de a monitoriza și de a rămâne conectați la evoluția pieței cripto în timp real, contribuind la îmbunătățirea înțelegerii și gestionării investițiilor în criptomonede. |
- | Prezentarea pe scurt a proiectului vostru: | + | |
- | * ce face | + | |
- | * care este scopul lui | + | |
- | * care a fost ideea de la care aţi pornit | + | |
- | * de ce credeţi că este util pentru alţii şi pentru voi | + | |
- | </note> | + | |
- | ===== Descriere generală ===== | + | |
- | <note tip> | + | Dispozitivul se dorește a fi un ceas care prezintă informații în timp real despre evoluția unei game largi de criptomonede prin interacțiunea cu un api. Acesta va prelua și prelucra informația pentru a afișa pe ecran informații precum numele criptomonedei, prețul curent într-o monedă selectată și rata de schimbare a criptomonedei. Utilizatorul poate schimba criptomoneda monitorizată prin apăsarea unui buton și moneda în care se face conversia prin apăsarea unui al doilea buton. Pe lângă cele 2 inputuri, utilizatorul va putea adăuga noi criptomonede pe care să le monitorizeze prin telefon. |
- | 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 | + | Crypto Watch este un produs care poate fi folosit de către toți entuziaștii și investitorii de criptomonede. |
- | </note> | + | ===== Descriere generală ===== |
+ | |||
+ | {{:pm:prj2024:amocanu:diagramabloc-cryptowatch.png?200|}} | ||
===== 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> | ||