This shows you the differences between two versions of the page.
|
pm:prj2026:ionut.otelea:andrei.prusacov [2026/05/27 08:47] andrei.prusacov |
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 ====== |
| - | Partea de implementare SIM808 este cea mai importanta proiectului. Conceptual nu este grea, modulul se bazeaza pe comunicare UART si este un simplu proces de a trimite comenzile potrivie si a citi corect raspunsurile pentru a active / lua orice informatie necesara. | + | |
| + | 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: | Pentru abstractizare s-au folosit urmatoarele functii: | ||
| - | * ``setupSim()`` -> activeaza toate modulele sim-ului si configureaza setarile | + | * ''setupSim()'' -> activeaza toate modulele sim-ului si configureaza setarile |
| - | * ``sendSIM808Command()`` -> trimite o comanda si asteapta ca aceasta sa fie primita | + | * ''sendSIM808Command()'' -> trimite o comanda si asteapta ca aceasta sa fie primita |
| - | * ``httpGet()`` si ``httpPost()`` -> get si post generice | + | * ''httpGet()'' si ''httpPost()'' -> GET si POST generice |
| - | * ``sendHttpData()`` -> trimitem date intr-un feed adafruit | + | * ''sendHttpData()'' -> trimitem date intr-un feed Adafruit |
| - | * ``getHttpDate()`` -> primit valoarea dintr-un feed adafruit | + | * ''getHttpDate()'' -> primeste valoarea dintr-un feed Adafruit |
| - | * ``sendHttpLocation()`` -> trimitem locaita | + | * ''sendHttpLocation()'' -> trimitem locatia |
| - | * ``sendSMS()`` -> trimite o alerta la un numar de telefon | + | * ''sendSMS()'' -> trimite o alerta la un numar de telefon |
| - | ` | + | |
| - | <note tip>Cand SIM808 asteapta raspunsuri de la web se foloseste ``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> | + | |
| + | <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. | ||
| - | ==== 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> | <code cpp> | ||
| struct SystemState { | struct SystemState { | ||
| Line 141: | Line 150: | ||
| }; | }; | ||
| </code> | </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 functi de ``pollCommands()`` care foloseste ``httpGet`` pe field-urile importante din adafruit si modifica starile bazat pe aceste informatii. | ||
| - | **Detalii extra despre implementare:** | + | 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. |
| - | * Sistemul de geofencing se bazeaza pe calculul distantei Harvesine 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 | + | 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. |
| - | * 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 latrat incontinuu | + | ===== Detalii extra despre implementare ===== |
| - | * Starea de activitate a catelului se bazeaza pe viteza returnata de SIM808. | + | * **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 importanta a proiectului.</note> | + | <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 ==== | ||