Inhaltsverzeichnis:
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-13 06:56
Es ist mein Sommerpraktikumsprojekt. Ich bin wirklich überrascht, wenn ich höre, dass wir den Standort jedes Geräts verfolgen können, ohne das GPS-Modul nur mit NodeMCU zu verwenden. Dadurch können wir jedes Gerät verfolgen. Sie sind auch überrascht, wie wir Geräte nur mit WiFi verfolgen können. Hier sind die Sortierbeschreibungen, um es zu verstehen.
- · Es scannt fast Ihr gesamtes WLAN.
- · Diesen Gerätestandort über die Google API an Google senden
- · Demnach ist es Ihren Gerätestandort zu lokalisieren
- · Sie haben eine starke Netzwerkverbindung für dieses Projekt.
Schritt 1: Teile & Werkzeug
Teile
- KnotenMCU (ESP8266 1.0 12E)
- USB-Kabel
Werkzeuge
Arduino-IDE mit NodeMcu 1.0 12E-Board
Google-API
Schritt 2: Google API finden
- Öffnen Sie Ihren Browser und geben Sie ein: console.developer.google.com
- Erstellen Sie ein neues Projekt
- Klicken Sie nach Erstellen eines neuen Projekts auf Anmeldeinformationen
- Klicken Sie auf API-Schlüssel
-
Ihr API-Schlüssel wurde generiert
Zum leichteren Verständnis siehe folgendes Bild |>
Schritt 3: NodeMCu auf Arduino IDE einrichten
- Laden Sie Arduino IDE von folgendem Link herunter: - https://www. Main/Software arduino.cc/de/
- Node MCu-Board auf Arduino IDE hinzufügen
-
Um Code auf NodeMCU hochzuladen, müssen Sie das NodeMCu-Board auf der ARDUINO IDE hinzufügen.
- Gehen Sie zu Datei & Einstellungen in Arduino IDE
- Und kopieren Sie im Abschnitt Zusätzliche Board-Manager den folgenden Link
- arduino.esp8266.com/stable/package_esp8266c…
- und klicke auf Ok
- Das Board wird heruntergeladen
- Gehen Sie zu Tools und Board und wählen Sie NodeMCU 1.0 12E
- Sehen Sie sich das Avobe-Bild zum leichteren Verständnis an
Schritt 4: ArduinoJson-Bibliothek herunterladen
- Gehe zum
Skizze Bibliothek einbeziehen Bibliothek verwalten
Geben Sie Arduino Json in das Suchfeld ein
Laden Sie die neueste Version der ArduinoJson-Bibliothek herunter
Klicken Sie nach dem Herunterladen der Bibliothek auf Schließen
Bibliothek hinzufügen aus
SketchincludeLibraryArduinoJson
Schritt 5: Programm
Laden Sie das folgende Programm auf die NodeMCU-Platine hoch. und sehen Sie den Standort Ihres Geräts (NodeMCU 1.0 12E-Platine) auf dem seriellen Monitor.
#enthalten
#enthalten
#enthalten
char myssid = "Ihre SSID"; // Ihre Netzwerk-SSID (Name)
char mypass = "Ihr Passwort"; // Ihr Netzwerk-Passwort
//Anmeldedaten für die Google GeoLocation API…
const char* Host = "www.googleapis.com";
String thisPage = "/geolocation/v1/geolocate?key=";
// --- Holen Sie sich hier einen Google Maps-App-Schlüssel:
developers.google.com/maps/documentation/geolocation/intro
String key = "Ihr Google API-Schlüssel";//Find from step2
Anweisung
int-Status = WL_IDLE_STATUS;
String jsonString = "{n";
doppelter Breitengrad = 0,0;
doppelter Längengrad = 0,0;
doppelte Genauigkeit = 0,0;
int more_text = 1; // auf 1 setzen für mehr Debug-Ausgabe
Leere Einrichtung () {
Serial.begin (9600);
Serial.println ("Start");
// WLAN auf Stationsmodus setzen und
Trennen Sie sich von einem AP, wenn dieser zuvor verbunden war
WiFi.mode(WIFI_STA);
WiFi.disconnect();
Verzögerung (100);
Serial.println( Setup
getan );
// Wir beginnen mit der Verbindung zu a
WLAN-Netzwerk
Serial.print( Verbinden mit
);
Serial.println (myssid);
WiFi.begin(myssid, mypass);
while (WiFi.status() !=WL_CONNECTED) {
Verzögerung (500);
Serial.print(".");
}
Serial.println(".");
}
Leere Schleife () {
char bssid[6];
DynamicJsonBuffer jsonBuffer;
Serial.println("Scanstart");
// WiFi.scanNetworks wird zurückkehren
die Anzahl der gefundenen Netzwerke
int n = WiFi.scanNetworks();
Serial.println("scandone");
wenn (n == 0)
Serial.println ("keine Netzwerke gefunden");
anders
{
Serial.print (n);
Serial.println("Netzwerke gefunden…");
if (more_text) {
// Drucken Sie das formatierte JSON aus…
Serial.println("{");
Serial.println("\"homeMobileCountryCode\":234, "); // das ist ein echter UK MCC
Serial.println("\"homeMobileNetworkCode\":27, "); // und ein echter britischer MNC
Serial.println("\"radioType\":\"gsm\", "); //für GSM
Serial.println("\"Träger\":\"Vodafone\", "); //verbunden mit Vodafone
Serial.println("\"cellTowers\": ["); // Ich melde keine Mobilfunkmasten
Serial.println("], ");
Serial.println("\"wifiAccessPoints\": [");
für (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));
wenn (i < n - 1)
{
Serial.println("}, ");
}
anders
{
Serial.println("}");
}
}
Serial.println("]");
Serial.println("}");
}
Serial.println(" ");
}
// baue jetzt den jsonString…
jsonString = "{n";
jsonString +="\"homeMobileCountryCode\": 234, \n"; // das ist ein echter UK MCC
jsonString +="\"homeMobileNetworkCode\": 27, \n"; // und ein echter britischer MNC
jsonString +="\"radioType\": \"gsm\", \n"; // für gsm
jsonString +="\"Träger\": \"Vodafone\", \n"; // mit Vodafone verbunden
jsonString +="\"wifiAccessPoints\": [n";
für (int j = 0; j < n; ++j)
{
jsonString += "{n";
jsonString +="\"macAddress\": \"";
jsonString +=(WiFi. BSSIDstr(j));
jsonString +="\", \n";
jsonString +="\"signalStrength\": ";
jsonString += WiFi. RSSI(j);
jsonString += "\n";
wenn (j < n - 1)
{
jsonString +="}, \n";
}
anders
{
jsonString +="}\n";
}
}
jsonString += ("]\n");
jsonString += ("}\n");
//--------------------------------------------------------------------
Serial.println("");
WiFiClientSecure-Client;
// Verbinden Sie sich mit dem Client und machen Sie den API-Aufruf
Serial.print ("Anfordernde URL: ");
// ---- Holen Sie sich den Google Maps Api Key hier, Link:
Serial.println ("https://" + (String)Host + thisPage +"PUT-YOUR-GOOGLE-MAPS-API-KEY-HERE");
Serial.println(" ");
if (client.connect(Host, 443)) {
Serial.println("Verbunden");
client.println("POST" + thisPage + key + "HTTP/1.1");
client.println("Host:" + (String)Host);
client.println("Verbindung: schließen");
client.println("Inhaltstyp: Anwendung/json");
client.println("Benutzer-Agent: Arduino/1.0");
client.print("Inhaltslänge: ");
client.println(jsonString.length());
client.println();
client.print (jsonString);
Verzögerung (500);
}
// Lesen und analysieren Sie alle Zeilen von
die Antwort vom Server
while (client.verfügbar()) {
String-Zeile =client.readStringUntil('\r');
if (more_text) {
Serial.print (Zeile);
}
JsonObject& root =jsonBuffer.parseObject(line);
if (root.success()) {
Breite = root["location"]["lat"];
Längengrad = root["location"]["lng"];
Genauigkeit = root["Genauigkeit"];
}
}
Serial.println ("Verbindung schließen");
Serial.println();
client.stop();
Serial.print ("Breitengrad =");
Serial.println (Breitengrad, 6);
Serial.print ("Längengrad =");
Serial.println (Längengrad, 6);
Serial.print ("Genauigkeit = ");
Serial.println (Genauigkeit);
Verzögerung (10000);
Serial.println();
Serial.println("Neustart…");
Serial.println();
Verzögerung (2000);
}