INHOUDSOPGAWE:
2025 Outeur: John Day | [email protected]. Laas verander: 2025-01-13 06:56
Dit is my Summer Internship Project. Ek is regtig verbaas as ek hoor dat ons enige toestel kan opspoor sonder om 'n GPS -module te gebruik slegs met NodeMCU. Hierdeur kan ons enige toestel opspoor. U verbaas ook hoe kan ons toestelle met slegs WiFi opspoor. Hier is die soort beskrywing om dit te verstaan.
- · Dit skandeer u byna alle WiFi.
- · Stuur hierdie toestel se ligging na Google met behulp van Google API
- · Volgens hierdie vind u die ligging van u toestel
- · U het 'n sterk netwerkverbinding vir hierdie projek.
Stap 1: Onderdele en gereedskap
Dele
- NodeMCU (ESP8266 1.0 12E)
- USB -kabel
Gereedskap
Arduino IDE met NodeMcu 1.0 12E Board
Google API
Stap 2: Soek Google API
- Maak u blaaier oop en tik: console.developer.google.com
- Skep 'n nuwe projek
- Nadat u 'n nuwe projek geskep het, klik op geloofsbrief
- Klik op API -sleutel
-
U API -sleutel is gegenereer
Vir maklike begrip, sien die volgende prentjie |>
Stap 3: Stel NodeMCu op op Arduino IDE
- Laai Arduino IDE af vanaf die volgende skakel:- https:// www. Hoof/sagteware arduino.cc/en/
- Voeg Node MCu -bord by op Arduino IDE
-
Vir die oplaai van kode op NodeMCU moet u die NodeMCu -bord op ARDUINO IDE byvoeg.
- Gaan na lêer en voorkeur in Arduino IDE
- En kopieer die volgende skakel in Addisionele bestuursafdeling
- arduino.esp8266.com/stable/package_esp8266c…
- en klik op Ok
- Die bord word afgelaai
- Gaan na die gereedskap en bord en kies NodeMCU 1.0 12E
- Sien die avobe -prentjie om dit maklik te verstaan
Stap 4: Laai die ArduinoJson -biblioteek af
- Gaan na die
Skets Sluit biblioteek in Bestuur biblioteek
Tik Arduino Json in die soekkassie
Laai die nuutste weergawe van die ArduinoJson -biblioteek af
na aflaai van die biblioteek, klik sluit
Voeg biblioteek by
SketchincludeLibraryArduinoJson
Stap 5: Programmeer
Laai die volgende program op die NodeMCU -bord op. en sien die ligging van u toestel (NodeMCU 1.0 12E -bord) op die seriële monitor.
#insluit
#insluit
#insluit
char myssid = "Jou SSID"; // jou netwerk SSID (naam)
char mypass = "U wagwoord"; // u netwerkwagwoord
// Bewyse vir Google GeoLocation API …
const char* Host = "www.googleapis.com";
String thisPage = "/geolocation/v1/geolocate? Key =";
// --- Kry 'n Google maps ap-sleutel hier:
developers.google.com/maps/documentation/geolocation/intro
String key = "Jou Google API -sleutel"; // Soek vanaf stap2
Instruksie
int status = WL_IDLE_STATUS;
String jsonString = "{ n";
dubbele breedtegraad = 0,0;
dubbele lengte = 0,0;
dubbele akkuraatheid = 0,0;
int more_text = 1; // gestel op 1 vir meer ontfoutingsuitsette
ongeldige opstelling () {
Serial.begin (9600);
Serial.println ("Begin");
// Stel WiFi in die stasie -modus en
ontkoppel van 'n AP as dit voorheen gekoppel was
WiFi.mode (WIFI_STA);
WiFi. Ontkoppel ();
vertraging (100);
Serial.println ( Opstelling
gedoen );
// Ons begin deur aan te sluit by a
WiFi netwerk
Serial.print ( Koppel aan
);
Serial.println (myssid);
WiFi.begin (myssid, mypass);
terwyl (WiFi.status ()! = WL_CONNECTED) {
vertraging (500);
Serial.print (".");
}
Serial.println (".");
}
leemte -lus () {
char bssid [6];
DynamicJsonBuffer jsonBuffer;
Serial.println ("scan begin");
// WiFi.scanNetworks sal terugkeer
die aantal netwerke gevind
int n = WiFi.scanNetworks ();
Serial.println ("scandone");
as (n == 0)
Serial.println ("geen netwerke gevind nie");
anders
{
Reeks.afdruk (n);
Serial.println ("netwerke gevind …");
as (more_text) {
// Druk die geformateerde json uit …
Serial.println ("{");
Serial.println ("\" homeMobileCountryCode / ": 234,"); // dit is 'n regte Britse MCC
Serial.println ("\" homeMobileNetworkCode / ": 27,"); // en 'n regte Britse MNC
Serial.println ("\" radioType / ": \" gsm / ","); // vir gsm
Serial.println ("\" carrier / ": \" Vodafone / ","); // geassosieer met Vodafone
Serial.println ("\" cellTowers / ": ["); // Ek meld geen sel torings aan nie
Serial.println ("],");
Serial.println ("\" wifiAccessPoints / ": [");
vir (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));
as (i <n - 1)
{
Serial.println ("},");
}
anders
{
Serial.println ("}");
}
}
Serial.println ("]");
Serial.println ("}");
}
Serial.println ("");
}
// bou nou die jsonString …
jsonString = "{ n";
jsonString += "\" homeMobileCountryCode / ": 234, / n"; // dit is 'n regte Britse MCC
jsonString += "\" homeMobileNetworkCode / ": 27, / n"; // en 'n regte Britse MNC
jsonString += "\" radioType / ": \" gsm / ", / n"; // vir gsm
jsonString += "\" carrier / ": \" Vodafone / ", / n"; // geassosieer met Vodafone
jsonString += "\" wifiAccessPoints / ": [n";
vir (int j = 0; j <n; ++ j)
{
jsonString += "{ n";
jsonString += "\" macAddress / ": \" ";
jsonString += (WiFi. BSSIDstr (j));
jsonString += "\", / n ";
jsonString += "\" signalStrength / ":";
jsonString += WiFi. RSSI (j);
jsonString += "\ n";
as (j <n - 1)
{
jsonString += "}, / n";
}
anders
{
jsonString += "} n";
}
}
jsonString += ("] n");
jsonString += ("} n");
//--------------------------------------------------------------------
Serial.println ("");
WiFiClientSecure -kliënt;
// Koppel aan die kliënt en maak die api -oproep
Serial.print ("URL versoek:");
// ---- Kry Google Maps Api-sleutel hier, skakel:
Serial.println ("https://" + (String) Host + thisPage + "PUT-YOUR-GOOGLE-MAPS-API-KEY-HERE");
Serial.println ("");
if (client.connect (gasheer, 443)) {
Serial.println ("verbind");
client.println ("POST" + hierdie bladsy + sleutel + "HTTP/1.1");
client.println ("Host:" + (String) Host);
client.println ("Verbinding: sluit");
client.println ("Inhoudstipe: toepassing/json");
client.println ("Gebruikersagent: Arduino/1.0");
client.print ("Inhoudlengte:");
client.println (jsonString.length ());
client.println ();
client.print (jsonString);
vertraging (500);
}
// Lees en ontleed al die reëls van
die antwoord van die bediener
terwyl (client.available ()) {
String line = client.readStringUntil ('\ r');
as (meer_teks) {
Serial.print (reël);
}
JsonObject & root = jsonBuffer.parseObject (reël);
as (root.success ()) {
latitude = root ["location"] ["lat"];
longitude = root ["location"] ["lng"];
akkuraatheid = root ["akkuraatheid"];
}
}
Serial.println ("verbinding sluit");
Serial.println ();
client.stop ();
Serial.print ("Latitude =");
Serial.println (breedtegraad, 6);
Serial.print ("Lengtegraad =");
Serial.println (lengtegraad, 6);
Serial.print ("Akkuraatheid");
Serial.println (akkuraatheid);
vertraging (10000);
Serial.println ();
Serial.println ("Herbegin …");
Serial.println ();
vertraging (2000);
}