Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
Je to můj projekt letní stáže. Opravdu překvapuje, když slyším, že můžeme sledovat polohu jakéhokoli zařízení bez použití modulu GPS pouze pomocí NodeMCU. Díky tomu můžeme sledovat jakékoli zařízení. Také vás překvapuje, jak můžeme sledovat zařízení pouze pomocí WiFi. Zde je popis řazení, abyste tomu porozuměli.
- · Skenuje téměř všechny vaše WiFi.
- · Odešlete toto umístění zařízení společnosti Google pomocí rozhraní Google API
- · Podle toho vyhledá umístění vašeho zařízení
- · Pro tento projekt máte silné síťové připojení.
Krok 1: Díly a nástroj
Díly
- NodeMCU (ESP8266 1.0 12E)
- USB kabel
Nástroje
Arduino IDE s deskou NodeMcu 1.0 12E
Google API
Krok 2: Najděte Google API
- Otevřete prohlížeč a zadejte: console.developer.google.com
- Vytvořte nový projekt
- Po vytvoření nového projektu klikněte na přihlašovací údaje
- Klikněte na klíč API
-
Váš klíč API byl vygenerován
Snadné porozumění najdete na následujícím obrázku |>
Krok 3: Nastavení NodeMCu na Arduino IDE
- Stáhněte si Arduino IDE z následujícího odkazu:- https:// www. Hlavní/Software arduino.cc/en/
- Přidejte desku Node MCu na Arduino IDE
-
Pro nahrání kódu na NodeMCU musíte přidat desku NodeMCu na ARDUINO IDE.
- PŘEJÍT na soubor a preference v Arduino IDE
- A v Additional Board managersection zkopírujte následující odkaz
- arduino.esp8266.com/stable/package_esp8266c…
- a klikněte na Ok
- Deska se stáhne
- Přejděte na nástroje a desku a vyberte NodeMCU 1.0 12E
- Snadné porozumění najdete na obrázku avobe
Krok 4: Stáhněte si knihovnu ArduinoJson
- Přejděte na
Sketch Include Library Spravovat knihovnu
Do vyhledávacího pole zadejte Arduino Json
Stáhněte si nejnovější verzi knihovny ArduinoJson
po stažení knihovny klikněte na zavřít
Přidat knihovnu z
SketchincludeLibraryArduinoJson
Krok 5: Program
Nahrajte následující program na desku NodeMCU. a podívejte se na umístění svého zařízení (deska NodeMCU 1.0 12E) na sériovém monitoru.
#zahrnout
#zahrnout
#zahrnout
char myssid = "Vaše SSID"; // SSID vaší sítě (název)
char mypass = "Vaše heslo"; // vaše síťové heslo
// Pověření pro Google GeoLocation API…
const char* Host = "www.googleapis.com";
String thisPage = "/geolocation/v1/geolocate? Key =";
// --- Získejte AP klíč Google Maps zde:
developers.google.com/maps/documentation/geolocation/intro
String key = "Váš klíč Google API"; // Vyhledejte od kroku 2
Návod
int status = WL_IDLE_STATUS;
Řetězec jsonString = "{ n";
dvojitá šířka = 0,0;
dvojnásobná délka = 0,0;
dvojnásobná přesnost = 0,0;
int více_text = 1; // nastaveno na 1 pro další výstup ladění
neplatné nastavení () {
Serial.begin (9600);
Serial.println ("Start");
// Nastavte WiFi na režim stanice a
odpojte se od přístupového bodu, pokud byl dříve připojen
WiFi.mode (WIFI_STA);
WiFi.disconnect ();
zpoždění (100);
Serial.println ( Nastavení
Hotovo );
// Začneme připojením k
WiFi síť
Serial.print ( Připojování k
);
Serial.println (myssid);
WiFi.begin (myssid, mypass);
while (WiFi.status ()! = WL_CONNECTED) {
zpoždění (500);
Serial.print (".");
}
Serial.println (".");
}
prázdná smyčka () {
char bssid [6];
DynamicJsonBuffer jsonBuffer;
Serial.println ("spuštění skenování");
// WiFi.scanNetworks se vrátí
počet nalezených sítí
int n = WiFi.scanNetworks ();
Serial.println ("scandone");
pokud (n == 0)
Serial.println ("nebyly nalezeny žádné sítě");
jiný
{
Serial.print (n);
Serial.println („nalezené sítě…“);
if (more_text) {
// Vytiskněte formátovaný json …
Serial.println ("{");
Serial.println ("\" homeMobileCountryCode / ": 234,"); // toto je skutečný britský MCC
Serial.println ("\" homeMobileNetworkCode / ": 27,"); // a skutečný britský MNC
Serial.println ("\" radioType / ": \" gsm / ","); // pro gsm
Serial.println ("\" operátor / ": \" Vodafone / ","); // spojené s Vodafone
Serial.println ("\" cellTowers / ": ["); // Nehlásím žádné věže buněk
Serial.println ("],");
Serial.println ("\" wifiAccessPoints / ": [");
pro (int i = 0; i <n; ++ i)
{
Serial.println ("{");
Serial.print ("\" macAddress / ": \" ");
Serial.print (WiFi. BSSIDstr (i));
Serial.println ("\", ");
Serial.print ("\" síla signálu / ":");
Serial.println (WiFi. RSSI (i));
pokud (i <n - 1)
{
Serial.println ("},");
}
jiný
{
Serial.println ("}");
}
}
Serial.println ("]");
Serial.println ("}");
}
Serial.println ("");
}
// nyní vytvořte jsonString…
jsonString = "{ n";
jsonString += "\" homeMobileCountryCode / ": 234, / n"; // toto je skutečný britský MCC
jsonString += "\" homeMobileNetworkCode / ": 27, / n"; // a skutečný britský MNC
jsonString += "\" radioType / ": \" gsm / ", / n"; // pro gsm
jsonString += "\" operátor / ": \" Vodafone / ", / n"; // spojené s Vodafone
jsonString += "\" wifiAccessPoints / ": [n";
pro (int j = 0; j <n; ++ j)
{
jsonString += "{ n";
jsonString += "\" macAddress / ": \" ";
jsonString += (WiFi. BSSIDstr (j));
jsonString += "\", / n ";
jsonString += "\" síla signálu / ":";
jsonString += WiFi. RSSI (j);
jsonString += "\ n";
pokud (j <n - 1)
{
jsonString += "}, / n";
}
jiný
{
jsonString += "} n";
}
}
jsonString += ("] n");
jsonString += ("} n");
//--------------------------------------------------------------------
Serial.println ("");
WiFiClientSecure klient;
// Připojte se ke klientovi a proveďte volání API
Serial.print ("Požadovaná URL:");
// ---- Získejte Google Maps Api Key zde, Odkaz:
Serial.println ("https://" + (String) Host + thisPage + "PUT-YOUR-GOOGLE-MAPS-API-KEY-HERE");
Serial.println ("");
if (client.connect (Host, 443)) {
Serial.println („Připojeno“);
client.println ("POST" + thisPage + klíč + "HTTP/1.1");
client.println ("Host:" + (řetězec) Host);
client.println ("Připojení: zavřít");
client.println ("Typ obsahu: aplikace/json");
client.println ("User-Agent: Arduino/1.0");
client.print ("Délka obsahu:");
client.println (jsonString.length ());
client.println ();
client.print (jsonString);
zpoždění (500);
}
// Přečíst a analyzovat všechny řádky
odpověď ze serveru
while (client.available ()) {
Řetězec řetězce = client.readStringUntil ('\ r');
if (more_text) {
Serial.print (řádek);
}
JsonObject & root = jsonBuffer.parseObject (řádek);
if (root.success ()) {
zeměpisná šířka = root ["umístění"] ["lat"];
longitude = root ["location"] ["lng"];
přesnost = root ["přesnost"];
}
}
Serial.println ("ukončení připojení");
Serial.println ();
client.stop ();
Serial.print ("Latitude =");
Serial.println (zeměpisná šířka, 6);
Serial.print ("Zeměpisná délka =");
Serial.println (zeměpisná délka, 6);
Serial.print ("Přesnost =");
Serial.println (přesnost);
zpoždění (10 000);
Serial.println ();
Serial.println ("Restartování …");
Serial.println ();
zpoždění (2000);
}