Turinys:

GEOLOACACIJA: 5 žingsniai
GEOLOACACIJA: 5 žingsniai

Video: GEOLOACACIJA: 5 žingsniai

Video: GEOLOACACIJA: 5 žingsniai
Video: Трактористы (комедия, реж. Иван Пырьев, 1939 г.) 2024, Lapkritis
Anonim
GEOLOACACIJA
GEOLOACACIJA

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

Raskite „Google“API
Raskite „Google“API
Raskite „Google“API
Raskite „Google“API
Raskite „Google“API
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“

Nustatykite „NodeMCu“„Arduino IDE“
Nustatykite „NodeMCu“„Arduino IDE“
Nustatykite „NodeMCu“„Arduino IDE“
Nustatykite „NodeMCu“„Arduino IDE“
Nustatykite „NodeMCu“„Arduino IDE“
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ą

Atsisiųskite „ArduinoJson“biblioteką
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.);

}

Rekomenduojamas: