- ส่วนประกอบที่ต้องการ:
- โมดูล GPS:
- การรับข้อมูลตำแหน่งจาก GPS:
- การเชื่อมต่อ GPS กับ ESP12E NodeMCU:
- คำอธิบายรหัส:
- รหัส HTML สำหรับหน้าเว็บ:
GPS ย่อมาจาก Global Positioning System และใช้เพื่อค้นหาตำแหน่งความสูงความเร็ววันที่และเวลาใน UTC ในโครงการนี้เราจะไปติดต่อโมดูลจีพีเอสกับ NodeMCU เว็บเซิร์ฟเวอร์ภายในแบบธรรมดาถูกสร้างขึ้นโดยใช้ NodeMCU และรายละเอียดตำแหน่งที่ตั้งจะถูกอัพเดตในเว็บเพจของเซิร์ฟเวอร์นั้น ความพิเศษของโครงการที่ใช้ IoT นี้คือเราสามารถตรวจสอบสถานที่ใน Goolge Maps ได้โดยคลิกที่ลิงค์ที่ให้ไว้ในหน้าเว็บ คุณยังสามารถเปิดหน้าเว็บนี้และตรวจสอบตำแหน่งได้จากทุกที่โดยเปิดใช้งานการส่งต่อพอร์ตในโมเด็ม / เราเตอร์ของคุณ
ส่วนประกอบที่ต้องการ:
- NodeMCU ESP12
- โมดูล GPS (uBlox Neo 6M GPS)
โมดูล GPS:
Ublox Neo 6Mเป็นโมดูล GPS แบบอนุกรมซึ่งให้รายละเอียดตำแหน่งผ่านการสื่อสารแบบอนุกรม มีสี่หมุด
พิน |
คำอธิบาย |
Vcc |
แหล่งจ่ายไฟ 2.7 - 5V |
Gnd |
พื้น |
TXD |
ส่งข้อมูล |
RXD |
รับข้อมูล |
โมดูล GPS Ublox neo 6M สามารถใช้งานร่วมกับ TTL ได้และมีการระบุข้อมูลจำเพาะด้านล่าง
จับเวลา | เริ่มเย็น: 27 วินาทีเริ่มร้อน: 1 วินาที |
โปรโตคอลการสื่อสาร | NMEA |
การสื่อสารแบบอนุกรม | 9600bps, 8 บิตข้อมูล, 1 บิตหยุด, ไม่มีความเท่าเทียมกันและไม่มีการควบคุมการไหล |
กระแสไฟฟ้าที่ใช้งาน | 45mA |
การรับข้อมูลตำแหน่งจาก GPS:
โมดูลจะส่งข้อมูลในหลาย ๆ สตริงที่ 9600 Baud Rate หากเราใช้เทอร์มินัล UART ที่มีอัตรารับส่งข้อมูล 9600 เราจะเห็นข้อมูลที่ GPS ได้รับ
โมดูล GPS ส่งข้อมูลตำแหน่งการติดตามแบบเรียลไทม์ในรูปแบบ NMEA (ดูภาพหน้าจอด้านบน) รูปแบบ NMEA ประกอบด้วยหลายประโยคโดยมีสี่ประโยคสำคัญด้านล่าง สามารถดูรายละเอียดเพิ่มเติมเกี่ยวกับ ประโยค NMEA และรูปแบบข้อมูลได้ที่นี่
- $ GPGGA: ข้อมูลการแก้ไขระบบกำหนดตำแหน่งบนโลก
- $ GPGSV: ดาวเทียม GPS ในมุมมอง
- $ GPGSA: GPS DOP และดาวเทียมที่ใช้งานอยู่
- $ GPRMC: ข้อมูล GPS / การขนส่งขั้นต่ำที่แนะนำ
เรียนรู้เพิ่มเติมเกี่ยวกับข้อมูล GPS และสตริง NMEA ที่นี่
นี่คือข้อมูลที่ GPS ได้รับเมื่อเชื่อมต่อด้วยอัตราบอด 9600
$ 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,,,,,,,,,, 2.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, ก, ก * 65
เมื่อเราใช้โมดูลจีพีเอส สำหรับการติดตามสถานที่ใด ๆ เราจะต้องพิกัดและเราสามารถหานี้ในสตริง เฉพาะ $ GPGGA (Global Positioning System Fix Data) โดยส่วนใหญ่จะใช้ในโปรแกรมและสตริงอื่น ๆ จะถูกละเว้น
$ GPGGA, 141848.00,2237.63306, N, 08820.86316, E, 1,03,2.56,1.9, M, -54.2, M,, * 74
ความหมายของเส้นนั้นคืออะไร?
ความหมายของบรรทัดนั้นคือ: -
1. สตริงจะขึ้นต้นด้วยเครื่องหมาย“ $” เสมอ
2. GPGGA ย่อมาจาก Global Positioning System Fix Data
3. “,” ลูกน้ำหมายถึงการแยกระหว่างสองค่า
4. 141848.00: GMT เวลาเป็น 14 (ชม.): 18 (นาที): 48 (วินาที): 00 (มิลลิวินาที)
5. 2237.63306, N: ละติจูด 22 (องศา) 37 (นาที) 63306 (วินาที) เหนือ
6. 08820.86316, E: ลองจิจูด 088 (องศา) 20 (นาที) 86316 (วินาที) ตะวันออก
7. 1: แก้ไขปริมาณ 0 = ข้อมูลไม่ถูกต้อง, 1 = ข้อมูลที่ถูกต้อง, 2 = แก้ไข DGPS
8. 03: จำนวนดาวเทียมที่รับชมในปัจจุบัน
9. 1.0: HDOP
10. 2.56, M: ระดับความสูง (ความสูงเหนือระดับน้ำทะเลเป็นเมตร)
11. 1.9, M: ความสูงของ Geoids
12. * 74: เช็คซัม
ดังนั้นเราจึงต้องการหมายเลข 5 และหมายเลข 6 เพื่อรวบรวมข้อมูลเกี่ยวกับตำแหน่งโมดูลหรือที่ตั้งของโมดูล ในโครงการนี้เราได้ใช้ห้องสมุด GPS ที่มีฟังก์ชันบางอย่างเพื่อดึงละติจูดและลองจิจูดดังนั้นเราจึงไม่ต้องกังวลเรื่องนั้น
ก่อนหน้านี้เราได้เชื่อมต่อ GPS กับไมโครคอนโทรลเลอร์อื่น ๆ:
·วิธีใช้ GPS กับ Arduino
·การสอนการเชื่อมต่อโมดูล Raspberry Pi GPS
·การเชื่อมต่อโมดูล GPS กับไมโครคอนโทรลเลอร์ PIC
·ติดตามยานพาหนะบน Google Maps โดยใช้ Arduino, ESP8266 และ GPS
การเชื่อมต่อ GPS กับ ESP12E NodeMCU:
NodeMCU เป็นบอร์ดพัฒนาที่ใช้ ESP8266 มี ESP-12E เป็นแกนประมวลผล เป็น MCU 32 บิต มี 14 GPIO พิน, ADC แบบรวม 10 บิตช่องเดียว รองรับการสื่อสาร UART, I2C, SPI เข้ากันได้กับ 3.3V ไม่สามารถรองรับ 5V ได้ หากคุณยังใหม่กับ NodeMCU โปรดอ่านการเริ่มต้นใช้งาน NodeMCU ESP-12 ของเรา
การเชื่อมต่อระหว่างโมดูล NodeMCU และ GPSดังแสดงด้านล่าง
NodeMCU |
โมดูล GPS |
3V3 |
Vcc |
GND |
GND |
D1 (GPIO5) |
RX |
D2 (GPIO4) |
TX |
ด้านล่างนี้คือแผนภาพวงจรของการเชื่อมต่อ GPS กับ NodeMCU:
โมดูล GPS ใช้เวลาพอสมควรในการจับรายละเอียดตำแหน่งเมื่อเปิดเครื่อง NodeMCU เริ่มต้นเว็บเซิร์ฟเวอร์และรอให้ไคลเอ็นต์เชื่อมต่อกับเว็บเซิร์ฟเวอร์ เมื่อไคลเอนต์เชื่อมต่อกับเว็บเซิร์ฟเวอร์แล้ว NodeMCU จะส่งรายละเอียดตำแหน่งไปยังไคลเอนต์ที่เชื่อมต่อ รายละเอียดสถานที่จะแสดงในหน้าเว็บง่ายๆที่ออกแบบโดยใช้ HTML
ขั้นตอน:
- เชื่อมต่อวงจรตามที่แสดงในแผนผัง
- อัปโหลดรหัสหลังจากเปลี่ยนข้อมูลรับรอง Wi-Fi
- เปิดมอนิเตอร์แบบอนุกรมใน Arduino IDE และจดบันทึกที่อยู่ IP ของเว็บเซิร์ฟเวอร์
- เปิดเบราว์เซอร์ใดก็ได้และป้อนที่อยู่ IP ของเว็บเซิร์ฟเวอร์
- จะแสดงรายละเอียดสถานที่วันเวลาและลิงก์ Google แผนที่
คำอธิบายรหัส:
รหัสที่สมบูรณ์สำหรับโครงการนี้จะได้รับในตอนท้ายของบทความนี้ รหัสจะแบ่งออกเป็นส่วนเล็ก ๆ ที่มีความหมายและอธิบายไว้ด้านล่าง
ในการเชื่อมต่อโมดูล GPS กับ NodeMCU เราจำเป็นต้องรวมไฟล์ส่วนหัวที่เหมาะสม ไฟล์ส่วนหัวสามารถดาวน์โหลดได้จากลิงค์ด้านล่าง
ห้องสมุด GPS ++ จิ๋ว:
# รวม
ในการสร้างเว็บเซิร์ฟเวอร์โดยใช้ NodeMCU ก็จะต้องมีการเชื่อมต่อ Wi-Fi และเครือข่าย ในส่วนนี้ของรหัสนี้เรากำลังให้ข้อมูลรับรอง Wi-Fi ของเครือข่ายไร้สายที่ NodeMCU เชื่อมต่อ แทนที่สิ่งนี้ด้วยข้อมูลรับรอง Wi-Fi ของคุณ
const ถ่าน * ssid = " shashi "; const ถ่าน * รหัสผ่าน = "12345678";
ในส่วนของโค้ดที่เรากำลังสร้างวัตถุของคลาสนี้ TinyGPSPlus และกำหนดหมุดที่ GPS โมดูลเชื่อมต่อ โมดูล GPS เชื่อมต่อกับพิน 4 และ 5 (GPIO4 และ GPIO5) ของ NodeMCU เพื่อรองรับการสื่อสารแบบอนุกรมบนพิน 4 และ 5 เรากำลังใช้ไลบรารี“ SoftwareSerial” เพื่อสร้างพอร์ตอนุกรมเสมือน
TinyGPSPlus จีพีเอส; // วัตถุ TinyGPS ++ SoftwareSerial ss (4, 5); // การเชื่อมต่อแบบอนุกรมกับอุปกรณ์ GPS
โค้ดบรรทัดนี้ระบุหมายเลขพอร์ตของเว็บเซิร์ฟเวอร์ที่กำลังสร้าง สำหรับการเชื่อมต่อหมายเลขพอร์ตเริ่มต้นคือ 80
เซิร์ฟเวอร์ WiFiServer (80);
ในการสร้างเว็บเซิร์ฟเวอร์โดยใช้ NodeMCU จะใช้โค้ดที่กล่าวถึงด้านล่าง หลังจากที่สร้างเว็บเซิร์ฟเวอร์ก็พิมพ์ที่อยู่ IP ของเว็บเซิร์ฟเวอร์ในการตรวจสอบอนุกรม ในภายหลังที่อยู่ IP นี้จะถูกใช้เพื่อเข้าถึงเว็บเซิร์ฟเวอร์ภายในเครือข่ายท้องถิ่น
server.begin (); Serial.println ("เซิร์ฟเวอร์เริ่มทำงาน"); Serial.println (WiFi.localIP ()); // พิมพ์ที่อยู่ IP
ต่อไปเราต้องเริ่มอ่านข้อมูล Serial ที่ส่งออกจากโมดูล GPS และหากไม่มีข้อผิดพลาดเราต้องดึงรายละเอียดตำแหน่งออกจากมัน ในการดึงรายละเอียดสถานที่เราใช้ไลบรารี TinyGPSPlus ส่วนนี้ของรหัสทำงานข้างต้น
ในขณะที่ (ss.available ()> 0) ถ้า (gps.encode (ss.read ()))
หากสตริงที่ได้รับไม่มีข้อผิดพลาดก่อนอื่นเราต้องตรวจสอบว่าตำแหน่งนั้นถูกต้องหรือไม่ หากสถานที่ที่ถูกต้องเราต้องแยกละติจูดและลองจิจูดจากมันจากนั้นจะถูกแปลงเป็นรูปแบบสตริงเพื่อแสดงในเว็บเพจ เพื่อให้งานนี้สำเร็จเรากำลังใช้โค้ดชิ้นนี้
ถ้า (gps .location.isValid ()) { lattitude = gps.location.lat (); lat_str = สตริง (แลตติจูด 6); ลองจิจูด = gps.location.lng (); lng_str = สตริง (ลองจิจูด 6); }
เราจำเป็นต้องทำตามขั้นตอนเดียวกันกับวันที่และเวลาที่สารสกัดจาก
ถ้า (gps.date.isValid ()) { date = gps.date.day (); เดือน = gps.date.month (); ปี = gps.date.year (); }
ในการแยกเวลาเราต้องทำตามขั้นตอนเดียวกัน แต่ GPS ให้เวลาอยู่ในรูปแบบ UTC ในการแปลง UTC เป็น ISTเราต้องเพิ่มค่าออฟเซ็ต+ 5 ชั่วโมง 30 นาทีเป็น UTC ส่วนนี้ของรหัสทำการแปลงจาก UTC เป็น IST
นาที = (นาที + 30); ถ้า (นาที> 59) { นาที = นาที - 60; ชั่วโมง = ชั่วโมง + 1; } ชั่วโมง = (ชั่วโมง + 5); ถ้า (ชั่วโมง> 23) ชั่วโมง = ชั่วโมง - 24;
เวลานี้อยู่ในรูปแบบ 24 ชั่วโมง ในการแปลงรูปแบบ 24 ชั่วโมงเป็น 12 ชั่วโมงจะใช้รหัสที่กล่าวถึงด้านล่าง
ถ้า (ชั่วโมง> = 12) น. = 1; อื่น ๆ pm = 0; ชั่วโมง = ชั่วโมง% 12;
ในส่วนนี้ของรหัสเรากำลังตรวจสอบว่าลูกค้าเชื่อมต่อกับเว็บเซิร์ฟเวอร์หรือไม่ รอจนกว่าลูกค้าจะเชื่อมต่อ
ไคลเอนต์ WiFiClient = server.available (); ถ้า (! client) { return; }
เมื่อเชื่อมต่อไคลเอนต์แล้วเว็บเซิร์ฟเวอร์จะต้องส่งการตอบกลับไปยังไคลเอนต์ หน้าเว็บได้รับการออกแบบโดยใช้ HTML โค้ด HTML สำหรับหน้าเว็บมีให้ในตอนท้ายของบทความนี้ ค่าละติจูดลองจิจูดวันที่และเวลาจะอัปเดตเมื่อได้รับข้อมูลจากโมดูล GPS ในส่วนของรหัสนี้เราจะส่งการตอบสนองต่อลูกค้าโดยที่ "s" คือสตริงที่มีโค้ด HTML สำหรับหน้าเว็บและรายละเอียดตำแหน่ง
client.print (s);
รหัส HTML สำหรับหน้าเว็บ:
การเชื่อมต่อ GPS กับ NodeMCU
รายละเอียดสถานที่
ละติจูด | 12.9000 |
---|---|
ลองจิจูด | 77.5900 |
วันที่ | 22/06/18 |
เวลา | 07:12:12 น |
คลิกที่นี่! เพื่อตรวจสอบตำแหน่งในแผนที่ Google
นี่คือวิธีที่หน้าเว็บลักษณ์หลังจากที่เราเปิด IP ของเว็บเซิร์ฟเวอร์ท้องถิ่นในเว็บเบราเซอร์
เมื่อคุณคลิกที่ลิงค์“ คลิกที่นี่ ” มันจะเปิดตำแหน่งใน Google แผนที่ดังต่อไปนี้: