- Komponente potrebne
- GPS modul
- Prikvačite iz STM32F103C8
- Kružni dijagram i veze
- Programiranje STM32F103C8 za povezivanje GPS modula
- Pronalaženje zemljopisne širine i dužine pomoću GPS-a i STM32
GPS je skraćenica od Global Positioning System i koristi se za otkrivanje zemljopisne širine i dužine bilo kojeg mjesta na Zemlji, s točnim UTC vremenom (koordinirano univerzalnim vremenom). Ovaj uređaj prima koordinate sa satelita svake sekunde, s vremenom i datumom. GPS nudi veliku točnost, a osim koordinata položaja pruža i druge podatke.
Svi znamo da je GPS vrlo koristan uređaj i vrlo često korišten u mobilnim telefonima i drugim prijenosnim uređajima za praćenje lokacije. Ima vrlo širok spektar primjena u svim poljima, od pozivanja taksija kod kuće do praćenja visine zrakoplova. Evo nekoliko korisnih projekata povezanih s GPS-om koje smo prethodno izradili:
- Sustav za praćenje vozila
- GPS sat
- Sustav upozorenja za otkrivanje nezgoda
- Vodič za povezivanje modula Raspberry Pi GPS
- Povezivanje GPS modula s PIC mikrokontrolerom
Ovdje ćemo u ovom uputstvu povezati GPS modul s mikrokontrolerom STM32F103C8 kako bismo pronašli koordinate lokacije i prikazali ih na LCD zaslonu 16x2.
Komponente potrebne
- STM32F103C8 Mikrokontroler
- GPS modul
- LCD zaslon od 16x2
- Breadboard
- Spajanje žica
GPS modul
To je GPS modul GY-NEO6MV2 XM37-1612. Ovaj GPS modul ima četiri pina + 5V, GND, TXD i RXD. Komunicira pomoću serijskih pinova i može se lako povezati sa serijskim priključkom STM32F103C8.

GPS modul šalje podatke u NMEA formatu (pogledajte snimku zaslona u nastavku). NMEA format sastoji se od nekoliko rečenica, u kojima nam treba samo jedna rečenica. Ova rečenica počinje od $ GPGGA i sadrži koordinate, vrijeme i ostale korisne informacije. Ovaj GPGGA odnosi se na podatke o popravcima sustava globalnog pozicioniranja. Ovdje saznajte više o čitanju GPS podataka i njegovih nizova.
Ispod je jedan uzorak $ GPGGA String, zajedno s opisom:
GPGGA, 104534.000,7791.0381, N, 06727.4434, E, 1,08,0.9,510.4, M, 43.9, M,, * 47
$ GPGGA, HHMMSS.SSS, zemljopisna širina, N, dužina, E, FQ, NOS, HDP, nadmorska visina, M, visina, M,, podaci o kontrolnoj sumi
Ali ovdje u ovom vodiču koristimo TinyGPSPlus GPS knjižnicu koja izvlači sve potrebne informacije iz NMEA rečenice, a mi samo trebamo napisati jednostavan redak koda da bismo dobili geografsku širinu i dužinu, što ćemo vidjeti kasnije u vodiču.
Prikvačite iz STM32F103C8
STM32F103C8 (PLAVI PIL) USART serijski komunikacijski priključci prikazani su na donjoj pin out slici. To su plave boje (PA9-TX1, PA10-RX1, PA2-TX2, PA3-RX2, PB10-TX3, PB11-RX3). Ima tri takva komunikacijska kanala.

Kružni dijagram i veze

Kružne veze između GPS modula i STM32F103C8
|
GPS modul |
STM32F103C8 |
|
RXD |
PA9 (TX1) |
|
TXD |
PA10 (RX1) |
|
+ 5V |
+ 5V |
|
GND |
GND |
Veze između LCD-a 16x2 i STM32F103C8
|
LCD pin br |
Naziv LCD ekrana |
Naziv pin-a STM32 |
|
1 |
Prizemlje (Gnd) |
Uzemljenje (G) |
|
2 |
VCC |
5V |
|
3 |
VEE |
Prikvačivač iz središta potenciometra |
|
4 |
Odaberite registar (RS) |
PB11 |
|
5 |
Čitanje / pisanje (RW) |
Uzemljenje (G) |
|
6 |
Omogući (EN) |
PB10 |
|
7 |
Bit podataka 0 (DB0) |
Nema veze (NC) |
|
8 |
Bit podataka 1 (DB1) |
Nema veze (NC) |
|
9 |
Bit podataka 2 (DB2) |
Nema veze (NC) |
|
10 |
Bit podataka 3 (DB3) |
Nema veze (NC) |
|
11 |
Bit podataka 4 (DB4) |
PB0 |
|
12 |
Bit podataka 5 (DB5) |
PB1 |
|
13 |
Bit podataka 6 (DB6) |
PC13 |
|
14 |
Bit podataka 7 (DB7) |
PC14 |
|
15 |
LED pozitivan |
5V |
|
16 |
LED negativan |
Uzemljenje (G) |
Cjelokupna postavka izgledat će kao u nastavku:

Programiranje STM32F103C8 za povezivanje GPS modula
Kompletni program za pronalaženje lokacije pomoću GPS modula pomoću STM32 dan je na kraju ovog projekta. STM32F103C8 može se programirati pomoću Arduino IDE-a jednostavnim spajanjem na računalo putem USB priključka. Obavezno uklonite iglice TX i RX tijekom prijenosa koda i povežite ga nakon prijenosa.
Da bismo povezali GPS sa STM32, prvo moramo preuzeti knjižnicu s GitHub veze TinyGPSPlus. Nakon preuzimanja knjižnice, ona se može uključiti u Arduino IDE do programa Skica -> Uključi biblioteku -> Dodaj.zip biblioteku. Ista biblioteka može se koristiti za povezivanje GPS-a s Arduinom.
Dakle, prvo uključite potrebne datoteke knjižnice i definirajte pribadače za LCD 16x2:
#include
Zatim stvorite objekt nazvan gps klase TinyGPSPlus.
TinyGPSPlus gps;
Sljedeće u postavljanju praznine započnite serijsku komunikaciju s GPS modulom pomoću Serial1.begin (9600). Serial1 koristi se kao ulaz Serial 1 (pinovi-PA9, PA10) STM32F103C8.
Serial1.begin (9600);
Zatim prikažite poruku dobrodošlice neko vrijeme.
lcd.početak (16,2); lcd.print ("Circuit Digest"); lcd.setCursor (0,1); lcd.print ("STM32 s GPS-om"); kašnjenje (4000); lcd.clear ();
Sljedeće u petlji praznine () primamo zemljopisnu širinu i dužinu s GPS-a i provjeravamo jesu li primljeni podaci valjani ili ne i prikazujemo informacije na serijskom monitoru i LCD-u.
Provjera jesu li dostupni podaci o lokaciji valjani ili ne
loc_valid = gps.location.isValid ();
Prima podatke o zemljopisnoj širini
lat_val = gps.location.lat ();
Prima podatke o zemljopisnoj dužini
lng_val = gps.location.lng ();
Ako se dobiju nevaljani podaci, na serijskom monitoru prikazuje se "*****", a na LCD-u prikazuje se "čeka".
if (! loc_valid) { lcd.print ("Čeka se"); Serial.print ("Latitude:"); Serial.println ("*****"); Serial.print ("Zemljopisna dužina:"); Serial.println ("*****"); kašnjenje (4000); lcd.clear (); }
Ako se dobiju valjani podaci, zemljopisna širina i dužina prikazuju se na serijskom monitoru, kao i na LCD zaslonu.
lcd.clear (); Serial.println ("GPS ČITANJE:"); Serial.print ("Latitude:"); Serial.println (lat_val, 6); lcd.setCursor (0,0); lcd.print ("LAT:"); lcd.print (lat_val, 6); Serial.print ("Zemljopisna dužina:"); Serial.println (lng_val, 6); lcd.setCursor (0,1); lcd.print ("LONG:"); lcd.print (lng_val, 6); kašnjenje (4000);
Sljedeća funkcija omogućuje kašnjenje čitanja podataka. Stalno traži podatke o serijskom priključku.
statička praznina GPSDelay (nepotpisano dugo ms) { nepotpisano dugo pokretanje = milis (); do { while (Serial1.available ()) gps.encode (Serial1.read ()); } while (milis () - početak <ms); }
Pronalaženje zemljopisne širine i dužine pomoću GPS-a i STM32
Nakon izgradnje postavki i prijenosa koda, pobrinite se da GPS modul postavite na otvoreno područje za brzi prijem signala. Ponekad je potrebno nekoliko minuta da primi signal pa pričekajte neko vrijeme. LED će početi treptati u GPS modulu kad počne primati signal, a koordinate mjesta bit će prikazane na LCD zaslonu.

Geografsku širinu i dužinu lokacije možete provjeriti pomoću Google mapa. Samo idite na Google karte s UKLJUČENIM GPS-om i kliknite plavu točku. Prikazat će adresu sa zemljopisnom širinom i dužinom kao što je prikazano na donjoj slici

Kompletan kod i demonstracije videa je naveden u nastavku.
