Kazalo:

GEOLOACACIJA: 5 korakov
GEOLOACACIJA: 5 korakov

Video: GEOLOACACIJA: 5 korakov

Video: GEOLOACACIJA: 5 korakov
Video: Tschaikowsky: 5. Sinfonie ∙ hr-Sinfonieorchester ∙ Manfred Honeck 2024, November
Anonim
GEOLOAKACIJA
GEOLOAKACIJA

To je moj projekt poletne prakse. Resnično sem presenečen, ko slišim, da lahko izsledimo lokacijo katere koli naprave brez uporabe modula GPS samo z uporabo NodeMCU. S tem lahko izsledimo katero koli napravo. Presenetite tudi, kako lahko sledimo napravi, ki uporablja samo WiFi. Tukaj je opis razvrščanja, da ga razumete.

  • · Skenira skoraj vse vaše WiFi.
  • · Pošljite to lokacijo Googlu z Googlovim API -jem
  • · V skladu s tem poišče lokacijo vaše naprave
  • · Za ta projekt imate močno omrežno povezavo.

1. korak: Deli in orodje

Deli

  • NodeMCU (ESP8266 1.0 12E)
  • USB kabel

Orodja

Arduino IDE s ploščo NodeMcu 1.0 12E

Googlov API

2. korak: Poiščite Googlov API

Poiščite Googlov API
Poiščite Googlov API
Poiščite Googlov API
Poiščite Googlov API
Poiščite Googlov API
Poiščite Googlov API
  • Odprite brskalnik in vnesite: console.developer.google.com
  • Ustvarite nov projekt
  • Ko ustvarite nov projekt, kliknite poverilnice
  • Kliknite na ključ API
  • Vaš ključ API je bil ustvarjen

    Za lažje razumevanje si oglejte naslednjo sliko |>

Korak: Namestite NodeMCu v Arduino IDE

Namestite NodeMCu v Arduino IDE
Namestite NodeMCu v Arduino IDE
Namestite NodeMCu v Arduino IDE
Namestite NodeMCu v Arduino IDE
Namestite NodeMCu v Arduino IDE
Namestite NodeMCu v Arduino IDE
  • Prenesite Arduino IDE s naslednje povezave:- https:// www. Glavna/Programska oprema arduino.cc/en/
  • Dodajte ploščo Node MCu v Arduino IDE
  • Za nalaganje kode v NodeMCU morate dodati ploščo NodeMCu v ARDUINO IDE.

    • Pojdite na datoteko in nastavitve v Arduino IDE
    • V razdelku »Dodatni upravitelj odbora« kopirajte naslednjo povezavo
    • arduino.esp8266.com/stable/package_esp8266c…
    • in kliknite V redu
    • Tabla je naložena
    • Pojdite na orodja in ploščo ter izberite NodeMCU 1.0 12E
    • Za lažje razumevanje si oglejte sliko avoka

4. korak: Prenesite knjižnico ArduinoJson

Prenesite knjižnico ArduinoJson
Prenesite knjižnico ArduinoJson
  • Pojdite na
  • Skica Vključi knjižnico Upravljanje knjižnice

    V iskalno polje vnesite Arduino Json

    Prenesite najnovejšo različico knjižnice ArduinoJson

    po prenosu knjižnice kliknite zapri

    Dodajte knjižnico iz

    SketchincludeLibraryArduinoJson

5. korak: Program

Naložite naslednji program na ploščo NodeMCU. in si oglejte lokacijo svoje naprave (plošča NodeMCU 1.0 12E) na serijskem monitorju.

#vključi

#vključi

#vključi

char myssid = "Vaš SSID"; // vaš omrežni SSID (ime)

char mypass = "Vaše geslo"; // geslo za omrežje

// poverilnice za Google GeoLocation API …

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

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

// --- Tukaj dobite ključ aplikacije google maps:

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

String key = "Vaš ključ Google API"; // Poiščite od 2. koraka

Navodila

int status = WL_IDLE_STATUS;

Niz jsonString = "{ n";

dvojna zemljepisna širina = 0,0;

dvojna zemljepisna dolžina = 0,0;

dvojna natančnost = 0,0;

int more_text = 1; // nastavljeno na 1 za več izhodov za odpravljanje napak

void setup () {

Serial.begin (9600);

Serial.println ("Start");

// Nastavite WiFi na način postaje in

prekinite povezavo z dostopno točko, če je bila prej povezana

WiFi.mode (WIFI_STA);

WiFi.disconnect ();

zamuda (100);

Serial.println ( Namestitev

Končano );

// Začnemo s povezavo z a

Omrežje WiFi

Serial.print ( Povezovanje z

);

Serial.println (myssid);

WiFi.začetek (myssid, mypass);

medtem ko (WiFi.status ()! = WL_CONNECTED) {

zamuda (500);

Serial.print (".");

}

Serial.println (".");

}

void loop () {

char bssid [6];

DynamicJsonBuffer jsonBuffer;

Serial.println ("začetek skeniranja");

// WiFi.scanNetworks se bo vrnil

število najdenih omrežij

int n = WiFi.scanNetworks ();

Serial.println ("scandone");

če (n == 0)

Serial.println ("omrežij ni mogoče najti");

drugače

{

Serial.print (n);

Serial.println ("omrežje najdeno …");

if (več_teksta) {

// Natisnite formatiran json …

Serial.println ("{");

Serial.println ("\" homeMobileCountryCode / ": 234,"); // to je pravi UKC MC

Serial.println ("\" homeMobileNetworkCode / ": 27,"); // in pravi UK MNC

Serial.println ("\" radioType / ": \" gsm / ","); // za gsm

Serial.println ("\" nosilec / ": \" Vodafone / ","); // povezan z Vodafonom

Serial.println ("\" cellTowers / ": ["); // Ne prijavljam nobenih celičnih stolpov

Serial.println ("],");

Serial.println ("\" wifiAccessPoints / ": [");

za (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));

če (i <n - 1)

{

Serial.println ("},");

}

drugače

{

Serial.println ("}");

}

}

Serial.println ("]");

Serial.println ("}");

}

Serial.println ("");

}

// zdaj zgradimo jsonString …

jsonString = "{ n";

jsonString += "\" homeMobileCountryCode / ": 234, / n"; // to je pravi UKC MC

jsonString += "\" homeMobileNetworkCode / ": 27, / n"; // in pravi UK MNC

jsonString += "\" radioType / ": \" gsm / ", / n"; // za gsm

jsonString += "\" nosilec / ": \" Vodafone / ", / n"; // povezan z Vodafonom

jsonString += "\" wifiAccessPoints / ": [ n";

za (int j = 0; j <n; ++ j)

{

jsonString += "{ n";

jsonString += "\" macAddress / ": \" ";

jsonString += (WiFi. BSSIDstr (j));

jsonString += "\", / n ";

jsonString += "\" signalStrength / ":";

jsonString += WiFi. RSSI (j);

jsonString += "\ n";

če (j <n - 1)

{

jsonString += "}, / n";

}

drugače

{

jsonString += "} n";

}

}

jsonString += ("] n");

jsonString += ("} n");

//--------------------------------------------------------------------

Serial.println ("");

Odjemalec WiFiClientSecure;

// Povežite se s odjemalcem in pokličite api

Serial.print ("Zahtevan URL:");

// ---- Tukaj dobite ključ za Google Zemljevide, povezavo:

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

Serial.println ("");

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

Serial.println ("Povezano");

client.println ("POST" + thisPage + ključ + "HTTP/1.1");

client.println ("Gostitelj:" + (niz) gostitelj);

client.println ("Povezava: zaprta");

client.println ("Vrsta vsebine: aplikacija/json");

client.println ("Uporabniški agent: Arduino/1.0");

client.print ("Content-Length:");

client.println (jsonString.length ());

client.println ();

client.print (jsonString);

zamuda (500);

}

// Preberite in razčlenite vse vrstice

odgovor s strežnika

medtem ko (client.available ()) {

Vrstna vrstica = client.readStringUntil ('\ r');

if (več_teksta) {

Serial.print (vrstica);

}

JsonObject & root = jsonBuffer.parseObject (vrstica);

if (root.success ()) {

zemljepisna širina = koren ["lokacija"] ["lat"];

longitude = root ["location"] ["lng"];

natančnost = koren ["natančnost"];

}

}

Serial.println ("zapiranje povezave");

Serial.println ();

client.stop ();

Serial.print ("Latitude =");

Serial.println (zemljepisna širina, 6);

Serial.print ("Dolžina =");

Serial.println (zemljepisna dolžina, 6);

Serial.print ("Točnost =");

Serial.println (natančnost);

zamuda (10000);

Serial.println ();

Serial.println ("Ponovni zagon …");

Serial.println ();

zamuda (2000);

}

Priporočena: