- Come funziona:
- Componenti richiesti:
- Spiegazione del circuito:
- Conversione delle coordinate da gradi GPS a gradi decimali:
- Spiegazione della programmazione:
Il sistema di localizzazione dei veicoli diventa molto importante oggigiorno, soprattutto in caso di veicoli rubati. Se hai un sistema GPS installato nel tuo veicolo, puoi tracciare la tua posizione del veicolo e aiuta la polizia a rintracciare i veicoli rubati. In precedenza abbiamo costruito un progetto simile in cui le coordinate di posizione del veicolo vengono inviate sul telefono cellulare, controlla qui 'Tracker di veicoli basato su Arduino usando GPS e GSM.
Qui stiamo costruendo una versione più avanzata del sistema di tracciamento dei veicoli in cui puoi monitorare il tuo veicolo su Google Maps. In questo progetto, invieremo le coordinate della posizione al server locale e devi solo aprire una "pagina web" sul tuo computer o dispositivo mobile, dove troverai un collegamento a Google Maps con le coordinate della posizione dei veicoli. Quando fai clic su quel link, ti porta su Google Maps, mostrando la posizione dei tuoi veicoli. In questo sistema di localizzazione dei veicoli che utilizza Google Maps, il modulo GPS viene utilizzato per ottenere le coordinate di posizione, il modulo Wi-Fi per continuare a inviare dati al computer o al cellulare tramite Wi-Fi e Arduino viene utilizzato per far dialogare GPS e Wi-Fi tra loro.
Come funziona:
Per tracciare il veicolo, dobbiamo trovare le coordinate del veicolo utilizzando il modulo GPS. Il modulo GPS comunica continuamente con il satellite per ottenere le coordinate. Quindi dobbiamo inviare queste coordinate dal GPS al nostro Arduino utilizzando UART. E poi Arduino estrae i dati richiesti dai dati ricevuti dal GPS.
Prima di questo, Arduino invia il comando al modulo Wi-Fi ESP8266 per la configurazione e la connessione al router e per ottenere l'indirizzo IP. Dopo di che Arduino inizializza il GPS per ottenere le coordinate e il display LCD mostra un "messaggio di aggiornamento della pagina". Ciò significa che l'utente deve aggiornare la pagina web. Quando l'utente aggiorna la pagina web, Arduino ottiene le coordinate GPS e le invia alla pagina web (server locale) tramite Wi-Fi, con alcune informazioni aggiuntive e un collegamento a Google Maps. Ora facendo clic su questo collegamento l'utente reindirizza a Google Maps con le coordinate e quindi otterrà la posizione attuale del veicolo nel punto rosso su Google Maps. L'intero processo è correttamente mostrato nel video alla fine.
Componenti richiesti:
- Arduino UNO
- Modulo Wi-Fi ESP8266
- Modulo GPS
- Cavo USB
- Cavi di collegamento
- Il computer portatile
- Alimentazione elettrica
- LCD 16x2
- Tagliere per il pane
- Router wifi
Spiegazione del circuito:
Il circuito per questo ' Vehicle Tracking using Google Maps project' è molto semplice e abbiamo principalmente bisogno di un Arduino UNO, modulo GPS e modulo Wi-Fi ESP8266. È disponibile un LCD 16x2 opzionale per la visualizzazione dello stato. Questo LCD è collegato a 14-19 (A0-A5) Pin di Arduino.
Qui il pin Tx del modulo GPS è direttamente collegato al pin digitale numero 10 di Arduino. Usando la Software Serial Library qui, abbiamo consentito la comunicazione seriale sui pin 10 e 11, e li abbiamo resi rispettivamente Rx e Tx e lasciato aperto il pin Rx del modulo GPS. Per impostazione predefinita, i Pin 0 e 1 di Arduino sono usati per la comunicazione seriale ma utilizzando la libreria SoftwareSerial, possiamo consentire la comunicazione seriale su altri pin digitali di Arduino. L'adattatore da 12 Volt viene utilizzato per alimentare il modulo GPS. Vai qui per imparare "Come usare il GPS con Arduino" e ottenere le coordinate.
I pin Vcc e GND del modulo Wi-Fi ESP8266 sono collegati direttamente a 3,3 V e GND di Arduino e CH_PD è anche collegato a 3,3 V. I pin Tx e Rx di ESP8266 sono collegati direttamente ai pin 2 e 3 di Arduino. Anche la libreria seriale software viene utilizzata qui per consentire la comunicazione seriale sui pin 2 e 3 di Arduino. Abbiamo già coperto l'Interfacciamento del modulo Wi-Fi ESP8266 ad Arduino in dettaglio, anche per favore passare attraverso "Come inviare dati da Arduino alla pagina Web utilizzando WiFi" prima di fare questo progetto. Di seguito l'immagine di ESP8266:
ESP8266 ha due LED, uno rosso per indicare l'alimentazione e il secondo blu per la comunicazione dati. Il LED blu lampeggia quando ESP invia alcuni dati tramite il suo pin Tx. Inoltre, non collegare l'ESP all'alimentazione +5 volt, altrimenti il dispositivo potrebbe danneggiarsi. Qui in questo progetto, abbiamo selezionato 9600 baud rate per tutte le comunicazioni UART.
L'utente può anche vedere la comunicazione tra il modulo Wi-Fi ESP8266 e Arduino, sul monitor seriale, al baud rate di 9600:
Controlla anche il video alla fine di questo progetto, per il processo di lavoro dettagliato.
Conversione delle coordinate da gradi GPS a gradi decimali:
Il modulo GPS riceve le coordinate dal satellite in formato Degree Minute (ggmm.mmmm) e qui abbiamo bisogno del formato Decimal Degree per cercare la posizione su Google Maps. Quindi prima dobbiamo convertire le coordinate dal formato dei minuti in gradi al formato dei gradi decimali usando la formula data.
Supponiamo che 2856.3465 (ddmm.mmmm) sia la latitudine che riceviamo dal modulo GPS. Ora i primi due numeri sono Gradi e quelli rimanenti sono Minuti.
Quindi 28 è il grado e 56,3465 è il minuto.
Ora qui, non è necessario convertire la parte in gradi (28), ma è sufficiente convertire la parte in minuti in gradi decimali dividendo 60:
Coordinate gradi decimali = Grado + Minuti / 60
Coordinate decimali = 28 + 56,3465 / 60
Coordinate decimali = 28 + 0,94
Coordinate decimali = 28,94
Lo stesso processo verrà eseguito per i dati di longitudine. Abbiamo convertito le coordinate da Gradi Minuti a Gradi decimali utilizzando le formule sopra in Arduino Sketch:
float minut = lat_minut.toFloat (); minut = minut / 60; grado di virgola mobile = lat_degree.toFloat (); latitudine = grado + minuto; minut = long_minut.toFloat (); minut = minut / 60; grado = long_degree.toFloat (); logitude = grado + minuto;
Spiegazione della programmazione:
In questo codice, abbiamo utilizzato la libreria SerialSoftware per interfacciare ESP8266 e il modulo GPS con Arduino. Quindi abbiamo definito pin diversi per entrambi e inizializzato UART con 9600 baud rate. Inclusa anche la libreria LiquidCrystal per l'interfaccia LCD con Arduino.
#includere
Dopo di ciò, dobbiamo definire o dichiarare variabile e stringa per scopi diversi.
String webpage = ""; int i = 0, k = 0; int gps_status = 0; Nome stringa = "
1. Nome: il tuo nome
"; // 22 String dob ="2. Data di nascita: 12 febbraio 1993
"; // 21 String number ="4. N. veicolo: RJ05 XY 4201
"; // 29 String cordinat ="Coordinate:
"; // 17 String latitude =" "; String logitude =" "; String gpsString =" "; char * test =" $ GPGGA ";Quindi abbiamo creato alcune funzioni per scopi diversi come:
Funzione per ottenere dati GPS con coordinate:
void gpsEvent () {gpsString = ""; while (1) {while (gps.available ()> 0) {char inChar = (char) gps.read (); gpsString + = inChar; if (i <7) {if (gpsString! = test) {i = 0;……………….
Funzione per estrarre i dati dalla stringa GPS e convertirli nel formato dei gradi decimali dal formato dei minuti decimali, come spiegato earliar.
void coordinate2dec () {String lat_degree = ""; for (i = 18; i <20; i ++) lat_degree + = gpsString; String lat_minut = ""; for (i = 20; i <28; i ++) lat_minut + = gpsString;……………….
Funzione per l'invio di comandi a ESP8266 per la configurazione e il collegamento con 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)……………….
void funzione show_coordinate () per mostrare le coordinate sull'LCD e sul monitor seriale e void funzione get_ip () per ottenere l'indirizzo IP.
Funzione Void Send () per la creazione di una stringa di informazioni da inviare alla pagina Web utilizzando ESP8266 e funzione void sendwebdata () per l'invio di stringa di informazioni alla pagina Web utilizzando UART.
Nella funzione loop void Arduino attende continuamente la pagina web del modulo di richiesta (pagina web di aggiornamento).
void loop () {k = 0; Serial.println ("Aggiorna la pagina"); lcd.setCursor (0,0); lcd.print ("Aggiorna"); lcd.setCursor (0,1); lcd.print ("La tua pagina Web.."); mentre (k <1000)……………….
Controlla il codice completo di seguito.