วันอังคารที่ 6 สิงหาคม พ.ศ. 2562

โปรเจค ESP32 แสดงตำแหน่งจาก GPS Module ด้วย Google Maps


โปรเจค 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 โปรแกรม จะทำการ อัพโหลด






4.7 หากสามารถอัพโหลดโปรแกรมลงบอร์ดได้สำเร็จ จะแสดงคำว่า Done uploading. ที่แถบด้านล่าง




5. ทดสอบการทํางาน


5.1 เปิดหน้าต่าง Serial Monitor  โดยไปที่ Tools > Serial Monitor





5.2 มุมขวาล่าง ของ Serial Monitor เลือก 115200 baud  คือ ตั้งค่าความเร็วในการรับ-ส่งข้อมูล  คือ 115200






5.3 กดที่ปุ่ม EN 1 ครั้ง เพื่อเริ่มการทำงาน ของ ESP32




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