Tabla de contenido:
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-13 06:57
Es mi proyecto de prácticas de verano. Realmente me sorprende cuando escucho que podemos rastrear la ubicación de cualquier dispositivo sin usar el módulo GPS solo usando NodeMCU. A través de esto podemos rastrear cualquier dispositivo. También sorprende cómo podemos rastrear un dispositivo usando solo WiFi. Aquí está la descripción del tipo para entenderlo.
- · Es escanea tu casi todo WiFi.
- · Enviar la ubicación de este dispositivo a Google mediante la API de Google
- · De acuerdo con esto, es localizar la ubicación de su dispositivo
- · Tiene una conexión de red sólida para este proyecto.
Paso 1: Piezas y herramienta
Partes
- NodeMCU (ESP8266 1.0 12E)
- Cable USB
Instrumentos
Arduino IDE con placa NodeMcu 1.0 12E
API de Google
Paso 2: Encuentra la API de Google
- Abra su navegador y escriba: console.developer.google.com
- Crea un nuevo proyecto
- Después de Crear un nuevo proyecto, haga clic en la credencial.
- Haga clic en API Key
-
Se ha generado su clave de API
Para una mejor comprensión, consulte la siguiente imagen |>
Paso 3: Configurar NodeMCu en Arduino IDE
- Descargue Arduino IDE desde el siguiente enlace: - https:// www. Principal / Software arduino.cc/en/
- Agregar placa Node MCu en Arduino IDE
-
Para cargar código en NodeMCU, debe agregar la placa NodeMCu en ARDUINO IDE.
- Vaya a archivo y preferencia en Arduino IDE
- Y en la sección de administración de la Junta Adicional copie el siguiente enlace
- arduino.esp8266.com/stable/package_esp8266c…
- y haga clic en Aceptar
- El tablero está descargado
- Vaya a las herramientas y el tablero y seleccione NodeMCU 1.0 12E
- Vea la imagen de avobe para entender fácilmente
Paso 4: descargue la biblioteca ArduinoJson
- Ve a la
Sketch Incluir biblioteca Administrar biblioteca
Escriba Arduino Json en el cuadro de búsqueda
Descargue la última versión de la biblioteca ArduinoJson
después de descargar la biblioteca, haga clic en cerrar
Agregar biblioteca desde
SketchincludeLibraryArduinoJson
Paso 5: Programa
Cargue el siguiente programa en la placa NodeMCU. y vea la ubicación de su dispositivo (placa NodeMCU 1.0 12E) en el monitor serial.
#incluir
#incluir
#incluir
char myssid = "Su SSID"; // el SSID de su red (nombre)
char mypass = "Su contraseña"; // su contraseña de red
// Credenciales para la API de ubicación geográfica de Google…
const char * Host = "www.googleapis.com";
String thisPage = "/ geolocalización / v1 / geolocate? Key =";
// --- Obtener una clave ap de Google Maps aquí:
developers.google.com/maps/documentation/geolocation/intro
String key = "Su clave de API de Google"; // Buscar en el paso 2
Instrucción
int status = WL_IDLE_STATUS;
String jsonString = "{ n";
latitud doble = 0,0;
longitud doble = 0,0;
doble precisión = 0,0;
int more_text = 1; // establecer en 1 para obtener más resultados de depuración
configuración vacía () {
Serial.begin (9600);
Serial.println ("Inicio");
// Establecer WiFi en modo de estación y
desconectarse de un AP si estaba previamente conectado
Modo WiFi (WIFI_STA);
WiFi.disconnect ();
retraso (100);
Serial.println ( Configuración
hecho );
// Empezamos por conectarnos a un
Red Wi Fi
Serial.print ( Conectando a
);
Serial.println (myssid);
WiFi.begin (myssid, mypass);
while (WiFi.status ()! = WL_CONNECTED) {
retraso (500);
Serial.print (".");
}
Serial.println (".");
}
bucle vacío () {
char bssid [6];
DynamicJsonBuffer jsonBuffer;
Serial.println ("inicio de escaneo");
// WiFi.scanNetworks volverá
la cantidad de redes encontradas
int n = WiFi.scanNetworks ();
Serial.println ("scandone");
si (n == 0)
Serial.println ("no se encontraron redes");
demás
{
Serial.print (n);
Serial.println ("redes encontradas …");
if (more_text) {
// Imprime el json formateado …
Serial.println ("{");
Serial.println ("\" homeMobileCountryCode / ": 234,"); // este es un verdadero MCC del Reino Unido
Serial.println ("\" homeMobileNetworkCode / ": 27,"); // y una verdadera multinacional del Reino Unido
Serial.println ("\" radioType / ": \" gsm / ","); // para gsm
Serial.println ("\" operador / ": \" Vodafone / ","); // asociado a Vodafone
Serial.println ("\" cellTowers / ": ["); // No estoy reportando ninguna torre celular
Serial.println ("],");
Serial.println ("\" wifiAccessPoints / ": [");
para (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));
si (i <n - 1)
{
Serial.println ("},");
}
demás
{
Serial.println ("}");
}
}
Serial.println ("]");
Serial.println ("}");
}
Serial.println ("");
}
// ahora construye el jsonString…
jsonString = "{ n";
jsonString + = "\" homeMobileCountryCode / ": 234, / n"; // este es un verdadero MCC del Reino Unido
jsonString + = "\" homeMobileNetworkCode / ": 27, / n"; // y una verdadera multinacional del Reino Unido
jsonString + = "\" radioType / ": \" gsm / ", / n"; // para gsm
jsonString + = "\" operador / ": \" Vodafone / ", / n"; // asociado a Vodafone
jsonString + = "\" wifiAccessPoints / ": [n";
para (int j = 0; j <n; ++ j)
{
jsonString + = "{ n";
jsonString + = "\" macAddress / ": \" ";
jsonString + = (WiFi. BSSIDstr (j));
jsonString + = "\", / n ";
jsonString + = "\" signalStrength / ":";
jsonString + = WiFi. RSSI (j);
jsonString + = "\ n";
si (j <n - 1)
{
jsonString + = "}, / n";
}
demás
{
jsonString + = "} n";
}
}
jsonString + = ("] n");
jsonString + = ("} n");
//--------------------------------------------------------------------
Serial.println ("");
Cliente WiFiClientSecure;
// Conéctese al cliente y realice la llamada a la API
Serial.print ("URL de solicitud:");
// ---- Obtenga la clave de API de Google Maps aquí, enlace:
Serial.println ("https://" + (String) Host + thisPage + "PUT-YOUR-GOOGLE-MAPS-API-KEY-AQUÍ");
Serial.println ("");
if (client.connect (Host, 443)) {
Serial.println ("Conectado");
client.println ("POST" + thisPage + clave + "HTTP / 1.1");
client.println ("Host:" + (String) Host);
client.println ("Conexión: cerrar");
client.println ("Tipo de contenido: aplicación / json");
client.println ("Usuario-Agente: Arduino / 1.0");
client.print ("Content-Length:");
client.println (jsonString.length ());
cliente.println ();
client.print (jsonString);
retraso (500);
}
// Leer y analizar todas las líneas de
la respuesta del servidor
while (client.available ()) {
Línea de cadena = cliente.readStringUntil ('\ r');
if (more_text) {
Serial.print (línea);
}
JsonObject & root = jsonBuffer.parseObject (línea);
if (root.success ()) {
latitud = raíz ["ubicación"] ["lat"];
longitud = raíz ["ubicación"] ["lng"];
exactitud = raíz ["exactitud"];
}
}
Serial.println ("cerrando conexión");
Serial.println ();
client.stop ();
Serial.print ("Latitud =");
Serial.println (latitud, 6);
Serial.print ("Longitud =");
Serial.println (longitud, 6);
Serial.print ("Precisión =");
Serial.println (precisión);
retraso (10000);
Serial.println ();
Serial.println ("Reiniciando …");
Serial.println ();
retraso (2000);
}