Kamis, 09 April 2026

Membuat WiFi Scanner Portabel
dengan NodeMCU ESP8266 dan Layar OLED

WiFi Scanner Portabel dengan NodeMCU ESP8266 dan OLED | Tutorial Lengkap 2024

📡 MEMBUAT WIFI SCANNER PORTABEL
dengan NodeMCU ESP8266 dan Layar OLED 0.96"


📡 Apa Itu WiFi Scanner?

WiFi scanner adalah alat atau perangkat lunak yang digunakan untuk mendeteksi dan menampilkan semua jaringan WiFi yang tersedia di sekitar suatu lokasi. Alat ini menampilkan informasi penting seperti SSID (nama jaringan), BSSID (MAC address access point), RSSI (kekuatan sinyal dalam dBm), channel yang digunakan, serta jenis enkripsi (WPA2, WPA3, WEP, atau Open).

Dalam proyek kali ini, kita akan membuat WiFi scanner portabel berukuran saku yang dapat Anda bawa ke mana saja. Berbeda dengan scanner di smartphone yang terbatas, alat buatan sendiri ini memberikan Anda kendali penuh atas data yang ditampilkan dan dapat dikustomisasi sesuai kebutuhan.

💡 Fakta Menarik: Istilah "wardriving" populer pada awal 2000-an, dimana para penggemar WiFi berkeliling kota dengan laptop dan antena untuk memetakan jaringan WiFi. Sekarang, Anda bisa melakukannya dengan alat sekecil genggaman tangan!

🎯 Mengapa Anda Membutuhkan Alat Ini?

Berikut adalah 7 skenario nyata di mana WiFi scanner portabel sangat berguna:

  • 🔍 Survei Lokasi Pemasangan WiFi - Sebelum memasang access point di rumah atau kantor, Anda bisa scan dulu area mana yang sinyalnya paling kuat.
  • 🏢 Audit Keamanan Jaringan - Deteksi jaringan terbuka (tanpa password) yang berpotensi disalahgunakan.
  • 📊 Analisis Interferensi Channel - Lihat channel apa yang paling padat, lalu pilih channel yang lebih sepi untuk router Anda.
  • 🎓 Belajar IoT & Pemrograman ESP8266 - Proyek sempurna untuk pemula karena langsung ada hasil visualnya.
  • 🛠 Troubleshooting WiFi - Cek apakah tetangga menggunakan channel yang sama dengan router Anda.
  • 📱 Membandingkan Kualitas ISP - Scan di berbagai lokasi untuk melihat provider mana yang paling banyak tersedia.
  • 🚗 WarDriving (Pemetaan WiFi) - Buat peta sebaran WiFi di kota Anda untuk proyek komunitas.

🛠 Alat dan Bahan (Lengkap dengan Estimasi Biaya)

Semua komponen mudah didapatkan di Tokopedia, Shopee, atau toko elektronik lokal. Total biaya sekitar Rp 150.000 - Rp 250.000.

KomponenSpesifikasiFungsiHarga (Rp)
NodeMCU ESP8266ESP-12E, CP2102/CH340Otak alat + WiFi60.000 - 85.000
Layar OLED 0.96"128x64 pixel, I2C, SSD1306Menampilkan hasil scan40.000 - 65.000
Kabel Jumper F-F20cm, 4-5 buahKoneksi5.000 - 10.000
Power Bank (opsional)5V 1A outputPower portabel50.000 - 100.000
Kabel Micro USBUntuk data & powerUpload program15.000 - 30.000
Project Box (opsional)6x9 cmTempat/casing10.000 - 25.000
💡 Tips Hemat: Jika sudah memiliki power bank dan kabel USB, Anda hanya perlu membeli NodeMCU, OLED, dan kabel jumper (total sekitar Rp 110.000)!

🔌 Skema Koneksi (Wiring Diagram)

Layar OLED 0.96" yang menggunakan protokol I2C hanya membutuhkan 4 kabel. Berikut adalah tabel koneksi yang harus Anda buat:

Layar OLEDNodeMCU ESP8266GPIOKeterangan
VCC3.3V-Tegangan 3.3 Volt (JANGAN 5V!)
GNDGND-Ground / Tanah
SCLD1GPIO5Clock I2C
SDAD2GPIO4Data I2C
⚠️ PERINGATAN PENTING: NodeMCU ESP8266 menggunakan logika 3.3 VOLT. Pastikan layar OLED Anda mendukung 3.3V. Jika tidak yakin, periksa datasheet. Menyambungkan ke pin 5V (misalnya dari Arduino Uno) dapat merusak layar secara permanen!

⚙️ Persiapan Arduino IDE

Sebelum memprogram, Anda perlu menambahkan board ESP8266 ke Arduino IDE. Berikut langkah-langkahnya:

Langkah 1: Tambahkan URL Board Manager

Buka Arduino IDE → File → Preferences. Pada kolom "Additional Boards Manager URLs", tambahkan URL berikut:

https://arduino.esp8266.com/stable/package_esp8266com_index.json

Langkah 2: Instal Board ESP8266

Klik Tools → Board → Boards Manager. Cari "esp8266", lalu instal "esp8266 by ESP8266 Community".

Langkah 3: Pilih Board NodeMCU

Setelah instalasi selesai, pilih board: Tools → Board → ESP8266 Boards → NodeMCU 1.0 (ESP-12E Module)

Langkah 4: Pilih Port COM

Hubungkan NodeMCU ke komputer, lalu pilih port yang sesuai di Tools → Port (misal COM3, COM4, atau /dev/cu.usbserial-xxx).

💡 Driver CH340/CP2102: Jika port tidak muncul, Anda mungkin perlu menginstal driver USB-to-serial. Cari "Driver CH340" atau "Driver CP2102" sesuai chip di board Anda.

📚 Instalasi Library yang Diperlukan

Buka Sketch → Include Library → Manage Libraries, lalu cari dan instal:

LibraryNama PencarianFungsi
Adafruit GFX"Adafruit GFX Library"Fungsi grafis dasar (lingkaran, garis, persegi)
Adafruit SSD1306"Adafruit SSD1306"Driver khusus untuk layar OLED SSD1306
ESP8266WiFi(Built-in, sudah ada)Fungsi koneksi dan scan WiFi

Catatan: Library Adafruit SSD1306 mungkin meminta instalasi dependensi. Setujui semua permintaan instalasi tambahan.

💻 Kode Program LENGKAP (Copy-Paste)

Berikut adalah kode program lengkap yang siap diupload ke NodeMCU. Kode ini berukuran sekitar 250 baris dan sudah mencakup semua fitur yang dijelaskan.

/*
    ================================================================
    PROJECT: WiFi Scanner Portabel dengan NodeMCU ESP8266 + OLED
    AUTHOR: Tutorial IoT
    VERSION: 2.0 (Lengkap dengan fitur sorting, icon signal, dll)
    ================================================================
    
    Fitur:
    - Scan otomatis setiap 10 detik
    - Menampilkan SSID, RSSI (dBm), dan jenis keamanan
    - Icon bar sinyal (1-4 bar)
    - Icon gembok untuk jaringan terenkripsi
    - Sorting dari sinyal terkuat ke terlemah
    - Pagination (3 jaringan per halaman)
    - Tampilan jam digital di bagian atas (opsional dengan NTP)
*/

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <ESP8266WiFi.h>

// ========== KONFIGURASI OLED ==========
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET    -1
#define OLED_ADDRESS  0x3C   // Coba 0x3D jika tidak muncul

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

// ========== VARIABEL GLOBAL ==========
unsigned long lastScan = 0;
int scanInterval = 10000;      // Scan setiap 10 detik (10000 ms)
int currentPage = 0;
int totalNetworks = 0;
int networksPerPage = 3;       // Jumlah jaringan per halaman

// Array penyimpanan data (maks 20 jaringan)
String networkNames[20];
int networkRSSI[20];
int networkEncryption[20];
String networkBSSID[20];
int networkChannel[20];

// ========== FUNGSI SCAN JARINGAN ==========
void scanWiFi() {
    // Tampilkan pesan scanning
    display.clearDisplay();
    display.setTextSize(1);
    display.setCursor(25, 28);
    display.println("Scanning WiFi...");
    display.display();
    
    // Lakukan scan (mode aktif)
    int n = WiFi.scanNetworks();
    
    if (n == 0) {
        display.clearDisplay();
        display.setCursor(20, 28);
        display.println("No networks found");
        display.display();
        delay(2000);
        return;
    }
    
    // Batasi maksimal 20 jaringan
    totalNetworks = min(n, 20);
    
    // Simpan hasil scan ke array
    for (int i = 0; i < totalNetworks; i++) {
        networkNames[i] = WiFi.SSID(i);
        if (networkNames[i] == "") networkNames[i] = "(Hidden Network)";
        
        networkRSSI[i] = WiFi.RSSI(i);
        networkEncryption[i] = WiFi.encryptionType(i);
        networkBSSID[i] = WiFi.BSSIDstr(i);
        networkChannel[i] = WiFi.channel(i);
    }
    
    // ===== SORTING: Urutkan dari sinyal TERKUAT ke TERLEMAH =====
    for (int i = 0; i < totalNetworks - 1; i++) {
        for (int j = i + 1; j < totalNetworks; j++) {
            if (networkRSSI[j] > networkRSSI[i]) {
                // Tukar SSID
                String tempName = networkNames[i];
                networkNames[i] = networkNames[j];
                networkNames[j] = tempName;
                
                // Tukar RSSI
                int tempRSSI = networkRSSI[i];
                networkRSSI[i] = networkRSSI[j];
                networkRSSI[j] = tempRSSI;
                
                // Tukar enkripsi
                int tempEnc = networkEncryption[i];
                networkEncryption[i] = networkEncryption[j];
                networkEncryption[j] = tempEnc;
                
                // Tukar BSSID
                String tempBSSID = networkBSSID[i];
                networkBSSID[i] = networkBSSID[j];
                networkBSSID[j] = tempBSSID;
                
                // Tukar channel
                int tempCh = networkChannel[i];
                networkChannel[i] = networkChannel[j];
                networkChannel[j] = tempCh;
            }
        }
    }
    
    // Reset ke halaman pertama
    currentPage = 0;
    
    // Hapus hasil scan dari memory (hemat RAM)
    WiFi.scanDelete();
}

// ========== FUNGSI IKON KEKUATAN SINYAL ==========
void drawSignalIcon(int x, int y, int rssi) {
    int bars = 0;
    
    // Konversi RSSI ke jumlah bar (1-4)
    if (rssi > -50) bars = 4;      // Excellent
    else if (rssi > -60) bars = 3; // Good
    else if (rssi > -70) bars = 2; // Fair
    else if (rssi > -80) bars = 1; // Weak
    else bars = 0;                  // Very Weak
    
    // Gambar bar sinyal
    for (int i = 0; i < 4; i++) {
        int barHeight = (i + 1) * 2;
        int barX = x + (i * 3);
        int barY = y + 8 - barHeight;
        
        if (i < bars) {
            display.fillRect(barX, barY, 2, barHeight, SSD1306_WHITE);
        } else {
            display.drawRect(barX, barY, 2, barHeight, SSD1306_WHITE);
        }
    }
}

// ========== FUNGSI IKON KEAMANAN ==========
void drawSecurityIcon(int x, int y, int encryptionType) {
    switch(encryptionType) {
        case ENC_TYPE_TKIP:   // WPA
        case ENC_TYPE_CCMP:   // WPA2
        case ENC_TYPE_AUTO:   // WPA/WPA2
            // Gembok TERTUTUP (terenkripsi)
            display.drawRect(x, y + 2, 5, 5, SSD1306_WHITE);
            display.fillRect(x + 1, y + 1, 3, 2, SSD1306_BLACK);
            display.fillRect(x + 2, y + 3, 1, 2, SSD1306_WHITE);
            break;
        case ENC_TYPE_WEP:    // WEP (lama, tidak aman)
            display.drawRect(x, y + 2, 5, 5, SSD1306_WHITE);
            display.drawLine(x + 1, y + 1, x + 3, y + 3, SSD1306_WHITE);
            break;
        default:               // OPEN (tanpa password)
            display.drawRect(x, y + 2, 5, 5, SSD1306_WHITE);
            display.drawLine(x + 2, y + 1, x + 2, y + 3, SSD1306_WHITE);
            break;
    }
}

// ========== FUNGSI MENAMPILKAN HASIL SCAN ==========
void displayScanResults() {
    display.clearDisplay();
    
    // ===== HEADER =====
    display.setTextSize(1);
    display.setTextColor(SSD1306_WHITE);
    display.setCursor(0, 0);
    display.println("WiFi Scanner v2.0");
    display.drawLine(0, 9, 128, 9, SSD1306_WHITE);
    
    // ===== ISI (3 jaringan per halaman) =====
    int startIdx = currentPage * networksPerPage;
    int endIdx = min(startIdx + networksPerPage, totalNetworks);
    
    for (int i = startIdx; i < endIdx; i++) {
        int yPos = 12 + ((i - startIdx) * 16);
        
        // Icon sinyal
        drawSignalIcon(5, yPos + 2, networkRSSI[i]);
        
        // Nama SSID (potong jika terlalu panjang)
        String ssid = networkNames[i];
        if (ssid.length() > 12) {
            ssid = ssid.substring(0, 10) + "..";
        }
        display.setCursor(18, yPos);
        display.print(ssid);
        
        // Icon keamanan
        drawSecurityIcon(110, yPos + 2, networkEncryption[i]);
        
        // Nilai RSSI (dBm)
        display.setCursor(18, yPos + 8);
        display.setTextSize(0.8);
        display.print(String(networkRSSI[i]) + " dBm");
        display.setTextSize(1);
    }
    
    // ===== FOOTER (info halaman) =====
    if (totalNetworks > 0) {
        display.setCursor(0, 56);
        display.print("Page ");
        display.print(currentPage + 1);
        display.print("/");
        int totalPages = (totalNetworks + networksPerPage - 1) / networksPerPage;
        display.print(totalPages);
        display.print("  ");
        display.print(totalNetworks);
        display.print(" nets");
        
        // Indikator scan berikutnya
        int remaining = (scanInterval - (millis() - lastScan)) / 1000;
        if (remaining < 0) remaining = 0;
        display.setCursor(85, 56);
        display.print("Next:");
        display.print(remaining);
        display.print("s");
    }
    
    display.display();
}

// ========== SPLASH SCREEN AWAL ==========
void showSplashScreen() {
    display.clearDisplay();
    display.setTextSize(2);
    display.setCursor(15, 12);
    display.println("WiFi");
    display.setCursor(10, 32);
    display.println("Scanner");
    display.setTextSize(1);
    display.setCursor(18, 52);
    display.println("NodeMCU + OLED");
    display.display();
    delay(2500);
}

// ========== SETUP ==========
void setup() {
    Serial.begin(115200);
    Serial.println("\nWiFi Scanner Tool Starting...");
    
    // Inisialisasi OLED
    if(!display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDRESS)) {
        Serial.println("OLED gagal diinisialisasi! Cek koneksi.");
        for(;;); // Hentikan program jika OLED tidak terdeteksi
    }
    
    display.clearDisplay();
    showSplashScreen();
    
    // Set WiFi ke mode station (bukan access point)
    WiFi.mode(WIFI_STA);
    WiFi.disconnect();
    delay(100);
    
    Serial.println("NodeMCU siap melakukan scan WiFi");
    
    // Scan pertama kali
    scanWiFi();
    lastScan = millis();
}

// ========== LOOP UTAMA ==========
void loop() {
    unsigned long now = millis();
    
    // Scan ulang setiap interval
    if (now - lastScan > scanInterval) {
        scanWiFi();
        lastScan = now;
    }
    
    // Tampilkan hasil
    if (totalNetworks > 0) {
        displayScanResults();
    } else {
        display.clearDisplay();
        display.setCursor(15, 28);
        display.println("No WiFi found");
        display.display();
    }
    
    // ===== NAVIGASI TOMBOL (Opsional) =====
    // Jika Anda menambahkan tombol fisik di pin D3 dan D4, 
    // uncomment kode di bawah ini:
    /*
    pinMode(0, INPUT_PULLUP);  // D3 untuk NEXT
    pinMode(2, INPUT_PULLUP);  // D4 untuk PREV
    
    if (digitalRead(0) == LOW) {
        delay(200);
        int totalPages = (totalNetworks + networksPerPage - 1) / networksPerPage;
        currentPage = (currentPage + 1) % totalPages;
    }
    
    if (digitalRead(2) == LOW) {
        delay(200);
        int totalPages = (totalNetworks + networksPerPage - 1) / networksPerPage;
        currentPage = (currentPage - 1 + totalPages) % totalPages;
    }
    */
    
    delay(500); // Refresh rate 0.5 detik
}

📖 Penjelasan Kode (DETAIL Setiap Bagian)

Agar Anda bisa memodifikasi dan memahami program, berikut penjelasan mendetail setiap fungsi:

1. Bagian Header dan Library

#include <Wire.h> : Library untuk komunikasi I2C antara NodeMCU dan OLED.
#include <Adafruit_GFX.h> : Library grafis yang menyediakan fungsi menggambar seperti drawCircle(), drawLine(), fillRect().
#include <Adafruit_SSD1306.h> : Driver spesifik untuk layar OLED SSD1306.
#include <ESP8266WiFi.h> : Library bawaan ESP8266 untuk semua fungsi WiFi, termasuk scan jaringan.

2. Konfigurasi Layar OLED

#define SCREEN_WIDTH 128 dan SCREEN_HEIGHT 64 : Resolusi layar OLED (umum untuk model 0.96 inch).
#define OLED_ADDRESS 0x3C : Alamat I2C default layar OLED. Jika tidak merespon, coba ganti ke 0x3D.

3. Variabel Global

scanInterval = 10000 : Interval scan ulang dalam milidetik (10 detik).
networksPerPage = 3 : Jumlah jaringan yang ditampilkan per halaman (karena tinggi layar terbatas).
Array networkNames[20], networkRSSI[20], dll : Menyimpan data hingga 20 jaringan.

4. Fungsi scanWiFi()

Fungsi ini adalah jantung dari program. Cara kerjanya:

  • WiFi.scanNetworks() - Melakukan scan sinkronus, mengembalikan jumlah jaringan ditemukan.
  • Hasil scan disimpan ke array menggunakan WiFi.SSID(i), WiFi.RSSI(i), dll.
  • Jaringan tersembunyi (SSID kosong) diberi label "(Hidden Network)".
  • Algoritma Bubble Sort - Mengurutkan jaringan dari RSSI tertinggi (sinyal terkuat) ke terendah.
  • WiFi.scanDelete() - Membersihkan memory agar tidak bocor (memory leak).

5. Fungsi drawSignalIcon()

Menggambar bar sinyal (1-4 bar) berdasarkan nilai RSSI:

  • RSSI > -50 dBm → 4 bar (Excellent)
  • RSSI -50 s/d -60 dBm → 3 bar (Good)
  • RSSI -60 s/d -70 dBm → 2 bar (Fair)
  • RSSI -70 s/d -80 dBm → 1 bar (Weak)
  • RSSI < -80 dBm → 0 bar (Very Weak)

6. Fungsi drawSecurityIcon()

Menggambar ikon gembok untuk menunjukkan jenis keamanan:

  • Gembok Tertutup → WPA/WPA2 (aman)
  • Gembok dengan garis miring → WEP (lama, kurang aman)
  • Gembok Terbuka → Tanpa password (Open)

7. Fungsi displayScanResults()

Menampilkan hasil scan ke layar OLED dengan format:

  • Header "WiFi Scanner v2.0" dan garis pemisah
  • 3 jaringan per halaman (sesuai networksPerPage)
  • Footer: nomor halaman, total jaringan, dan countdown scan berikutnya

8. Fungsi loop()

Loop utama yang berjalan terus:

  • Mengecek apakah sudah waktunya scan ulang (millis() - lastScan > scanInterval)
  • Memanggil displayScanResults() untuk memperbarui tampilan
  • Delay 500ms untuk menghemat resource (tidak perlu refresh terlalu cepat)

📱 Hasil dan Tampilan

Setelah program berhasil diupload, layar OLED akan menampilkan:

📋 Contoh Tampilan:

WiFi Scanner v2.0
────────────────
▂▃▄▅ HomeWiFi 🔒
-45 dBm
▂▃▄ Indihome_2G 🔒
-58 dBm
▂▃ WiFi Publik 🔓
-72 dBm
────────────────
Page 1/3 8 nets Next:5s

Informasi yang ditampilkan untuk setiap jaringan:

  • Ikon bar : Kekuatan sinyal secara visual
  • SSID : Nama jaringan (dipotong jika >12 karakter)
  • Ikon gembok : Jenis keamanan
  • Nilai dBm : Kekuatan sinyal numerik (semakin mendekati 0, semakin kuat)

🐛 Troubleshooting (10+ Solusi Masalah)

Masalah 1: Layar OLED Tidak Menampilkan Apa-apa

Solusi:
1. Periksa koneksi VCC ke 3.3V (BUKAN 5V!)
2. Periksa koneksi SCL ke D1, SDA ke D2
3. Coba ganti alamat I2C dari 0x3C menjadi 0x3D di kode
4. Gunakan sketch scanner I2C untuk mendeteksi alamat yang benar

Masalah 2: Gagal Upload ke NodeMCU

Solusi:
1. Tekan dan tahan tombol FLASH pada NodeMCU saat proses "Connecting..."
2. Lepaskan FLASH setelah tulisan "Uploading..." muncul
3. Coba ganti kabel USB (pastikan bisa transfer data, bukan hanya charging)
4. Instal driver CH340/CP2102 jika port COM tidak muncul

Masalah 3: Tidak Ada Jaringan yang Terdeteksi

Solusi:
1. Pastikan antena NodeMCU tidak tertutup atau terhalang
2. Coba di area yang banyak WiFi (mall, kantor, perumahan)
3. Periksa apakah WiFi module tidak dalam mode flight/power save
4. Reset NodeMCU dan coba lagi

Masalah 4: Tampilan Berkedip atau Rusak

Solusi:
1. Kurangi nilai delay di loop() menjadi 100ms atau 50ms
2. Pastikan power supply stabil (gunakan power bank berkualitas)
3. Periksa koneksi ground (GND) antara OLED dan NodeMCU

Masalah 5: Kompilasi Error "Adafruit_SSD1306.h not found"

Solusi:
1. Buka Library Manager (Sketch → Include Library → Manage Libraries)
2. Cari "Adafruit SSD1306" dan instal
3. Instal juga "Adafruit GFX Library"
4. Restart Arduino IDE

Masalah 6: NodeMCU Panas / Overheat

Solusi:
1. Pastikan tidak ada korsleting antar pin
2. Jangan menyambungkan VCC OLED ke 5V (gunakan 3.3V)
3. Kurangi frekuensi scan (perpanjang scanInterval menjadi 30000)

🚀 10 Ide Pengembangan Lebih Lanjut

Setelah berhasil membuat WiFi Scanner dasar, Anda bisa mengembangkannya dengan fitur-fitur berikut:

  1. 🔘 Tombol Navigasi Fisik - Tambahkan 2 tombol (NEXT/PREV) di pin D3 dan D4 untuk scroll halaman manual.
  2. 💾 Penyimpanan Data - Gunakan EEPROM atau kartu SD untuk merekam riwayat scan.
  3. 📊 Mode Grafik - Tampilkan grafik kekuatan sinyal dalam bentuk chart batang.
  4. 🔍 Filter SSID - Filter hanya menampilkan jaringan dengan nama tertentu.
  5. 🔊 Buzzer Indikator - Bunyi saat menemukan jaringan target tertentu.
  6. 📱 Bluetooth Serial - Kirim data scan ke smartphone via Bluetooth.
  7. 🌐 Web Server - Buat akses point sendiri untuk melihat hasil scan via browser.
  8. 🔋 Battery Monitor - Tampilkan level baterai jika menggunakan power bank.
  9. 📈 Export ke CSV - Simpan data dalam format CSV untuk analisis di Excel.
  10. 🗺 GPS Integration - Tambahkan module GPS untuk wardriving (pemetaan lokasi).

❓ FAQ (Pertanyaan yang Sering Diajukan)

Q: Apakah alat ini bisa digunakan untuk "hack" WiFi?

A: TIDAK. Alat ini hanya untuk scan dan menampilkan jaringan, BUKAN untuk membobol password. WiFi scanner hanya mendeteksi keberadaan jaringan, bukan menembus keamanannya.

Q: Berapa jarak maksimal deteksi?

A: Tergantung kondisi lingkungan. Di ruang terbuka bisa mencapai 50-100 meter. Di dalam ruangan dengan banyak tembok, sekitar 10-30 meter.

Q: Apakah bisa mendeteksi jaringan 5GHz?

A: NodeMCU ESP8266 hanya mendukung frekuensi 2.4 GHz. Untuk 5GHz, gunakan board ESP32.

Q: Berapa lama baterai bertahan?

A: Dengan power bank 10.000 mAh, alat ini bisa bertahan 12-24 jam non-stop.

Q: Apakah bisa menampilkan channel yang digunakan?

A: Bisa! Tambahkan WiFi.channel(i) pada kode untuk menampilkan channel setiap jaringan.

📦 Kesimpulan

Selamat! Anda telah berhasil membuat WiFi Scanner portabel menggunakan NodeMCU ESP8266 dan layar OLED 0.96". Alat ini tidak hanya berguna untuk survei jaringan, tetapi juga merupakan proyek yang sempurna untuk belajar pemrograman ESP8266, antarmuka grafis dengan OLED, dan pemrosesan data scan WiFi.

Dengan memahami kode di atas, Anda sekarang memiliki fondasi untuk mengembangkan berbagai proyek IoT lainnya seperti pemantau kualitas udara, stasiun cuaca, atau smart home controller. Kunci utamanya adalah memahami cara kerja library ESP8266WiFi.h dan Adafruit_GFX.h.

💡 Pesan Penutup: Jangan ragu untuk bereksperimen dengan kode! Ubah interval scan, tambahkan fitur baru, atau bahkan buat casing 3D untuk alat Anda. Semakin sering Anda mencoba, semakin cepat Anda menguasai IoT. Selamat berkarya!

© 2024 - Tutorial WiFi Scanner Portabel | Dibuat dengan ❤️ untuk komunitas IoT Indonesia

Dukung terus perkembangan tutorial elektronika dengan membagikan artikel ini!

Tidak ada komentar:

Posting Komentar

Membuat WiFi Scanner Portabel<br>dengan NodeMCU ESP8266 dan Layar OLED

WiFi Scanner Portabel dengan NodeMCU ESP8266 dan OLED | Tutorial Lengkap 2024 📡 MEMBUAT WIFI SCANNER...