- Cum functioneaza:
- Componente necesare:
- Explicația circuitului:
- GPS de la minut la gradul zecimal de conversie a coordonatelor:
- Explicație de programare:
Sistemul de urmărire a vehiculelor devine foarte important în zilele noastre, în special în cazul vehiculelor furate. Dacă aveți un sistem GPS instalat în vehiculul dvs., vă puteți urmări locația vehiculului și ajută poliția să urmărească vehiculele furate. Anterior am construit un proiect similar în care coordonatele de locație ale vehiculului sunt trimise pe telefonul mobil, verificați aici „Arduino based Vehicle Tracker folosind GPS și GSM.
Aici construim o versiune mai avansată a sistemului de urmărire a vehiculelor în care vă puteți urmări vehiculul pe Google Maps. În acest proiect, vom trimite coordonatele de locație către serverul local și trebuie doar să deschideți o „pagină web” pe computerul dvs. sau pe mobil, unde veți găsi un link către Google Maps cu coordonatele de localizare a vehiculelor. Când faceți clic pe linkul respectiv, acesta vă duce pe Google Maps, afișând locația vehiculelor dvs. În acest sistem de urmărire a vehiculului care utilizează Google Maps, modulul GPS este utilizat pentru obținerea coordonatelor de locație, modulul Wi-Fi pentru a păstra trimiterea datelor către computer sau mobil prin Wi-Fi, iar Arduino este utilizat pentru a face GPS și Wi-Fi să vorbească între ele.
Cum functioneaza:
Pentru a urmări vehiculul, trebuie să găsim coordonatele vehiculului utilizând modulul GPS. Modulul GPS comunică continuu cu satelitul pentru a obține coordonate. Apoi, trebuie să trimitem aceste coordonate de pe GPS la Arduino folosind UART. Și apoi Arduino extrage datele necesare din datele primite prin GPS.
Înainte de aceasta, Arduino trimite comanda către modulul Wi-Fi ESP8266 pentru configurarea și conectarea la router și obținerea adresei IP. După aceasta, Arduino inițializează GPS pentru obținerea coordonatelor și LCD-ul afișează un „mesaj de reîmprospătare a paginii”. Asta înseamnă că utilizatorul trebuie să reîmprospăteze pagina web. Când utilizatorul reîmprospătează pagina web, Arduino primește coordonatele GPS și le trimite la pagina web (server local) prin Wi-Fi, cu câteva informații suplimentare și un link Google Maps în ea. Acum, făcând clic pe acest link, utilizatorul redirecționează către Google Maps cu coordonatele și apoi va primi locația curentă a vehiculului la punctul roșu de pe Google Maps. Întregul proces este afișat corect în videoclip la final.
Componente necesare:
- Arduino UNO
- Modul Wi-Fi ESP8266
- Modul GPS
- Cablu USB
- Conectarea firelor
- Laptop
- Alimentare electrică
- 16x2 LCD
- Pâine
- Router Wi-Fi
Explicația circuitului:
Circuitul pentru acest „ Urmărire vehicul folosind proiectul Google Maps” este foarte simplu și avem nevoie în principal de un Arduino UNO, modul GPS și modul ESP8266 Wi-Fi. Există un ecran LCD 16x2 conectat opțional pentru afișarea stării. Acest LCD este conectat la 14-19 (A0-A5) pini ai Arduino.
Aici pinul Tx al modulului GPS este conectat direct la pinul digital numărul 10 al Arduino. Folosind Software Serial Library aici, am permis comunicarea în serie pe pinii 10 și 11, le-am făcut Rx și respectiv Tx și am lăsat pinul Rx al modulului GPS deschis. În mod implicit, pinul 0 și 1 din Arduino sunt utilizați pentru comunicații seriale, dar utilizând biblioteca SoftwareSerial, putem permite comunicarea serială pe alți pini digitali ai Arduino. Adaptorul de 12 volți este utilizat pentru alimentarea modulului GPS. Mergeți aici pentru a afla „Cum să utilizați GPS cu Arduino” și să obțineți coordonatele.
Pinii Vcc și GND ai modulului Wi-Fi ESP8266 sunt conectați direct la 3.3V, iar GND al Arduino, iar CH_PD este conectat și la 3.3V. Pinii Rx și Tx ai ESP8266 sunt conectați direct la pinii 2 și 3 din Arduino. Software Serial Library este, de asemenea, utilizat aici pentru a permite comunicarea în serie pe pinii 2 și 3 din Arduino. Am acoperit deja interfațarea modulului Wi-Fi ESP8266 către Arduino în detaliu, de asemenea, vă rugăm să consultați „Cum să trimiteți date de la Arduino pe pagina web folosind WiFi” înainte de a face acest proiect. Mai jos este imaginea ESP8266:
ESP8266 are două LED-uri, unul este roșu, pentru indicarea puterii și al doilea este albastru, care este LED de comunicare a datelor. LED-ul albastru clipește când ESP trimite câteva date prin pinul său Tx. De asemenea, nu conectați ESP la sursa de alimentare de +5 volți, altfel dispozitivul dvs. se poate deteriora. Aici, în acest proiect, am selectat 9600 baud rate pentru toate comunicațiile UART.
Utilizatorul poate vedea, de asemenea, comunicarea dintre modulul Wi-Fi ESP8266 și Arduino, pe monitorul serial, la rata de transmisie de 9600:
De asemenea, verificați videoclipul la sfârșitul acestui proiect, pentru un proces de lucru detaliat.
GPS de la minut la gradul zecimal de conversie a coordonatelor:
Modulul GPS primește coordonate de la satelit în format Degree Minute (ddmm.mmmm) și aici avem nevoie de format Decimal Degree pentru a căuta locația pe Google Maps. Deci, mai întâi trebuie să convertim coordonatele de la formatul minutului de grad la formatul de grad zecimal utilizând formula dată.
Să presupunem că 2856.3465 (ddmm.mmmm) este Latitudinea pe care o primim din modulul GPS. Acum, primele două numere sunt grade și restul sunt minute.
Deci 28 este grad și 56.3465 este minut.
Acum, nu este nevoie să convertiți partea Degree (28), ci trebuie doar să convertiți partea Minute în Grad Zecimal împărțind 60:
Coordonată grad zecimal = grad + minut / 60
Coordonată de grad zecimal = 28 + 56,3465 / 60
Coordonata gradului zecimal = 28 + 0,94
Coordonata gradului zecimal = 28,94
Același proces se va face și pentru datele longitudinale. Am convertit coordonatele de la Minutul gradului la Gradul zecimal utilizând formulele de mai sus în Arduino Sketch:
float minut = lat_minut.toFloat (); minut = minut / 60; float degree = lat_degree.toFloat (); latitudine = grad + minut; minut = lung_minut.toFloat (); minut = minut / 60; degree = long_degree.toFloat (); logitudine = grad + minut;
Explicație de programare:
În acest cod, am folosit biblioteca SerialSoftware pentru interfața ESP8266 și modulul GPS cu Arduino. Apoi am definit pini diferiți pentru ambele și inițializăm UART cu o rată de 9600 baud. De asemenea, a fost inclusă Biblioteca LiquidCrystal pentru interfața LCD cu Arduino.
#include
După aceasta, trebuie să definim sau să declarăm variabile și șiruri pentru scopuri diferite.
String webpage = ""; int i = 0, k = 0; int gps_status = 0; String name = "
1. Nume: Numele tău
"; // 22 String dob ="2. ZIUA: 12 februarie 1993
"; // 21 String number ="4. Nr vehicul: RJ05 XY 4201
"; // 29 String cordinat ="Coordonate:
"; // 17 String latitude =" "; String logitude =" "; String gpsString =" "; char * test =" $ GPGGA ";Apoi am creat câteva funcții pentru diferite scopuri, cum ar fi:
Funcția pentru obținerea datelor GPS cu coordonate:
void gpsEvent () {gpsString = ""; while (1) {while (gps.available ()> 0) {char inChar = (char) gps.read (); gpsString + = inChar; if (i <7) {if (gpsString! = test) {i = 0;……………….
Funcție pentru extragerea datelor din șirul GPS și conversia acestor date în format de grade zecimal din formatul de minute zecimal, așa cum a explicat earliar
void coordinate2dec () {String lat_degree = ""; pentru (i = 18; i <20; i ++) lat_degree + = gpsString; String lat_minut = ""; pentru (i = 20; i <28; i ++) lat_minut + = gpsString;……………….
Funcție pentru trimiterea comenzilor către ESP8266 pentru configurarea și conectarea acestuia cu WIFI.
void connect_wifi (String cmd, int t) {int temp = 0, i = 0; while (1) {Serial.println (cmd); Serial1.println (cmd); while (Serial1.available ()> 0)……………….
funcția void show_coordinate () pentru afișarea coordonatelor pe ecranul LCD și Serial Monitor și funcția void get_ip () pentru obținerea adresei IP.
Funcția Void Send () pentru crearea unui șir de informații care urmează să fie trimise către pagina web utilizând ESP8266 și void sendwebdata () Funcția pentru trimiterea șirului de informații către pagina web utilizând UART.
În funcția de buclă nulă, Arduino așteaptă continuu pagina web a formularului de solicitare (pagina Web actualizată).
bucla nulă () {k = 0; Serial.println („Vă rugăm să reîmprospătați pagina Ur”); lcd.setCursor (0,0); lcd.print („Vă rugăm să reîmprospătați”); lcd.setCursor (0,1); lcd.print („Pagina dvs. web..”); în timp ce (k <1000)……………….
Verificați codul complet de mai jos.