- Nepieciešamās sastāvdaļas
- GPS modulis
- Piespraude no STM32F103C8
- Shēmas shēma un savienojumi
- STM32F103C8 programmēšana GPS moduļu saskarnei
- Platuma un garuma atrašana, izmantojot GPS un STM32
GPS apzīmē globālo pozicionēšanas sistēmu un tiek izmantots, lai noteiktu jebkuras vietas uz Zemes platumu un garumu ar precīzu UTC laiku (universālā laika koordinēts). Šī ierīce saņem satelīta koordinātas par katru sekundi, norādot laiku un datumu. GPS piedāvā lielisku precizitāti, kā arī sniedz citus datus, izņemot pozīcijas koordinātas.
Mēs visi zinām, ka GPS ir ļoti noderīga ierīce un ļoti bieži tiek izmantota mobilajos tālruņos un citās portatīvajās ierīcēs, lai izsekotu atrašanās vietu. Tam ir ļoti plašs lietojumu klāsts visās jomās, sākot no taksometra izsaukšanas mājās, lai izsekotu lidmašīnu augstumu. Šeit ir daži noderīgi ar GPS saistīti projekti, kurus mēs izveidojām iepriekš:
- Transportlīdzekļu izsekošanas sistēma
- GPS pulkstenis
- Negadījumu atklāšanas trauksmes sistēma
- Raspberry Pi GPS moduļa saskarnes apmācība
- Saskarsmes GPS modulis ar PIC mikrokontrolleru
Šajā apmācībā mēs mijiedarbosimies ar GPS moduli ar STM32F103C8 mikrokontrolleru, lai atrastu atrašanās vietas koordinātas un parādītu tās 16x2 LCD displejā.
Nepieciešamās sastāvdaļas
- STM32F103C8 mikrokontrolleris
- GPS modulis
- 16x2 LCD displejs
- Maizes dēlis
- Vadu savienošana
GPS modulis
Tas ir GY-NEO6MV2 XM37-1612 GPS modulis. Šim GPS modulim ir četru kontaktu + 5V, GND, TXD un RXD. Tas sazinās, izmantojot sērijas tapas, un to var viegli sasaistīt ar STM32F103C8 sērijas portu.
GPS modulis nosūta datus NMEA formātā (skatiet ekrānuzņēmumu zemāk). NMEA formāts sastāv no vairākiem teikumiem, kuros mums vajadzīgs tikai viens teikums. Šis teikums sākas ar $ GPGGA un satur koordinātas, laiku un citu noderīgu informāciju. Šis GPGGA attiecas uz globālās pozicionēšanas sistēmas labošanas datiem. Uzziniet vairāk par GPS datu un to virkņu lasīšanu šeit.
Zemāk ir viens $ GPGGA virknes paraugs kopā ar aprakstu:
GPGGA, 104534.000,7791.0381, N, 06727.4434, E, 1,08,0,9,510,4, M, 43,9, M,, * 47
$ GPGGA, HHMMSS.SSS, platums, N, garums, E, FQ, NOS, HDP, augstums, M, augstums, M,, kontrolsummas dati
Bet šajā apmācībā mēs izmantojam TinyGPSPlus GPS bibliotēku, kas iegūst visu nepieciešamo informāciju no NMEA teikuma, un mums vienkārši jāuzraksta vienkārša koda rindiņa, lai iegūtu platumu un garumu, ko mēs redzēsim vēlāk apmācībā.
Piespraude no STM32F103C8
STM32F103C8 (BLUE PILL) USART sērijas sakaru porti ir parādīti zemāk esošajā piespraudes attēlā. Tie ir zilā krāsā (PA9-TX1, PA10-RX1, PA2-TX2, PA3-RX2, PB10-TX3, PB11-RX3). Tam ir trīs šādi saziņas kanāli.
Shēmas shēma un savienojumi
Ķēdes savienojumi starp GPS moduli un STM32F103C8
GPS modulis |
STM32F103C8 |
RXD |
PA9 (TX1) |
TXD |
PA10 (RX1) |
+ 5V |
+ 5V |
GND |
GND |
Savienojumi starp 16x2 LCD un STM32F103C8
LCD tapa Nr |
LCD tapas nosaukums |
STM32 tapas nosaukums |
1 |
Zeme (Gnd) |
Zeme (G) |
2 |
VCC |
5V |
3 |
VEE |
Piespraude no potenciometra centra |
4 |
Reģistrēties Atlasīt (RS) |
PB11 |
5 |
Lasīt / rakstīt (RW) |
Zeme (G) |
6 |
Iespējot (EN) |
PB10 |
7 |
Datu bits 0 (DB0) |
Nav savienojuma (NC) |
8 |
1. datu bits (DB1) |
Nav savienojuma (NC) |
9 |
2. datu bits (DB2) |
Nav savienojuma (NC) |
10 |
3. datu bits (DB3) |
Nav savienojuma (NC) |
11 |
4. datu bits (DB4) |
PB0 |
12 |
5. datu bits (DB5) |
PB1 |
13 |
6. datu bits (DB6) |
PC13 |
14 |
7. datu bits (DB7) |
PC14 |
15 |
LED pozitīvs |
5V |
16 |
LED negatīvs |
Zeme (G) |
Visa iestatīšana izskatīsies šādi:
STM32F103C8 programmēšana GPS moduļu saskarnei
Pilnīga programma atrašanās vietas atrašanai, izmantojot GPS moduli, izmantojot STM32, ir dota šī projekta beigās. STM32F103C8 var ieprogrammēt, izmantojot Arduino IDE, vienkārši savienojot to ar datoru, izmantojot USB portu. Augšupielādējot kodu, noteikti noņemiet tapas TX un RX un pēc augšupielādes pievienojiet to.
Lai interfeisu GPS savienotu ar STM32, vispirms mums ir jālejupielādē bibliotēka no GitHub saites TinyGPSPlus. Pēc bibliotēkas lejupielādes to var iekļaut Arduino IDE, izmantojot Sketch -> Include Library -> Add.zip Library. To pašu bibliotēku var izmantot GPS saskarnei ar Arduino.
Tāpēc vispirms iekļaujiet nepieciešamos bibliotēkas failus un definējiet tapas 16x2 LCD ekrānam:
# iekļaut
Tad izveidojiet objektu nosaukumu GPS no klases TinyGPSPlus.
TinyGPSPlus GPS;
Pēc tam tukšajā iestatījumā sāciet sērijveida saziņu ar GPS moduli, izmantojot Serial1.begin (9600). Serial1 tiek izmantots kā STM32F103C8 1. kārtas ports (Pins-PA9, PA10).
Serial1.begin (9600);
Pēc tam kādu laiku parādiet sveiciena ziņojumu.
lcd.begin (16,2); lcd.print ("Circuit Digest"); lcd.setCursor (0,1); lcd.print ("STM32 ar GPS"); kavēšanās (4000); lcd.clear ();
Tālāk tukšuma cilpā () mēs saņemam ģeogrāfisko platumu un garumu no GPS un pārbaudām, vai saņemtie dati ir derīgi, un parādām informāciju sērijveida monitorā un LCD.
Pārbauda, vai pieejamie atrašanās vietas dati ir derīgi
loc_valid = gps.location.isValid ();
Saņem platuma datus
lat_val = gps.location.lat ();
Saņem garuma datus
lng_val = gps.location.lng ();
Ja tiek saņemti nederīgi dati, sērijveida monitorā tiek parādīts “*****” un LCD ekrānā tiek parādīts “gaida”.
if (! loc_valid) { lcd.print ("Gaida"); Serial.print ("Platums:"); Serial.println ("*****"); Serial.print ("Garums:"); Serial.println ("*****"); kavēšanās (4000); lcd.clear (); }
Ja tiek saņemti derīgi dati, platums un garums tiek parādīti sērijveida monitorā, kā arī LCD displejā.
lcd.clear (); Serial.println ("GPS LASĪŠANA:"); Serial.print ("Platums:"); Serial.println (lat_val, 6); lcd.setCursor (0,0); lcd.print ("LAT:"); lcd.print (lat_val, 6); Serial.print ("Garums:"); Serial.println (lng_val, 6); lcd.setCursor (0,1); lcd.print ("LONG:"); lcd.print (lng_val, 6); kavēšanās (4000);
Sekojošā funkcija nodrošina datu lasīšanas aizkavi. Tā turpina meklēt datus seriālajā ostā.
static void GPSDelay (neparakstīts garš ms) { neparakstīts garais sākums = milis (); do { while (Serial1.available ()) gps.encode (Serial1.read ()); } while (milis () - sākums <ms); }
Platuma un garuma atrašana, izmantojot GPS un STM32
Pēc iestatīšanas izveidošanas un koda augšupielādes noteikti ievietojiet GPS moduli atklātā vietā, lai ātri saņemtu signālu. Dažreiz signāla saņemšana prasa dažas minūtes, tāpēc pagaidiet kādu laiku. LED sāks mirgot GPS modulī, kad tas sāk saņemt signālu, un LCD displejā tiks parādītas atrašanās vietas koordinātas.
Izmantojot Google Maps, varat pārbaudīt atrašanās vietas platumu un garumu. Vienkārši dodieties uz Google Maps ar ieslēgtu GPS un noklikšķiniet uz zilā punkta. Tajā tiks parādīta adrese ar platumu un garumu, kā parādīts attēlā zemāk
Pilnīga kodu un prezentācijas video ir norādīts zemāk.