Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Tai mano vasaros praktikos projektas. Aš tikrai nustebau, kai išgirstu, kad galime atsekti bet kurio įrenginio vietą nenaudodami GPS modulio tik naudodami „NodeMCU“. Per tai mes galime atsekti bet kurį įrenginį. Jūs taip pat stebina, kaip galime atsekti įrenginį naudojant tik „WiFi“. Čia yra rūšies aprašymas, kad tai suprastumėte.
- · Tai nuskaitykite beveik visą „WiFi“.
- · Siųsti šio įrenginio vietą „Google“naudojant „Google“API
- · Pagal tai suraskite savo įrenginio vietą
- · Jūs turite stiprų šio projekto tinklo ryšį.
1 žingsnis: dalys ir įrankis
Dalys
- „NodeMCU“(ESP8266 1.0 12E)
- USB kabelis
Įrankiai
„Arduino IDE“su „NodeMcu 1.0 12E“lenta
„Google“API
2 veiksmas: raskite „Google“API
- Atidarykite naršyklę ir įveskite: console.developer.google.com
- Sukurkite naują projektą
- Sukūrę naują projektą spustelėkite kredencialus
- Spustelėkite API raktą
-
Jūsų API raktas sugeneruotas
Kad būtų lengviau suprasti, žiūrėkite šią nuotrauką |>
3 veiksmas: nustatykite „NodeMCu“„Arduino IDE“
- Atsisiųskite „Arduino IDE“iš šios nuorodos:- https:// www. Pagrindinis/Programinė įranga arduino.cc/en/
- Pridėkite „Node MCu“plokštę prie „Arduino IDE“
-
Norėdami įkelti kodą į „NodeMCU“, turite pridėti „NodeMCu“plokštę prie „ARDUINO IDE“.
- Eikite į failą ir nuostatas „Arduino IDE“
- Papildomos valdybos valdymo skyriuje nukopijuokite šią nuorodą
- arduino.esp8266.com/stable/package_esp8266c…
- ir spustelėkite Gerai
- Lenta parsisiųsta
- Eikite į įrankius ir lentą ir pasirinkite „NodeMCU 1.0 12E“
- Žiūrėkite „avobe“paveikslėlį, kad lengvai suprastumėte
4 veiksmas: atsisiųskite „ArduinoJson“biblioteką
- Eikite į
Eskizas Įtraukti biblioteką Tvarkyti biblioteką
Paieškos laukelyje įveskite „Arduino Json“
Atsisiųskite naujausią „ArduinoJson“bibliotekos versiją
Atsisiuntę biblioteką spustelėkite Uždaryti
Pridėti biblioteką iš
SketchincludeLibraryArduinoJson
5 žingsnis: programa
Įkelkite šią programą į „NodeMCU“plokštę. ir pamatykite savo įrenginio („NodeMCU 1.0 12E“plokštės) vietą serijiniame monitoriuje.
#įtraukti
#įtraukti
#įtraukti
char myssid = "Jūsų SSID"; // jūsų tinklo SSID (pavadinimas)
char mypass = "Jūsų slaptažodis"; // jūsų tinklo slaptažodis
// „Google GeoLocation“API įgaliojimai …
const char* Host = "www.googleapis.com";
String thisPage = "/geolocation/v1/geolocate? Key =";
// --- Gaukite „Google Maps“ap raktą čia:
developers.google.com/maps/documentation/geolocation/intro
String key = "Jūsų" Google "API raktas"; // Rasti iš 2 veiksmo
Instrukcija
int būsena = WL_IDLE_STATUS;
Styga jsonString = "{ n";
dviguba platuma = 0,0;
dviguba ilguma = 0,0;
dvigubas tikslumas = 0,0;
int more_text = 1; // nustatykite 1, kad gautumėte daugiau derinimo rezultatų
void setup () {
Serial.begin (9600);
Serial.println („Pradėti“);
// Nustatykite „WiFi“į stoties režimą ir
atjunkite nuo AP, jei ji anksčiau buvo prijungta
„WiFi.mode“(WIFI_STA);
„WiFi.disconnect“();
vėlavimas (100);
Serial.println ( Sąranka
padaryta );
// Pradedame nuo prisijungimo prie a
WiFi tinklas
Serial.print ( Prisijungimas prie
);
Serial.println (myssid);
WiFi.begin (myssid, mypass);
while (WiFi.status ()! = WL_CONNECTED) {
vėlavimas (500);
Serijinis atspaudas (".");
}
Serial.println (".");
}
void loop () {
char bssid [6];
DynamicJsonBuffer jsonBuffer;
Serial.println („nuskaitymo pradžia“);
// „WiFi.scanNetworks“grįš
rastų tinklų skaičius
int n = WiFi.scanNetworks ();
Serial.println ("scandone");
jei (n == 0)
Serial.println ("tinklų nerasta");
Kitas
{
Serijinis atspaudas (n);
Serial.println ("rasti tinklai …");
jei (daugiau_teksto) {
// Atspausdinkite suformatuotą „json“…
Serial.println ("{");
Serial.println ("\" homeMobileCountryCode / ": 234,"); // tai tikras JK MKC
Serial.println ("\" homeMobileNetworkCode / ": 27,"); // ir tikras JK MNC
Serial.println ("\" radioType / ": \" gsm / ","); // gsm
Serial.println ("\" carrier / ": \" Vodafone / ","); // susietas su „Vodafone“
Serial.println ("\" cellTowers / ": ["); // Aš nepranešu apie jokius kameros bokštus
Serial.println ("],");
Serial.println ("\" wifiAccessPoints / ": [");
už (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)“);
jei (i <n - 1)
{
Serial.println ("},");
}
Kitas
{
Serial.println ("}");
}
}
Serial.println ("]");
Serial.println ("}");
}
Serial.println ("");
}
// dabar sukurkite „jsonString“…
jsonString = "{ n";
jsonString += "\" homeMobileCountryCode / ": 234, / n"; // tai tikras JK MKC
jsonString += "\" homeMobileNetworkCode / ": 27, / n"; // ir tikras JK MNC
jsonString += "\" radioType / ": \" gsm / ", / n"; // gsm
jsonString += "\" vežėjas / ": \" Vodafone / ", / n"; // susietas su „Vodafone“
jsonString += "\" wifiAccessPoints / ": [n";
už (int j = 0; j <n; ++ j)
{
jsonString += "{ n";
jsonString += "\" macAddress / ": \" ";
jsonString += („WiFi. BSSIDstr“(j));
jsonString += "\", / n ";
jsonString += "\" signalStrength / ":";
jsonString += WiFi. RSSI (j);
jsonString += "\ n";
jei (j <n - 1)
{
jsonString += "}, / n";
}
Kitas
{
jsonString += "} n";
}
}
jsonString += ("] n");
jsonString += ("} n");
//--------------------------------------------------------------------
Serial.println ("");
„WiFiClientSecure“klientas;
// Prisijunkite prie kliento ir skambinkite api
Serial.print ("Užklausos URL:");
// ---- Gaukite „Google Maps Api Key“čia, nuoroda:
Serial.println ("https://" + (String) Host + thisPage + "PUT-YOUR-GOOGLE-MAPS-API-KEY-HERE");
Serial.println ("");
if (client.connect (priegloba, 443)) {
Serial.println („Prisijungta“);
client.println („POST“+ šis puslapis + raktas + „HTTP/1.1“);
client.println ("Priegloba:" + (eilutės) priegloba);
client.println ("Ryšys: uždaryti");
client.println ("Turinio tipas: programa/json");
client.println („Vartotojo agentas:„ Arduino “/1.0“);
client.print ("Turinio ilgis:");
client.println (jsonString.length ());
klientas.println ();
client.print (jsonString);
vėlavimas (500);
}
// Perskaitykite ir išanalizuokite visas eilutes
atsakymas iš serverio
while (client.available ()) {
Eilutės eilutė = client.readStringUntil ('\ r');
jei (daugiau_teksto) {
Serial.print (linija);
}
JsonObject & root = jsonBuffer.parseObject (eilutė);
if (root.success ()) {
platuma = šaknis ["vieta"] ["lat"];
ilguma = šaknis ["vieta"] ["lng"];
tikslumas = šaknis ["tikslumas"];
}
}
Serial.println („uždaromas ryšys“);
Serial.println ();
client.stop ();
Serial.print ("Platuma =");
Serial.println (platuma, 6);
Serial.print ("Ilguma =");
Serijinis.println (ilguma, 6);
Serial.print ("Tikslumas =");
Serial.println (tikslumas);
vėlavimas (10000);
Serial.println ();
Serial.println („Paleidžiama iš naujo …“);
Serial.println ();
vėlavimas (2000 m.);
}