תוכן עניינים:

גיאולוגציה: 5 שלבים
גיאולוגציה: 5 שלבים

וִידֵאוֹ: גיאולוגציה: 5 שלבים

וִידֵאוֹ: גיאולוגציה: 5 שלבים
וִידֵאוֹ: תפסתי אותה על חםםםם!!!!!! 2024, נוֹבֶמבֶּר
Anonim
גיאולוקציה
גיאולוקציה

זה פרויקט ההתמחות הקיצית שלי. אני באמת מפתיע כשאני שומע שאנחנו יכולים לאתר מיקום כל מכשיר בלי להשתמש במודול GPS רק באמצעות NodeMCU. באמצעות זה אנו יכולים לעקוב אחר כל מכשיר. אתה גם מפתיע כיצד נוכל לאתר מכשיר באמצעות WiFi בלבד. להלן תיאור המיון כדי להבין אותו.

  • · זה סרוק את כמעט כל ה- WiFi שלך.
  • · שלח את מיקום המכשיר הזה ל- Google באמצעות Google API
  • · על פי זה זה אתר את מיקום המכשיר שלך
  • · יש לך חיבור רשת חזק לפרויקט זה.

שלב 1: חלקים וכלי

חלקים

  • NodeMCU (ESP8266 1.0 12E)
  • כבל יו אס בי

כלים

Arduino IDE עם לוח NodeMcu 1.0 12E

ממשק API של Google

שלב 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/iw/
  • הוסף לוח Node MCu ב- Arduino IDE
  • להעלאת קוד ב- NodeMCU עליך להוסיף את לוח NodeMCu ב- ARDUINO IDE.

    • עבור לקובץ והעדפות ב- Arduino IDE
    • ובסעיף ניהול מועצת המנהלים הנוספת העתק את הקישור הבא
    • arduino.esp8266.com/stable/package_esp8266c…
    • ולחץ על אישור
    • הלוח מוריד
    • עבור אל הכלים והלוח ובחר NodeMCU 1.0 12E
    • עיין בתמונת avobe להבנה קלה

שלב 4: הורד את ספריית ArduinoJson

הורד את ספריית ArduinoJson
הורד את ספריית ArduinoJson
  • עבור אל
  • סקיצה כלול ספרייה נהל ספריה

    הקלד Arduino Json בתיבת החיפוש

    הורד את הגירסה העדכנית ביותר של ספריית ArduinoJson

    לאחר הורדת הספרייה לחץ על סגור

    הוסף ספרייה מ

    SketchincludeLibraryArduinoJson

שלב 5: תכנית

העלה את התוכנית הבאה ללוח NodeMCU. וראה את מיקום המכשיר שלך (לוח NodeMCU 1.0 12E) במסך סידורי.

#לִכלוֹל

#לִכלוֹל

#לִכלוֹל

char myssid = "ה- SSID שלך"; // SSID הרשת שלך (שם)

char mypass = "הסיסמה שלך"; // סיסמת הרשת שלך

// אישורים לממשק API GeoLocation של Google …

const char* Host = "www.googleapis.com";

String thisPage = "/geolocation/v1/geolocate? Key =";

// --- קבל כאן מפתח ap של google maps:

developers.google.com/maps/documentation/geolocation/intro

String key = "מפתח ה- API של Google שלך"; // מצא משלב 2

הוראה

int 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.disconnect ();

עיכוב (100);

Serial.println ( התקנה

בוצע );

// אנו מתחילים בחיבור לא

רשת WiFi

Serial.print ( מתחבר אל

);

Serial.println (myssid);

WiFi.begin (myssid, mypass);

בעוד (WiFi.status ()! = WL_CONNECTED) {

עיכוב (500);

Serial.print (".");

}

Serial.println (".");

}

לולאת חלל () {

char bssid [6];

DynamicJsonBuffer jsonBuffer;

Serial.println ("התחלת סריקה");

// WiFi.scanNetworks יחזור

מספר הרשתות שנמצאו

int n = WiFi.scanNetworks ();

Serial.println ("scandone");

אם (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 / ","); // עבור gsm

Serial.println ("\" ספק / ": \" Vodafone / ","); // קשור ל- 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 (i));

אם (i <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 מבקשת:");

// ---- קבל כאן את מפתח ה- Api של מפות Google, קישור:

Serial.println ("https://" + (String) Host + thisPage + "PUT-YOUR-GOOGLE-MAPS-API-KEY-HERE");

Serial.println ("");

if (client.connect (Host, 443)) {

Serial.println ("מחובר");

client.println ("POST" + thisPage + מפתח + "HTTP/1.1");

client.println ("Host:" + (String) Host);

client.println ("חיבור: סגור");

client.println ("סוג תוכן: יישום/json");

client.println ("משתמש-סוכן: Arduino/1.0");

client.print ("אורך התוכן:");

client.println (jsonString.length ());

client.println ();

client.print (jsonString);

עיכוב (500);

}

// קרא ונתח את כל השורות של

התשובה מהשרת

while (client.available ()) {

קו מחרוזת = client.readStringUntil ('\ r');

אם (more_text) {

Serial.print (שורה);

}

JsonObject & root = jsonBuffer.parseObject (line);

if (root.success ()) {

latitude = root ["מיקום"] ["lat"];

longitude = root ["מיקום"] ["lng"];

דיוק = שורש ["דיוק"];

}

}

Serial.println ("סגירת חיבור");

Serial.println ();

client.stop ();

Serial.print ("Latitude =");

Serial.println (קו הרוחב, 6);

Serial.print ("אורך =");

Serial.println (אורך, 6);

Serial.print ("דיוק =");

Serial.println (דיוק);

עיכוב (10000);

Serial.println ();

Serial.println ("הפעלה מחדש …");

Serial.println ();

עיכוב (2000);

}

מוּמלָץ: