- Kinakailangan ang Mga Bahagi
- Modyul ng GPS
- I-pin sa labas ng STM32F103C8
- Circuit Diagram at Mga Koneksyon
- Programming STM32F103C8 para sa GPS Module Interfacing
- Paghanap ng Latitude at Longitud gamit ang GPS at STM32
Ang GPS ay kumakatawan sa Global Positioning System at ginagamit upang makita ang Latitude at Longitud ng anumang lokasyon sa Earth, na may eksaktong oras ng UTC (Universal Time Coordinated). Tumatanggap ang aparatong ito ng mga coordinate mula sa satellite para sa bawat segundo, na may oras at petsa. Nag-aalok ang GPS ng mahusay na kawastuhan at nagbibigay din ng iba pang data bukod sa mga coordinate ng posisyon.
Alam nating lahat na ang GPS ay isang napaka kapaki-pakinabang na aparato at karaniwang ginagamit sa mga mobile phone at iba pang mga portable device para sa pagsubaybay sa lokasyon. Mayroon itong napakalawak na hanay ng mga application sa bawat larangan mula sa pagtawag ng taxi sa iyong bahay upang subaybayan ang taas ng mga eroplano. Narito ang ilang mga kapaki-pakinabang na proyekto na nauugnay sa GPS, na binuo namin dati:
- Sistema ng Pagsubaybay sa Sasakyan
- Orasan ng GPS
- Sistema ng Alerto sa Pagtuklas ng aksidente
- Tutorial sa Pag-interfacing ng Module ng Raspberry Pi GPS
- Pag-interface ng Module ng GPS sa PIC Microcontroller
Dito sa tutorial na ito, gagamitin namin ang Interface ng isang module ng GPS na may STM32F103C8 microcontroller upang hanapin ang mga lokasyon sa lokasyon at ipakita ang mga ito sa 16x2 LCD display.
Kinakailangan ang Mga Bahagi
- STM32F103C8 Microcontroller
- Modyul ng GPS
- 16x2 LCD display
- Breadboard
- Mga Koneksyon sa Mga Wires
Modyul ng GPS
Ito ay isang GY-NEO6MV2 XM37-1612 GPS Module. Ang module ng GPS na ito ay mayroong apat na pin + 5V, GND, TXD at RXD. Nakikipag-usap ito gamit ang mga Serial pin at maaaring madaling ma-interfaced sa Serial port ng STM32F103C8.
Ipinapadala ng module ng GPS ang data sa format na NMEA (tingnan ang screenshot sa ibaba). Ang format na NMEA ay binubuo ng maraming mga pangungusap, kung saan kailangan lang namin ng isang pangungusap. Ang pangungusap na ito ay nagsisimula sa $ GPGGA at naglalaman ng mga coordinate, oras at iba pang kapaki-pakinabang na impormasyon. Ang GPGGA na ito ay tinukoy sa Global Positioning System Fix Data. Malaman ang higit pa tungkol sa pagbabasa ng data ng GPS at mga string dito.
Nasa ibaba ang isang sample na $ GPGGA String, kasama ang paglalarawan nito:
$ GPGGA, 104534.000,7791.0381, N, 06727.4434, E, 1,08,0.9,510.4, M, 43.9, M,, * 47
$ GPGGA, HHMMSS.SSS, latitude, N, longitude, E, FQ, NOS, HDP, altitude, M, taas, M,, data ng checkum
Ngunit dito sa tutorial na ito, gumagamit kami ng isang TinyGPSPlus GPS library na kumukuha ng lahat ng kinakailangang impormasyon mula sa pangungusap na NMEA, at kailangan lamang naming magsulat ng isang simpleng linya ng code upang makuha ang latitude at longitude, na makikita natin sa kalaunan sa tutorial.
I-pin sa labas ng STM32F103C8
Ang STM32F103C8 (BLUE PILL) USART serial port ng komunikasyon ay ipinapakita sa imahe ng pin out sa ibaba. Ang mga ito ay may asul na kulay na pagkakaroon (PA9-TX1, PA10- RX1, PA2-TX2, PA3- RX2, PB10-TX3, PB11- RX3). Mayroon itong tatlong ganoong mga channel sa komunikasyon.
Circuit Diagram at Mga Koneksyon
Mga Koneksyon sa Circuit sa pagitan ng module ng GPS at STM32F103C8
Modyul ng GPS |
STM32F103C8 |
RXD |
PA9 (TX1) |
TXD |
PA10 (RX1) |
+ 5V |
+ 5V |
GND |
GND |
Mga koneksyon sa pagitan ng 16x2 LCD & STM32F103C8
LCD Pin Hindi |
Pangalan ng LCD Pin |
Pangalan ng STM32 Pin |
1 |
Lupa (Gnd) |
Lupa (G) |
2 |
VCC |
5V |
3 |
VEE |
Pin mula sa Center of Potentiometer |
4 |
Pagpili ng Rehistro (RS) |
PB11 |
5 |
Basahin / Isulat (RW) |
Lupa (G) |
6 |
Paganahin (EN) |
PB10 |
7 |
Data Bit 0 (DB0) |
Walang Koneksyon (NC) |
8 |
Data Bit 1 (DB1) |
Walang Koneksyon (NC) |
9 |
Data Bit 2 (DB2) |
Walang Koneksyon (NC) |
10 |
Data Bit 3 (DB3) |
Walang Koneksyon (NC) |
11 |
Data Bit 4 (DB4) |
PB0 |
12 |
Data Bit 5 (DB5) |
PB1 |
13 |
Data Bit 6 (DB6) |
PC13 |
14 |
Data Bit 7 (DB7) |
PC14 |
15 |
Positive na LED |
5V |
16 |
Negatibo sa LED |
Lupa (G) |
Ang buong pag-setup ay magiging hitsura sa ibaba:
Programming STM32F103C8 para sa GPS Module Interfacing
Ang kumpletong programa para sa paghahanap ng lokasyon gamit ang module ng GPS gamit ang STM32 ay ibinibigay sa pagtatapos ng proyektong ito. Ang STM32F103C8 ay maaaring mai-program gamit ang Arduino IDE sa pamamagitan lamang ng pagkonekta nito sa PC sa pamamagitan ng USB port. Tiyaking alisin ang mga pin na TX at RX habang ina-upload ang code at ikonekta ito pagkatapos mag-upload.
Upang mai-interface ang GPS sa STM32, kailangan muna naming mag-download ng isang silid-aklatan mula sa link ng GitHub na TinyGPSPlus. Pagkatapos i-download ang library, maaari itong isama sa Arduino IDE sa pamamagitan ng Sketch -> Isama ang Library -> Magdagdag ng.zip Library. Ang parehong silid-aklatan ay maaaring magamit upang mai-interface ang GPS sa Arduino.
Kaya isama muna ang mga kinakailangang file ng library at tukuyin ang mga pin para sa 16x2 LCD:
# isama
Pagkatapos ay lumikha ng isang bagay na pinangalanang gps ng klase ng TinyGPSPlus.
Mga TinyGPSPlus gps;
Susunod sa walang bisa na pag-setup , simulan ang serial na komunikasyon sa module ng GPS gamit ang Serial1.begin (9600). Ginagamit ang Serial1 bilang Serial 1 port (Pins-PA9, PA10) ng STM32F103C8.
Serial1.begin (9600);
Pagkatapos ay ipakita ang maligayang mensahe sa ilang oras.
lcd.begin (16,2); lcd.print ("Circuit Digest"); lcd.setCursor (0,1); lcd.print ("STM32 na may GPS"); pagkaantala (4000); lcd.clear ();
Susunod sa void loop (), nakakatanggap kami ng latitude at longitude mula sa GPS at suriin kung ang natanggap na data ay wasto o hindi at ipakita ang impormasyon sa serial monitor at LCD.
Sinusuri kung ang magagamit na data ng lokasyon ay wasto o hindi
loc_valid = gps.location.isValid ();
Natatanggap ang data ng latitude
lat_val = gps.location.lat ();
Natatanggap ang data ng longitude
lng_val = gps.location.lng ();
Kung ang hindi wastong data ay natanggap ipinapakita nito ang "*****" sa serial monitor at ipinapakita ang "naghihintay" sa LCD.
kung (! loc_valid) { lcd.print ("Naghihintay"); Serial.print ("Latitude:"); Serial.println ("*****"); Serial.print ("Longitude:"); Serial.println ("*****"); pagkaantala (4000); lcd.clear (); }
Kung natanggap ang wastong data ang latitude at longitude ay ipinapakita sa serial monitor pati na rin sa LCD display.
lcd.clear (); Serial.println ("READING ng GPS:"); 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 ("MAHABA:"); lcd.print (lng_val, 6); pagkaantala (4000);
Ang sumusunod na pag-andar ay nagbibigay ng pagkaantala upang mabasa ang data. Patuloy itong naghahanap ng data sa serial port.
static void GPSDelay (unsigned long ms) { unsigned long start = millis (); gawin { habang (Serial1.available ()) gps.encode (Serial1.read ()); } habang (millis () - simulan ang <ms); }
Paghanap ng Latitude at Longitud gamit ang GPS at STM32
Matapos maitaguyod ang pag-set up at pag-upload ng code, tiyaking ilagay ang module ng GPS sa bukas na lugar upang matanggap ang signal nang mabilis. Minsan tumatagal ng ilang minuto upang makatanggap ng signal kaya maghintay para sa ilang oras. Ang LED ay magsisimulang kumurap sa module ng GPS kapag nagsimula itong makatanggap ng signal at ang mga lokasyon sa koordinasyon ay ipapakita sa LCD display.
Maaari mong i-verify ang latitude at longitude ng lokasyon sa pamamagitan ng paggamit ng Google map. Pumunta lamang sa mga mapa ng Google na nakabukas ang GPS at mag-click sa asul na tuldok. Ipapakita nito ang address na may latitude at longitude tulad ng ipinakita sa larawan sa ibaba
Ang kumpletong video ng video ng demonstrasyon ay ibinibigay sa ibaba.