Kazalo:
- 1. korak: Deli in orodje
- 2. korak: Poiščite Googlov API
- Korak: Namestite NodeMCu v Arduino IDE
- 4. korak: Prenesite knjižnico ArduinoJson
- 5. korak: Program
Video: GEOLOACACIJA: 5 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:07
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
- 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
- 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
- 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:
Števec korakov - mikro: Bit: 12 korakov (s slikami)
Števec korakov - Micro: Bit: Ta projekt bo števec korakov. Za merjenje korakov bomo uporabili senzor pospeška, ki je vgrajen v Micro: Bit. Vsakič, ko se Micro: Bit trese, bomo štetju dodali 2 in ga prikazali na zaslonu
Akustična levitacija z Arduino Uno Korak po korak (8 korakov): 8 korakov
Akustična levitacija z Arduino Uno Korak po korak (8 korakov): ultrazvočni pretvorniki zvoka L298N Dc ženski adapter z napajalnim vtičem za enosmerni tok Arduino UNOBreadboard Kako to deluje: Najprej naložite kodo v Arduino Uno (to je mikrokrmilnik, opremljen z digitalnim in analogna vrata za pretvorbo kode (C ++)
Vijak - Nočna ura za brezžično polnjenje DIY (6 korakov): 6 korakov (s slikami)
Bolt - Nočna ura za brezžično polnjenje DIY (6 korakov): Induktivno polnjenje (znano tudi kot brezžično polnjenje ali brezžično polnjenje) je vrsta brezžičnega prenosa energije. Za zagotavljanje električne energije prenosnim napravam uporablja elektromagnetno indukcijo. Najpogostejša aplikacija je brezžično polnjenje Qi
Merilnik korakov 1. del: Enobarvni zaslon 128x32 in Arduino: 5 korakov
Pedometer 1. del: Enobarvni zaslon 128x32 in Arduino: To je osnovna vadnica, ki uči, kako uporabljati zaslon OLED s svojim Arduinom. Uporabljam zaslon velikosti 128x32, lahko pa uporabite tudi drugačen zaslon z ločljivostjo in po potrebi spremenite ločljivost/koordinate. V tem delu vam bom pokazal, kako
Preklopna obremenitvena banka z manjšo velikostjo korakov: 5 korakov
Preklopna banka odpornikov obremenitve z manjšo velikostjo korakov: Banke uporovnih obremenitev so potrebne za preskušanje energetskih proizvodov, za karakterizacijo sončnih kolektorjev, v preskusnih laboratorijih in v industriji. Reostati zagotavljajo stalno spreminjanje odpornosti na obremenitev. Ker pa se vrednost upora zmanjša, moč