สารบัญ:

GEOLOACATION: 5 ขั้นตอน
GEOLOACATION: 5 ขั้นตอน

วีดีโอ: GEOLOACATION: 5 ขั้นตอน

วีดีโอ: GEOLOACATION: 5 ขั้นตอน
วีดีโอ: วิธีตั้งค่า Google Maps ก่อนเดินทาง! #catch5 #googlemaps #googlemap 2024, กรกฎาคม
Anonim
ภูมิศาสตร์
ภูมิศาสตร์

มันคือโครงการฝึกงานภาคฤดูร้อนของฉัน ฉันแปลกใจมากเมื่อได้ยินว่าเราสามารถติดตามตำแหน่งอุปกรณ์ใดก็ได้โดยไม่ต้องใช้โมดูล 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

ค้นหา Google API
ค้นหา Google API
ค้นหา Google API
ค้นหา Google API
ค้นหา Google API
ค้นหา Google API
  • เปิดเบราว์เซอร์ของคุณและพิมพ์: console.developer.google.com
  • สร้างโครงการใหม่
  • หลังจากสร้างโครงการใหม่ให้คลิกที่ข้อมูลประจำตัว
  • คลิกที่คีย์ API
  • สร้างคีย์ API ของคุณแล้ว

    เพื่อความเข้าใจง่ายๆ ดูภาพต่อไปนี้ |>

ขั้นตอนที่ 3: ตั้งค่า NodeMCu บน Arduino IDE

ตั้งค่า NodeMCu บน Arduino IDE
ตั้งค่า NodeMCu บน Arduino IDE
ตั้งค่า NodeMCu บน Arduino IDE
ตั้งค่า NodeMCu บน Arduino IDE
ตั้งค่า NodeMCu บน Arduino IDE
ตั้งค่า 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

ดาวน์โหลด ArduinoJson Library
ดาวน์โหลด 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);

}

แนะนำ: