Mục lục:

Theo dõi vị trí với NodeMCU ESP8266: 10 bước
Theo dõi vị trí với NodeMCU ESP8266: 10 bước

Video: Theo dõi vị trí với NodeMCU ESP8266: 10 bước

Video: Theo dõi vị trí với NodeMCU ESP8266: 10 bước
Video: Điều khiển thiết bị dùng Blynk IOT và nodemcu esp8266 - hẹn giờ ON/OFF - cảnh báo trạng thái từ xa 2024, Tháng mười một
Anonim
Theo dõi vị trí với NodeMCU ESP8266
Theo dõi vị trí với NodeMCU ESP8266

Bạn có tò mò về cách NodeMCU có thể theo dõi vị trí của bạn không? Nó có thể, ngay cả khi không có mô-đun GPS và không có màn hình. Đầu ra sẽ là tọa độ nơi bạn đang ở và bạn sẽ thấy chúng trong màn hình nối tiếp của mình.

Thiết lập sau được sử dụng cho NodeMCU 1.0 (Mô-đun ESP-12E) với Arduino IDE.

  • Windows 10
  • Arduino IDE v. 1.8.4

Bước 1: Bạn cần gì

Những gì bạn cần để làm theo hướng dẫn này là các thành phần sau:

  • Cáp micro USB
  • NodeMCU ESP8266

Hơn nữa, bạn sẽ cần:

  • LocationAPI (từ Unwired Labs)
  • Kết nối với Wi-Fi hoặc điểm phát sóng

Bước 2: Đi tới Phòng thí nghiệm không có dây

Đi tới Phòng thí nghiệm không có dây
Đi tới Phòng thí nghiệm không có dây

Định vị địa lý rất tiện dụng vì khi GPS của bạn bị hỏng, bạn vẫn có thể sử dụng Định vị địa lý để theo dõi vị trí của mình. Máy chủ cung cấp vị trí địa lý của chúng tôi sẽ là https://www.unwiredlabs.com/. Truy cập trang web đó và đăng ký (nút màu cam ở góc trên bên phải).

Bước 3: Đăng ký để nhận mã thông báo API

Đăng ký để nhận mã thông báo API
Đăng ký để nhận mã thông báo API

Trên trang đăng ký, bạn phải điền tên, email (mã thông báo API của bạn sẽ được gửi đến email của bạn) và trường hợp sử dụng (ví dụ: sử dụng cá nhân). Chọn loại tài khoản của bạn. Phiên bản miễn phí sẽ hoạt động tốt, nhưng hãy nhớ rằng bạn bị giới hạn và không thể theo dõi vị trí của bạn 24/7. Bắt đầu nào!

Bước 4: Kiểm tra Email của bạn

Truy cập email của bạn và bạn sẽ thấy mã thông báo API của mình. Sao chép mã thông báo API, vì bạn cần mã đó cho mã mà chúng tôi sẽ sử dụng. Đây là cách email trông như thế này:

Xin chào!

Cảm ơn bạn đã đăng ký với LocationAPI trong Unwired Labs! Mã thông báo API của bạn là 'mã API của bạn ở đây' (không có dấu ngoặc kép). Điều này sẽ cung cấp 100 yêu cầu / ngày miễn phí - mãi mãi.

Nếu bạn muốn theo dõi 5 thiết bị miễn phí, vui lòng trả lời kèm theo các chi tiết sau và chúng tôi sẽ nâng cấp tài khoản của bạn trong vòng 12 giờ:

1. Loại triển khai (Phần cứng / Ứng dụng / Khác):

2. Về dự án của bạn:

3. Trang web:

Bạn có thể đăng nhập vào trang tổng quan của mình tại đây: https://unwiredlabs.com/dashboard. Nếu bạn gặp sự cố hoặc có câu hỏi, hãy trả lời email này và tôi sẽ giúp bạn!

Định vị hạnh phúc!

Sagar

Labs không sử dụng

Bước 5: Các thư viện bạn sẽ cần

Thư viện bạn sẽ cần
Thư viện bạn sẽ cần

Bước tiếp theo là mở Arduino và đi đến quản lý thư viện. Bạn cần cài đặt thư viện ArduinoJson. Các thư viện khác đã được tích hợp sẵn. Khi đã sẵn sàng, bạn có thể bắt đầu viết mã.

Bước 6: Thêm mã trong Arduino để kết nối với LocationAPI

Tạo một bản phác thảo mới và thêm đoạn mã sau vào Arduino. Viết tên wifi / điểm phát sóng và mật khẩu của bạn. Dán mã thông báo API bạn nhận được vào email. Tải mã của bạn lên NodeMCU của bạn.

#bao gồm

#bao gồm

#include "ESP8266WiFi.h"

// SSID mạng (tên) và mật khẩu mạng của bạn

char myssid = "Tên điểm phát sóng / wifi của bạn"; char mypass = "Mật khẩu của bạn";

// url điểm cuối tên máy chủ & vị trí địa lý unwiredlabs

const char * Host = "www.unwiredlabs.com"; String endpoint = "/v2/process.php";

// UnwiredLabs API_Token. Đăng ký tại đây để nhận mã thông báo miễn phí

Chuỗi mã thông báo = "d99cccda52ec0b";

Chuỗi jsonString = "{ n";

// Các biến để lưu trữ phản hồi unwiredlabs

vĩ độ kép = 0,0; kinh độ kép = 0,0; độ chính xác kép = 0,0;

void setup () {

Serial.begin (115200);

// Đặt WiFi thành chế độ trạm và ngắt kết nối khỏi AP nếu nó đã được kết nối trước đó

WiFi.mode (WIFI_STA); WiFi.disconnect (); Serial.println ("Đã thiết lập xong");

// Chúng tôi bắt đầu bằng cách kết nối với mạng WiFi

Serial.print ("Đang kết nối với"); Serial.println (myssid); WiFi.begin (myssid, mypass);

trong khi (WiFi.status ()! = WL_CONNECTED) {

chậm trễ (500); Serial.print ("."); } Serial.println ("."); }

void loop () {

char bssid [6]; DynamicJsonBuffer jsonBuffer;

// WiFi.scanNetworks sẽ trả về số lượng mạng được tìm thấy

int n = WiFi.scanNetworks (); Serial.println ("quét xong");

nếu (n == 0) {

Serial.println ("Không có mạng nào"); } else {Serial.print (n); Serial.println ("mạng tìm thấy"); }

// bây giờ xây dựng jsonString…

jsonString = "{ n"; jsonString + = "\" mã thông báo / ": \" "; jsonString + = mã thông báo; jsonString + =" / ", / n"; jsonString + = "\" id / ": \" saikirandevice01 / ", / n"; jsonString + = "\" wifi / ": [ n"; for (int j = 0; j <n; ++ j) {jsonString + = "{ n"; jsonString + = "\" bssid / ": \" "; jsonString + = (WiFi. BSSIDstr (j)); jsonString + =" / ", / n"; jsonString + = "\" signal / ":"; jsonString + = WiFi. RSSI (j); jsonString + = "\ n"; if (j <n - 1) {jsonString + = "}, / n"; } else {jsonString + = "} n"; }} jsonString + = ("] n"); jsonString + = ("} n"); Serial.println (jsonString);

Máy khách WiFiClientSecure;

// Kết nối với máy khách và thực hiện cuộc gọi api

Serial.println ("URL yêu cầu: https://" + (Chuỗi) Máy chủ + điểm cuối); if (client.connect (Host, 443)) {Serial.println ("Đã kết nối"); client.println ("POST" + endpoint + "HTTP / 1.1"); client.println ("Máy chủ:" + (Chuỗi) Máy chủ); client.println ("Kết nối: đóng"); client.println ("Loại-Nội dung: ứng dụng / json"); client.println ("Tác nhân người dùng: Arduino / 1.0"); client.print ("Nội dung-Độ dài:"); client.println (jsonString.length ()); client.println (); client.print (jsonString); chậm trễ (500); }

// Đọc và phân tích cú pháp tất cả các dòng trả lời từ máy chủ

while (client.available ()) {String line = client.readStringUntil ('\ r'); JsonObject & root = jsonBuffer.parseObject (dòng); if (root.success ()) {latitude = root ["lat"]; longitude = root ["lon"]; độ chính xác = root ["độ chính xác"];

Serial.println ();

Serial.print ("Latitude ="); Serial.println (vĩ độ, 6); Serial.print ("Kinh độ ="); Serial.println (kinh độ, 6); Serial.print ("Độ chính xác ="); Serial.println (độ chính xác); }}

Serial.println ("đóng kết nối");

Serial.println (); client.stop ();

chậm trễ (5000);

}

Bước 7: Mở Serial Monitor để xem bạn đã kết nối chưa

Đi tới các công cụ trong Arduino và mở màn hình nối tiếp. Để xem bạn đã kết nối với Internet chưa, bạn sẽ thấy thông tin sau trong màn hình nối tiếp:

Thiết lập xong

Đang kết nối với (tên wifi của bạn)… quét xong

Bước 8: Lấy tọa độ

Nếu nó hoạt động thành công, bạn sẽ thấy trong quá trình quét toàn bộ danh sách dữ liệu. Điều duy nhất chúng tôi cần là mã dưới URL yêu cầu, vì vậy chúng tôi sẽ cần vĩ độ và kinh độ. Đây là các tọa độ.

URL yêu cầu:

Đã kết nối

Vĩ độ = 52.385259

Kinh độ = 5.196099

Độ chính xác = 41,00

đóng kết nối

Sau 5 giây, mã sẽ liên tục cập nhật và bạn có thể sẽ thấy vĩ độ, kinh độ và độ chính xác thay đổi. Đó là bởi vì API đang cố gắng theo dõi vị trí một cách chính xác nhất có thể.

Bước 9: Truy cập Google Maps

Đi tới Google Maps
Đi tới Google Maps

Truy cập https://www.google.com/maps/ và nhập tọa độ của bạn vào thanh tìm kiếm. Tọa độ cần ghi theo cách sau: 52.385259, 5.196099. Google Maps sẽ hiển thị vị trí của bạn trên bản đồ.

Bước 10: Gửi vị trí đến điện thoại di động của bạn

Gửi vị trí đến điện thoại di động của bạn
Gửi vị trí đến điện thoại di động của bạn

Và… Bạn đã hoàn thành! Do đó, nếu bạn muốn gửi vị trí đến điện thoại di động của mình, bạn hoàn toàn có thể. Google Maps sau đó sẽ gửi một email có tọa độ của bạn nếu bạn muốn.

Chúc bạn định vị vui vẻ!

Đề xuất: