ESP8266 Hệ thống định vị toàn cầu (GPS)

Hướng dẫn này sẽ chỉ cho bạn cách sử dụng ESP8266 với một mô-đun GPS NEO-6M. Cụ thể, chúng ta sẽ tìm hiểu:

Ngoài kinh độ, vĩ độ và độ cao, ESP8266 còn có thể đọc tốc độ GPS (km/h) và ngày giờ từ module GPS NEO-6M.

Phần cứng cần chuẩn bị

1×ESP8266 NodeMCU ESP-12E
1×Recommended: ESP8266 NodeMCU ESP-12E (Uno-form)
1×USB Cable Type-A to Type-C (for USB-A PC)
1×USB Cable Type-C to Type-C (for USB-C PC)
1×NEO-6M GPS module
1×dây jumper
1×(Khuyến nghị) Screw Terminal Expansion Board for ESP8266
1×(Khuyến nghị) Power Splitter for ESP8266 Type-C

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về mô-đun GPS NEO-6M

Mô-đun GPS NEO-6M là một mô-đun GPS có thể cung cấp các thông tin sau:

  • Kinh độ
  • Vĩ độ
  • Độ cao
  • Tốc độ GPS (km/h)
  • Ngày giờ

Sơ đồ chân của mô-đun GPS NEO-6M

Mô-đun GPS NEO-6M có 4 chân:

  • Chân VCC: Cần được kết nối với VCC (5V)
  • Chân GND: Cần được kết nối với GND (0V)
  • Chân TX: Dành cho giao tiếp nối tiếp và nên được kết nối với chân RX của Serial (hoặc SoftwareSerial) trên ESP8266.
  • Chân RX: Dành cho giao tiếp nối tiếp và nên được kết nối với chân TX của Serial (hoặc SoftwareSerial) trên ESP8266.
sơ đồ chân của mô-đun GPS neo-6m

Sơ đồ đấu dây

sơ đồ nối dây của module GPS ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Xem thêm Sơ đồ chân ESP8266Cách cấp nguồn cho ESP8266.

Mã ESP8266

Đọc tọa độ GPS, vận tốc (km/h) và ngày giờ

/* * Mã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/esp8266/esp8266-gps */ #include <TinyGPS++.h> #include <SoftwareSerial.h> const int RX_PIN = 3, TX_PIN = 4; const uint32_t GPS_BAUD = 9600; //Default baud of NEO-6M is 9600 TinyGPSPlus gps; // The TinyGPS++ object SoftwareSerial gpsSerial(RX_PIN, TX_PIN); // The serial interface to the GPS device void setup() { Serial.begin(9600); gpsSerial.begin(GPS_BAUD); Serial.println(F("ESP8266 - GPS module")); } void loop() { if (gpsSerial.available() > 0) { if (gps.encode(gpsSerial.read())) { if (gps.location.isValid()) { Serial.print(F("- latitude: ")); Serial.println(gps.location.lat()); Serial.print(F("- longitude: ")); Serial.println(gps.location.lng()); Serial.print(F("- altitude: ")); if (gps.altitude.isValid()) Serial.println(gps.altitude.meters()); else Serial.println(F("INVALID")); } else { Serial.println(F("- location: INVALID")); } Serial.print(F("- speed: ")); if (gps.speed.isValid()) { Serial.print(gps.speed.kmph()); Serial.println(F(" km/h")); } else { Serial.println(F("INVALID")); } Serial.print(F("- GPS date&time: ")); if (gps.date.isValid() && gps.time.isValid()) { Serial.print(gps.date.year()); Serial.print(F("-")); Serial.print(gps.date.month()); Serial.print(F("-")); Serial.print(gps.date.day()); Serial.print(F(" ")); Serial.print(gps.time.hour()); Serial.print(F(":")); Serial.print(gps.time.minute()); Serial.print(F(":")); Serial.println(gps.time.second()); } else { Serial.println(F("INVALID")); } Serial.println(); } } if (millis() > 5000 && gps.charsProcessed() < 10) Serial.println(F("No GPS data received: check wiring")); }

Hướng dẫn từng bước

Để bắt đầu với ESP8266 trên Arduino IDE, hãy làm theo các bước sau:

  • Xem hướng dẫn ESP8266 - Cài đặt phần mềm nếu đây là lần đầu bạn sử dụng ESP8266.
  • Nối các linh kiện như được hiển thị trong sơ đồ.
  • Kết nối bo mạch ESP8266 với máy tính của bạn bằng cáp USB.
  • Mở Arduino IDE trên máy tính của bạn.
  • Chọn bo mạch ESP8266 phù hợp, ví dụ (NodeMCU 1.0 (ESP-12E Module)), và cổng COM tương ứng của nó.
  • Khởi động Arduino IDE.
  • Nhấp chuột vào biểu tượng Libraries ở thanh bên trái của Arduino IDE.
  • Tìm “TinyGPSPlus”, sau đó tìm thư viện TinyGPSPlus của Mikal Hart.
  • Nhấp vào nút Install để cài đặt thư viện TinyGPSPlus.
thư viện ESP8266 NodeMCU tinyGPS++
  • Sao chép mã được cung cấp và mở nó trong Arduino IDE.
  • Nhấn nút Tải lên trong Arduino IDE để gửi mã đến ESP8266.
  • Xem kết quả trên Serial Monitor.
COM6
Send
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Tính khoảng cách từ vị trí hiện tại đến một vị trí được xác định trước

Đoạn mã này tính khoảng cách giữa vị trí hiện tại và London (vĩ độ: 51.508131, kinh độ: -0.128002).

/* * Mã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/esp8266/esp8266-gps */ #include <TinyGPS++.h> #include <SoftwareSerial.h> const int RX_PIN = 3, TX_PIN = 4; const uint32_t GPS_BAUD = 9600; //Default baud of NEO-6M is 9600 TinyGPSPlus gps; // The TinyGPS++ object SoftwareSerial gpsSerial(RX_PIN, TX_PIN); // The serial interface to the GPS device const double LONDON_LAT = 51.508131; const double LONDON_LON = -0.128002; void setup() { Serial.begin(9600); gpsSerial.begin(GPS_BAUD); Serial.println(F("ESP8266 - GPS module")); } void loop() { if (gpsSerial.available() > 0) { if (gps.encode(gpsSerial.read())) { if (gps.location.isValid()) { double latitude = gps.location.lat(); double longitude = gps.location.lng(); unsigned long distanceKm = TinyGPSPlus::distanceBetween(latitude, longitude, LONDON_LAT, LONDON_LON) / 1000; Serial.print(F("- latitude: ")); Serial.println(latitude); Serial.print(F("- longitude: ")); Serial.println(longitude); Serial.print(F("- distance to London: ")); Serial.println(distanceKm); } else { Serial.println(F("- location: INVALID")); } Serial.println(); } } if (millis() > 5000 && gps.charsProcessed() < 10) Serial.println(F("No GPS data received: check wiring")); }

Hướng dẫn từng bước

  • Kết nối các linh kiện như được hiển thị trong sơ đồ.
  • Kết nối bo mạch ESP8266 với máy tính của bạn bằng cáp USB.
  • Mở Arduino IDE trên máy tính của bạn.
  • Chọn bo mạch ESP8266 phù hợp, như ví dụ NodeMCU 1.0 (ESP-12E Module), và cổng COM tương ứng của nó.
  • Sao chép mã và mở nó trong Arduino IDE.
  • Nhấn nút Upload trong Arduino IDE để gửi mã đến ESP8266.
  • Xem kết quả trên Serial Monitor.
COM6
Send
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Video Tutorial

Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.

Bài hướng dẫn liên quan