This shows you the differences between two versions of the page.
pm:prj2023:apredescu:minigpu [2023/05/21 22:17] alex_andrei.cioc [Hardware Design] |
pm:prj2023:apredescu:minigpu [2023/05/28 23:43] (current) alex_andrei.cioc [Software Design] |
||
---|---|---|---|
Line 55: | Line 55: | ||
{{ :pm:prj2023:apredescu:schema_mini_gpu.png?700 |}} | {{ :pm:prj2023:apredescu:schema_mini_gpu.png?700 |}} | ||
+ | {{ :pm:prj2023:apredescu:fizic_wip_mini_gpu.jpeg?500 |}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | Am dezvoltat proiectul in mediul PlatformIO. | ||
+ | Pentru acest proiect am avut nevoie de mai multe componente la nivel software. Mai exact, pe langa logica efectiva de a genera semnale VGA, am avut nevoie si de o modalitate de a incarca poze pentru a le putea citi pentru afisare pe ecran. | ||
- | ===== Rezultate Obţinute ===== | + | Astfel, am impartit munca pe cele doua core-uri ale ESP32. Un core ruleaza un server HTTP si serveste o pagina Web cu o interfata de unde se poate naviga prin filesystem-ul de pe cardul SD si face operatii precum: |
+ | * Creare de directoare | ||
+ | * Redenumire fisiere/directoare | ||
+ | * Descarcare fisiere | ||
+ | * Incarcare fisiere. | ||
+ | Intre timp, s-a defectat (sau, probabil, nu a functionat niciodata) slot-ul de card SD de pe display, asa ca a trebuit sa adaug un breaker adapter separat, si am schimbat putin conexiunile electrice. | ||
+ | |||
+ | Functionalitatea de generare de semnale VGA foloseste intreruperi precise, pentru a avea o fidelitate cat mai buna a imaginii si a respecta constrangerile de sincronizare VGA. Nu e prea mult de explicat aici, in afara de faptul ca a trebuit sa fiu foarte atent la eficienta si am folosit functiile low-level pentru lucru cu GPIO. | ||
+ | |||
+ | Repository-ul unde se afla codul se gaseste [[https://github.com/nurof3n/mini-gpu|aici]]. | ||
+ | ===== Rezultate Obţinute ===== | ||
+ | |||
+ | Cand ies imaginile perfect anunt aici ;) | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
- | ===== Download ===== | + | Am aflat pe viu ce inseamna sa stii ce vrei sa faci, sa stii cum sa faci, sa faci, si sa NU mearga :< |
+ | Cand e nevoie si de lucru cu hardware-ul, apar foarte des lucruri neprevazute; si e cu atat mai greu cu cat folosesti piese care nici nu au numele firmei inscriptionat pe ele. De exemplu, display-ul mi-a dat foarte multe batai de cap, caci m-am bazat pe faptul ca slotul integrat de card SD o sa imi fie util. S-a dovedit ca e destul de greu de configurat, si, probabil, trebuie sudate niste jumpere pe acolo ca sa primeasca destul curent pentru a functiona, insa faptul ca nu se gaseste nicaieri documentatie despre circuit m-a facut sa renunt la el si sa folosesc un slot extern. | ||
+ | |||
+ | Batai mari de cap mi-a dat si placuta de dezvoltare cu ESP32, mai ales alegerea pinilor. Proiectul meu necesita o latime de banda mare pentru output, si am ajuns sa folosesc toti pinii GPIO care nu sunt rezervati pentru alte lucruri importante; adica, daca mai aveam nevoie de inca un pin, probabil nu mai aveam de unde sa fac rost:)) M-am incadrat la fix numai dupa ce am facut sacrificiul de a avea un throughput de 3 ori mai mic, folosind registri pentru scrierea pe rand a bitilor de culoare RGB; astfel, in loc de 24 de biti pentru culoare, folosesc doar 8 biti, insa scriu de 3 ori. In viata nu le poti avea pe toate ;) | ||
+ | |||
+ | De asemenea, a fost o experienta (si de bonding, de altfel) sa stau cu tata sa printam un PCB de "mana"... | ||
+ | ===== Download ===== | ||
+ | Repository [[https://github.com/nurof3n/mini-gpu|aici]]. | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
Line 76: | Line 98: | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
+ | Resurse (foarte) utile: | ||
+ | * Documentatia oficiala pentru placuta mea: https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/user-guide-devkitc-1.html | ||
+ | * Laburile de PM | ||
+ | Biblioteci folosite: | ||
+ | * https://github.com/espressif/arduino-esp32/blob/master/cores/esp32/Arduino.h | ||
+ | * https://github.com/espressif/arduino-esp32/tree/master/libraries/WiFi | ||
+ | * https://github.com/espressif/arduino-esp32/tree/master/libraries/WebServer | ||
+ | * https://github.com/espressif/arduino-esp32/tree/master/libraries/SD | ||
+ | * https://github.com/Bodmer/TFT_eSPI | ||
+ | * https://github.com/Bodmer/TJpg_Decoder | ||
<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> | ||