This shows you the differences between two versions of the page.
pm:prj2023:adarmaz:lll [2023/05/28 15:50] vlad_adrian.ulmeanu [Rezultate Obţinute] |
pm:prj2023:adarmaz:lll [2023/05/29 23:34] (current) vlad_adrian.ulmeanu [Jurnal] |
||
---|---|---|---|
Line 67: | Line 67: | ||
} | } | ||
</code> | </code> | ||
+ | |||
+ | Receiver-ul si sender-ul trecute pe placi de prototipare: | ||
+ | |||
+ | {{:pm:prj2023:adarmaz:pmproj_uva_pcb.jpeg?400|}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
Line 86: | Line 90: | ||
Matricele ''d[][][]'' si ''D[][][]'' se construiesc de la ''l'' mic la mare (bottom-up), apoi urmeaza recursia top-down. | Matricele ''d[][][]'' si ''D[][][]'' se construiesc de la ''l'' mic la mare (bottom-up), apoi urmeaza recursia top-down. | ||
- | Deocamdata, functia scor are urmatoarea implementare: | + | Pe ''ESP32-CAM'' ''d'' si ''D'' sunt reprezentate liniar. Interactiunea fiu-tata este foarte similara cu cea de la reprezentarea unui heap in memorie (numarand de la ''0'', daca tatal este la pozitia ''i'', fiii sunt la pozitiile ''2i+1'' si ''2i+2''). |
+ | |||
+ | Diferenta este ca aici un nod are ''4'' fii, iar fiecare nod ocupa ''3'' pozitii consecutive, una pentru fiecare culoare. | ||
+ | |||
+ | <code c> | ||
+ | int getChild(int r, int id) { | ||
+ | return ((r / 3) * 4 + id) * 3; | ||
+ | } | ||
+ | |||
+ | int getFather(int r) { | ||
+ | return ((r / 3) - 1) / 4 * 3; | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | Functia scor are urmatoarea implementare: | ||
<code python> | <code python> | ||
dispThresh = 80 | dispThresh = 80 | ||
Line 100: | Line 118: | ||
| | ||
#spargere daca scor(l, d[i][j][l], D[i][j][l]) > dispThresh. | #spargere daca scor(l, d[i][j][l], D[i][j][l]) > dispThresh. | ||
+ | </code> | ||
+ | |||
+ | Pe ''ESP32-CAM'' coeficientii de corectie sunt tinuti direct intr-o tabela de lookup. Normalizarea pe ''[0, 1]'' in loc de ''[0.5, 1]'' produce mult mai putini pixeli cu arii diferite. | ||
+ | |||
+ | <code c> | ||
+ | static float coef_corector_lookup[9] = {0.501f, 0.5039f, 0.5156f, 0.5622f, 0.7311f, 0.982f, 1.0f, 1.0f, 1.0f}; //0.00390625f | ||
</code> | </code> | ||
Line 119: | Line 143: | ||
{{:pm:prj2023:adarmaz:pmroj_uva_protocol.png?500|}} | {{:pm:prj2023:adarmaz:pmroj_uva_protocol.png?500|}} | ||
+ | **(Concluzie ulterioara)** schema protocolului a ajutat la rezolvarea bugului legat de primirea de pachete eronate daca distanta fata de laptop era putin mai mare (peste cativa metri): ACK-ul trebuia trimis imediat inapoi de catre Receiver. Lasam seriala catre laptop sa transmita octetii primiti inainte de a face asta. Cumva cuanta de timp alocata pentru asta era prea mare. | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
Line 146: | Line 171: | ||
- | Nu ma asteptam ca numarul de pixeli dupa compresie sa nu fie proportional cu rezolutia imaginii initiale. Se pare ca depinde mai mult de cat de detaliata este imaginea. | + | Daisychain ''ESP32-CAM --(serial)--> ESP32-WROOM --(serial)--> laptop'', ''115200'' bps. [[https://www.youtube.com/shorts/5vp9rusHMUU|Link video]] (speedup ''2x'') |
- | + | ||
- | Daisychain ''ESP32-CAM --(serial)--> ESP32-WROOM --(serial)--> laptop'', ''115200'' bps. | + | |
- | + | ||
- | [[https://www.youtube.com/shorts/5vp9rusHMUU|Link video]] (speedup ''2x'') | + | |
Poza cu transmiterea prin LoRa functionala: | Poza cu transmiterea prin LoRa functionala: | ||
Line 168: | Line 189: | ||
></iframe> | ></iframe> | ||
</html> | </html> | ||
+ | |||
+ | Acum ca stream-ul merge la o distanta mai mare de laptop, pot sa arat poze precum cea de mai jos (luna, ''2+'' pereti distanta): | ||
+ | |||
+ | {{:pm:prj2023:adarmaz:pmproj_uva_luna.png?200|}} | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | * Nu ma asteptam ca numarul de pixeli dupa compresie sa nu fie proportional cu rezolutia imaginii initiale. Se pare ca depinde mai mult de cat de detaliata este imaginea. | ||
+ | * Transmiterea informatiilor este clar bottleneck-ul proiectului. Compresarea imaginii este mult mai rapida. | ||
+ | * Transmiterea prin LoRa este cea mai grea parte din proiect. Trebuie sa investighez si setarile de putere. <del>Deocamdata un perete este de ajuns pentru a pune probleme serioase transmiterii, chiar si cu masurile de corectie implementate.</del> (din fericire am reparat bugul, explicatia este jos la Software Design) | ||
===== Download ===== | ===== Download ===== | ||
Line 183: | Line 211: | ||
* 23 mai: video cu modul Daisychain. | * 23 mai: video cu modul Daisychain. | ||
* 28 mai: finalizare cod interactiune LoRa. | * 28 mai: finalizare cod interactiune LoRa. | ||
+ | * 29 mai: trecere pe PCB-uri, bugfix stream la distanta non-mica. | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
<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> |