This shows you the differences between two versions of the page.
|
pm:prj2026:ionut.otelea:andrei.prusacov [2026/05/26 19:06] andrei.prusacov |
pm:prj2026:ionut.otelea:andrei.prusacov [2026/05/27 08:48] (current) andrei.prusacov |
||
|---|---|---|---|
| Line 92: | Line 92: | ||
| ===== Produs Final ===== | ===== Produs Final ===== | ||
| - | {{ :pm:prj2026:ionut.otelea:jacktrack_finalproduct.jpeg?nolink&250|}} | + | {{ :pm:prj2026:ionut.otelea:jacktrack_final.jpeg?nolink&300|}} |
| **Produsul final** asamblat ( dupa multe certuri cu a inghesuii toate firele in carcasa si a o ihnchide ) este prezentat in poza de langa. Acesta este atasat de ham-ul catelului printr-un scai si antena GPS este infasurata in jurul acestuia. In principiu totul ar trebuii sa fie foarte stabil, dar nu as arunca cu dispozitivul intr-un perete :) | **Produsul final** asamblat ( dupa multe certuri cu a inghesuii toate firele in carcasa si a o ihnchide ) este prezentat in poza de langa. Acesta este atasat de ham-ul catelului printr-un scai si antena GPS este infasurata in jurul acestuia. In principiu totul ar trebuii sa fie foarte stabil, dar nu as arunca cu dispozitivul intr-un perete :) | ||
| + | |||
| + | **Feature-urile finale ale dispozitivului:** | ||
| + | * Tracking Locatie cu upload catre web | ||
| + | * Posibilitate setare punct si raza de geofence | ||
| + | * Alerta ( cu tracking mai frecvent ) + measaj pe telefon odata ce cainele iese din zona sigura | ||
| + | * Buzzer ( activabil remote ) si care se porneste la iesirea din zona geofence | ||
| + | * Nivel de activitate ( bazat pe viteza cainelui ) | ||
| + | * Monitorizare latrare ( se trimite pe web un log cu intensitatea si de cate ori ) | ||
| + | * Incarcare baterie ( + raportarea acesteia pe web ) | ||
| + | |||
| + | Pentru variate video-uri cu testele, demo pentru produs si momente amuzante din timpul asamblarii va las un link de drive: | ||
| + | |||
| + | [[https://drive.google.com/drive/folders/1BPfJDo7BWu2R0_niD3m1jq_-cGGvgnZd?usp=sharing|Poze Video-uri JackTrack]] | ||
| ===== Design Software ===== | ===== Design Software ===== | ||
| Line 101: | Line 114: | ||
| {{ :pm:prj2026:ionut.otelea:smartdogtracker_diagram_2.png?direct&600 |}} | {{ :pm:prj2026:ionut.otelea:smartdogtracker_diagram_2.png?direct&600 |}} | ||
| - | ==== Implementare ESP ==== | + | ====== Implementare SIM808 ====== |
| + | |||
| + | 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 ==== | ||
| + | {{:pm:prj2026:ionut.otelea:adafruit.png?nolink&300}}{{:pm:prj2026:ionut.otelea:customweb.png?nolink&300}}\\ | ||
| [[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. | ||
| ===== Log Schimbari ===== | ===== Log Schimbari ===== | ||
| Line 113: | Line 180: | ||
| * **[2026.05.24 - 16:22 ]** - Adaugare Link pagina GitHub | * **[2026.05.24 - 16:22 ]** - Adaugare Link pagina GitHub | ||
| * **[2026.05.25 - 13:01 ]** - Note despre condensatorul pentru SIM808 + Poze lipire | * **[2026.05.25 - 13:01 ]** - Note despre condensatorul pentru SIM808 + Poze lipire | ||
| + | * **[2026.05.26 - 16:30 ]** - Adaugare poze produs final + features | ||
| + | * **[2026.05.26 - 19:43 ]** - Adaugare poze Site de monitorizare | ||
| + | * **[2026.05.27 - 08:48 ]** - Detalii implementare software | ||