- Komponenter kreves
- GPS-modul
- Pin ut av STM32F103C8
- Kretsdiagram og tilkoblinger
- Programmering STM32F103C8 for GPS-modulgrensesnitt
- Finne bredde og lengdegrad med GPS og STM32
GPS står for Global Positioning System og brukes til å oppdage bredde og lengdegrad på ethvert sted på jorden, med nøyaktig UTC-tid (Universal Time Coordinated). Denne enheten mottar koordinatene fra satellitten for hvert sekund, med tid og dato. GPS gir stor nøyaktighet og gir også andre data i tillegg til posisjonskoordinater.
Vi vet alle at GPS er en veldig nyttig enhet og veldig ofte brukt i mobiltelefoner og andre bærbare enheter for å spore posisjonen. Den har veldig bredt spekter av applikasjoner innen alle felt, fra å ringe drosjen hjemme for å spore høyden på fly. Her er noen nyttige GPS-relaterte prosjekter, vi bygde tidligere:
- Bilsporingssystem
- GPS-klokke
- Varslingssystem for ulykkesdeteksjon
- Raspberry Pi GPS Module Interfacing Tutorial
- Grensesnitt GPS-modul med PIC-mikrokontroller
Her i denne veiledningen vil vi grensesnitt en GPS-modul med STM32F103C8 mikrokontroller for å finne posisjonskoordinatene og vise dem på 16x2 LCD-skjerm.
Komponenter kreves
- STM32F103C8 Microcontroller
- GPS-modul
- 16x2 LCD-skjerm
- Brettbrett
- Koble ledninger
GPS-modul
Det er en GY-NEO6MV2 XM37-1612 GPS-modul. Denne GPS-modulen har fire pin + 5V, GND, TXD og RXD. Den kommuniserer ved hjelp av seriepinnene og kan enkelt grensesnittes med serieporten på STM32F103C8.
GPS-modulen sender dataene i NMEA-format (se skjermbildet nedenfor). NMEA-format består av flere setninger, der vi bare trenger en setning. Denne setningen starter fra $ GPGGA og inneholder koordinatene, tiden og annen nyttig informasjon. Denne GPGGA henvises til Global Positioning System Fix Data. Lær mer om å lese GPS-data og strengene her.
Nedenfor er et eksempel på $ GPGGA-streng, sammen med beskrivelsen:
$ GPGGA, 104534.000,7791.0381, N, 06727.4434, E, 1,08,0,9,510,4, M, 43,9, M,, * 47
$ GPGGA, HHMMSS.SSS, breddegrad, N, lengdegrad, E, FQ, NOS, HDP, høyde, M, høyde, M,, sjekksumdata
Men her i denne opplæringen bruker vi et TinyGPSPlus GPS-bibliotek som trekker ut all nødvendig informasjon fra NMEA-setningen, og vi trenger bare å skrive en enkel kodelinje for å få breddegrad og lengdegrad, som vi vil se senere i opplæringen.
Pin ut av STM32F103C8
STM32F103C8 (BLÅ PILL) USART serielle kommunikasjonsporter vises i utstikkingsbildet nedenfor. Disse er blåfarget med (PA9-TX1, PA10- RX1, PA2-TX2, PA3- RX2, PB10-TX3, PB11- RX3). Den har tre slike kommunikasjonskanaler.
Kretsdiagram og tilkoblinger
Kretsforbindelser mellom GPS-modul og STM32F103C8
GPS-modul |
STM32F103C8 |
RXD |
PA9 (TX1) |
TXD |
PA10 (RX1) |
+ 5V |
+ 5V |
GND |
GND |
Tilkoblinger mellom 16x2 LCD og STM32F103C8
LCD-pinne nr |
LCD-pinnens navn |
STM32 Pin-navn |
1 |
Bakken (GND) |
Bakken (G) |
2 |
VCC |
5V |
3 |
VEE |
Pin fra senter for potensiometer |
4 |
Registrer Velg (RS) |
PB11 |
5 |
Les / skriv (RW) |
Bakken (G) |
6 |
Aktiver (EN) |
PB10 |
7 |
Databit 0 (DB0) |
Ingen tilkobling (NC) |
8 |
Databit 1 (DB1) |
Ingen tilkobling (NC) |
9 |
Databit 2 (DB2) |
Ingen tilkobling (NC) |
10 |
Databit 3 (DB3) |
Ingen tilkobling (NC) |
11 |
Data Bit 4 (DB4) |
PB0 |
12 |
Databit 5 (DB5) |
PB1 |
1. 3 |
Databit 6 (DB6) |
PC13 |
14 |
Databit 7 (DB7) |
PC14 |
15 |
LED-positiv |
5V |
16 |
LED negativ |
Bakken (G) |
Hele oppsettet vil se ut som nedenfor:
Programmering STM32F103C8 for GPS-modulgrensesnitt
Komplett program for å finne sted ved hjelp av GPS-modul ved hjelp av STM32 er gitt på slutten av dette prosjektet. STM32F103C8 kan programmeres ved hjelp av Arduino IDE ved å bare koble den til PC via USB-port. Sørg for å fjerne pinnene TX og RX mens du laster opp kode og koble den etter opplasting.
For å koble GPS med STM32 må vi først laste ned et bibliotek fra GitHub-lenken TinyGPSPlus. Etter at du har lastet ned biblioteket, kan det inkluderes i Arduino IDE ved å skisse -> Inkluder bibliotek -> Legg til.zip-bibliotek. Samme bibliotek kan brukes til å grensesnitt GPS med Arduino.
Så inkluder først de nødvendige biblioteksfilene og definer pins for 16x2 LCD:
#inkludere
Opprett deretter et objekt som heter GPS fra klassen TinyGPSPlus.
TinyGPSPlus GPS;
Neste i ugyldig oppsett , begynn seriekommunikasjonen med GPS-modulen ved hjelp av Serial1.begin (9600). Serial1 brukes som Serial 1-port (Pins-PA9, PA10) på STM32F103C8.
Serial1.begin (9600);
Vis deretter velkomstmelding i noen tid.
lcd.begin (16,2); lcd.print ("Circuit Digest"); lcd.setCursor (0,1); lcd.print ("STM32 med GPS"); forsinkelse (4000); lcd.clear ();
Neste i tomgangssløyfen () mottar vi breddegrad og lengdegrad fra GPS og sjekker om mottatte data er gyldige eller ikke, og viser informasjon i seriell skjerm og LCD.
Kontrollerer om tilgjengelige stedsdata er gyldige eller ikke
loc_valid = gps.location.isValid ();
Mottar breddegradene
lat_val = gps.location.lat ();
Mottar data for lengdegrad
lng_val = gps.location.lng ();
Hvis ugyldige data mottas, vises "*****" i seriell skjerm og displayet "venter" på LCD-skjermen.
hvis (! loc_valid) { lcd.print ("Waiting"); Serial.print ("Latitude:"); Serial.println ("*****"); Serial.print ("Longitude:"); Serial.println ("*****"); forsinkelse (4000); lcd.clear (); }
Hvis gyldige data mottas, vises breddegrad og lengdegrad både på seriell skjerm og på LCD-skjerm.
lcd.clear (); Serial.println ("GPS-LESING:"); 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 ("LANG:"); lcd.print (lng_val, 6); forsinkelse (4000);
Følgende funksjon gir forsinkelsen for å lese dataene. Det fortsetter å lete etter dataene på seriell port.
statisk ugyldig GPSDelay (usignert lang ms) { usignert lang start = millis (); gjør { mens (Serial1.available ()) gps.encode (Serial1.read ()); } mens (millis () - start <ms); }
Finne bredde og lengdegrad med GPS og STM32
Etter å ha bygget oppsettet og lastet opp koden, må du sørge for å plassere GPS-modulen i åpent område for å motta signalet raskt. Noen ganger tar det noen minutter å motta signal, så vent litt tid. LED-en vil begynne å blinke i GPS-modulen når den begynner å motta signal, og posisjonskoordinatene vises på LCD-skjermen.
Du kan verifisere breddegrad og lengdegrad på stedet ved hjelp av Google maps. Bare gå til Google maps med GPS slått PÅ og klikk på den blå prikken. Den viser adressen med breddegrad og lengdegrad som vist på bildet nedenfor
Den komplette koden og demonstrasjonsvideoen er gitt nedenfor.