Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
Bu mənim Yaz Stajı Layihəmdir. Yalnız NodeMCU istifadə edərək GPS modulundan istifadə etmədən hər hansı bir cihazı izləyə biləcəyimizi eşidəndə həqiqətən təəccüblənirəm. Bununla hər hansı bir cihazı izləyə bilərik. Siz yalnız WiFi istifadə edərək cihazı necə izləyə biləcəyimizə təəccüblənirsiniz. Anlamaq üçün sıralama təsviri burada.
- · Demək olar ki, bütün WiFi -lərinizi tarar.
- · Google API istifadə edərək bu cihazın yerini Google -a göndərin
- · Buna görə cihazınızın yerini tapın
- · Bu Layihə üçün güclü şəbəkə bağlantınız var.
Addım 1: Parçalar və Alət
Hissələri
- NodeMCU (ESP8266 1.0 12E)
- USB Kabel
Alətlər
NodeMcu 1.0 12E lövhəsi olan Arduino IDE
Google API
Addım 2: Google API tapın
- Brauzerinizi açın və yazın: console.developer.google.com
- Yeni bir layihə yaradın
- Yeni bir layihə yaratdıqdan sonra etimadnaməsini vurun
- API Açarını vurun
-
API Açarınız yaradıldı
Asan başa düşmək üçün aşağıdakı şəkilə baxın |>
Addım 3: Arduino IDE -də NodeMCu qurun
- Arduino IDE-ni aşağıdakı linkdən yükləyin:- https:// www. Əsas/Proqram təminatı arduino.cc/az/
- Arduino IDE -də Node MCu lövhəsini əlavə edin
-
NodeMCU -da kod yükləmək üçün ARDUINO IDE -də NodeMCu lövhəsini əlavə etməlisiniz.
- Arduino IDE faylına və Tercihə gedin
- Əlavə İdarə Heyətinin bölməsində aşağıdakı linki kopyalayın
- arduino.esp8266.com/stable/package_esp8266c…
- və Ok düyməsini basın
- Lövhə yüklənir
- Alətlərə və lövhəyə gedin və NodeMCU 1.0 12E seçin
- Asanlıqla başa düşmək üçün avobe şəklinə baxın
Addım 4: ArduinoJson Kitabxanasını yükləyin
- Gedin
Eskiz kitabxanaya kitabxananı idarə et
Axtarış qutusuna Arduino Json yazın
ArduinoJson kitabxanasının son versiyasını yükləyin
kitabxananı yüklədikdən sonra bağlayın
Kitabxana əlavə edin
SketchincludeKitabxanaArduinoJson
Addım 5: Proqram
Aşağıdakı proqramı NodeMCU lövhəsinə yükləyin. və Serial monitorda cihazınızın (NodeMCU 1.0 12E lövhəsi) yerini görün.
#daxil edin
#daxil edin
#daxil edin
char myssid = "Sizin SSID"; // şəbəkənizin SSID (adı)
char mypass = "Şifrəniz"; // şəbəkə parolunuz
// Google GeoLocation API üçün etimadnamələri…
const char* Host = "www.googleapis.com";
String thisPage = "/geolocation/v1/geolocate? Key =";
// --- Bir google Maps ap açarını buradan əldə edin:
developers.google.com/maps/documentation/geolocation/intro
String key = "Google API açarınız"; // Addım 2 -dən tapın
Təlimat
int vəziyyəti = WL_IDLE_STATUS;
String jsonString = "{ n";
ikiqat enlik = 0.0;
ikiqat uzunluq = 0.0;
ikiqat dəqiqlik = 0.0;
int more_text = 1; // daha çox debug çıxışı üçün 1 olaraq təyin edin
boş quraşdırma () {
Serial.begin (9600);
Serial.println ("Başlat");
// WiFi -ni stansiya rejiminə qoyun və
əvvəllər bağlı olsaydı AP -dən ayırın
WiFi rejimi (WIFI_STA);
WiFi.disconnect ();
gecikmə (100);
Serial.println ( Quraşdırma
bitdi );
// a -ya qoşulmaqla başlayırıq
WiFi şəbəkəsi
Serial.print ( Bağlanır
);
Serial.println (msssid);
WiFi.begin (myssid, mypass);
isə (WiFi.status ()! = WL_CONNECTED) {
gecikmə (500);
Serial.print (".");
}
Serial.println (".");
}
boşluq döngəsi () {
char bssid [6];
DynamicJsonBuffer jsonBuffer;
Serial.println ("tarama başlanğıcı");
// WiFi.scanNetworks geri qayıdacaq
tapılan şəbəkələrin sayı
int n = WiFi.scanNetworks ();
Serial.println ("skandone");
əgər (n == 0)
Serial.println ("heç bir şəbəkə tapılmadı");
başqa
{
Serial. çap (n);
Serial.println ("şəbəkələr tapıldı …");
əgər (more_text) {
// Biçimlənmiş jsonu çap edin …
Serial.println ("{");
Serial.println ("\" homeMobileCountryCode / ": 234,"); // bu əsl İngiltərə MM -dir
Serial.println ("\" homeMobileNetworkCode / ": 27,"); // və əsl UK MNC
Serial.println ("\" radioType / ": \" gsm / ","); // gsm üçün
Serial.println ("\" daşıyıcısı / ": \" Vodafone / ","); // Vodafone ilə əlaqəli
Serial.println ("\" cellTowers / ": ["); // Heç bir hüceyrə qülləsi haqqında məlumat vermirəm
Serial.println ("],");
Serial.println ("\" wifiAccessPoints / ": [");
üçün (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));
əgər (i <n - 1)
{
Serial.println ("},");
}
başqa
{
Serial.println ("}");
}
}
Serial.println ("]");
Serial.println ("}");
}
Serial.println ("");
}
// indi jsonString qurun …
jsonString = "{ n";
jsonString += "\" homeMobileCountryCode / ": 234, / n"; // bu əsl İngiltərə MM -dir
jsonString += "\" homeMobileNetworkCode / ": 27, / n"; // və əsl UK MNC
jsonString += "\" radioType / ": \" gsm / ", / n"; // gsm üçün
jsonString += "\" daşıyıcısı / ": \" Vodafone / ", / n"; // Vodafone ilə əlaqəli
jsonString += "\" wifiAccessPoints / ": [n";
üçün (int j = 0; j <n; ++ j)
{
jsonString += "{ n";
jsonString += "\" macAddress / ": \" ";
jsonString += (WiFi. BSSIDstr (j));
jsonString += "\", / n ";
jsonString += "\" signalStrength / ":";
jsonString += WiFi. RSSI (j);
jsonString += "\ n";
əgər (j <n - 1)
{
jsonString += "}, / n";
}
başqa
{
jsonString += "} n";
}
}
jsonString += ("] n");
jsonString += ("} n");
//--------------------------------------------------------------------
Serial.println ("");
WiFiClientSecure müştəri;
// Müştəriyə qoşulun və api zəng edin
Serial.print ("URL tələb olunur:");
// ---- Google Xəritə Api Açarını buradan əldə edin, Bağlantı:
Serial.println ("https://" + (String) Host + thisPage + "GOOGLE-XARİTALARINI-API-KEY-BURADA YAZ");
Serial.println ("");
if (client.connect (Host, 443)) {
Serial.println ("Bağlandı");
client.println ("POST" + thisPage + key + "HTTP/1.1");
client.println ("Host:" + (String) Host);
client.println ("Bağlantı: yaxın");
client.println ("Məzmun Növü: application/json");
client.println ("İstifadəçi-Agent: Arduino/1.0");
client.print ("Məzmun-Uzunluq:");
müştəri.println (jsonString.length ());
müştəri.println ();
client.print (jsonString);
gecikmə (500);
}
// Bütün sətirləri oxuyun və təhlil edin
serverdən gələn cavab
while (client.available ()) {
String xətti = client.readStringUntil ('\ r');
əgər (more_text) {
Serial.print (xətt);
}
JsonObject & root = jsonBuffer.parseObject (xətt);
if (root.success ()) {
enlem = kök ["yer"] ["lat"];
Boylam = kök ["yer"] ["lng"];
dəqiqlik = kök ["dəqiqlik"];
}
}
Serial.println ("bağlanan əlaqə");
Serial.println ();
client.stop ();
Serial.print ("Enlem =");
Serial.println (enlik, 6);
Serial.print ("Boylam =");
Serial.println (uzunluq, 6);
Serial.print ("Dəqiqlik =");
Serial.println (dəqiqlik);
gecikmə (10000);
Serial.println ();
Serial.println ("Yenidən başlatılır …");
Serial.println ();
gecikmə (2000);
}