- Kinakailangan ang Mga Bahagi:
- Module ng GPS:
- Pagkuha ng Data ng Lokasyon mula sa GPS:
- Pag-interface ng GPS sa ESP12E NodeMCU:
- Paliwanag sa code:
- HTML code para sa webpage:
Ang GPS ay kumakatawan sa Global Positioning System at ginagamit ito upang malaman ang lokasyon, altitude, bilis, petsa at oras sa UTC. Sa proyektong ito pupunta kami sa interface ng isang module ng GPS sa NodeMCU. Ang isang simpleng lokal na web server ay nilikha gamit ang NodeMCU at ang mga detalye ng lokasyon ay na-update sa webpage ng server na iyon. Ang espesyalidad ng proyektong ito na batay sa IoT ay maaari nating suriin ang lokasyon sa Goolge Maps sa pamamagitan ng pag-click sa link na ibinigay sa web page. Maaari mo ring buksan ang webpage na ito at suriin ang lokasyon mula sa kahit saan sa pamamagitan ng pag-aktibo ng pagpapasa ng port sa iyong modem / router.
Kinakailangan ang Mga Bahagi:
- NodeMCU ESP12
- Module ng GPS (uBlox Neo 6M GPS)
Module ng GPS:
Ang Ublox Neo 6M ay isang serial GPS module na nagbibigay ng mga detalye ng lokasyon sa pamamagitan ng serial na komunikasyon. Mayroon itong apat na mga pin.
pin |
Paglalarawan |
Vcc |
2.7 - 5V power supply |
Gnd |
Lupa |
TXD |
Ipadala ang Data |
RXD |
Makatanggap ng Data |
Ang module ng Ublox neo 6M GPS ay tugma ang TTL at ang mga pagtutukoy nito ay ibinibigay sa ibaba.
Oras ng pagkuha | Cool na pagsisimula: 27s, Mainit na pagsisimula: 1s |
Komunikasyon sa komunikasyon | NMEA |
Serial na komunikasyon | 9600bps, 8 data bit, 1 stop bit, walang pagkakapantay-pantay at walang kontrol sa daloy |
Kasalukuyang operating | 45mA |
Pagkuha ng Data ng Lokasyon mula sa GPS:
Ang Module ay magpapadala ng data sa maraming mga string sa 9600 Baud Rate. Kung gagamit kami ng isang UART terminal na may 9600 Baud rate, makikita namin ang data na natanggap ng GPS.
Nagpadala ang module ng GPS ng data ng posisyon ng pagsubaybay sa Real time sa format na NMEA (tingnan ang screenshot sa itaas). Ang format na NMEA ay binubuo ng maraming mga pangungusap, kung saan ang apat na mahahalagang pangungusap ay ibinibigay sa ibaba. Higit pang detalye tungkol sa pangungusap NMEA at ang format ng data nito ay matatagpuan dito.
- $ GPGGA: Ang System ng Global Positioning System ayusin ang Data
- $ GPGSV: Mga satellite ng GPS na nakikita
- $ GPGSA: GPS DOP at mga aktibong satellite
- $ GPRMC: Inirekumenda na minimum na tukoy na data ng GPS / Transit
Matuto nang higit pa tungkol sa data ng GPS at mga string ng NMEA dito.
Ito ang data na natanggap ng GPS kapag nakakonekta sa 9600 baud rate.
$ GPRMC, 141848.00, A, 2237.63306, N, 08820.86316, E, 0.553,, 100418,,, A * 73 $ GPVTG,, T,, M, 0.553, N, 1.024, K, A * 27 $ GPGGA, 141848.00, 2237.63306, N, 08820.86316, E, 1,03,2.56,1.9, M, -54.2, M,, * 74 $ GPGSA, A, 2,06,02,05,,,,,,,,,,75, 2.56,1.00 * 02 $ GPGSV, 1,1,04,02,59,316,30,05,43,188,25,06,44,022,23,25,03,324, * 76 $ GPGLL, 2237.63306, N, 08820.86316, E, 141848.00, A, A * 65
Kapag gumagamit kami ng module ng GPS para sa pagsubaybay sa anumang lokasyon, kailangan lang namin ng mga coordinate at mahahanap namin ito sa $ GPGGA string. Ang $ GPGGA (Global Positioning System Fix Data) lamang ang string na ginagamit sa mga programa at ang iba pang mga string ay hindi pinapansin.
$ GPGGA, 141848.00,2237.63306, N, 08820.86316, E, 1,03,2.56,1.9, M, -54.2, M,, * 74
Ano ang kahulugan ng linyang iyon?
Ang kahulugan ng linyang iyon ay: -
1. Ang string ay palaging nagsisimula sa isang "$" sign
2. Ang GPGGA ay kumakatawan sa Global Positioning System Fix Data
3. "," Ipinapahiwatig ng Comma ang paghihiwalay sa pagitan ng dalawang halaga
4. 141848.00: GMT oras bilang 14 (hr): 18 (min): 48 (sec): 00 (ms)
5. 2237.63306, N: Latitude 22 (degree) 37 (minuto) 63306 (sec) North
6. 08820.86316, E: Longitude 088 (degree) 20 (minuto) 86316 (sec) Silangan
7. 1: Ayusin ang Dami 0 = hindi wastong data, 1 = wastong data, 2 = pag-aayos ng DGPS
8. 03: Bilang ng mga satellite na kasalukuyang tiningnan.
9. 1.0: HDOP
10. 2.56, M: Altitude (Taas sa taas ng dagat sa metro)
11. 1.9, M: Taas ng Geoids
12. * 74: checkum
Kaya kailangan namin ng Blg. 5 at Blg. 6 upang mangalap ng impormasyon tungkol sa lokasyon ng module o, kung saan ito matatagpuan. Sa proyektong ito, gumamit kami ng isang GPS Library na nagbibigay ng ilang mga pagpapaandar upang makuha ang latitude at longitude kaya't hindi namin kailangang mag-alala tungkol doon.
Mayroon kaming dating interface na GPS sa iba pang mga microcontroller:
· Paano Gumamit ng GPS gamit ang Arduino
· Tutorial sa Pag-interface ng Raspberry Pi GPS Module
· Pag-interface ng Module ng GPS na may PIC Microcontroller
· Subaybayan ang Isang Sasakyan sa Google Maps gamit ang Arduino, ESP8266 at GPS
Pag-interface ng GPS sa ESP12E NodeMCU:
Ang NodeMCU ay board ng pag-unlad na nakabatay sa ESP8266. Nagtatampok ito ng ESP-12E bilang core ng pagpoproseso nito. Ito ay isang 32bit MCU. Mayroon itong 14 GPIO pin, solong channel na 10 bit integrated ADC. Sinusuportahan nito ang komunikasyon sa UART, I2C, SPI. Ito ay katugma sa 3.3V, hindi nito mahawakan ang 5V. Kung bago ka sa NodeMCU pagkatapos basahin ang aming Pagsisimula sa NodeMCU ESP-12.
Ang mga koneksyon sa pagitan ng NodeMCU at module ng GPS ay tulad ng ipinakita sa ibaba.
NodeMCU |
Module ng GPS |
3V3 |
Vcc |
GND |
GND |
D1 (GPIO5) |
RX |
D2 (GPIO4) |
TX |
Nasa ibaba ang circuit Diagram ng pagkonekta sa GPS sa NodeMCU:
Ang module ng GPS ay tumatagal ng ilang oras upang makuha ang mga detalye ng lokasyon sa sandaling ito ay pinapagana. Sinimulan ng NodeMCU ang webserver at naghihintay para sa isang client na makakonekta sa webserver. Kapag ang client ay nakakonekta sa webserver, nagpapadala ang NodeMCU ng mga detalye ng lokasyon sa konektadong client. Ang mga detalye ng lokasyon ay ipinapakita sa isang simpleng webpage na dinisenyo gamit ang HTML.
Mga Hakbang:
- Ikonekta ang circuit tulad ng ipinakita sa eskematiko.
- I-upload ang code pagkatapos baguhin ang mga kredensyal ng Wi-Fi.
- Buksan ang serial monitor sa Arduino IDE at itala ang IP address ng webserver.
- Buksan ang anumang Browser at ipasok ang IP address ng webserver.
- Ipapakita nito ang mga detalye ng Lokasyon, petsa, oras at link ng mga mapa ng Google.
Paliwanag sa code:
Ang kumpletong source code para sa proyektong ito ay ibinibigay sa pagtatapos ng artikulong ito. Ang code ay nahahati sa maliit na makahulugang mga tipak at ipinaliwanag sa ibaba.
Upang mai-interface ang module ng GPS sa NodeMCU kailangan naming isama ang naaangkop na mga file ng header. Maaaring mai-download ang mga header file mula sa mga link na ibinigay sa ibaba.
Maliit na silid-aklatan ng GPS ++:
# isama
Upang lumikha ng isang webserver gamit ang NodeMCU, kailangan itong kumonekta sa Wi-Fi Network. Sa bahaging ito ng code nagbibigay kami ng mga kredensyal ng Wi-Fi ng wireless network kung saan nakakonekta ang NodeMCU. Palitan ito ng iyong mga kredensyal sa Wi-Fi.
const char * ssid = " shashi "; const char * password = "12345678";
Sa bahaging ito ng code lumilikha kami ng isang object ng klase ng TinyGPSPlus at tinutukoy ang mga pin kung saan nakakonekta ang module ng GPS. Ang module ng GPS ay konektado sa mga pin 4 at 5 (GPIO4 at GPIO5) ng NodeMCU. Upang suportahan ang Serial na komunikasyon sa pin 4 at 5, gumagamit kami ng library ng "SoftwareSerial" upang lumikha ng virtual Serial port.
Mga TinyGPSPlus gps; // The TinyGPS ++ object SoftwareSerial ss (4, 5); // Ang serial na koneksyon sa aparato ng GPS.
Ang linya ng code na ito ay nagpapahiwatig ng bilang ng port ng webserver na nilikha. Para sa koneksyon sa, ang default na numero ng port ay 80.
WiFiServer server (80);
Upang lumikha ng webserver gamit ang NodeMCU, ginagamit ang nabanggit na piraso ng code. Matapos likhain ang webserver, inililimbag nito ang IP address ng webserver sa Serial Monitor. Sa paglaon ang IP address na ito ay ginagamit upang ma-access ang webserver sa loob ng lokal na network.
server.begin (); Serial.println ("Nagsimula ang server"); Serial.println (WiFi.localIP ()); // I-print ang IP address
Susunod kailangan nating simulang basahin ang Serial data na ipinadala mula sa module ng GPS at kung wala itong error, kailangan nating kunin ang mga detalye ng lokasyon mula rito. Upang makuha ang mga detalye ng lokasyon ginagamit namin ang TinyGPSPlus library. Ang bahaging ito ng code ay gumagana sa itaas.
habang (ss.available ()> 0) kung (gps.encode (ss.read ()))
Kung ang natanggap na string ay walang error, kailangan muna nating suriin kung ang lokasyon ay wasto o hindi. Kung wasto ang lokasyon kailangan nating kunin ang latitude at longitude mula rito. Pagkatapos ito ay nai-convert sa format ng string para sa pagpapakita nito sa Webpage. Upang magawa ang gawaing ito, ginagamit namin ang piraso ng code na ito.
kung (gps .location.isValid ()) { lattitude = gps.location.lat (); lat_str = String (lattitude, 6); longitude = gps.location.lng (); lng_str = String (longitude, 6); }
Kailangan nating sundin ang parehong mga hakbang upang makuha ang petsa at oras.
kung (gps.date.isValid ()) { date = gps.date.day (); buwan = gps.date.month (); taon = gps.date.year (); }
Upang makuha ang Oras, kailangan naming sundin ang parehong pamamaraan, ngunit ang GPS ay nagbibigay ng oras ay nasa format na UTC. Upang mai-convert ang UTC sa IST kailangan naming magdagdag ng isang offset na + 5 oras at 30 minuto sa UTC. Ang bahaging ito ng code ay ang paggawa ng conversion mula UTC hanggang IST.
minuto = (minuto + 30); kung (minuto> 59) { minuto = minuto - 60; oras = oras + 1; } oras = (oras + 5); kung (oras> 23) oras = oras - 24;
Ang oras na ito ay nasa 24 oras na format. Upang mai-convert ang 24 na oras sa 12 oras na format, sa ibaba nabanggit na code ang ginagamit.
kung (oras> = 12) pm = 1; iba pa pm = 0; oras = oras% 12;
Sa bahaging ito ng code tinitingnan namin kung ang isang client ay konektado sa webserver. naghihintay ito hanggang sa makakonekta ang isang kliyente.
WiFiClient client = server.available (); kung (! client) { bumalik; }
Kapag nakakonekta ang isang client, kailangang magpadala ng webserver ng tugon sa kliyente. Ang webpage ay idinisenyo gamit ang HTML. Ang HTML code para sa webpage ay ibinibigay sa pagtatapos ng artikulong ito. Ang mga halagang latitude, longitude, petsa at oras ay na-update sa sandaling natanggap ang data mula sa module ng GPS. Sa bahaging ito ng code nagpapadala kami ng tugon sa kliyente. Nasaan ang isang string na naglalaman ng HTML code para sa webpage at mga detalye ng lokasyon.
client.print (s);
HTML code para sa webpage:
Ang GPS Interfacing sa NodeMCU
Mga Detalye ng Lokasyon
Latitude | 12.9000 |
---|---|
Longhitud | 77.5900 |
Petsa | 22/06/18 |
Oras | 07:12:12 |
Pindutin dito! Upang suriin ang lokasyon sa mga mapa ng Google.
Ito ang hitsura ng webpage pagkatapos naming buksan ang IP ng lokal na webserver sa web browser.
Kapag nag-click ka sa link na " Mag-click dito ", bubuksan nito ang lokasyon sa Google Maps tulad ng sa ibaba: