โปรเจค ESP32 แสดงตำแหน่งจาก GPS Module ด้วย Google Maps โดย GPS ย่อมาจาก Global Positioning System ใช้เพื่อค้นหาตำแหน่งต่างๆบนโลก อ่านค่าเป็น ละติจูด ลองจิจูด การใช้งานโดยการเชื่อมต่อโมดูล GPS กับ ESP32 และให้แสดง ละติจูด ลองจิจูด ที่อัปเดตในหน้า ของ Serial Monitor และนำข้อมูลไปใช้งานที่ Google Maps เพื่อให้แสดงรายละเอียดของตำแหน่ง ของบอร์ด ESP32
### อุปกรณ์ที่ใช้ ###
1. PICO KIT V4 ESP32 Development Board WiFi + Bluetooth
2. Micro USB Cable Wire 1m for NodeMCU
3. Breadboard 830 Point MB-102
4. GY-NEO6MV2 NEO-6M GPS Module
5. 2.54 mm Right Angle Single Row Pin Male Header
6. Jumper (M2M) 20cm Male to Male
โดยการทำโปรเจคมีขั้นตอนดังนี้
1.ติดตั้ง Arduino core for ESP32
ลิงค์การติดตั้ง Arduino core for ESP32
https://robotsiam.blogspot.com/2017/09/arduino-core-for-esp32.html
2.เชื่อมต่ออุปกรณ์
2.1 ใช้ตะกั่วบัดกรี ขา Right Angle เข้ากับ GPS Module
2.2 เชื่อมต่อ ตัวรับสัญญาณ GPS และเสาอากาศ
2.3 เชื่อมต่อ ESP32 กับ GPS Module
ภาพรวมการต่อวงจร
3.ติดตั้ง ไลบรารี่ Tiny GPS++ สำหรับ Arduino IDE
3.1 ดาวน์โหลด ไลบรารี่ Tiny GPS++ได้ที่
https://github.com/mikalhart/TinyGPSPlus/archive/v1.0.2.zip
3.2 เปิด โปรแกรม Arduino IDE ไปที่ Skecth -> Include Library -> Add .ZIP Library...
3.3 ไปที่ ไลบรารี TinyGPSPlus-1.0.2.zip ที่เรา ดาวน์โหลด มา -> Open
ตรวจสอบที่ Skecth -> Include Library จะพบ ไลบรารี TinyGPS++ เพิ่มเข้ามาใน Arduino IDE ของเรา
4. อัพโหลดโปรแกรม
4.1 เชื่อมต่อสาย USB ระหว่าง คอมพิวเตอร์ กับ ESP32
4.2 ตรวจสอบการติดตั้งไดร์เวอร์ ของ ชิปแปลง USB to UART เบอร์ CP2102 โดย คลิกขวา Computet -> Properties -> Device Manager
ที่ Ports (COM & LPT) จะพบ ไดร์เวอร์ ของชิป CP2102
ในตัวอย่างเป็น Silicon Labs CP210x USB to UART Bridge (COM18)
4.3 เปิดโปรแกรม Arduino (IDE) และ ก็อปปี้ โค้ดด้านล่างนี้ ไปวางไว้ในส่วนเขียนโปรแกรม
#include <TinyGPS++.h>
#include <HardwareSerial.h>
#define RXPin (22)
#define TXPin (21)
static const uint32_t GPSBaud = 9600;
// The TinyGPS++ object
TinyGPSPlus gps;
// The serial connection to the GPS device
HardwareSerial ss(2);
void setup()
{
Serial.begin(115200);
ss.begin(GPSBaud, SERIAL_8N1, RXPin, TXPin, false);
Serial.println(TinyGPSPlus::libraryVersion());
}
void loop()
{
while (ss.available() > 0)
if (gps.encode(ss.read()))
displayInfo();
if (millis() > 5000 && gps.charsProcessed() < 10)
{
Serial.println(F("No GPS detected: check wiring."));
while(true);
}
}
void displayInfo()
{
Serial.print(F("Location: "));
if (gps.location.isValid())
{
Serial.print(gps.location.lat(), 6);
Serial.print(F(","));
Serial.print(gps.location.lng(), 6);
}
else
{
Serial.print(F("INVALID"));
}
Serial.println();
}
4.4 ไปที่ Tools -> Board เลือก ESP32 Dev Module
4.5 ไปที่ Tools -> Port แล้วเลือกพอร์ตที่ปรากฏ (กรณีใช้เครื่องคอมพิวเตอร์ที่มี COM Port ให้เลือกตัวอื่นที่ไม่ใช่ COM1)
ในตัวอย่างเลือกเป็น "COM18"
4.6 กดปุ่ม เพื่ออัพโหลด
ตั้งชื่อไฟล์ -> Save โปรแกรม จะทำการ อัพโหลด
5.1 เปิดหน้าต่าง Serial Monitor โดยไปที่ Tools > Serial Monitor
5.2 มุมขวาล่าง ของ Serial Monitor เลือก 115200 baud คือ ตั้งค่าความเร็วในการรับ-ส่งข้อมูล คือ 115200
5.4 ในกรณี โมดูล GPS ยังไม่ทำงานจะแสดง Location: INVALID
5.5 รอจนกระทั่งทำงานปรกติ จะแสดงตำแหน่ง ละติจูด ลองจิจูด ในตัวอย่างนี้คือ 13.990263,100.540156
(สังเกต ไฟ LED สีแดง ใน GPS Module จะกระพริบ)
6. ดูตำแหน่งที่ Google Maps
6.1 ใช้ คอมพิวเตอร์ หรือ สมาร์ทโฟน เปิดเว็บบราวเซอร์ ที่ URL ป้อน https://www.google.com/maps/
6.2 ป้อน ละติจูด ลองจิจูด ที่ได้มาจากข้อ 5.5 ในตัวอย่างนี้คือ 13.990263,100.540156
จะแสดงตำแหน่งปัจจุบัน ของบอร์ด ESP32
...
credit : https://playground.cmmakerclub.com