- Kako deluje:
- Potrebne komponente:
- Pojasnilo vezja:
- Pretvorba koordinat iz minute v decimalno stopinjo GPS:
- Pojasnilo programiranja:
Sistem za sledenje vozil je danes zelo pomemben, zlasti v primeru ukradenih vozil. Če je v vašem vozilu nameščen sistem GPS, lahko sledite lokaciji vozila in pomaga policiji pri iskanju ukradenih vozil. Prej smo zgradili podoben projekt, pri katerem se koordinate lokacije vozila pošiljajo na mobilni telefon, tukaj preverite 'Sledilnik vozil na osnovi Arduina z uporabo GPS in GSM.
Tu gradimo naprednejšo različico sistema za sledenje vozil, v kateri lahko sledite svojemu vozilu v Google Zemljevidih. V tem projektu bomo lokalnim strežnikom poslali koordinate lokacij, v računalniku ali mobilnem telefonu pa morate odpreti 'spletno stran', kjer boste našli povezavo do Google Zemljevidov z vašimi koordinatami lokacije vozil. Ko kliknete na to povezavo, se v Google Zemljevidih prikaže lokacija vašega vozila. V tem sistemu za sledenje vozil z Google Zemljevidi se modul GPS uporablja za pridobivanje lokacijskih koordinat, modul Wi-Fi za pošiljanje podatkov v računalnik ali mobilni telefon prek omrežja Wi-Fi, Arduino pa za medsebojno komunikacijo med GPS in Wi-Fi..
Kako deluje:
Za sledenje vozilu moramo poiskati koordinate vozila z uporabo modula GPS. GPS modul neprekinjeno komunicira s satelitom za pridobivanje koordinat. Nato moramo te koordinate poslati z GPS-a na naš Arduino z uporabo UART. In potem Arduino iz GPS-a izvleče zahtevane podatke iz prejetih podatkov.
Pred tem Arduino pošlje ukaz Wi-Fi modulu ESP8266 za konfiguracijo in povezavo z usmerjevalnikom ter pridobivanje naslova IP. Po tem Arduino inicializira GPS za pridobivanje koordinat in na LCD-prikazovalniku se prikaže sporočilo »Osveži stran«. To pomeni, da mora uporabnik osvežiti spletno stran. Ko uporabnik osveži spletno stran, Arduino dobi koordinate GPS in jo pošlje na spletno stran (lokalni strežnik) prek omrežja Wi-Fi, v njej pa nekaj dodatnih informacij in povezava do Google Maps. Zdaj, ko klikne to povezavo, uporabnik s koordinato preusmeri na Google Zemljevide in nato na rdeči točki v Google Zemljevidih dobi trenutno lokacijo vozila. Celoten postopek je pravilno prikazan v videu na koncu.
Potrebne komponente:
- Arduino UNO
- Modul Wi-Fi ESP8266
- GPS modul
- Kabel USB
- Priključne žice
- Prenosnik
- Napajanje
- 16x2 LCD
- Odbor za kruh
- Wi-Fi usmerjevalnik
Pojasnilo vezja:
Vezje za ta ' sledenje vozil s projektom Google Maps' je zelo preprosto in potrebujemo predvsem Arduino UNO, GPS modul in modul Wi-Fi ESP8266. Za prikaz stanja je neobvezno povezan LCD 16x2. Ta LCD je priključen na 14-19 (A0-A5) zatiči Arduino.
Tu je Tx pin modula GPS neposredno povezan z digitalnim pinom 10 Arduino. Z uporabo programske serijske knjižnice tukaj smo dovolili serijsko komunikacijo na pin 10 in 11 ter jih naredili Rx oziroma Tx ter pustili Rx pin modula GPS odprt. Privzeto se za zaporedno komunikacijo uporabljata pin 0 in 1 Arduina, z uporabo knjižnice SoftwareSerial pa lahko omogočimo serijsko komunikacijo na drugih digitalnih nožicah Arduina. 12-voltni adapter se uporablja za napajanje modula GPS. Pojdite sem, če želite izvedeti »Kako uporabljati GPS z Arduinom« in pridobiti koordinate.
Zatiči Vcc in GND modula Wi-Fi ESP8266 so neposredno povezani na 3.3V in GND Arduina, CH_PD pa je povezan tudi z 3.3V. Zatiča Tx in Rx ESP8266 sta neposredno priključena na zatiča 2 in 3 Arduina. Tu je uporabljena tudi programska serijska knjižnica, ki omogoča serijsko komunikacijo na pin 2 in 3 Arduino. Podrobno smo že obravnavali povezavo modula Wi-Fi ESP8266 z Arduino, pred tem projektom preberite tudi »Kako poslati podatke iz Arduina na spletno stran z uporabo Wi-Fi«. Spodaj je slika ESP8266:
ESP8266 ima dve LED, ena je rdeča, za prikaz moči, druga pa modra, ki je LED za komunikacijo podatkov. Modra LED utripa, ko ESP pošlje nekaj podatkov prek Tx zatiča. Prav tako ne priključujte ESP na napajanje +5 voltov, sicer se lahko naprava poškoduje. V tem projektu smo za vse komunikacije UART izbrali 9600 baudov.
Uporabnik lahko vidi tudi komunikacijo med modulom Wi-Fi ESP8266 in Arduino na serijskem monitorju s hitrostjo prenosa 9600:
Za podroben delovni postopek si oglejte tudi video na koncu tega projekta.
Pretvorba koordinat iz minute v decimalno stopinjo GPS:
Modul GPS sprejema koordinate od satelita v obliki stopinjske minute (ddmm.mmmm) in tukaj potrebujemo format decimalne stopinje za iskanje lokacije v Google Zemljevidih. Torej najprej moramo pretvoriti koordinate iz Degree Minute Format v Decimal Degree Format z uporabo dane formule.
Recimo, da je 2856.3465 (ddmm.mmmm) Latitude, ki ga prejmemo iz modula GPS. Zdaj sta prvi dve številki stopinje, preostali pa minuti.
28 je torej stopinja, 56,3465 pa minuta.
Zdaj tukaj ni treba pretvarjati dela stopinj (28), temveč je treba minutni del pretvoriti v decimalno stopinjo tako, da delimo 60:
Decimalna stopinjska koordinata = stopinja + minuta / 60
Decimalna stopinjska koordinata = 28 + 56,3465 / 60
Decimalna stopinjska koordinata = 28 + 0,94
Decimalna stopinjska koordinata = 28,94
Enak postopek bo izveden za podatke o dolžini. Z uporabo zgornjih formul v Arduino Sketch smo pretvorili koordinate iz stopinjske minute v decimalno stopinjo:
float minut = lat_minut.toFloat (); minut = minut / 60; float stopnja = lat_degree.toFloat (); zemljepisna širina = stopinja + minuta; minut = long_minut.toFloat (); minut = minut / 60; stopnja = dolga_degree.toFloat (); zemljepisna širina = stopnja + minuta;
Pojasnilo programiranja:
V tej kodi smo za povezavo ESP8266 in GPS modula z Arduino uporabili knjižnico SerialSoftware. Nato smo za oba definirali različne nožice in inicializirali UART s hitrostjo prenosa 9600 baudov. Vključena je tudi knjižnica LiquidCrystal za vmesnik LCD z Arduino.
#include
Po njem moramo definirati ali razglasiti spremenljivko in niz za različne namene.
Niz spletne strani = ""; int i = 0, k = 0; int gps_status = 0; Ime niza = "
1. Ime: Vaše ime
"; // 22 niz dob ="2. ROK: 12. februarja 1993
"; // 21 Številka niza ="4. Št. Vozila: RJ05 XY 4201
"; // 29 String cordinat ="Koordinate:
"; // 17 Širina niza =" "; Logitude niza =" "; Niz gpsString =" "; char * test =" $ GPGGA ";Nato smo naredili nekaj funkcij za različne namene, kot so:
Funkcija pridobivanja GPS podatkov s koordinatami:
void gpsEvent () {gpsString = ""; while (1) {while (gps.available ()> 0) {char inChar = (char) gps.read (); gpsString + = inChar; if (i <7) {if (gpsString! = test) {i = 0;……………….
Funkcija za pridobivanje podatkov iz niza GPS in pretvorbo teh podatkov v format decimalne stopinje iz decimalne minute, kot je razloženo prej.
void coordinate2dec () {Niz lat_degree = ""; za (i = 18; i <20; i ++) lat_degree + = gpsString; Niz lat_minut = ""; za (i = 20; i <28; i ++) lat_minut + = gpsString;……………….
Funkcija za pošiljanje ukazov na ESP8266 za konfiguracijo in povezavo z WIFI.
neveljavno connect_wifi (Niz cmd, int t) {int temp = 0, i = 0; medtem ko (1) {Serial.println (cmd); Serial1.println (cmd); medtem ko (Serial1.available ()> 0)……………….
void show_coordinate () funkcija za prikaz koordinat na LCD-ju in serijskem monitorju ter void get_ip () funkcija za pridobivanje naslova IP.
Funkcija Void Send () za ustvarjanje niza informacij, ki jih je treba poslati na spletno stran z uporabo ESP8266 in void sendwebdata () Funkcija za pošiljanje niza informacij na spletno stran s pomočjo UART.
V funkciji void loop Arduino neprestano čaka na spletno stran obrazca za zahtevo (osvežujoča spletna stran).
void loop () {k = 0; Serial.println ("Prosimo, osvežite urno stran"); lcd.setCursor (0,0); lcd.print ("Prosim osvežite"); lcd.setCursor (0,1); lcd.print ("Vaša spletna stran.."); medtem ko (k <1000)……………….
Preverite celotno kodo spodaj.