Taula de continguts:

GEOLOACACIÓ: 5 passos
GEOLOACACIÓ: 5 passos

Vídeo: GEOLOACACIÓ: 5 passos

Vídeo: GEOLOACACIÓ: 5 passos
Vídeo: Обязательно запомни эту хитрость! Как можно моментально вывести йод с одежды? #shorts 2024, De novembre
Anonim
GEOLOACACIÓ
GEOLOACACIÓ

És el meu projecte de pràctiques d’estiu. Em sorprèn quan sento que podem rastrejar la ubicació de qualsevol dispositiu sense utilitzar el mòdul GPS només mitjançant NodeMCU. Mitjançant això podem rastrejar qualsevol dispositiu. També us sorprèn com podem rastrejar el dispositiu només amb WiFi. Aquí teniu la descripció de l’ordenació per entendre-la.

  • · És escanejar la pràctica totalitat del WiFi.
  • · Envieu la ubicació d'aquest dispositiu a Google mitjançant l'API de Google
  • · Segons això, es localitza la ubicació del dispositiu
  • · Teniu una connexió de xarxa forta per a aquest projecte.

Pas 1: peces i eines

Parts

  • NodeMCU (ESP8266 1.0 12E)
  • Cable USB

Eines

IDE Arduino amb placa NodeMcu 1.0 12E

API de Google

Pas 2: cerqueu l'API de Google

Cerqueu l'API de Google
Cerqueu l'API de Google
Cerqueu l'API de Google
Cerqueu l'API de Google
Cerqueu l'API de Google
Cerqueu l'API de Google
  • Obriu el navegador i escriviu: console.developer.google.com
  • Crea un projecte nou
  • Després de crear un nou projecte, feu clic a la credencial
  • Feu clic a la clau API
  • S'ha generat la vostra clau API

    Per a una comprensió més fàcil, vegeu la següent imatge |>

Pas 3: configureu NodeMCu a Arduino IDE

Configureu NodeMCu a Arduino IDE
Configureu NodeMCu a Arduino IDE
Configureu NodeMCu a Arduino IDE
Configureu NodeMCu a Arduino IDE
Configureu NodeMCu a Arduino IDE
Configureu NodeMCu a Arduino IDE
  • Descarregueu Arduino IDE des de l'enllaç següent: - https:// www. Principal / Programari arduino.cc/ca/
  • Afegiu la placa Node MCu a Arduino IDE
  • Per penjar codi a NodeMCU, heu d’afegir la placa NodeMCu a ARDUINO IDE.

    • VES al fitxer i preferències en Arduino IDE
    • I a la secció Administradors de consells addicionals, copieu el següent enllaç
    • arduino.esp8266.com/stable/package_esp8266c…
    • i feu clic a D'acord
    • Es descarrega el tauler
    • Aneu a les eines i al tauler i seleccioneu NodeMCU 1.0 12E
    • Vegeu la imatge d’avobe per entendre-la fàcilment

Pas 4: descarregueu la biblioteca ArduinoJson

Descarregueu la biblioteca ArduinoJson
Descarregueu la biblioteca ArduinoJson
  • Aneu al
  • Sketch Include Library Gestiona la biblioteca

    Escriviu Arduino Json al quadre de cerca

    Descarregueu la versió més recent de la biblioteca ArduinoJson

    després de descarregar la biblioteca, feu clic a Tanca

    Afegeix una biblioteca des de

    SketchincludeLibraryArduinoJson

Pas 5: programa

Pengeu el següent programa al tauler NodeMCU. i vegeu la ubicació del dispositiu (placa NodeMCU 1.0 12E) al monitor sèrie.

#incloure

#incloure

#incloure

char myssid = "El vostre SSID"; // el vostre SSID de xarxa (nom)

char mypass = "La vostra contrasenya"; // la vostra contrasenya de xarxa

// Credencials per a l'API de Google GeoLocation …

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

Cadena thisPage = "/ geolocalització / v1 / geolocalitzar? Clau =";

// --- Obteniu una clau d'ap Google Maps aquí:

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

String key = "La vostra clau API de Google"; // Cerqueu des del pas 2

Instrucció

int status = WL_IDLE_STATUS;

String jsonString = "{ n";

doble latitud = 0,0;

doble longitud = 0,0;

doble precisió = 0,0;

int more_text = 1; // s'estableix a 1 per obtenir més sortida de depuració

configuració nul·la () {

Serial.begin (9600);

Serial.println ("Inici");

// Estableix WiFi al mode d’estació i

desconnecteu d’un AP si anteriorment estava connectat

WiFi.mode (WIFI_STA);

WiFi.disconnect ();

retard (100);

Serial.println ( Configuració

fet );

// Comencem connectant-nos a a

Xarxa WiFi

Serial.print ( Connexió a

);

Serial.println (myssid);

WiFi.begin (myssid, mypass);

while (WiFi.status ()! = WL_CONNECTED) {

retard (500);

Serial.print (".");

}

Serial.println (".");

}

bucle buit () {

char bssid [6];

DynamicJsonBuffer jsonBuffer;

Serial.println ("inici de digitalització");

// Tornarà WiFi.scanNetworks

el nombre de xarxes trobades

int n = WiFi.scanNetworks ();

Serial.println ("scandone");

if (n == 0)

Serial.println ("no s'ha trobat cap xarxa");

en cas contrari

{

Serial.print (n);

Serial.println ("xarxes trobades …");

if (more_text) {

// Imprimiu el format json …

Serial.println ("{");

Serial.println ("\" homeMobileCountryCode / ": 234,"); // aquest és un autèntic MCC del Regne Unit

Serial.println ("\" homeMobileNetworkCode / ": 27,"); // i un autèntic MNC del Regne Unit

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

Serial.println ("\" carrier / ": \" Vodafone / ","); // associat amb Vodafone

Serial.println ("\" cellTowers / ": ["); // No informaré de cap torre cel·lular

Serial.println ("],");

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

for (int i = 0; i <n; ++ i)

{

Serial.println ("{");

Serial.print ("\" adreça mac / ": \" ");

Serial.print (WiFi. BSSIDstr (i));

Serial.println ("\", ");

Serial.print ("\" signalStrength / ":");

Serial.println (WiFi. RSSI (i));

si (i <n - 1)

{

Serial.println ("}");

}

en cas contrari

{

Serial.println ("}");

}

}

Serial.println ("]");

Serial.println ("}");

}

Serial.println ("");

}

// ara construeix el jsonString …

jsonString = "{ n";

jsonString + = "\" homeMobileCountryCode / ": 234, / n"; // aquest és un autèntic MCC del Regne Unit

jsonString + = "\" homeMobileNetworkCode / ": 27, / n"; // i un autèntic MNC del Regne Unit

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

jsonString + = "\" carrier / ": \" Vodafone / ", / n"; // associat amb Vodafone

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

per a (int j = 0; j <n; ++ j)

{

jsonString + = "{ n";

jsonString + = "\" adreça mac / ": \" ";

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

jsonString + = "\", / n ";

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

jsonString + = WiFi. RSSI (j);

jsonString + = "\ n";

si (j <n - 1)

{

jsonString + = "}, / n";

}

en cas contrari

{

jsonString + = "} n";

}

}

jsonString + = ("] n");

jsonString + = ("} n");

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

Serial.println ("");

Client WiFiClientSecure;

// Connecteu-vos al client i feu la trucada API

Serial.print ("URL sol·licitant:");

// ---- Obteniu la clau API de Google Maps aquí, enllaç:

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

Serial.println ("");

if (client.connect (Amfitrió, 443)) {

Serial.println ("Connectat");

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

client.println ("Amfitrió:" + (Cadena) Amfitrió);

client.println ("Connexió: tancar");

client.println ("Tipus de contingut: aplicació / json");

client.println ("Agent d'usuari: Arduino / 1.0");

client.print ("Longitud del contingut:");

client.println (jsonString.length ());

client.println ();

client.print (jsonString);

retard (500);

}

// Llegiu i analitzeu totes les línies de

la resposta del servidor

while (client.available ()) {

Línia de cadena = client.readStringUntil ('\ r');

if (more_text) {

Serial.print (línia);

}

JsonObject & root = jsonBuffer.parseObject (línia);

if (root.success ()) {

latitud = arrel ["ubicació"] ["lat"];

longitud = arrel ["ubicació"] ["lng"];

exactitud = arrel ["precisió"];

}

}

Serial.println ("tancament de la connexió");

Serial.println ();

client.stop ();

Serial.print ("Latitud =");

Serial.println (latitud, 6);

Serial.print ("Longitud =");

Serial.println (longitud, 6);

Serial.print ("Precisió =");

Serial.println (precisió);

retard (10000);

Serial.println ();

Serial.println ("Reiniciant …");

Serial.println ();

endarreriment (2000);

}

Recomanat: