- Hoe het werkt:
- Vereiste componenten:
- Circuit uitleg:
- GPS-graadminuut tot decimale graad Convergentie van coördinaten:
- Programmering Toelichting:
Voertuigvolgsysteem wordt tegenwoordig erg belangrijk, vooral in het geval van gestolen voertuigen. Als u een GPS-systeem in uw voertuig heeft geïnstalleerd, kunt u uw voertuiglocatie volgen en het helpt de politie om de gestolen voertuigen op te sporen. Eerder hebben we een soortgelijk project gebouwd waarbij locatiecoördinaten van het voertuig op mobiele telefoon worden verzonden, kijk hier 'Arduino-gebaseerde voertuigvolger met behulp van GPS en GSM.
Hier bouwen we een meer geavanceerde versie van het voertuigvolgsysteem waarin u uw voertuig kunt volgen op Google Maps. In dit project sturen we de locatiecoördinaten naar de lokale server en hoef je alleen maar een 'webpagina' op je computer of mobiel te openen, waar je een link naar Google Maps vindt met je locatiecoördinaten voor voertuigen. Wanneer u op die link klikt, gaat u naar Google Maps en toont de locatie van uw voertuig. In dit voertuigvolgsysteem dat Google Maps gebruikt, wordt de GPS-module gebruikt voor het verkrijgen van de locatiecoördinaten, de wifi-module om gegevens via wifi naar de computer of mobiel te blijven sturen en Arduino wordt gebruikt om GPS en wifi met elkaar te laten praten.
Hoe het werkt:
Om het voertuig te volgen, moeten we de coördinaten van het voertuig vinden met behulp van de GPS-module. De GPS-module communiceert continu met de satelliet om coördinaten te krijgen. Vervolgens moeten we deze coördinaten van GPS naar onze Arduino sturen met behulp van UART. En dan haalt Arduino de vereiste gegevens uit de ontvangen gegevens via GPS.
Voordien stuurt Arduino een commando naar de Wi-Fi-module ESP8266 voor het configureren en verbinden met de router en het verkrijgen van het IP-adres. Hierna initialiseert Arduino GPS voor het ophalen van coördinaten en toont het LCD een 'Page Refresh message'. Dat betekent dat de gebruiker de webpagina moet vernieuwen. Wanneer de gebruiker de webpagina vernieuwt, krijgt Arduino de GPS-coördinaten en stuurt deze via Wi-Fi naar de webpagina (lokale server), met wat extra informatie en een Google maps-link erin. Door nu op deze link te klikken, wordt de gebruiker omgeleid naar Google Maps met de coördinaat en krijgt hij / zij de huidige voertuiglocatie op de rode plek op Google Maps. Het hele proces wordt aan het einde correct weergegeven in de video.
Vereiste componenten:
- Arduino UNO
- Wi-Fi-module ESP8266
- GPS-module
- USB-kabel
- Draden aansluiten
- Laptop
- Stroomvoorziening
- 16x2 LCD
- Broodplank
- Wifi router
Circuit uitleg:
Het circuit voor dit ' Voertuig volgen met Google Maps-project' is heel eenvoudig en we hebben vooral een Arduino UNO, GPS-module en ESP8266 wifi-module nodig. Er is optioneel een 16x2 LCD-scherm aangesloten voor het weergeven van de status. Deze LCD is aangesloten op 14-19 (A0-A5) pinnen van Arduino.
Hier is de Tx-pin van de GPS-module rechtstreeks verbonden met digitale pin nummer 10 van Arduino. Door hier Software Serial Library te gebruiken, hebben we seriële communicatie op pin 10 en 11 toegestaan, en deze respectievelijk Rx en Tx gemaakt en de Rx-pin van de GPS-module opengelaten. Standaard worden pin 0 en 1 van Arduino gebruikt voor seriële communicatie, maar door de SoftwareSerial-bibliotheek te gebruiken, kunnen we seriële communicatie op andere digitale pinnen van de Arduino toestaan. Er wordt een 12 volt adapter gebruikt om de GPS-module van stroom te voorzien. Ga hier door voor meer informatie over "GPS gebruiken met Arduino" en de coördinaten ophalen.
De Vcc- en GND-pinnen van de Wi-Fi-module ESP8266 zijn rechtstreeks verbonden met 3.3V en GND van Arduino en CH_PD is ook verbonden met 3.3V. Tx- en Rx-pinnen van ESP8266 zijn rechtstreeks verbonden met pin 2 en 3 van Arduino. Software Serial Library wordt hier ook gebruikt om seriële communicatie op pin 2 en 3 van Arduino mogelijk te maken. We hebben de interface van de ESP8266 Wi-Fi-module met Arduino al in detail besproken, ga ook door "Hoe gegevens van Arduino naar een webpagina te verzenden via WiFi" voordat u dit project uitvoert. Hieronder is de foto van ESP8266:
ESP8266 heeft twee LED's, een is rood, voor het aangeven van vermogen en de tweede is blauw, dat is datacommunicatie-LED. Blauwe LED knippert wanneer ESP gegevens via zijn Tx-pin verzendt. Sluit ESP ook niet aan op een voeding van +5 volt, anders kan uw apparaat beschadigd raken. Hier in dit project hebben we 9600 baudrate geselecteerd voor alle UART-communicatie.
De gebruiker kan ook de communicatie tussen Wi-Fi-module ESP8266 en Arduino zien, op de seriële monitor, met de baudrate van 9600:
Bekijk ook de video aan het einde van dit project voor een gedetailleerd werkproces.
GPS-graadminuut tot decimale graad Convergentie van coördinaten:
GPS Module ontvangt coördinaten van satellietbeelden in Degree Minute formaat (ddmm.mmmm) en hier moeten we Decimal Degree formaat voor zoeken de locatie op Google Maps. Dus eerst moeten we coördinaten converteren van Degree Minute Format naar Decimal Degree Format met behulp van de gegeven formule.
Stel dat 2856.3465 (ddmm.mmmm) de breedtegraad is die we ontvangen van de GPS-module. Nu zijn de eerste twee getallen graden en de overige zijn minuten.
Dus 28 is graad en 56.3465 is minuut.
Nu hier, het is niet nodig om het Graaddeel (28) te converteren, maar u hoeft alleen het Minuutdeel om te zetten in een decimale graad door 60 te delen:
Decimale gradencoördinaat = graden + minuut / 60
Coördinaat decimale graden = 28 + 56.3465 / 60
Coördinaat decimale graden = 28 + 0,94
Coördinaat decimale graden = 28,94
Hetzelfde proces wordt uitgevoerd voor lengtegraadgegevens. We hebben coördinaten geconverteerd van graadminuut naar decimale graad door bovenstaande formules in Arduino Sketch te gebruiken:
float minut = lat_minut.toFloat (); minut = minuut / 60; zwevende graad = lat_degree.toFloat (); breedtegraad = graad + minuut; minut = long_minut.toFloat (); minut = minuut / 60; degree = long_degree.toFloat (); logitude = graad + minuut;
Programmering Toelichting:
In deze code hebben we de SerialSoftware-bibliotheek gebruikt om ESP8266 en GPS-module met Arduino te verbinden. Vervolgens hebben we verschillende pinnen gedefinieerd voor beide en initialiseren we UART met 9600 baudrate. Ook inbegrepen LiquidCrystal Library voor interface LCD met Arduino.
# omvatten
Hierna moeten we de variabele en tekenreeks voor een ander doel definiëren of declareren.
String webpage = ""; int i = 0, k = 0; int gps_status = 0; String naam = "
1. Naam: uw naam
"; // 22 String dob ="2. Geboortedatum: 12 februari 1993
"; // 21 String number ="4. Voertuignummer: RJ05 XY 4201
"; // 29 String cordinat ="Coördinaten:
"; // 17 String latitude =" "; String logitude =" "; String gpsString =" "; char * test =" $ GPGGA ";Vervolgens hebben we enkele functies gemaakt voor verschillende doeleinden zoals:
Functie voor het verkrijgen van GPS-gegevens met coördinaten:
void gpsEvent () {gpsString = ""; while (1) {while (gps.available ()> 0) {char inChar = (char) gps.read (); gpsString + = inChar; if (i <7) {if (gpsString! = test) {i = 0;……………….
Functie voor het extraheren van gegevens uit de GPS-string en omzetten van die gegevens naar decimale graden-indeling vanuit het decimale minuutformaat, zoals eerder uitgelegd.
void coordinate2dec () {String lat_degree = ""; voor (i = 18; i <20; i ++) lat_degree + = gpsString; String lat_minut = ""; voor (i = 20; i <28; i ++) lat_minut + = gpsString;……………….
Functie voor het verzenden van opdrachten naar ESP8266 voor configuratie en verbinding met 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 show_coordinate () functie voor het tonen van coördinaten op de LCD en seriële monitor en void get_ip () functie voor het verkrijgen van IP-adres.
Void Send () -functie voor het maken van een string met informatie die naar een webpagina moet worden verzonden met behulp van ESP8266 en void sendwebdata () Functie voor het verzenden van een informatiestring naar een webpagina met UART.
In de void loop- functie wacht Arduino continu op de webpagina van het aanvraagformulier (webpagina vernieuwen).
lege lus () {k = 0; Serial.println ("Vernieuw uw pagina aub"); lcd.setCursor (0,0); lcd.print ("Vernieuw aub"); lcd.setCursor (0,1); lcd.print ("Uw webpagina.."); terwijl (k <1000)……………….
Controleer de volledige code hieronder.