Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2025:avaduva:alexandra.bulgaru [2025/05/18 22:19]
alexandra.bulgaru [Hardware Design]
pm:prj2025:avaduva:alexandra.bulgaru [2025/05/29 21:58] (current)
alexandra.bulgaru [GPS Tracker]
Line 1: Line 1:
 ====== GPS Tracker ====== ====== GPS Tracker ======
 **Autor:** Alexandra Bulgaru \\ **Autor:** Alexandra Bulgaru \\
-**Grupa:** 331CD+**Grupa:** 331CD  \\ 
 +**Repo GitHub:** https://​github.com/​alexabulgaru/​GPS-Tracker
 ===== Introducere ===== ===== Introducere =====
  
-Proiectul constă în urmărirea în timp real a coordonatelor GPS, răspunzând la comenzi primite prin SMS. Când primește mesajul "get location"​, preia poziția curentă și trimite ​înapoi ​un SMS cu un link către Google Maps pentru vizualizarea locației, afișând ​aceste informații și pe un ecran OLED.+Proiectul constă în urmărirea în timp real a coordonatelor GPS, răspunzând la comenzi primite prin SMS. La un interval de timp, de exemplu 4 h, preia poziția curentă și trimite un SMS cu un link către Google Maps pentru vizualizarea locației, afișând pe un ecran OLED un mesaj care arată că persoana care folosește GPS Tracker-ul îi află poziția acestuia.
  
 Scopul său principal este de a oferi părinților posibilitatea de a monitoriza rapid și eficient locația copiilor lor, dar poate să fie folosit și pentru urmărirea unor obiecte (cum ar fi un bagaj într-un aeroport). Scopul său principal este de a oferi părinților posibilitatea de a monitoriza rapid și eficient locația copiilor lor, dar poate să fie folosit și pentru urmărirea unor obiecte (cum ar fi un bagaj într-un aeroport).
Line 12: Line 13:
  
 <​note>​ <​note>​
-Modulul GPS Neo‑6M primește semnalele GNSS în format NMEA și le transmite prin UART către Arduino Nano. Biblioteca TinyGPS++ parsează aceste sentințe NMEA și extrage latitudinea și longitudinea. Arduino păstrează ultimele coordonate și, la primirea unui SMS cu textul „get location” ​de la modulul GSM SIM800L (tot prin UART), formatează un URL Google Maps și îl trimite înapoi prin SMS.+Modulul GPS Neo‑6M primește semnalele GNSS în format NMEA și le transmite prin UART către Arduino Nano. Biblioteca TinyGPS++ parsează aceste sentințe NMEA și extrage latitudinea și longitudinea. Arduino păstrează ultimele coordonate și, la un interval ​de 4 h, formatează un URL Google Maps și îl trimite înapoi prin SMS.
  
-În paralel, Arduino comunică cu un ecran OLED prin I²C pentru a afișa ​coordonatele curente și starea de funcționare. Întregul sistem este alimentat direct de la o baterie externă, fără circuite ​de reglare de tensiune adiționale.+În paralel, Arduino comunică cu un ecran OLED prin I²C pentru a afișa ​un mesaj care arată că locația curentă a fost trimisă. Întregul sistem este alimentat direct de la o baterie externă ​și de la laptop.
 </​note>​ </​note>​
 {{:​pm:​prj2025:​avaduva:​gpstracker.png|Schema bloc a proiectului}} {{:​pm:​prj2025:​avaduva:​gpstracker.png|Schema bloc a proiectului}}
Line 20: Line 21:
 ** Componente: ** \\ ** Componente: ** \\
  
-  * [[https://​sigmanortec.ro/​Display-OLED-IIC-I2C-0-91-128x32-p126091015|Display OLED IIC I2C 0.91'' ​128x32]] \\+  * [[https://​sigmanortec.ro/​Display-OLED-1-3-Alb-128x64-p136081872?​SubmitCurrency=1&​id_currency=2&​gad_source=1&​gad_campaignid=22174019478&​gbraid=0AAAAAC3W72MejqOtu_VDy8SXRmcEU2jTP&​gclid=CjwKCAjwi-DBBhA5EiwAXOHsGQBafRMQNgfRrYDR1namErEn7-DjnHPVm64cCM7UOX6fNP86XrNtexoCiXQQAvD_BwE|Display OLED I2C 1.3'' ​128x64]] \\
   * [[https://​www.optimusdigital.ro/​ro/​gps/​105-modul-gps-gy-neo6mv2.html?​search_query=modul+gps&​results=34|Modul GPS 6MV2]] \\   * [[https://​www.optimusdigital.ro/​ro/​gps/​105-modul-gps-gy-neo6mv2.html?​search_query=modul+gps&​results=34|Modul GPS 6MV2]] \\
   * [[https://​sigmanortec.ro/​placa-dezvoltare-compatibila-arduino-nano-v30-atmega328p-au-ft232|Arduino Nano v30 ATMega328p]] \\   * [[https://​sigmanortec.ro/​placa-dezvoltare-compatibila-arduino-nano-v30-atmega328p-au-ft232|Arduino Nano v30 ATMega328p]] \\
   * [[https://​sigmanortec.ro/​Modul-GSM-GPRS-SIM800L-Quad-Band-plus-antena-p134558579|Modul GSM GPRS SIM800L]] \\   * [[https://​sigmanortec.ro/​Modul-GSM-GPRS-SIM800L-Quad-Band-plus-antena-p134558579|Modul GSM GPRS SIM800L]] \\
-  * Breadboard +  * [[https://​www.optimusdigital.ro/​ro/​prototipare-breadboard-uri/​44-breadboard-400-points.html?​search_query=breadboard&​results=125|Breadboard ​* 2]] \\ 
-  * Cartela+  * [[https://​www.optimusdigital.ro/​ro/​surse-coboratoare-reglabile/​805-modul-dc-dc-lm2596-cu-afisaj-de-tensiune.html?​search_query=Modul+DC-DC+LM2596+cu+Afisaj+de+Tensiune&​results=1|Modul DC-DC LM2596 cu Afisaj de Tensiune]] \\ 
 +  * [[https://​www.optimusdigital.ro/​ro/​componente-electronice-rezistoare/​851-rezistor-025w-22k.html?​search_query=2.2k&​results=10|Rezistență 2k2]] \\ 
 +  * [[https://​www.optimusdigital.ro/​ro/​componente-electronice-rezistoare/​855-rezistor-025w-33k.html?​search_query=3.3k&​results=3|Rezistență 3k3]] \\ 
 +  * Cartela ​PrePay Orange 
 +  * Baterie 9V
  
 **Diagramă circuit** \\ **Diagramă circuit** \\
-{{:​pm:​prj2025:​avaduva:​circuit_gpstracker.png?​750x600|Diagrama circuitului}}+{{:​pm:​prj2025:​avaduva:​circuit_gpstracker_final_final.png?​750x600|Diagrama circuitului}}
  
 +  1. Conectare OLED I²C 0.91″:
 +     - GND la GND de pe Arduino Nano
 +     - VCC la +5V de pe Arduino Nano
 +     - SDA la pinul A4 de pe Arduino Nano
 +     - SCL la pinul A5 de pe Arduino Nano
 +
 +
 +  2. Conectare modul GPS GY-NEO6M:
 +     - GND la GND de pe Arduino Nano
 +     - VCC la +5V de pe Arduino Nano
 +     - TX (ieșire GPS) la pinul digital D10 (RX SoftwareSerial) de pe Arduino Nano
 +     - RX (intrare GPS) la pinul digital D11 (TX SoftwareSerial) de pe Arduino Nano
 +
 +  3. Conectare modul GSM-GPRS SIM800L
 +     - GND la GND comun (Arduino Nano + OUT- al modulului DC-DC LM2596)
 +     - VCC la OUT+ modul DC-DC LM2596
 +     - TXD (ieșire SIM) la pinul digital D8 (RX SoftwareSerial) de pe Arduino Nano
 +     - RXD (intrare SIM) la pinul digital D9 (TX SoftwareSerial) de pe Arduino Nano, prin divizor de tensiune format din:
 +       - R1 = 2k2 între D9 de pe Arduino Nano și nodul comun
 +       - R2 = 3k3 între nodul comun și GND
 +       - Nodul comun trimite apoi un semnal de aproximativ 3V la RXD SIM800L, protejându-l de nivelul de 5V, pe care nu îl acceptă.
 +     - Modulul SIM800L are intrarea RXD tolerantă la maxim 3.3V.
 +
 +  4. Conectare modul DC-DC LM2596
 +     - IN+ la + baterie
 +     - IN- la - baterie
 +     - Reglat trimmer până la 4V
 +     - OUT+ la un rând liber pe breadboard (desemnat “+4V rail”)
 +     - OUT- la GND
 +
 +  5. Alimentare și conexiune la PC
 +     - Pinul 5V de pe Arduino Nano la rândul +5V al breadboard-ului
 +     - Pinul GND de pe Arduino Nano la rândul GND al breadboard-ului
  
 ===== Software Design ===== ===== Software Design =====
  
 +**Mediu de dezvoltare:​** Arduino IDE 2.3.6 \\
 +**Microcontroller:​** Arduino Nano (ATmega328P,​ 5V) \\
  
-<note tip> +**Descrierea codului aplicației:** \\ 
-Descrierea codului aplicaţiei (firmware)+Proiectul este un GPS-tracker care trimite la un interval de timp un SMS cu locația actuală a acestuia. El folosește
-  * mediu de dezvoltare ​(if any) (e.g. AVR Studio, CodeVisionAVR) +  * UART (SoftwareSerialpentru comunicația cu modulul GPS (NMEAșcu SIM800L (AT-commands
-  * librării şsurse 3rd-party (e.g. Procyon AVRlib+  * I2C pentru controlul OLED-ului 
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi +  * Timer pentru a trimite la un interval regulat de timp SMS-ul
-  * (etapa 3) surse şi funcţii implementate +
-</​note>​+
  
-===== Rezultate Obţinute =====+**Fluxul principal:​** 
 +  1. La pornire (setup()):​ 
 +    - Se iniţializează interfeţele seriale: 
 +        - Serial (USB) la 9600 baud 
 +        - sim (SoftwareSerial pe pini 8 și 9) la 9600 baud 
 +        - gpsSer (SoftwareSerial pe pini 10 și 11) la 9600 baud 
 +    - Se iniţializează I2C (Wire.begin()) și OLED-ul (oled.begin(SSD1306_SWITCHCAPVCC,​ 0x3C)), apoi se golește ecranul. 
 +    - Se configurează SIM800L: 
 +        - AT (ping) 
 +        - ATE0 (eco off) 
 +        - AT+CFUN=1 (full functionality) 
 +        - AT+CMGF=1 (SMS text mode)
  
-<note tip> 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. 
-</​note>​ 
  
-===== Concluzii =====+  2. Bucla principală (loop()): 
 +    - În fundal, toate datele primite de la GPS sunt transmise către gps.encode(). 
 +    - La fiecare 15 000 ms (PERIOD) - ales pentru testare: 
 +        - Se afișează pe OLED mesajul static „Te cauta la jefa”. 
 +        - Se verifică gps.location.isValid():​ 
 +            - DA: se extrag latitudinea și longitudinea și se construiește un link Google Maps cu 6 zecimale. 
 +            - NU: se setează mesajul “GPS NO FIX”. 
 +        - Se trimite SMS-ul către numărul definit în dest folosind rutina de AT-commands. 
 +        - Se curăță ecranul OLED.
  
-===== Download =====+**Biblioteci utilizate:​** 
 +  * Wire.h – I2C pentru OLED 
 +  * Adafruit_GFX.h + Adafruit_SSD1306.h – afișaj pe OLED 
 +  * SoftwareSerial.h – două porturi seriale software pentru GPS și GSM 
 +  * TinyGPS++.h – parsare NMEA și extragere coordonate GPS
  
-<note warning> +**Algoritmi și structuri implementate:​** 
-O arhivă ​(sau mai multe dacă este cazulcu fişierele obţinute în urma realizării proiectuluisurse, scheme, etcUn fişier READMEun ChangeLogun script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).+  * Citire și parsare NMEA 
 +    - while (gpsSer.available()) gps.encode(gpsSer.read());​ 
 +    - TinyGPSPlus gps stochează ultima locație validă și numărul de sateliți 
 +  * Construire mesaj SMS 
 +    - Dacă fix GPSString link = "​https://​maps.google.com/?​q="​ + String(lat6) + "," + String(lon, 6) 
 +    - Altfel: String link = "GPS NO FIX" 
 +  * AT-commands pentru SMS 
 +    - AT("​AT+CMGF=1"​);​ - modul text 
 +    - AT+CMGS="<​număr>" -> așteaptă prompt ‘>’ -> conținut -> 0x1A 
 +    - Citire răspuns +CMGS pentru confirmare 
 +  * Control OLED 
 +    ​showOLED(-> afișează mesaj fix 
 +    - clearOLED() -> golește display-ul
  
-Fişierele se încarcă pe wiki folosind facilitatea ​**Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:​pm:​prj20??​:c?** sau **:​pm:​prj20??:​c?:​nume_student** (dacă este cazul). ​**Exemplu:** Dumitru Alin331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**+**Funcții implementate:** \\ 
-</​note>​+bool AT(const charcmd, const charok = "​OK"​uint16_t tout = 800) 
 +  trimite un AT-command și așteaptă un răspuns până la timeout
 +   
 +bool sendSMS(const char* num, const String& msg) 
 +  configurează modul text, inițiază AT+CMGS, trimite textul și verifică confirmarea
  
-===== Jurnal ​=====+void showOLED() 
 +  afişează pe OLED mesajul „Te cauta la jefa” 
 +  
 +void clearOLED() 
 +  curăţă ecranul OLED 
 +   
 +void setup() 
 +  iniţializează toate perifericele:​ seriale, I2C, OLED, GSM, și curăţă ecranul 
 +   
 +void loop() 
 +  primește date GPS continuu și la interval, apelează showOLED(), construiește mesajul, apelează sendSMS(), apoi clearOLED() 
 +===== Rezultate obținute ​===== 
 +{{:​pm:​prj2025:​avaduva:​gps_tracker_1.jpeg?​500x500|1}} 
 +{{:​pm:​prj2025:​avaduva:​gps_tracker_2.jpeg?​500x500|2}} 
 +{{:​pm:​prj2025:​avaduva:​gps_tracker_3.jpeg?​500x500|3}} 
 +{{:​pm:​prj2025:​avaduva:​gps_tracker_4.jpeg?​500x500|4}} 
 +{{:​pm:​prj2025:​avaduva:​gps_tracker_5.jpeg?​500x500|5}}
  
-<note tip> + 
-Puteți avea și o secțiune de jurnal ​în care să poată urmări asistentul ​de proiect progresul proiectului+**Link-uri către demo:** \\ 
-</​note>​+https://​youtube.com/​shorts/​pvJuHuIw36w?​feature=share ​ \\ 
 +https://​youtube.com/​shorts/​cwfy8eEM16s 
 + 
 +===== Concluzii ===== 
 +Proiectul m-a ajutat să îmi consolidez înțelegerea modului ​în care interfețele UART și I2C pot fi folosite simultan pe un singur microcontroller pentru a integra module GPS, GSM şi un display OLED. Totodată, am aprofundat utilizarea GPIO pentru feedback vizual şi controlul stărilor aplicaţiei,​ precum şi gestionarea fluxului ​de date în loop-ul principal al firmware-ului
 + 
 +===== Download ===== 
 +{{:​pm:​prj2025:​avaduva:​ gps_tracker_alexandra_bulgaru.zip}}
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +**Resurse Hardware:** 
-Listă cu documente, ​datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** ​şi **Resurse Hardware**. +  * [[https://​www.vishay.com/​docs/​37894/​oled128o032dlpp3n00000.pdf|Display OLED IIC I2C 0.91''​ 128x32 Datasheet]] \\ 
-</note>+  * [[https://​components101.com/​modules/​neo-6mv2-gps-module|Modul GPS 6MV2 101]] \\ 
 +  * [[https://​docs.rs-online.com/​2cbd/​0900766b80db99cb.pdf|Arduino Nano v30 ATMega328p Datasheet]] \\ 
 +  * [[https://​components101.com/​wireless/​sim800l-gsm-module-pinout-datasheet-equivalent-circuit-specs|Modul GSM GPRS SIM800L 101]] \\ 
 + 
 +**Resurse Software:** 
 +  ​[[https://​www.arduino.cc/​en/​Reference/​SoftwareSerial|SoftwareSerial Library]] \\ 
 +  ​[[https://​github.com/​mikalhart/​TinyGPSPlus|TinyGPS-Plus]] \\ 
 +  ​[[https://​www.elecrow.com/​download/​SIM800%20Series_AT%20Command%20Manual_V1.09.pdf?​srsltid=AfmBOooA5WKx2D4vn5wg5PogjJX52L57QaGQ3paOEnC3nPPb7ex7dt0T|SIM800L AT Command Manual]] \\ 
 +  * [[https://​docs.arduino.cc/​language-reference/​en/​functions/​communication/​wire/|Wire (I2C) Library]] \\
  
 <​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>​
  
pm/prj2025/avaduva/alexandra.bulgaru.1747595958.txt.gz · Last modified: 2025/05/18 22:19 by alexandra.bulgaru
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