This shows you the differences between two versions of the page.
|
pm:prj2026:ionut.otelea:andrei.prusacov [2026/05/26 19:44] andrei.prusacov [Site Monitorizare] |
pm:prj2026:ionut.otelea:andrei.prusacov [2026/05/27 08:48] (current) andrei.prusacov |
||
|---|---|---|---|
| Line 114: | Line 114: | ||
| {{ :pm:prj2026:ionut.otelea:smartdogtracker_diagram_2.png?direct&600 |}} | {{ :pm:prj2026:ionut.otelea:smartdogtracker_diagram_2.png?direct&600 |}} | ||
| - | ==== Implementare SIM808 ==== | + | ====== Implementare SIM808 ====== |
| - | ==== Implementare ESP ==== | + | Partea de implementare SIM808 este cea mai importanta a proiectului. Conceptual nu este grea, modulul se bazeaza pe comunicare UART si este un simplu proces de a trimite comenzile potrivite si a citi corect raspunsurile pentru a activa / lua orice informatie necesara. |
| + | |||
| + | Pentru abstractizare s-au folosit urmatoarele functii: | ||
| + | * ''setupSim()'' -> activeaza toate modulele sim-ului si configureaza setarile | ||
| + | * ''sendSIM808Command()'' -> trimite o comanda si asteapta ca aceasta sa fie primita | ||
| + | * ''httpGet()'' si ''httpPost()'' -> GET si POST generice | ||
| + | * ''sendHttpData()'' -> trimitem date intr-un feed Adafruit | ||
| + | * ''getHttpDate()'' -> primeste valoarea dintr-un feed Adafruit | ||
| + | * ''sendHttpLocation()'' -> trimitem locatia | ||
| + | * ''sendSMS()'' -> trimite o alerta la un numar de telefon | ||
| + | |||
| + | <note tip> | ||
| + | Cand SIM808 asteapta raspunsuri de la web se folosesc ''yield()'', ''webTick()'' si ''updateBarking'' pentru a nu bloca restul "firelor" de executie. | ||
| + | </note> | ||
| + | |||
| + | <note warning> | ||
| + | Ideal comunicarea s-ar fi facut prin protocolul MQTT, insa modelul meu de SIM808 este prea vechi si nu suporta acest protocol, asa ca am folosit HTTP ca fallback. | ||
| + | </note> | ||
| + | |||
| + | |||
| + | ====== Implementare ESP ====== | ||
| + | |||
| + | Implementarea din ''main'' este core-ul principal al acestui modul. Logica se bazeaza pe un sistem de stari si niste functii de update. | ||
| + | |||
| + | <code cpp> | ||
| + | struct SystemState { | ||
| + | bool manualAlertActive; | ||
| + | double geofenceCenterLat; | ||
| + | double geofenceCenterLng; | ||
| + | float geofenceMaxDistance; | ||
| + | bool forceBuzzer; | ||
| + | bool isAlertActive; | ||
| + | }; | ||
| + | </code> | ||
| + | |||
| + | In loop-ul principal exista cate o functie de update care verifica starea si, bazat pe aceasta, executa actiuni. De exemplu, daca ''forceBuzzer'' este ''true'', la urmatorul update o sa fie activat buzzer-ul. | ||
| + | |||
| + | In afara de asta, exista o functie de ''pollCommands()'' care foloseste ''httpGet()'' pe field-urile importante din Adafruit si modifica starile bazat pe aceste informatii. | ||
| + | |||
| + | ===== Detalii extra despre implementare ===== | ||
| + | * **Sistemul de geofencing** se bazeaza pe calculul distantei Haversine fata de un punct central si activeaza alerta in cazul in care catelul este in afara zonei. | ||
| + | * **Update-urile** se fac la un interval variabil in functie de starea alertei. | ||
| + | * **LED-ul** va clipi intr-un pattern specific daca exista probleme. | ||
| + | * **Latratul** este trimis sub formatul: "A latrat de X ori cu intensitate maxima Y", deoarece ar fi foarte costisitor sa trimitem date in mod continuu. | ||
| + | * **Starea de activitate** a catelului se bazeaza pe viteza returnata de SIM808. | ||
| + | |||
| + | <note tip> | ||
| + | Exista si o functie de ''webServer'' pentru serverul de debug, dar nu face parte din functionalitatea principala a proiectului. | ||
| + | </note> | ||
| ==== Site Monitorizare ==== | ==== Site Monitorizare ==== | ||
| Line 122: | Line 170: | ||
| [[https://io.adafruit.com/AndreiP25/dashboards/smart-dog-tracker|Smart Dog Tracker]] | [[https://io.adafruit.com/AndreiP25/dashboards/smart-dog-tracker|Smart Dog Tracker]] | ||
| - | M-am folosit de platforma AdafruitIO ( gratis ) ca sa am feed-uri pentru toate lucrurile care se intampla in cadrul JackTrack, de la locatie, la modul alerta, la starea buzzer-ului. Aceasta permite ascultarea la anumite endpoint-uri atat dupa comenzi MQTT cat si HTTP, oferind si o varianta pentru vizualizarea sau schimbarea valorilor. Pe langa el, am un site custom ( care doar apleaza API-ul de la Adafruit ) cu un design mai frumos si o interfata putin mai intuitiva. | + | M-am folosit de platforma **AdafruitIO** ( gratis ) ca sa am feed-uri pentru toate lucrurile care se intampla in cadrul JackTrack, de la locatie, la modul alerta, la starea buzzer-ului. Aceasta permite ascultarea la anumite endpoint-uri atat dupa comenzi //MQTT// cat si //HTTP//, oferind si o varianta pentru vizualizarea sau schimbarea valorilor. Pe langa el, am un site custom ( care doar apleaza API-ul de la Adafruit ) cu un design mai frumos si o interfata putin mai intuitiva. |
| ===== Log Schimbari ===== | ===== Log Schimbari ===== | ||
| Line 134: | Line 182: | ||
| * **[2026.05.26 - 16:30 ]** - Adaugare poze produs final + features | * **[2026.05.26 - 16:30 ]** - Adaugare poze produs final + features | ||
| * **[2026.05.26 - 19:43 ]** - Adaugare poze Site de monitorizare | * **[2026.05.26 - 19:43 ]** - Adaugare poze Site de monitorizare | ||
| + | * **[2026.05.27 - 08:48 ]** - Detalii implementare software | ||