Daftar Isi:
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-13 06:57
Ini Proyek Magang Musim Panas saya. Saya sangat terkejut ketika saya mendengar kami dapat melacak lokasi perangkat apa pun tanpa menggunakan modul GPS hanya menggunakan NodeMCU. Melalui ini kami dapat melacak perangkat apa pun. Anda juga terkejut bagaimana kami dapat melacak perangkat hanya dengan menggunakan WiFi. Berikut adalah deskripsi sortir untuk memahaminya.
- · Ini Pindai hampir semua WiFi Anda.
- · Kirim lokasi perangkat ini ke Google menggunakan Google API
- · Menurut ini Ini menemukan lokasi perangkat Anda
- · Anda memiliki koneksi jaringan yang kuat untuk Proyek ini.
Langkah 1: Suku Cadang & Alat
Bagian
- NodeMCU (ESP8266 1.0 12E)
- Kabel USB
Peralatan
Arduino IDE dengan Papan NodeMcu 1.0 12E
Google API
Langkah 2: Temukan Google API
- Buka Browser Anda dan ketik: console.developer.google.com
- Buat proyek baru
- Setelah Buat Proyek baru, klik kredensial
- Klik pada Kunci API
-
Kunci API Anda telah dibuat
Untuk Mudah memahami lihat gambar berikut |>
Langkah 3: Setup NodeMCu di Arduino IDE
- Unduh Arduino IDE dari Tautan berikut: - https://www. Utama/Perangkat Lunak arduino.cc/en/
- Tambahkan papan Node Mcu di Arduino IDE
-
Untuk mengupload kode pada NodeMCU Anda harus menambahkan board NodeMCu pada ARDUINO IDE.
- PERGI ke file & Preferensi di Arduino IDE
- Dan di bagian Pengelola Dewan Tambahan salin tautan berikut
- arduino.esp8266.com/stable/package_esp8266c…
- dan klik Oke
- Papan diunduh
- Buka alat dan papan dan pilih NodeMCU 1.0 12E
- Lihat gambar avobe agar mudah dipahami
Langkah 4: Unduh Perpustakaan ArduinoJson
- Pergi ke
Sketsa Sertakan Perpustakaan Kelola Perpustakaan
Ketik Arduino Json di kotak pencarian
Unduh versi terbaru perpustakaan ArduinoJson
setelah mengunduh perpustakaan klik tutup
Tambahkan perpustakaan dari
SketsatermasukPerpustakaanArduinoJson
Langkah 5: Program
Unggah program berikut di papan NodeMCU. dan lihat lokasi perangkat Anda (papan NodeMCU 1.0 12E) di monitor Serial.
#termasuk
#termasuk
#termasuk
char myssid = "SSID Anda"; // SSID jaringan Anda (nama)
char mypass = "Kata Sandi Anda"; // kata sandi jaringan Anda
//Kredensial untuk Google GeoLocation API…
const char* Host = "www.googleapis.com";
String thisPage = "/geolocation/v1/geolocate?key=";
// --- Dapatkan kunci ap google maps di sini:
developers.google.com/maps/documentation/geolocation/intro
Kunci string = "Kunci Google API Anda";//Temukan dari langkah2
Petunjuk
int status = WL_IDLE_STATUS;
String jsonString = "{n";
lintang ganda = 0,0;
bujur ganda = 0,0;
akurasi ganda = 0,0;
int lebih_teks = 1; // set ke 1 untuk lebih banyak keluaran debug
batalkan pengaturan() {
Serial.begin(9600);
Serial.println("Mulai");
// Atur WiFi ke mode stasiun dan
putuskan sambungan dari AP jika sebelumnya terhubung
WiFi.mode(WIFI_STA);
WiFi.putuskan();
penundaan(100);
Serial.println( Pengaturan
selesai );
// Kita mulai dengan menghubungkan ke a
jaringan Wi-Fi
Serial.print( Menghubungkan ke
);
Serial.println(myssid);
WiFi.begin(myssid, mypass);
sementara (WiFi.status() !=WL_CONNECTED) {
penundaan (500);
Serial.print(".");
}
Serial.println(".");
}
lingkaran kosong() {
char bssid[6];
DynamicJsonBuffer jsonBuffer;
Serial.println("scan mulai");
// WiFi.scanNetworks akan kembali
jumlah jaringan yang ditemukan
int n = WiFi.scanNetworks();
Serial.println("scandon");
jika (n == 0)
Serial.println("tidak ada jaringan yang ditemukan");
lain
{
Serial.print(n);
Serial.println("jaringan ditemukan…");
if (teks_lebih) {
// Cetak json yang diformat…
Serial.println("{");
Serial.println("\"homeMobileCountryCode\":234, "); // ini adalah PKS Inggris asli
Serial.println("\"homeMobileNetworkCode\":27, "); // dan MNC Inggris asli
Serial.println("\"radioType\":\"gsm\", "); //untuk gsm
Serial.println("\"operator\":\"Vodafone\", "); //terkait dengan Vodafone
Serial.println("\"cellTowers\": ["); // Saya tidak melaporkan menara seluler apa pun
Serial.println("], ");
Serial.println("\"wifiAccessPoints\": [");
untuk (int i = 0; i < n; ++i)
{
Serial.println("{");
Serial.print("\"macAddress\": \"");
Serial.print(WiFi. BSSIDstr(i));
Serial.println("\", ");
Serial.print("\"Kekuatan sinyal\": ");
Serial.println(WiFi. RSSI(i));
jika (i < n - 1)
{
Serial.println("}, ");
}
lain
{
Serial.println("}");
}
}
Serial.println("]");
Serial.println("}");
}
Serial.println(" ");
}
// sekarang buat jsonString…
jsonString = "{n";
jsonString +="\"homeMobileCountryCode\": 234, \n"; // ini adalah PKS Inggris asli
jsonString +="\"homeMobileNetworkCode\": 27, \n"; // dan MNC Inggris asli
jsonString +="\"radioType\": \"gsm\", \n"; // untuk gsm
jsonString +="\"operator\": \"Vodafone\", \n"; // terkait dengan Vodafone
jsonString +="\"wifiAccessPoints\": [n";
untuk (int j = 0; j < n; ++j)
{
jsonString += "{n";
jsonString +="\"macAddress\": \"";
jsonString +=(WiFi. BSSIDstr(j));
jsonString +="\", \n";
jsonString +="\"signalStrength\": ";
jsonString += WiFi. RSSI(j);
jsonString += "\n";
jika (j < n - 1)
{
jsonString +="}, \n";
}
lain
{
jsonString +="}\n";
}
}
jsonString += ("]\n");
jsonString += ("}\n");
//--------------------------------------------------------------------
Serial.println("");
Klien WiFiClientSecure;
//Hubungkan ke klien dan lakukan panggilan api
Serial.print("Meminta URL: ");
// ---- Dapatkan Google Maps Api Key di sini, Tautan:
Serial.println("https://" + (String)Host + Halaman ini +"PUT-YOUR-GOOGLE-MAPS-API-KEY-HERE");
Serial.println(" ");
if (client.connect(Host, 443)) {
Serial.println("Terhubung");
client.println("POST" + Halaman ini + kunci +"
client.println("Host:" + (String)Host);
client.println("Koneksi: tutup");
client.println("Tipe Konten: aplikasi/json");
client.println("User-Agent: Arduino/1.0");
client.print("Panjang Konten: ");
client.println(jsonString.length());
klien.println();
client.print(jsonString);
penundaan (500);
}
//Baca dan parsing semua baris dari
balasan dari server
while (client.available()) {
String baris =client.readStringUntil('\r');
if (teks_lebih) {
Serial.print(baris);
}
JsonObject& root =jsonBuffer.parseObject(baris);
if (root.sukses()) {
lintang =root["lokasi"]["lat"];
bujur =root["lokasi"]["lng"];
akurasi = root["akurasi"];
}
}
Serial.println("menutup koneksi");
Serial.println();
klien.berhenti();
Serial.print("Lintang =");
Serial.println(lintang, 6);
Serial.print("Bujur =");
Serial.println(bujur, 6);
Serial.print("Akurasi =");
Serial.println(akurasi);
penundaan (10000);
Serial.println();
Serial.println("Memulai Ulang…");
Serial.println();
penundaan(2000);
}