- Komponenter krävs
- GPS-modul
- Sticka ut STM32F103C8
- Kretsschema och anslutningar
- Programmering STM32F103C8 för GPS-modulgränssnitt
- Hitta latitud och longitud med GPS och STM32
GPS står för Global Positioning System och används för att upptäcka latitud och longitud för vilken plats som helst på jorden, med exakt UTC-tid (Universal Time Coordinated). Enheten tar emot koordinaterna från satelliten för varje sekund, med tid och datum. GPS ger stor noggrannhet och ger också andra uppgifter förutom positionskoordinater.
Vi vet alla att GPS är en mycket användbar enhet och mycket ofta används i mobiltelefoner och andra bärbara enheter för att spåra platsen. Det har ett mycket brett utbud av applikationer inom alla områden, från att ringa taxi hemma för att spåra flygplanens höjd. Här är några användbara GPS-relaterade projekt, vi byggde tidigare:
- Fordonsspårningssystem
- GPS-klocka
- Varningssystem för olycksdetektering
- Raspberry Pi GPS-modul gränssnittshandledning
- Gränssnitts GPS-modul med PIC-mikrokontroller
Här i den här handledningen kommer vi att ansluta en GPS-modul med STM32F103C8 mikrokontroller för att hitta platskoordinaterna och visa dem på 16x2 LCD-skärm.
Komponenter krävs
- STM32F103C8 Microcontroller
- GPS-modul
- 16x2 LCD-skärm
- Bakbord
- Anslutande ledningar
GPS-modul
Det är en GY-NEO6MV2 XM37-1612 GPS-modul. Denna GPS-modul har fyra stift + 5V, GND, TXD och RXD. Den kommunicerar med hjälp av seriella stift och kan enkelt anslutas till den seriella porten på STM32F103C8.
GPS-modulen skickar data i NMEA-format (se skärmdumpen nedan). NMEA-formatet består av flera meningar, där vi bara behöver en mening. Denna mening börjar från $ GPGGA och innehåller koordinater, tid och annan användbar information. Denna GPGGA hänvisas till fixeringsdata för globalt positioneringssystem. Lär dig mer om att läsa GPS-data och dess strängar här.
Nedan följer ett exempel på $ GPGGA-sträng, tillsammans med dess beskrivning:
$ GPGGA, 104534.000,7791.0381, N, 06727.4434, E, 1,08,0,9,510,4, M, 43,9, M,, * 47
$ GPGGA, HHMMSS.SSS, latitud, N, longitud, E, FQ, NOS, HDP, höjd, M, höjd, M,, kontrollsumdata
Men här i den här handledningen använder vi ett TinyGPSPlus GPS-bibliotek som extraherar all nödvändig information från NMEA-meningen, och vi behöver bara skriva en enkel kodrad för att få latitud och longitud, som vi kommer att se senare i handledningen.
Sticka ut STM32F103C8
STM32F103C8 (BLÅ PILL) USART seriella kommunikationsportar visas i uttagsbilden nedan. Dessa är blåfärgade med (PA9-TX1, PA10- RX1, PA2-TX2, PA3- RX2, PB10-TX3, PB11- RX3). Den har tre sådana kommunikationskanaler.
Kretsschema och anslutningar
Kretsanslutningar mellan GPS-modul och STM32F103C8
GPS-modul |
STM32F103C8 |
RXD |
PA9 (TX1) |
TXD |
PA10 (RX1) |
+ 5V |
+ 5V |
GND |
GND |
Anslutningar mellan 16x2 LCD och STM32F103C8
LCD-stift nr |
LCD-stiftnamn |
STM32 Pin-namn |
1 |
Mark (GND) |
Mark (G) |
2 |
VCC |
5V |
3 |
VEE |
Stift från Center of Potentiometer |
4 |
Registrera Välj (RS) |
PB11 |
5 |
Läs / skriv (RW) |
Mark (G) |
6 |
Aktivera (EN) |
PB10 |
7 |
Databit 0 (DB0) |
Ingen anslutning (NC) |
8 |
Databit 1 (DB1) |
Ingen anslutning (NC) |
9 |
Databit 2 (DB2) |
Ingen anslutning (NC) |
10 |
Databit 3 (DB3) |
Ingen anslutning (NC) |
11 |
Databit 4 (DB4) |
PB0 |
12 |
Databit 5 (DB5) |
PB1 |
13 |
Databit 6 (DB6) |
PC13 |
14 |
Databit 7 (DB7) |
PC14 |
15 |
LED-positiv |
5V |
16 |
LED Negativ |
Mark (G) |
Hela installationen kommer att se ut nedan:
Programmering STM32F103C8 för GPS-modulgränssnitt
Komplett program för att hitta plats med GPS-modul med STM32 ges i slutet av detta projekt. STM32F103C8 kan programmeras med Arduino IDE genom att helt enkelt ansluta den till PC via USB-port. Se till att ta bort stiften TX och RX medan du överför kod och anslut den efter uppladdning.
För att koppla ihop GPS med STM32 måste vi först ladda ner ett bibliotek från GitHub-länken TinyGPSPlus. Efter att ha laddat ner biblioteket kan det inkluderas i Arduino IDE genom att skissa -> Inkludera bibliotek -> Lägg till.zip-bibliotek. Samma bibliotek kan användas för att gränssnitt GPS med Arduino.
Så inkludera först nödvändiga biblioteksfiler och definiera stift för 16x2 LCD:
#omfatta
Skapa sedan ett objekt med namnet GPS i klassen TinyGPSPlus.
TinyGPSPlus GPS;
Nästa i tomrummet , starta seriekommunikationen med GPS-modulen med Serial1.begin (9600). Serial1 används som Serial 1-port (Pins-PA9, PA10) på STM32F103C8.
Serial1.begin (9600);
Visa sedan välkomstmeddelande under en tid.
lcd.begin (16,2); lcd.print ("Circuit Digest"); lcd.setCursor (0,1); lcd.print ("STM32 med GPS"); fördröjning (4000); lcd.clear ();
Nästa i tomrumsslingan () får vi latitud och longitud från GPS och kontrollerar om de mottagna uppgifterna är giltiga eller inte och visar information i seriell bildskärm och LCD.
Kontrollerar om den tillgängliga platsinformationen är giltig eller inte
loc_valid = gps.location.isValid ();
Tar emot latituddata
lat_val = gps.location.lat ();
Tar emot longituddata
lng_val = gps.location.lng ();
Om ogiltiga data tas emot visas "*****" i seriell bildskärm och displayen "väntar" på LCD-skärmen.
if (! loc_valid) { lcd.print ("Waiting"); Serial.print ("Latitude:"); Serial.println ("*****"); Serial.print ("Longitude:"); Serial.println ("*****"); fördröjning (4000); lcd.clear (); }
Om giltiga data tas emot visas latitud och longitud på seriell bildskärm såväl som på LCD-skärm.
lcd.clear (); Serial.println ("GPS-LÄSNING:"); Serial.print ("Latitude:"); Serial.println (lat_val, 6); lcd.setCursor (0,0); lcd.print ("LAT:"); lcd.print (lat_val, 6); Serial.print ("Longitude:"); Serial.println (lng_val, 6); lcd.setCursor (0,1); lcd.print ("LONG:"); lcd.print (lng_val, 6); fördröjning (4000);
Följande funktion ger fördröjningen att läsa data. Det fortsätter att leta efter data på seriell port.
statisk ogiltig GPSDelay (osignerad lång ms) { osignerad långstart = millis (); gör { while (Serial1.available ()) gps.encode (Serial1.read ()); } medan (millis () - start <ms); }
Hitta latitud och longitud med GPS och STM32
När du har byggt upp installationen och laddat upp koden, se till att placera GPS-modulen i öppet område för att ta emot signalen snabbt. Ibland tar det några minuter att ta emot signal så vänta en stund. LED-lampan börjar blinka i GPS-modulen när den börjar ta emot signal och platskoordinater visas på LCD-skärmen.
Du kan verifiera platsens latitud och longitud med hjälp av Google maps. Gå bara till Google maps med GPS påslagen och klicka på den blå pricken. Den visar adressen med latitud och longitud som visas på bilden nedan
Den fullständiga koden och demonstrationsvideon ges nedan.