Mô-đun GPS NEO-6M với ESP8266 NodeMCU và vị trí theo dõi trên Google Maps

Mô-đun GPS NEO-6M với ESP8266 NodeMCU và Vị trí theo dõi trên Google Maps

Trong hướng dẫn này, chúng ta sẽ tìm hiểu về mô-đun GPS NEO-6M và cách giao tiếp với nó với ESP8266 NodeMCU. Chúng ta sẽ tìm hiểu cách thức hoạt động của GPS và tổng quan về mô-đun GPS NEO-6M với phần giới thiệu, sơ đồ chân và thông số kỹ thuật. Sau đó, chúng ta sẽ học cách giao tiếp mô-đun Mô-đun GPS NEO-6M với NodeMCU. Chúng ta sẽ học cách lấy các thông số GPS như vĩ độ, kinh độ, ngày, giờ, v.v. và hiển thị chúng trên máy chủ web, người dùng cũng có thể theo dõi vị trí trên bản đồ google.

Mô-đun GPS NEO-6M với ESP8266 NodeMCU và Vị trí theo dõi trên Google Maps

Với mục đích trình diễn, chúng tôi sẽ tạo một máy chủ web hiển thị các tham số GPS thu được từ NEO-6M được kết nối với NodeMCU. Để làm cho dữ liệu GPS có thể đọc được, chúng tôi sẽ sử dụng thư viện TinyGPS ++ trong bản phác thảo. Vị trí sẽ được hiển thị dưới dạng kinh độ và vĩ độ. Ngoài ra, ngày và giờ hiện tại cũng sẽ được hiển thị.

Hệ thống định vị toàn cầu (GPS) là một hệ thống định vị dựa trên vệ tinh bao gồm 24 vệ tinh quay quanh quỹ đạo, mỗi vệ tinh tạo ra hai mạch quanh Trái đất cứ sau 24 giờ. Các vệ tinh này truyền ba bit thông tin - số của vệ tinh, vị trí của nó trong không gian và thời gian thông tin được gửi đi. Những tín hiệu này được thu thập bởi máy thu GPS, sử dụng thông tin này để tính toán khoảng cách giữa nó và vệ tinh GPS. Với tín hiệu từ ba vệ tinh trở lên, máy thu GPS có thể tam giác vị trí của nó trên mặt đất (tức là kinh độ và vĩ độ) từ vị trí đã biết của các vệ tinh. Với bốn vệ tinh trở lên, máy thu GPS có thể xác định vị trí 3D (tức là vĩ độ, kinh độ và độ cao).

Ngoài ra, máy thu GPS có thể cung cấp dữ liệu về tốc độ và hướng di chuyển của bạn. Bất cứ ai có máy thu GPS đều có thể truy cập hệ thống. Bởi vì GPS cung cấp thời gian thực, định vị ba chiều, điều hướng và thời gian 24 giờ một ngày, 7 ngày một tuần, trên toàn thế giới, nó được sử dụng trong nhiều ứng dụng, bao gồm thu thập dữ liệu GIS, khảo sát và lập bản đồ.

Điểm cần nhớ: Máy thu GPS định vị bất kỳ ba hoặc nhiều vệ tinh nào, tính toán khoảng cách đến từng vệ tinh và sử dụng thông tin này để tạo vị trí riêng của nó. Hoạt động này dựa trên một nguyên tắc toán học đơn giản gọi là Trilateration.

Giới thiệu mô-đun GPS NEO-6M

Mô-đun GPS NEO-6M là một máy thu GPS có thể định vị tất cả các vị trí trên Trái đất vì nó có thể theo dõi khoảng 22 vệ tinh. Nó bao gồm một động cơ định vị u-blox 6 hiệu suất cao. Với kích thước 16 x 12.2 x 2.4 mm, kiến trúc nhỏ gọn cùng với mức tiêu thụ điện năng thấp khiến nó trở thành một lựa chọn tốt cho các dự án IoT. Nhìn chung, nó là một máy thu GPS hiệu quả về chi phí tốt.

Tổng quan về phần cứng

Hãy để chúng tôi tìm hiểu một chút về phần cứng của nó. Để có được chỉ số GPS, chúng ta phải sử dụng mô-đun GPS NEO-6M với ăng-ten. Ăng-ten được gắn chắc chắn vào mô-đun thông qua đầu nối U.FL. Đầu nối này được tìm thấy trên mô-đun GPS.

Tổng quan về phần cứng Mô-đun GPS NEO-6M

NEO-6M GPS Chip

Ở giữa mô-đun GPS, bạn có thể tìm thấy chip NEO-6M. Điều này chịu trách nhiệm theo dõi tới 22 vệ tinh và bất kỳ vị trí nào trên Trái đất trên một số kênh. Do tính chất theo dõi rất nhạy cảm của nó, nó làm cho mô-đun NEO-6M trở thành một thiết bị theo dõi GPS phổ biến.

Một số tính năng chính của chip NEO-6M bao gồm:

  • Độ nhạy cao để theo dõi

  • Dòng điện cung cấp thấp (~ 45mA)

  • Có khả năng theo dõi 5 vị trí mỗi giây với độ chính xác 2,5m (ngang).

  • Đi kèm với trang bị PSM còn được gọi là Chế độ tiết kiệm năng lượng. Chế độ này gây ra mức tiêu thụ điện năng rất ít bằng cách BẬT / TẮT mô-đun theo nhu cầu.

  • Sử dụng tuyệt vời như thiết bị theo dõi GPS trong đồng hồ thông minh do tiêu thụ điện năng rất thấp (~ 11mA)

Vị trí sửa chữa chỉ số báo LED

Tiến về phía trước, mô-đun đi kèm với một chỉ số báo LED cố định vị trí. Đèn LED này cho biết thông qua hiệu ứng nhấp nháy của nó cho dù mô-đun đang tìm kiếm vệ tinh hay đã tìm thấy chúng. Nếu đèn LED nhấp nháy sau mỗi giây, thì nó cho biết rằng vị trí cố định được tìm thấy. Tuy nhiên, nếu đèn LED không nhấp nháy thì mô-đun vẫn đang tìm kiếm các vệ tinh.

Bộ điều chỉnh tình trạng bỏ học thấp 3.3V

Mô-đun cũng được trang bị bộ điều chỉnh LDO 3.3V (MIC5205). Điều này cung cấp một điều chỉnh điện áp tuyến tính hiệu quả với đầu ra tiếng ồn cực thấp và điện áp bỏ học rất thấp. Ngoài ra, mô-đun cũng có thể chịu đựng được 5V một cách dễ dàng.

Kỹ thuật

Bảng dưới đây cho thấy một số thông số kỹ thuật của mô-đun NEO-6M.

Kiểu

GPS

Nguồn

2.7 V-3.6 V

Hoạt động hiện tại

45mA

Nhiệt độ hoạt động

-40 °C ~ 85 °C

Độ chính xác của vị trí nằm ngang

2,5phút

Giao thức truyền thông

NMEA, UBX Nhị phân, RTCM

Tính năng

RTC Crystal và Ngắt / Thức dậy bên ngoài

Giao diện

UART, SPI, USB và DDC

Để biết thêm thông tin về mô-đun NEO-6M, hãy tham khảo bảng dữ liệu của nó được cung cấp

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

Sơ đồ dưới đây cho thấy sơ đồ chân của mô-đun NEO 6M. Nó bao gồm 4 chân có tên GND, TX, RX và VCC.

Mô-đun GPS NEO 6M pin ra

GND ·

Đây là chân nối đất sẽ được kết nối với mặt đất của ESP8266.

TX

Đây là chân truyền được sử dụng để liên lạc nối tiếp.

RX

Đây là chân thu được sử dụng để liên lạc nối tiếp.

VCC

Đây là chân VCC được sử dụng để cấp nguồn cho mô-đun GPS. Kết nối nó với 3.3V của bảng ESP8266.

Kết nối mô-đun ESP8266 NodeMCU và NEO-6M

Mô-đun GPS NEO-6M có 4 thiết bị đầu cuối mà chúng tôi sẽ kết nối với bảng NodeMCU ESP8266. Chúng tôi sẽ kết nối thiết bị đầu cuối VCC với chân 3.3V của ESP8266. Chúng tôi sẽ kết nối thiết bị đầu cuối TX (máy phát) và thiết bị đầu cuối RX (máy thu) của mô-đun GPS với các chân GPIO của bo mạch. Phần mềm nối tiếp sẽ được sử dụng để giao tiếp giữa hai thiết bị. Do đó, chúng tôi sẽ đặt GPIO5 cho TX và GPIO4 cho RX trong các bản phác thảo chương trình. Do đó, TX của NEO-6M sẽ được kết nối với GPIO4 và RX của NEO-6M sẽ được kết nối với GPIO5. Bạn cũng có thể sử dụng bất kỳ chân GPIO nào khác. Ngoài ra, cả hai thiết bị sẽ có điểm chung.

ESP8266 ·

Mô-đun NEO-6M

3.3V

VCC

D2 (GPIO4)

TX

D1 (GPIO5)

RX

GND ·

GND ·

Sơ đồ sơ đồ

Kết nối cả mô-đun GPS ESP8266 và NEO-6M như hình dưới đây. Chúng tôi đã sử dụng các kết nối tương tự như đã đề cập trong bảng trên.

ESP8266 với sơ đồ kết nối NEO 6MESP8266 với mô-đun NEO-6M

ESP8266 với phần cứng NEO 6M

Hiểu NMEA cơ bản

Mô-đun GPS NEO-6M gửi dữ liệu GPS ở định dạng NMEA. Nó có nhiều loại khác nhau bao gồm $GPRMC, $GPGGA, v.v. Mỗi trường dữ liệu NMEA được phân tách bằng dấu phẩy và bắt đầu bằng dấu '$'.

Dưới đây, bạn có thể xem cú pháp $GPXXX biểu thị các loại thông báo NMEA khác nhau:

$GPGGA

Dữ liệu sửa chữa hệ thống định vị toàn cầu. Nó cung cấp vị trí 3D và dữ liệu chính xác

$GPGSA

Nó cung cấp GPS DOP và các vệ tinh đang hoạt động

$GPGSV

Nó cung cấp thông tin chi tiết của vệ tinh GPS

$GPGLL

Nó cung cấp Vĩ độ và Kinh độ địa lý

$GPRMC

Nó cung cấp vị trí, vận tốc và thời gian

$GPVTG

Nó cung cấp tốc độ mặt đất / nước kép

Hãy để chúng tôi hiểu cách đọc câu NMEA cơ bản, tức là $GPGGA. Dưới đây là một ví dụ $GPGGA câu NMEA:

$GPGGA, 103005, 3807.038, N, 07128.99030, E, 1, 07, 1.43, 134.5, M, 42.9, M, , *78

  • $: Điều này cho biết phần đầu của câu NMEA

  • GPGGA: Dữ liệu sửa chữa hệ thống định vị toàn cầu

  • 103005 : Đây là thời gian UTC khi dữ liệu được truy cập trong HH: MM: SS. Trong trường hợp này là 10:30:05 UTC

  • 3807.038, N : Vĩ độ 38 độ 07.038′ Bắc

  • 07128.99030, Đ : Kinh độ 71 độ 28.00030′ Đ

  • 1: Sửa chữa GPS

  • 07: Số lượng vệ tinh đang được theo dõi

  • 1.43 : Pha loãng ngang của vị trí

  • 134.5, M : Điều này cho thấy độ cao (m) so với mực nước biển

  • 42.9, M: Chiều cao của Geoid (mực nước biển trung bình)

  • Trường trống: thời gian tính bằng giây kể từ lần cập nhật DGPS cuối cùng

  • Trường trống: Số ID trạm DGPS

  • *78: Dữ liệu tổng kiểm tra

Sử dụng Thư viện TinyGPS ++ để phân tích cú pháp dữ liệu NMEA

Chúng tôi sẽ sử dụng Arduino IDE để lập trình UNO Arduino của chúng tôi. Để lập trình NodeMCU của chúng tôi để phân tích cú pháp tin nhắn NMEA một cách dễ dàng, chúng tôi sẽ được yêu cầu cài đặt thư viện TinyGPS ++.h.

Ngoài các chức năng, chúng tôi sẽ sử dụng trong bản phác thảo với TinyGPS ++ sẽ giúp chúng tôi truy cập kinh độ, vĩ độ của vị trí cũng như ngày và giờ hiện tại, chúng tôi cũng có một số chức năng bổ sung có sẵn bởi thư viện này:

  • gps.speed.value(): Hàm này cung cấp cho chúng ta tốc độ mặt đất hiện tại trong 100 phần của một nút thắt.

  • gps.course.value (): Hàm này cung cấp cho chúng ta khóa học cơ bản hiện tại trong 100 phần của một mức độ

  • gps.hdop.value(): Hàm này cung cấp cho chúng ta độ pha loãng ngang của độ chính xác (GPS)

  • gps.satellites.value(): Hàm này cung cấp cho chúng ta số lượng vệ tinh đang được theo dõi

  • age(): Phương thức này trả về số mili giây được truyền kể từ lần cập nhật gần đây nhất


Cài đặt thư viện TinyGPS ++

Để làm cho dự án của chúng tôi dễ dàng hơn, chúng tôi sẽ cài đặt thư viện TinyGPS ++ để dễ dàng xử lý dữ liệu nhận được từ mô-đun GPS. Để tải xuống thư viện,  Nhấp vào 'Mã' và sau đó 'Tải xuống Zip'.

Cài đặt thư viện TinyGPS ++

Bạn phải vào Sketch > Include Library > Add .zip Library bên trong IDE để thêm thư viện.

Arduino Sketch NodeMáy chủ Web GPS MCU

Mở Arduino IDE của bạn và đi tới Tệp > Mới. Một tệp mới sẽ mở ra. Sao chép mã được cung cấp bên dưới trong tệp đó và lưu nó.

Bản phác thảo này sẽ hiển thị vĩ độ, kinh độ của vị trí cùng với ngày và giờ hiện tại trong một máy chủ web. Điều này sẽ đạt được thông qua các chức năng của librray TinyGPS ++ sẽ dễ dàng phân tích cú pháp thông qua thông báo NMEA và hiển thị nó ở định dạng thuận tiện dễ dàng. Hơn nữa, chúng tôi cũng sẽ bao gồm một liên kết đến vị trí trong Google Maps trong máy chủ web.

#include <TinyGPS++.h>

#include <SoftwareSerial.h>

#include <ESP8266WiFi.h>

 

TinyGPSPlus gps;

SoftwareSerial SerialGPS(4, 5); 

 

const char* ssid = "MASTERS";

const char* password = "english123";

 

float Latitude , Longitude;

int year , month , date, hour , minute , second;

String DateString , TimeString , LatitudeString , LongitudeString;

 

 

WiFiServer server(80);

void setup()

{

  Serial.begin(9600);

  SerialGPS.begin(9600);

  Serial.println();

  Serial.print("Connecting");

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED)

  {

    delay(500);

    Serial.print(".");

  }

  Serial.println("");

  Serial.println("WiFi connected");

 

  server.begin();

  Serial.println("Server started");

  Serial.println(WiFi.localIP());

}

 

void loop()

{

  while (SerialGPS.available() > 0)

    if (gps.encode(SerialGPS.read()))

    {

      if (gps.location.isValid())

      {

        Latitude = gps.location.lat();

        LatitudeString = String(Latitude , 6);

        Longitude = gps.location.lng();

        LongitudeString = String(Longitude , 6);

      }

 

      if (gps.date.isValid())

      {

        DateString = "";

        date = gps.date.day();

        month = gps.date.month();

        year = gps.date.year();

 

        if (date < 10)

        DateString = '0';

        DateString += String(date);

 

        DateString += " / ";

 

        if (month < 10)

        DateString += '0';

        DateString += String(month);

        DateString += " / ";

 

        if (year < 10)

        DateString += '0';

        DateString += String(year);

      }

 

      if (gps.time.isValid())

      {

        TimeString = "";

        hour = gps.time.hour()+ 5; //adjust UTC

        minute = gps.time.minute();

        second = gps.time.second();

    

        if (hour < 10)

        TimeString = '0';

        TimeString += String(hour);

        TimeString += " : ";

 

        if (minute < 10)

        TimeString += '0';

        TimeString += String(minute);

        TimeString += " : ";

 

        if (second < 10)

        TimeString += '0';

        TimeString += String(second);

      }

 

    }

  WiFiClient client = server.available();

  if (!client)

  {

    return;

  }

 

  //Response

  String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n <!DOCTYPE html> <html> <head> <title>NEO-6M GPS Readings</title> <style>";

  s += "table, th, td {border: 1px solid blue;} </style> </head> <body> <h1  style=";

  s += "font-size:300%;";

  s += " ALIGN=CENTER>NEO-6M GPS Readings</h1>";

  s += "<p ALIGN=CENTER style=""font-size:150%;""";

  s += "> <b>Location Details</b></p> <table ALIGN=CENTER style=";

  s += "width:50%";

  s += "> <tr> <th>Latitude</th>";

  s += "<td ALIGN=CENTER >";

  s += LatitudeString;

  s += "</td> </tr> <tr> <th>Longitude</th> <td ALIGN=CENTER >";

  s += LongitudeString;

  s += "</td> </tr> <tr>  <th>Date</th> <td ALIGN=CENTER >";

  s += DateString;

  s += "</td></tr> <tr> <th>Time</th> <td ALIGN=CENTER >";

  s += TimeString;

  s += "</td>  </tr> </table> ";

 

  

  if (gps.location.isValid())

  {

    s += "<p align=center><a style=""color:RED;font-size:125%;"" href=""http://maps.google.com/maps?&z=15&mrt=yp&t=k&q=";

    s += LatitudeString;

    s += "+";

    s += LongitudeString;

    s += """ target=""_top"">Click here</a> to open the location in Google Maps.</p>";

  }

 

  s += "</body> </html> \n";

 

  client.print(s);

  delay(100);

 

}

Mã hoạt động như thế nào?

Đầu tiên, chúng tôi sẽ bao gồm các thư viện được yêu cầu cho dự án này. Thư viện TinyGPS ++ sẽ được sử dụng để trích xuất dữ liệu GPS hữu ích trong khi thư viện SoftwareSerial sẽ được sử dụng vì chúng ta là phần mềm nối tiếp để giao tiếp giữa hai thiết bị. ESP8266WiFi.h sẽ được yêu cầu để kết nối với bo mạch bằng WiFi.

#include <TinyGPS++.h>

#include <SoftwareSerial.h>

#include <ESP8266WiFi.h>

Sau đó, chúng ta sẽ thiết lập các chân RX và TX sẽ được truyền dưới dạng tham số bên trong đối tượng SoftwareSerial được gọi là SerialGPS().

SoftwareSerial SerialGPS(4, 5);  //RX,TX

Ngoài ra, chúng ta sẽ tạo một đối tượng TinyGPSPlus được gọi là 'gps' mà chúng ta sẽ sử dụng sau này trong bản phác thảo để thu thập dữ liệu.

TinyGPSPlus gps;

Tiếp theo, chúng ta sẽ tạo hai biến toàn cục, một biến cho SSID và một biến khác cho mật khẩu. Chúng sẽ giữ thông tin đăng nhập mạng của chúng tôi sẽ được sử dụng để kết nối với bộ định tuyến không dây của chúng tôi. Thay thế cả hai bằng thông tin đăng nhập mạng của bạn để đảm bảo kết nối thành công.

const char* ssid = "Your_SSID";

const char* password = "Your_Password";

Hơn nữa, chúng tôi sẽ tạo một số biến loại int, float và string để lưu trữ các tham số GPS.

float Latitude , Longitude;

int year , month , date, hour , minute , second;

String DateString , TimeString , LatitudeString , LongitudeString;

Đối tượng WiFiServer sẽ được sử dụng để thiết lập máy chủ web. Chúng ta sẽ truyền cổng HTTP mặc định là 80, làm đầu vào cho hàm xây dựng. Đây sẽ là cổng nơi máy chủ sẽ lắng nghe các yêu cầu.

WiFiServer server(80);

thiết lập()

Bên trong hàm setup(), chúng ta sẽ mở giao tiếp nối tiếp cho cả cổng ESP8266 và cổng GPS với tốc độ truyền 9600. NEO-6M có tốc độ truyền mặc định là 9600 vì vậy chúng tôi đang sử dụng 9600.

Serial.begin(9600);

SerialGPS.begin(9600);

Phần mã sau đây sẽ kết nối bo mạch ESP8266 của chúng tôi với mạng cục bộ có thông tin đăng nhập mạng mà chúng tôi đã chỉ định ở trên. Sau khi kết nối được thiết lập, địa chỉ IP của bảng sẽ được in trên màn hình nối tiếp. Điều này sẽ giúp chúng tôi thực hiện một yêu cầu đến máy chủ.

  Serial.println();

  Serial.print("Connecting");

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED)

  {

    delay(500);

    Serial.print(".");

  }

  Serial.println("");

  Serial.println("WiFi connected");

 

  server.begin();

  Serial.println("Server started");

  Serial.println(WiFi.localIP());

vòng lặp()

Bên trong hàm loop(), trước tiên chúng ta sẽ kiểm tra xem dữ liệu GPS có khả dụng hay không và bắt đầu đọc nó.

 while (SerialGPS.available() > 0)

    if (gps.encode(SerialGPS.read()))

Sau đó, chúng tôi sẽ kiểm tra xem vị trí có hợp lệ hay không. Đối với một vị trí hợp lệ, chúng tôi sẽ trích xuất các giá trị kinh độ và vĩ độ và sau đó lưu chúng ở định dạng chuỗi trong các biến tương ứng của chúng. Các biến chuỗi sẽ được sử dụng để hiển thị thông tin trên máy chủ web.

if (gps.location.isValid())

      {

        Latitude = gps.location.lat();

        LatitudeString = String(Latitude , 6);

        Longitude = gps.location.lng();

        LongitudeString = String(Longitude , 6);

      }

Tương tự như vậy, chúng tôi sẽ làm theo quy trình tương tự và kiểm tra xem ngày hợp lệ. Đối với một ngày hợp lệ, chúng tôi sẽ trích xuất ngày, tháng và năm và sau đó lưu ở định dạng chuỗi trong các biến tương ứng của chúng.

if (gps.date.isValid())

      {

        DateString = "";

        date = gps.date.day();

        month = gps.date.month();

        year = gps.date.year();

 

        if (date < 10)

        DateString = '0';

        DateString += String(date);

 

        DateString += " / ";

 

        if (month < 10)

        DateString += '0';

        DateString += String(month);

        DateString += " / ";

 

        if (year < 10)

        DateString += '0';

        DateString += String(year);

      }

Tương tự như vậy, chúng tôi sẽ làm theo quy trình tương tự và kiểm tra thời gian hợp lệ. Trong một thời gian hợp lệ, chúng tôi sẽ trích xuất giờ, phút và giây và sau đó lưu nó ở định dạng chuỗi trong các biến tương ứng của chúng. Ngoài ra, chúng tôi cũng đã điều chỉnh độ lệch UTC theo vị trí của chúng tôi. Bạn sẽ phải tự điều chỉnh nó.

 if (gps.time.isValid())

      {

        TimeString = "";

        hour = gps.time.hour()+ 5; //adjust UTC

        minute = gps.time.minute();

        second = gps.time.second();

    

        if (hour < 10)

        TimeString = '0';

        TimeString += String(hour);

        TimeString += " : ";

 

        if (minute < 10)

        TimeString += '0';

        TimeString += String(minute);

        TimeString += " : ";

 

        if (second < 10)

        TimeString += '0';

        TimeString += String(second);

      }

Khách hàng được kết nối với máy chủ.

 WiFiClient client = server.available();

  if (!client)

  {

    return;

  }

Đây là phản hồi được gửi đến khách hàng. Đây 's' là một chuỗi chứa mã HTML cho máy chủ web cùng với các tham số GPS. Chúng tôi đã tạo một bảng để hiển thị các giá trị Vĩ độ, Kinh độ, Ngày và Giờ trên máy chủ web. Chúng sẽ được nhận bởi mô-đun GPS NEO-6M.

 //Response

  String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n <!DOCTYPE html> <html> <head> <title>NEO-6M GPS Readings</title> <style>";

  s += "table, th, td {border: 1px solid blue;} </style> </head> <body> <h1  style=";

  s += "font-size:300%;";

  s += " ALIGN=CENTER>NEO-6M GPS Readings</h1>";

  s += "<p ALIGN=CENTER style=""font-size:150%;""";

  s += "> <b>Location Details</b></p> <table ALIGN=CENTER style=";

  s += "width:50%";

  s += "> <tr> <th>Latitude</th>";

  s += "<td ALIGN=CENTER >";

  s += LatitudeString;

  s += "</td> </tr> <tr> <th>Longitude</th> <td ALIGN=CENTER >";

  s += LongitudeString;

  s += "</td> </tr> <tr>  <th>Date</th> <td ALIGN=CENTER >";

  s += DateString;

  s += "</td></tr> <tr> <th>Time</th> <td ALIGN=CENTER >";

  s += TimeString;

  s += "</td>  </tr> </table> ";

 

  

  if (gps.location.isValid())

  {

    s += "<p align=center><a style=""color:RED;font-size:125%;"" href=""http://maps.google.com/maps?&z=15&mrt=yp&t=k&q=";

    s += LatitudeString;

    s += "+";

    s += LongitudeString;

    s += """ target=""_top"">Click here</a> to open the location in Google Maps.</p>";

  }

 

  s += "</body> </html> \n";

 

  client.print(s);

  delay(100);

Demonstration

Để xem trình diễn của đoạn mã trên, hãy tải mã lên bảng của bạn. Tuy nhiên, trước khi tải mã lên, hãy đảm bảo chọn NodeMCU 1.0 từ Bảng > Công cụ.

chọn bảng ESP8266 NodeMCU

Đồng thời chọn cổng COM chính xác mà bo mạch được kết nối từ Công cụ > Cổng.

Cổng COM ESP8266

Sau khi mã được tải lên NodeMCU, hãy mở màn hình nối tiếp và đặt tốc độ truyền thành 9600. Bạn sẽ có thể thấy địa chỉ IP của mô-đun ESP8266 sau khi nó kết nối với WiFi.

ESP8266 với bản demo màn hình nối tiếp NEO 6MMàn hình nối tiếp

Bây giờ hãy nhập địa chỉ IP này vào một trình duyệt web mới và nhấn enter. Máy chủ web sẽ mở ra. Nó sẽ liệt kê các thông số GPS bao gồm kinh độ, vĩ độ, ngày hiện tại và thời gian hiện tại (24 giờ) như hình dưới đây.

ESP8266 với NEO 6M web sever demo 1

 

Nếu bạn nhấp vào liên kết 'Nhấp vào đây', Google Map sẽ mở ra hiển thị vị trí.

ESP8266 với NEO 6M web sever demo 2

>>> 100+ Mã Sản Phẩm Dây Rút: https://mecsu.vn/san-pham/day-rut-nhua.5op

>>> 1000+ Mã Sản Phẩm Đầu Cosse: https://mecsu.vn/san-pham/dau-cosse.Q1j

Bài viết cùng chuyên mục

NHANH

NHANH

Vì Đổi mới liên tục nên Nhanh hơn

ĐÚNG

ĐÚNG

Coi trọng và ưu tiên việc làm Đúng

ĐỦ

ĐỦ

Tìm và mua Đủ Đơn hàng hơn

KỊP THỜI

KỊP THỜI

Hiệu suất tối ưu bởi Kịp Thời hơn