Smart Dog Tracker

Autor: Prusacov Andrei-Ionut
Grupa: 333CD

Introducere

Proiectul are ca scop constuirea unui dispozitiv ce poate fi atasat ham-ului ( in prototip initial ) si ulterior zgarzii unui catel pentru a ii monitoriza locatia si a o trimite catre un site pentru a putea fi urmarit. Ca functionalitati secundare se va putea creea un permetru ( stil geofencing ) care odata depasit va trimite o alerta stapanlui si va marii frecventa monitorizarii GPS pentru a ajuta in a gasi cainele. Totodata se va declansa un Buzzer pentru a alerta catelul ca a iesit din zona permisa. Va fi integrat si un microfon ce poate fi utilizat pentru a inregistra momentele cand catelul latra, respira greu sau alte anomalii in starea acestuia, ajutand la intelegerea mai profunda a conditiei catelului.

Inspiratia pentru acest proiect este JACK, cainele meu, care desi ne iubeste foarte mult a decis sa fuga din curte si sa exploreze in decursul a 2 zile aproape tot orasul pentru ca n-a mai stiut sa ajunga inapoi.

Descriere generala

Baza acestui proiect va fi un modul GPS + GSM prin cadrul caruia periodic, folosind un timer si intreruperi, voi prelua locatia curenta a dispozitivului si o voi trimite catre un server dedicat prin GSM ( si protocolul MQTT ). La momentul preluarii locatiei voi verifica ( din in memoria interna a microcontrolerului ) daca ma aflu in interiorul perimetrului de geofencing, daca ma aflu, nimic nu se intampla, daca sunt in afara acestuia se va declansa modul de alerta.

Modul de alerta:

  • Frecventa de verificare a locatiei si trimiterea acesteia va creste
  • Odata la acceasi frecventa se va activa un buzzer pentru cateva secunde ( poate ajuta atat cainele sa inteleaga cat si pentru gasirea lui )

Totodata, prin cadrul modulului GSM se vor putea primii informatii de la site-ul dedicat, precum: rescrierea zonei de geofencing, schimbarea frecventei de urmarire, etc… Pentru alimentarea acestui dispozitiv se va folosii un acumulator li-io alaturi de un modul de incare prin USB-C. Atat placa de dezvoltare cat si modulul GPS vor intra in deep-sleep in intervalele in care nu trimite locatia, pentru a conserva bateria.

Pentru microfon se va folosi ADC pentru a prelua intensitatea sunetului detectat si in functie de aceasta se va detecta latratul.

Design Hardware

Lista componente
  • ESP8266: Am ales aceasta placa deoarece o aveam deja acasa si este compacta
  • Modul SIM808 GSM GPRS: Partea cruciala a acestui proiect, un modul care permite atat localizarea GPS cat si transmisia de date prin GSM. Modulul acesta specific este destul de mare, insa exista versiuni mai mici cu acceasi functionalitate
  • Acumulator litiu-polimer 103040: Acumulatorul este destul de mic, dar pentru varianta de DEMO a dispozitivului este suficient
  • Modul incarcare Li-Ion, Li-pol, TP4056: Pentru a putea re-incarca dispozitivul
  • Modul senzor de sunet KY-038: Pentru detectia de sunet
  • Buzzer pasiv: Pentru a alerta cainele / stapanul
  • Translator bidirecțional de nivele: Posibil redundant deoarece placa SIM are optiunea de V_IN de referinta
  • Cartela SIM: Pentru trimiterea datelor printr-o retea de telecomunicatii
  • Antene GPS & GSM: Antenele care ajuta modulul SIM
  • Componente electrice auxiliare: Fire, rezistente, breadboard, comutator, condensator
  • Carcasa si Ham: Dispozitivul final va fi inchis intr-o carcasa printata 3D si atasat unui ham

Schema Electrica

PINI + semnificatii

Component Pin Pin ESP / Pin Conectare Functie
Microfon KY-037 A0 A0 Citire analog valoare sunet
+ 3V3 Alimentare
- GND Ground
Buzzer - D0 Output pentru buzzer
Led + D1 Output pentru Led
SIM808 GND GND Ground
BAT+ OUT+ Alimentare
BAT- OUT- Alimentare
RXD D3 Transmitere Comenzi
TXT D4 Transmitere Comenzi
D9 D2 Pin pentru power-on
VMCU 3V3 Curent de referinta
GND GND Ground
TP-4056 BAT+ BAT+ Legare baterie
BAT- BAT- Legare Baterie
IN+ Incarcator Incarcare
IN- Incarcator Incarcare
OUT+ V_IN / V_BAT Alimentare
OUT- GND Ground

Buzzer-ul este controlat printr-un tranzistor

Pin-i RX si TX de pe SIM si ESP trebuie conectati RX-TX pentru ca putea transmite comenzi

BreadBoarding

breadboarding.jpeg perfboard1.jpeg perfboardfront.jpeg

Aceasta sunt poze din cadrul procesului de Bread-Boarding, unde au fost legate ESP cu SIM808, un led, buzzer-ul, microfonul si bateria cu modulul TP4056 separat. In cadrul acestui proces datorita erorii umane am reusit sa ard o placuta ESP8266 ( am conectat V3 de pe ESP la V_IN de 5V de pe SIM808 si a scos fum ). Poza este realizata inainte de acest eveniment.

Ulterior toate componentele au fost mutate pe un Perf-board pentru a fi mai compact si a putea incapea in carcasa printata 3D. Firele pentru buzzer si microfon alaturi de ESP8266 au fost lipite direct pe acesta, iar firele pentru SIM808 si baterie vor fi conectate la asamblarea prototipului final.

Descoperire importanta, modulul SIM808 trebuie sa fie manual pornit dupa ce este alimentat, ori prin buton, ori prin Pin-ul D9. In caz contrar nu va primii comenzi!

Dupa conectarea bateriei am aflat ca SIM808 are spike-uri in care trage pana la 2A de curent pentru trimitere de date si pornirea modulelor, si am decis sa adaug un condensator de 1000uF intre + si - acestuia pentru a preveni oprirea sa in situatiile de genu

Carcasa modelata 3D

Carcasa pentru dispozitiv a fost modelata 3D cu urmatoarele cerinte in minte:

  • Cele 2 module sa poata sa fie suprapuse ( pentru a tine dispozitivul relativ compact)
  • Sa se poata desface in caz de nevoie
  • Sa exista posibilitatea de conectare la ESP pentru schimbare de cod
  • Sa fie un switch pentru pornite oprire pe laterala alaturi de un LED
  • Antena GPS sa aiba loc sa iasa pentru a fi infasurata in jurul ham-ului catelului
  • Sa existe o prindere pentru atasarea la ham

De cati ingineri e nevoie sa lipesti un fir ?


Mai sus sunt niste poze realizate in timpul procesului ( LUNG ) de lipire a firelor pentru proiect. Firele au fost lipite si izolate cu “heat-shrink” in speranta ca o sa supravietuiasca miscarii modulului in timpul testelor. Datorita dimensiunii placutei SIM808, ansamblul este destul de mare dar pentru un prototip este ok.

Este nevoie de 3 ingineri, o lumina puternica, multe fire stricate si multa rabdare…

Produs Final

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:

Poze Video-uri JackTrack

Design Software

Diagrama Flow

Mai jos se regaseste o diagrama de flow pentru functionalitatea tracker-ului si modul in care acesta ar trebuii sa opereze. Aceasta este compusa din partea de SETUP si loop-ul pentru ESP cat si pentru SIM808. Actiunile si implementarile lor specifice nu sunt detaliate, doar flow-ul general.

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

Cand SIM808 asteapta raspunsuri de la web se folosesc yield(), webTick() si updateBarking pentru a nu bloca restul “firelor” de executie.

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.

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.

struct SystemState {
    bool   manualAlertActive;
    double geofenceCenterLat;
    double geofenceCenterLng;
    float  geofenceMaxDistance;
    bool   forceBuzzer;
    bool   isAlertActive;
};

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.

Exista si o functie de webServer pentru serverul de debug, dar nu face parte din functionalitatea principala a proiectului.

Site Monitorizare


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

  • [2026.05.08 - 11:53 ] - Adaugare Introducere, Descreiere Initiala, Hardware Design si Log Schimbari
  • [2026.05.17 - 17:50 ] - Adaugare Diagrama Flow, poza breadboarding + ardere placuta ESP8266
  • [2026.05.18 - 17:52 ] - Adaugare Logo Jack-Track
  • [2026.05.19 - 23:56 ] - Adaugare Schema Electrica + Semnificatii Pini
  • [2026.05.23 - 23:56 ] - Adaugare Poze Perfoard + Model 3D carcasa
  • [2026.05.24 - 16:22 ] - Adaugare Link pagina GitHub
  • [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
pm/prj2026/ionut.otelea/andrei.prusacov.txt · Last modified: 2026/05/27 08:48 by andrei.prusacov
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0