สารบัญ:
- ขั้นตอนที่ 1: ชิ้นส่วนและเครื่องมือ
- ขั้นตอนที่ 2: ค้นหา Google API
- ขั้นตอนที่ 3: ตั้งค่า NodeMCu บน Arduino IDE
- ขั้นตอนที่ 4: ดาวน์โหลด ArduinoJson Library
- ขั้นตอนที่ 5: โปรแกรม
วีดีโอ: GEOLOACATION: 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
มันคือโครงการฝึกงานภาคฤดูร้อนของฉัน ฉันแปลกใจมากเมื่อได้ยินว่าเราสามารถติดตามตำแหน่งอุปกรณ์ใดก็ได้โดยไม่ต้องใช้โมดูล GPS โดยใช้ NodeMCU เท่านั้น ด้วยวิธีนี้เราสามารถติดตามอุปกรณ์ใด ๆ ได้ นอกจากนี้คุณยังแปลกใจว่าเราจะติดตามอุปกรณ์โดยใช้ WiFi เท่านั้นได้อย่างไร นี่คือคำอธิบายการจัดเรียงเพื่อทำความเข้าใจ
- · สแกน WiFi เกือบทั้งหมดของคุณ
- · ส่งตำแหน่งอุปกรณ์นี้ไปยัง Google โดยใช้ Google API
- · ตามนี้ เป็นการค้นหาตำแหน่งอุปกรณ์ของคุณ
- · คุณมีการเชื่อมต่อเครือข่ายที่แข็งแกร่งสำหรับโครงการนี้
ขั้นตอนที่ 1: ชิ้นส่วนและเครื่องมือ
อะไหล่
- NodeMCU (ESP8266 1.0 12E)
- สาย USB
เครื่องมือ
Arduino IDE พร้อมบอร์ด NodeMcu 1.0 12E
Google API
ขั้นตอนที่ 2: ค้นหา Google API
- เปิดเบราว์เซอร์ของคุณและพิมพ์: console.developer.google.com
- สร้างโครงการใหม่
- หลังจากสร้างโครงการใหม่ให้คลิกที่ข้อมูลประจำตัว
- คลิกที่คีย์ API
-
สร้างคีย์ API ของคุณแล้ว
เพื่อความเข้าใจง่ายๆ ดูภาพต่อไปนี้ |>
ขั้นตอนที่ 3: ตั้งค่า NodeMCu บน Arduino IDE
- ดาวน์โหลด Arduino IDE จากลิงค์ต่อไปนี้:- https://www. หลัก/ซอฟต์แวร์ arduino.cc/en/
- เพิ่มบอร์ด Node Mcu บน Arduino IDE
-
สำหรับการอัปโหลดโค้ดบน NodeMCU คุณต้องเพิ่มบอร์ด NodeMCu บน ARDUINO IDE
- ไปที่ไฟล์และการตั้งค่าใน Arduino IDE
- และในส่วนผู้จัดการคณะกรรมการเพิ่มเติม ให้คัดลอกลิงก์ต่อไปนี้
- arduino.esp8266.com/stable/package_esp8266c…
- และคลิกตกลง
- ดาวน์โหลดบอร์ดแล้ว
- ไปที่เครื่องมือและบอร์ด แล้วเลือก NodeMCU 1.0 12E
- ดูภาพ avobe เพื่อให้เข้าใจง่าย
ขั้นตอนที่ 4: ดาวน์โหลด ArduinoJson Library
- ไปที่
Sketch รวมห้องสมุด จัดการห้องสมุด
พิมพ์ Arduino Json ในช่องค้นหา
ดาวน์โหลดไลบรารี ArduinoJson เวอร์ชันล่าสุด
หลังจากดาวน์โหลดห้องสมุดคลิกปิด
เพิ่มห้องสมุดจาก
SketchincludeLibraryArduinoJson
ขั้นตอนที่ 5: โปรแกรม
อัปโหลดโปรแกรมต่อไปนี้บนบอร์ด NodeMCU และดูตำแหน่งอุปกรณ์ของคุณ (บอร์ด NodeMCU 1.0 12E) บนจอภาพแบบอนุกรม
#รวม
#รวม
#รวม
char myssid = "SSID ของคุณ"; // SSID เครือข่ายของคุณ (ชื่อ)
char mypass = "รหัสผ่านของคุณ"; // รหัสผ่านเครือข่ายของคุณ
//ข้อมูลประจำตัวสำหรับ Google GeoLocation API…
const char* Host = "www.googleapis.com";
สตริงหน้านี้ = "/geolocation/v1/geolocate?key=";
// --- รับคีย์ ap ของ Google Maps ที่นี่:
developers.google.com/maps/documentation/geolocation/intro
คีย์สตริง = "คีย์ Google API ของคุณ";//ค้นหาจากขั้นตอนที่ 2
การเรียนการสอน
สถานะ int = WL_IDLE_STATUS;
สตริง jsonString = "{n";
ละติจูดสองเท่า = 0.0;
ลองจิจูดสองเท่า = 0.0;
ความแม่นยำสองเท่า = 0.0;
int more_text = 1; // ตั้งค่าเป็น 1 สำหรับเอาต์พุตการดีบักเพิ่มเติม
การตั้งค่าเป็นโมฆะ () {
Serial.begin(9600);
Serial.println("เริ่ม");
// ตั้งค่า WiFi เป็นโหมดสถานีและ
ตัดการเชื่อมต่อจาก AP หากเคยเชื่อมต่อมาก่อน
WiFi.mode(WIFI_STA);
WiFi. ตัดการเชื่อมต่อ ();
ล่าช้า (100);
Serial.println( การตั้งค่า
เสร็จแล้ว );
// เราเริ่มต้นด้วยการเชื่อมต่อกับ a
เครือข่าย WiFi
Serial.print( กำลังเชื่อมต่อกับ
);
Serial.println (myssid);
WiFi.begin(myssid, mypass);
ในขณะที่ (WiFi.status() !=WL_CONNECTED) {
ล่าช้า (500);
Serial.print(".");
}
Serial.println(".");
}
วงเป็นโมฆะ () {
ถ่าน bssid[6];
DynamicJsonBuffer jsonBuffer;
Serial.println("เริ่มสแกน");
// WiFi.scanNetworks จะกลับมา
จำนวนเครือข่ายที่พบ
int n = WiFi.scanNetworks();
Serial.println("สแกนโดน");
ถ้า (n == 0)
Serial.println("ไม่พบเครือข่าย");
อื่น
{
Serial.print(n);
Serial.println("เครือข่ายที่พบ…");
ถ้า (more_text) {
// พิมพ์ json ที่จัดรูปแบบ…
Serial.println("{");
Serial.println("\"homeMobileCountryCode\":234, "); // นี่คือ MCC ของสหราชอาณาจักรที่แท้จริง
Serial.println("\"homeMobileNetworkCode\":27, "); // และ MNC. ของสหราชอาณาจักรที่แท้จริง
Serial.println("\"radioType\":\"gsm\", "); //สำหรับแกรม
Serial.println("\"ผู้ให้บริการ\":\"Vodafone\", "); //เกี่ยวข้องกับโวดาโฟน
Serial.println("\"cellTowers\": ["); // ฉันไม่ได้รายงานเสาส่งสัญญาณใดๆ
Serial.println("], ");
Serial.println("\"wifiAccessPoints\": [");
สำหรับ (int i = 0; i < n; ++i)
{
Serial.println("{");
Serial.print("\"macAddress\": \"");
Serial.print(WiFi. BSSIDstr(i));
Serial.println("\", ");
Serial.print("\"signalStrength\": ");
Serial.println(WiFi. RSSI(ผม));
ถ้า (ผม < n - 1)
{
Serial.println("}, ");
}
อื่น
{
Serial.println("}");
}
}
Serial.println("]");
Serial.println("}");
}
Serial.println(" ");
}
// ตอนนี้สร้าง jsonString…
jsonString = "{n";
jsonString +="\"homeMobileCountryCode\": 234, \n"; // นี่คือ MCC ของสหราชอาณาจักรที่แท้จริง
jsonString +="\"homeMobileNetworkCode\": 27, \n"; // และ MNC. ของสหราชอาณาจักรที่แท้จริง
jsonString +="\"radioType\": \"gsm\", \n"; // สำหรับ gsm
jsonString +="\"ผู้ให้บริการ\": \"Vodafone\", \n"; // เกี่ยวข้องกับ Vodafone
jsonString +="\"wifiAccessPoints\": [n";
สำหรับ (int j = 0; j < n; ++j)
{
jsonString += "{n";
jsonString +="\"macAddress\": \"";
jsonString +=(WiFi. BSSIDstr(j));
jsonString +="\", \n";
jsonString +="\"signalStrength\": ";
jsonString += WiFi. RSSI(j);
jsonString += "\n";
ถ้า (j < n - 1)
{
jsonString +="}, \n";
}
อื่น
{
jsonString +="}\n";
}
}
jsonString += ("]\n");
jsonString += ("}\n");
//--------------------------------------------------------------------
Serial.println("");
ไคลเอนต์ WiFiClientSecure;
//เชื่อมต่อกับไคลเอนต์และทำการโทร api
Serial.print("ขอ URL: ");
// ---- รับรหัส Google Maps Api ที่นี่ ลิงก์:
Serial.println("https://" + (สตริง)โฮสต์ + หน้านี้ +"PUT-YOUR-GOOGLE-MAPS-API-KEY-HERE");
Serial.println(" ");
if (client.connect (โฮสต์ 443)) {
Serial.println("เชื่อมต่อแล้ว");
client.println("POST" + หน้านี้ + คีย์ +"
client.println("โฮสต์:" + (สตริง) โฮสต์);
client.println("การเชื่อมต่อ: ปิด");
client.println("ประเภทเนื้อหา: แอปพลิเคชัน/json");
client.println("ตัวแทนผู้ใช้: Arduino/1.0");
client.print("เนื้อหา-ความยาว: ");
client.println(jsonString.length());
client.println();
client.print(jsonString);
ล่าช้า (500);
}
// อ่านและแยกบรรทัดทั้งหมดของ
คำตอบจากเซิฟเวอร์
ในขณะที่ (client.available ()) {
สตริงบรรทัด =client.readStringUntil('\r');
ถ้า (more_text) {
Serial.print(บรรทัด);
}
JsonObject& root =jsonBuffer.parseObject(บรรทัด);
ถ้า (root.success()) {
ละติจูด =root["location"]["lat"];
ลองจิจูด =root["location"]["lng"];
ความแม่นยำ = รูท["ความแม่นยำ"];
}
}
Serial.println("กำลังปิดการเชื่อมต่อ");
Serial.println();
client.stop();
Serial.print("ละติจูด =");
Serial.println (ละติจูด, 6);
Serial.print("ลองจิจูด =");
Serial.println(ลองจิจูด, 6);
Serial.print("ความแม่นยำ =");
Serial.println (ความแม่นยำ);
ล่าช้า (10000);
Serial.println();
Serial.println("กำลังเริ่มต้นใหม่…");
Serial.println();
ล่าช้า (2000);
}
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: 3 ขั้นตอน
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: ในบทช่วยสอนนี้ ฉันจะแสดงขั้นตอนสำคัญในการติดตั้งปลั๊กอิน WordPress ให้กับเว็บไซต์ของคุณ โดยทั่วไป คุณสามารถติดตั้งปลั๊กอินได้สองวิธี วิธีแรกคือผ่าน ftp หรือผ่าน cpanel แต่ฉันจะไม่แสดงมันเพราะมันสอดคล้องกับ
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
เครื่อง Rube Goldberg 11 ขั้นตอน: 8 ขั้นตอน
เครื่อง 11 Step Rube Goldberg: โครงการนี้เป็นเครื่อง 11 Step Rube Goldberg ซึ่งออกแบบมาเพื่อสร้างงานง่ายๆ ในรูปแบบที่ซับซ้อน งานของโครงการนี้คือการจับสบู่ก้อนหนึ่ง