Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
Det är mitt sommarpraktikprojekt. Jag förvånar verkligen när jag hör att vi kan spåra alla enheter utan att använda GPS -modul endast med NodeMCU. Genom detta kan vi spåra vilken enhet som helst. Du förvånar också över hur vi kan spåra enheten med endast WiFi. Här är sorteringsbeskrivningen för att förstå det.
- · Det är Skanna din nästan alla WiFi.
- · Skicka denna enhetsplats till Google med Google API
- · Enligt detta lokaliserar du din enhets plats
- · Du har en stark nätverksanslutning för detta projekt.
Steg 1: Delar och verktyg
Delar
- NodeMCU (ESP8266 1.0 12E)
- USB-kabel
Verktyg
Arduino IDE med NodeMcu 1.0 12E -kort
Googles API
Steg 2: Hitta Google API
- Öppna din webbläsare och skriv: console.developer.google.com
- Skapa ett nytt projekt
- Efter Skapa ett nytt projekt klickar du på referens
- Klicka på API -nyckel
-
Din API -nyckel har genererats
För enkel förståelse se följande bild |>
Steg 3: Konfigurera NodeMCu på Arduino IDE
- Ladda ner Arduino IDE från följande länk:- https:// www. Huvud/programvara arduino.cc/en/
- Lägg till Node MCu -kort på Arduino IDE
-
För att ladda upp kod på NodeMCU måste du lägga till NodeMCu -kortet på ARDUINO IDE.
- GÅ till fil och preferens i Arduino IDE
- Och kopiera följande länk i Ytterligare styrelsechefer
- arduino.esp8266.com/stable/package_esp8266c…
- och klicka på Ok
- Styrelsen laddas ner
- Gå till verktyg och kort och välj NodeMCU 1.0 12E
- Se avobe -bilden för enkel förståelse
Steg 4: Ladda ner ArduinoJson -biblioteket
- Gå till
Sketch Include Library Hantera bibliotek
Skriv Arduino Json i sökrutan
Ladda ner den senaste versionen av ArduinoJson -biblioteket
efter nedladdning av biblioteket, klicka på stäng
Lägg till bibliotek från
SketchincludeLibraryArduinoJson
Steg 5: Program
Ladda upp följande program på NodeMCU -kortet. och se din enhets plats (NodeMCU 1.0 12E -kort) på seriell bildskärm.
#omfatta
#omfatta
#omfatta
char myssid = "Ditt SSID"; // ditt nätverks -SSID (namn)
char mypass = "Ditt lösenord"; // ditt nätverkslösenord
// Referenser för Google GeoLocation API …
const char* Host = "www.googleapis.com";
String thisPage = "/geolocation/v1/geolocate? Key =";
// --- Skaffa en Google maps ap-nyckel här:
developers.google.com/maps/documentation/geolocation/intro
String key = "Your Google API key"; // Hitta från steg 2
Instruktion
int status = WL_IDLE_STATUS;
String jsonString = "{ n";
dubbel latitud = 0,0;
dubbel longitud = 0,0;
dubbel noggrannhet = 0,0;
int more_text = 1; // inställd på 1 för mer felsökning
void setup () {
Serial.begin (9600);
Serial.println ("Start");
// Ställ in WiFi på stationsläge och
koppla från en AP om den tidigare var ansluten
WiFi.mode (WIFI_STA);
WiFi. Koppla bort ();
fördröjning (100);
Serial.println ( Setup
Gjort );
// Vi börjar med att ansluta till en
WiFi -nätverk
Serial.print ( Ansluter till
);
Serial.println (myssid);
WiFi.begin (myssid, mypass);
medan (WiFi.status ()! = WL_CONNECTED) {
fördröjning (500);
Serial.print (".");
}
Serial.println (".");
}
void loop () {
röding bssid [6];
DynamicJsonBuffer jsonBuffer;
Serial.println ("scan start");
// WiFi.scanNetworks återkommer
antalet hittade nätverk
int n = WiFi.scanNetworks ();
Serial.println ("scandone");
om (n == 0)
Serial.println ("inga nätverk hittades");
annan
{
Serial.print (n);
Serial.println ("nätverk hittat …");
om (mer_text) {
// Skriv ut den formaterade json …
Serial.println ("{");
Serial.println ("\" homeMobileCountryCode / ": 234,"); // detta är ett riktigt brittiskt MCC
Serial.println ("\" homeMobileNetworkCode / ": 27,"); // och en riktig brittisk MNC
Serial.println ("\" radioType / ": \" gsm / ","); // för gsm
Serial.println ("\" bärare / ": \" Vodafone / ","); // associerad med Vodafone
Serial.println ("\" cellTowers / ": ["); // Jag rapporterar inga mobiltorn
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));
om (i <n - 1)
{
Serial.println ("},");
}
annan
{
Serial.println ("}");
}
}
Serial.println ("]");
Serial.println ("}");
}
Serial.println ("");
}
// bygg nu jsonString …
jsonString = "{ n";
jsonString += "\" homeMobileCountryCode / ": 234, / n"; // detta är ett riktigt brittiskt MCC
jsonString += "\" homeMobileNetworkCode / ": 27, / n"; // och en riktig brittisk MNC
jsonString += "\" radioType / ": \" gsm / ", / n"; // för gsm
jsonString += "\" bärare / ": \" Vodafone / ", / n"; // associerad med Vodafone
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";
om (j <n - 1)
{
jsonString += "}, / n";
}
annan
{
jsonString += "} n";
}
}
jsonString += ("] n");
jsonString += ("} n");
//--------------------------------------------------------------------
Serial.println ("");
WiFiClientSecure -klient;
// Anslut till klienten och ring api -samtalet
Serial.print ("Begär URL:");
// ---- Hämta Google Maps Api Key här, länk:
Serial.println ("https://" + (String) Host + thisPage + "PUT-YOUR-GOOGLE-MAPS-API-KEY-HERE");
Serial.println ("");
if (client.connect (Host, 443)) {
Serial.println ("Ansluten");
client.println ("POST" + thisPage + key + "HTTP/1.1");
client.println ("Host:" + (String) Host);
client.println ("Anslutning: stäng");
client.println ("Innehållstyp: applikation/json");
client.println ("User-Agent: Arduino/1.0");
client.print ("Content-Length:");
client.println (jsonString.length ());
client.println ();
client.print (jsonString);
fördröjning (500);
}
// Läs och analysera alla rader av
svaret från servern
medan (client.available ()) {
String line = client.readStringUntil ('\ r');
om (mer_text) {
Serial.print (rad);
}
JsonObject & root = jsonBuffer.parseObject (line);
if (root.success ()) {
latitude = root ["location"] ["lat"];
longitude = root ["location"] ["lng"];
precision = root ["precision"];
}
}
Serial.println ("stängande anslutning");
Serial.println ();
client.stop ();
Serial.print ("Latitude =");
Serial.println (latitud, 6);
Serial.print ("Longitud =");
Serial.println (longitud, 6);
Serial.print ("Noggrannhet =");
Serial.println (noggrannhet);
fördröjning (10000);
Serial.println ();
Serial.println ("Startar om …");
Serial.println ();
fördröjning (2000);
}