- Potrebne komponente
- GPS modul
- Pripnite iz STM32F103C8
- Shema vezja in povezave
- Programiranje STM32F103C8 za povezavo modulov GPS
- Iskanje zemljepisne širine in dolžine z GPS in STM32
GPS pomeni sistem za globalno določanje položaja in se uporablja za zaznavanje zemljepisne širine in dolžine katere koli lokacije na Zemlji s točno določenim UTC časom (univerzalni koordinirani čas). Ta naprava prejme koordinate s satelita vsako sekundo s časom in datumom. GPS ponuja izjemno natančnost in poleg koordinat položaja ponuja tudi druge podatke.
Vsi vemo, da je GPS zelo uporabna naprava in se zelo pogosto uporablja v mobilnih telefonih in drugih prenosnih napravah za sledenje lokaciji. Ima zelo široko paleto aplikacij na vseh področjih, od klica taksija doma za sledenje nadmorske višine letal. Tu je nekaj uporabnih projektov, povezanih z GPS, ki smo jih zgradili prej:
- Sistem za sledenje vozil
- GPS ura
- Sistem za opozarjanje na nesreče
- Vadnica za povezovanje modulov Raspberry Pi GPS
- Povezava modula GPS z mikrokrmilnikom PIC
Tu v tej vadnici bomo povezali modul GPS z mikrokrmilnikom STM32F103C8, da bomo našli koordinate lokacije in jih prikazali na 16x2 LCD zaslonu.
Potrebne komponente
- STM32F103C8 Mikrokrmilnik
- GPS modul
- LCD zaslon 16x2
- Breadboard
- Povezovanje žic
GPS modul
To je GPS modul GY-NEO6MV2 XM37-1612. Ta GPS modul ima štiri pin + 5V, GND, TXD in RXD. Komunicira s pomočjo zaporednih nožic in je zlahka povezan s serijskimi vrati STM32F103C8.
Modul GPS podatke pošilja v obliki NMEA (glejte spodnji posnetek zaslona). Oblika NMEA je sestavljena iz več stavkov, v katerih potrebujemo le en stavek. Ta stavek se začne od $ GPGGA in vsebuje koordinate, čas in druge koristne informacije. Ta GPGGA se imenuje Global Fix System Fix Data. Več informacij o branju podatkov GPS in njihovih nizih najdete tukaj.
Spodaj je en vzorec $ GPGGA String, skupaj z opisom:
$ GPGGA, 104534.000,7791.0381, N, 06727.4434, E, 1,08,0.9,510.4, M, 43,9, M,, * 47
$ GPGGA, HHMMSS.SSS, zemljepisna širina, N, dolžina, E, FQ, NOS, HDP, nadmorska višina, M, višina, M,, podatki o kontrolni vsoti
Toda tukaj v tej vadnici uporabljamo knjižnico TinyGPSPlus GPS, ki izvleče vse zahtevane informacije iz stavka NMEA, in preprosto moramo napisati preprosto vrstico kode, da dobimo zemljepisno širino in dolžino, kar bomo videli kasneje v vadnici.
Pripnite iz STM32F103C8
Serijska komunikacijska vrata USART STM32F103C8 (BLUE PILL) so prikazana na spodnji sliki. To so modre barve (PA9-TX1, PA10- RX1, PA2-TX2, PA3- RX2, PB10-TX3, PB11- RX3). Ima tri take komunikacijske kanale.
Shema vezja in povezave
Vezja med modulom GPS in STM32F103C8
GPS modul |
STM32F103C8 |
RXD |
PA9 (TX1) |
TXD |
PA10 (RX1) |
+ 5V |
+ 5V |
GND |
GND |
Povezave med 16x2 LCD in STM32F103C8
Številka LCD |
Ime pin LCD |
Ime pin STM32 |
1. |
Tla (Gnd) |
Tla (G) |
2. |
VCC |
5V |
3. |
VEE |
Pin iz središča potenciometra |
4. |
Izbira registra (RS) |
PB11 |
5. |
Branje / pisanje (RW) |
Tla (G) |
6. |
Omogoči (EN) |
PB10 |
7. |
Podatkovni bit 0 (DB0) |
Brez povezave (NC) |
8. |
Podatkovni bit 1 (DB1) |
Brez povezave (NC) |
9. |
Podatkovni bit 2 (DB2) |
Brez povezave (NC) |
10. |
Podatkovni bit 3 (DB3) |
Brez povezave (NC) |
11. |
Podatkovni bit 4 (DB4) |
PB0 |
12. |
Podatkovni bit 5 (DB5) |
PB1 |
13. |
Podatkovni bit 6 (DB6) |
PC13 |
14. |
Podatkovni bit 7 (DB7) |
PC14 |
15. |
LED pozitivna |
5V |
16. |
LED negativno |
Tla (G) |
Celotna nastavitev bo videti spodaj:
Programiranje STM32F103C8 za povezavo modulov GPS
Celoten program za iskanje lokacije z uporabo modula GPS s pomočjo STM32 je podan na koncu tega projekta. STM32F103C8 je mogoče programirati z uporabo Arduino IDE, tako da ga preprosto povežete z računalnikom prek vrat USB. Med nalaganjem kode odstranite nožici TX in RX in jo po nalaganju priključite.
Za povezavo GPS s STM32 moramo najprej prenesti knjižnico s povezave GitHub TinyGPSPlus. Po prenosu knjižnice jo lahko vključite v IDE Arduino do Sketch -> Include Library -> Add.zip Library. Ista knjižnica se lahko uporablja za povezavo GPS z Arduino.
Najprej torej vključite potrebne knjižnične datoteke in določite nožice za LCD 16x2:
#include
Nato ustvarite objekt z imenom gps razreda TinyGPSPlus.
TinyGPSPlus gps;
Nato pri nastavitvi praznine začnite serijsko komunikacijo z modulom GPS s pomočjo Serial1.begin (9600). Serial1 se uporablja kot vrata Serial 1 (Pins-PA9, PA10) STM32F103C8.
Serial1.begin (9600);
Nato nekaj časa prikažite pozdravno sporočilo.
lcd.begin (16,2); lcd.print ("Circuit Digest"); lcd.setCursor (0,1); lcd.print ("STM32 z GPS"); zamuda (4000); lcd.clear ();
Nato v void loop () od GPS-a prejmemo zemljepisno širino in dolžino ter preverimo, ali so prejeti podatki veljavni ali ne, in prikažemo informacije na serijskem monitorju in LCD-ju.
Preverjanje, ali so podatki o lokaciji veljavni ali ne
loc_valid = gps.location.isValid ();
Prejema podatke o zemljepisni širini
lat_val = gps.location.lat ();
Prejema podatke o zemljepisni dolžini
lng_val = gps.location.lng ();
Če prejmete neveljavne podatke, se na serijskem monitorju prikaže "*****", na LCD-prikazovalniku pa "čakanje".
if (! loc_valid) { lcd.print ("Čakanje"); Serial.print ("Latitude:"); Serial.println ("*****"); Serial.print ("Dolžina:"); Serial.println ("*****"); zamuda (4000); lcd.clear (); }
Če prejmete veljavne podatke, se zemljepisna širina in dolžina prikažeta na serijskem monitorju in na LCD zaslonu.
lcd.clear (); Serial.println ("BRANJE GPS-a:"); Serial.print ("Latitude:"); Serial.println (lat_val, 6); lcd.setCursor (0,0); lcd.print ("LAT:"); lcd.print (lat_val, 6); Serial.print ("Dolžina:"); Serial.println (lng_val, 6); lcd.setCursor (0,1); lcd.print ("LONG:"); lcd.print (lng_val, 6); zamuda (4000);
Naslednja funkcija zagotavlja zakasnitev branja podatkov. Ves čas išče podatke o serijskih vratih.
statična praznina GPSDelay (nepodpisani dolgi ms) { nepodpisani dolgi zagon = milis (); do { while (Serial1.available ()) gps.encode (Serial1.read ()); } while (milis () - začetek <ms); }
Iskanje zemljepisne širine in dolžine z GPS in STM32
Po izdelavi nastavitve in nalaganju kode postavite modul GPS na odprto območje za hiter sprejem signala. Včasih traja nekaj minut, da sprejmete signal, zato počakajte nekaj časa. Ko začne ta prejemati signal, bo LED modul začel utripati v modulu GPS, na LCD zaslonu pa bodo prikazane koordinate lokacije.
Zemljepisno širino in dolžino lokacije lahko preverite z Google Zemljevidi. Pojdite na Google maps z vklopljenim GPS-om in kliknite modro piko. Prikazal bo naslov z zemljepisno širino in dolžino, kot je prikazano na spodnji sliki
Celotno kodo in predstavitev video je podan v nadaljevanju.