- Súčasti sú povinné
- GPS modul
- Kolík z STM32F103C8
- Schéma zapojenia a zapojenia
- Programovanie STM32F103C8 pre rozhranie GPS modulu
- Nájdenie zemepisných šírok a dĺžok pomocou GPS a STM32
GPS je skratka pre Global Positioning System (Globálny pozičný systém) a používa sa na zisťovanie zemepisnej šírky a dĺžky ktoréhokoľvek miesta na Zemi s presným časom UTC (Universal Time Coordinated). Toto zariadenie prijíma súradnice zo satelitu každú sekundu s časom a dátumom. GPS ponúka veľkú presnosť a okrem súradníc polohy poskytuje aj ďalšie údaje.
Všetci vieme, že GPS je veľmi užitočné zariadenie a na sledovanie polohy sa veľmi často používa v mobilných telefónoch a iných prenosných zariadeniach. Má veľmi širokú škálu aplikácií v každej oblasti od volania taxíka u vás doma až po sledovanie nadmorskej výšky lietadiel. Tu je niekoľko užitočných projektov súvisiacich s GPS, ktoré sme vytvorili predtým:
- Systém sledovania vozidla
- GPS hodiny
- Varovný systém detekcie nehôd
- Výukový program pre modul GPS Raspberry Pi
- Prepojovací modul GPS s mikrokontrolérom PIC
Tu v tomto výučbe prepojíme modul GPS s mikrokontrolérom STM32F103C8, aby sme našli súradnice polohy a zobrazili ich na displeji LCD 16x2.
Súčasti sú povinné
- Mikrokontrolér STM32F103C8
- GPS modul
- 16x2 LCD displej
- Nepál
- Pripojenie drôtov
GPS modul
Je to GPS modul GY-NEO6MV2 XM37-1612. Tento modul GPS má štyri vývody + 5 V, GND, TXD a RXD. Komunikuje pomocou sériových pinov a dá sa ľahko prepojiť so sériovým portom STM32F103C8.
GPS modul odosiela údaje vo formáte NMEA (pozri snímku obrazovky nižšie). Formát NMEA pozostáva z niekoľkých viet, v ktorých nám stačí iba jedna veta. Táto veta začína od $ GPGGA a obsahuje súradnice, čas a ďalšie užitočné informácie. Toto GPGGA sa označuje ako opravné údaje globálneho pozičného systému. Viac informácií o čítaní údajov GPS a ich reťazcoch nájdete tu.
Nižšie je uvedený jeden príklad reťazca $ GPGGA spolu s jeho popisom:
$ GPGGA, 104534 000 7791,0381, N, 06727,4434, E, 1,08,0,9 510,4, M, 43,9, M,, * 47
$ GPGGA, HHMMSS.SSS, zemepisná šírka, N, zemepisná dĺžka, E, FQ, NOS, HDP, nadmorská výška, M, výška, M,, údaje kontrolného súčtu
Ale tu v tomto výučbe používame knižnicu GPS TinyGPSPlus, ktorá extrahuje všetky požadované informácie z vety NMEA, a aby sme získali zemepisnú šírku a dĺžku, stačí napísať jednoduchý riadok kódu, ktorý uvidíme ďalej v výučbe.
Kolík z STM32F103C8
Sériové komunikačné porty USART STM32F103C8 (BLUE PILL) sú zobrazené na obrázku nižšie. Tieto sú modro zafarbené (PA9-TX1, PA10-RX1, PA2-TX2, PA3-RX2, PB10-TX3, PB11-RX3). Má tri takéto komunikačné kanály.
Schéma zapojenia a zapojenia
Obvodové prepojenia medzi modulom GPS a STM32F103C8
GPS modul |
STM32F103C8 |
RXD |
PA9 (TX1) |
TXD |
PA10 (RX1) |
+ 5V |
+ 5V |
GND |
GND |
Pripojenie medzi 16x2 LCD a STM32F103C8
Pin LCD č |
Názov kolíka LCD |
Názov kolíka STM32 |
1 |
Zem (GND) |
Zem (G) |
2 |
VCC |
5V |
3 |
VEE |
Špendlík zo stredu potenciometra |
4 |
Register Select (RS) |
PB11 |
5 |
Čítanie / Zápis (RW) |
Zem (G) |
6 |
Povoliť (EN) |
PB10 |
7 |
Dátový bit 0 (DB0) |
Žiadne pripojenie (NC) |
8 |
Dátový bit 1 (DB1) |
Žiadne pripojenie (NC) |
9 |
Dátový bit 2 (DB2) |
Žiadne pripojenie (NC) |
10 |
Dátový bit 3 (DB3) |
Žiadne pripojenie (NC) |
11 |
Dátový bit 4 (DB4) |
PB0 |
12 |
Dátový bit 5 (DB5) |
PB1 |
13 |
Dátový bit 6 (DB6) |
PC13 |
14 |
Dátový bit 7 (DB7) |
PC14 |
15 |
Pozitívne LED |
5V |
16 |
LED negatívne |
Zem (G) |
Celé nastavenie bude vyzerať takto:
Programovanie STM32F103C8 pre rozhranie GPS modulu
Kompletný program na vyhľadanie polohy pomocou modulu GPS pomocou STM32 je uvedený na konci tohto projektu. STM32F103C8 je možné programovať pomocou Arduino IDE jednoduchým pripojením k PC cez USB port. Počas nahrávania kódu nezabudnite odstrániť kolíky TX a RX a po nahraní ich pripojiť.
Aby sme mohli prepojiť GPS s STM32, najskôr si musíme stiahnuť knižnicu z odkazu GitHub TinyGPSPlus. Po stiahnutí knižnice ju možno zahrnúť do IDE Arduino pomocou nástroja Sketch -> Include Library -> Add.zip Library. Rovnaká knižnica môže byť použitá na prepojenie GPS s Arduino.
Najprv teda zahrňte potrebné súbory knižnice a definujte piny pre 16x2 LCD:
#include
Potom vytvorte objekt s názvom gps triedy TinyGPSPlus.
TinyGPSPlus gps;
Ďalej v nastavení neplatnosti začnite sériovú komunikáciu s modulom GPS pomocou Serial1.begin (9600). Serial1 sa používa ako port Serial 1 (Pins-PA9, PA10) na STM32F103C8.
Serial1.begin (9600);
Potom nejaký čas zobrazte uvítaciu správu.
lcd.začiatok (16,2); lcd.print ("Prehľad okruhov"); lcd.setCursor (0,1); lcd.print („STM32 s GPS“); oneskorenie (4 000); lcd.clear ();
Ďalej v prázdnej slučke () dostaneme zemepisnú šírku a dĺžku z GPS a skontrolujeme, či sú prijaté údaje platné alebo nie, a zobrazíme informácie na sériovom monitore a LCD.
Kontrola, či sú dostupné údaje o polohe platné alebo nie
loc_valid = gps.location.isValid ();
Prijíma údaje o zemepisnej šírke
lat_val = gps.location.lat ();
Prijíma údaje o zemepisnej dĺžke
lng_val = gps.location.lng ();
Ak sú prijaté neplatné údaje, zobrazí sa na sériovom monitore „*****“ a na LCD displeji sa zobrazí „čaká“.
if (! loc_valid) { lcd.print ("Čaká"); Serial.print ("Latitude:"); Serial.println ("*****"); Serial.print ("Zemepisná dĺžka:"); Serial.println ("*****"); oneskorenie (4 000); lcd.clear (); }
Ak sú prijaté platné údaje, zemepisná šírka a dĺžka sa zobrazia na sériovom monitore aj na LCD displeji.
lcd.clear (); Serial.println ("ČÍTANIE GPS:"); Serial.print ("Latitude:"); Serial.println (lat_val, 6); lcd.setCursor (0,0); lcd.print ("LAT:"); lcd.print (lat_val, 6); Serial.print ("Zemepisná dĺžka:"); Serial.println (lng_val, 6); lcd.setCursor (0,1); lcd.print ("DLHÉ:"); lcd.print (lng_val, 6); oneskorenie (4 000);
Nasledujúca funkcia poskytuje oneskorenie načítania údajov. Neustále hľadá údaje na sériovom porte.
static void GPSDelay (nepodpísané dlhé ms) { nepodpísané dlhé spustenie = millis (); do { while (Serial1.available ()) gps.encode (Serial1.read ()); } while (millis () - začiatok <ms); }
Nájdenie zemepisných šírok a dĺžok pomocou GPS a STM32
Po vytvorení nastavenia a načítaní kódu nezabudnite umiestniť modul GPS do otvoreného priestoru, aby ste mohli rýchlo prijímať signál. Niekedy trvá prijatie signálu pár minút, takže nejaký čas počkajte. LED začne blikať v GPS module, keď začne prijímať signál a na LCD displeji sa zobrazia súradnice polohy.
Zemepisnú šírku a dĺžku polohy môžete overiť pomocou máp Google. Stačí prejsť na mapy Google so zapnutým GPS a kliknúť na modrú bodku. Zobrazí sa adresa so zemepisnou šírkou a dĺžkou, ako je to znázornené na obrázku nižšie
Kompletné kód a demonštračné videa je uvedený nižšie.