Memilih teknologi wireless yang tepat untuk perangkat IoT: WiFi untuk bandwidth tinggi, BLE untuk daya rendah dan pairing, Zigbee untuk mesh dalam ruangan, LoRaWAN untuk jangkauan jauh hemat daya, hingga NB-IoT seluler, serta praktik koneksi WiFi dan BLE dari ESP32.

Setelah di episode 5 firmware kita bisa berkomunikasi lewat MQTT, muncul pertanyaan berikutnya: lewat media apa data itu dikirim? Kabel praktis untuk prototype, tapi produk IoT nyata — sensor di sawah, meteran listrik, smart lock — nyaris semuanya nirkabel.
Memilih teknologi wireless adalah salah satu keputusan desain paling strategis: menentukan jangkauan, umur baterai, biaya, dan bandwidth. Salah pilih berarti perangkat mati baterai dalam minggu, atau tidak bisa menjangkau sensor di ujung lapangan.
Setiap teknologi mengisi posisi berbeda dalam segitiga jangkauan–bandwidth–daya. Tidak ada yang menang di semua aspek:
| Teknologi | Jangkauan | Bandwidth | Daya | Frekuensi | Kasus Penggunaan |
|---|---|---|---|---|---|
| WiFi | 10–100 m | Tinggi (Mbps) | Tinggi | 2.4/5 GHz | Rumah, kantor, video |
| BLE | 10–30 m | Rendah-sedang | Sangat rendah | 2.4 GHz | Wearable, beacon |
| Zigbee | 10–100 m (mesh) | Rendah (kbps) | Rendah | 2.4 GHz | Smart home, sensor mesh |
| LoRaWAN | 2–15 km | Sangat rendah (kbps) | Sangat rendah | 868/915 MHz | Sensor sawah, kota pintar |
| NB-IoT | 1–10 km | Rendah | Rendah | Seluler licensed | Meteran, aset mobile |
Aturan praktis: WiFi saat listrik tersedia dan butuh throughput; BLE untuk perangkat kecil bertenaga baterai di dekat ponsel; Zigbee untuk banyak sensor di satu rumah yang butuh mesh; LoRaWAN untuk sensor tersebar jauh yang jarang mengirim; NB-IoT saat butuh koneksi seluler terjamin tanpa WiFi.
WiFi adalah pilihan paling mudah untuk prototype: cepat, bandwidth besar, dan sudah ada di mana-mana. Tapi ia boros daya dan rentan gangguan 2.4 GHz di lingkungan padat.
Pada ESP32, koneksi WiFi adalah fondasi untuk MQTT:
#include <Arduino.h>
#include <WiFi.h>
const char *ssid = "NAMA_WIFI";
const char *pass = "PASSWORD_WIFI";
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.printf("\nTerhubung, IP: %s\n", WiFi.localIP().toString().c_str());
}
void loop() {
if (WiFi.status() != WL_CONNECTED) {
Serial.println("WiFi putus, reconnect...");
WiFi.reconnect();
delay(5000);
}
delay(1000);
}Perhatikan pola: firmware tidak hanya connect sekali, tapi juga mendeteksi koneksi putus dan melakukan reconnect — karena di lapangan, WiFi adalah sumber kegagalan paling umum.
Note
Konsumsi WiFi cukup besar: saat transmisi, ESP32 bisa menarik arus hingga 200–400 mA. Jika perangkat bertenaga baterai, WiFi hanya cocok jika perangkat dikirim dalam mode sleep di antara pengiriman. Untuk penghematan ekstrem, lihat episode 15 (LPWAN).
BLE dirancang untuk perangkat kecil berdaya rendah yang berkomunikasi dengan ponsel: smartwatch, sensor tubuh, beacon. Modelnya berbeda dari WiFi — perangkat advertise (menyebarkan sinyal) dan central device (ponsel) terhubung lalu membaca characteristic.
#include <Arduino.h>
#include <BLEDevice.h>
#include <BLEServer.h>
#include <BLEUtils.h>
#include <BLE2902.h>
#define SERVICE_UUID "4fafc201-1fb5-459e-8fcc-c5c9c331914b"
#define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8"
void setup() {
Serial.begin(115200);
BLEDevice::init("Sensor-Suhu");
BLEServer *server = BLEDevice::createServer();
BLEService *service = server->createService(SERVICE_UUID);
BLECharacteristic *ch = service->createCharacteristic(
CHARACTERISTIC_UUID,
BLECharacteristic::PROPERTY_READ | BLECharacteristic::PROPERTY_NOTIFY
);
ch->setValue("26.5 C");
service->start();
BLEDevice::startAdvertising();
Serial.println("BLE siap, menunggu koneksi...");
}
void loop() {
delay(10000); // perangkat sleep antar broadcast
}Ponsel dengan aplikasi BLE (mis. nRF Connect) bisa membaca nilai 26.5 C dari characteristic tersebut. BLE memungkinkan perangkat dikonfigurasi tanpa kabel — pola umum untuk setup WiFi pada produk IoT konsumen.
Zigbee membangun jaringan mesh: setiap perangkat bisa menjadi relay untuk perangkat lain, sehingga jangkauan bertambah otomatis saat jumlah perangkat bertambah. Ini alasan smart home memakai Zigbee — sensor di kamar terjauh tetap terhubung melalui perangkat di tengah.
Zigbee tidak ada di ESP32; ia butuh modul khusus (ex. CC2530) atau koordinator (Coordinator) yang menjembatani ke jaringan WiFi. Di episode 15 kita lihat bagaimana Zigbee masuk ke industri (di dalam ekosistem Matter juga).
LoRaWAN memakai modulasi LoRa di frekuensi sub-GHz (868 MHz di Eropa, 915 MHz di Indonesia/AS) untuk mengirim data sangat kecil dalam jangkauan puluhan kilometer, dengan konsumsi daya sangat rendah — sensor bisa bertahan bertahun-tahun dengan baterai AA.
| Aspek | Nilai |
|---|---|
| Ukuran payload | 51–222 byte per pesan |
| Waktu kirim | 0.1–1 detik |
| Jaringan | Gateway LoRa → Network Server |
| Biaya | Murah, open; frekuensi berlisensi untuk NB-IoT |
Contoh kasus: sensor tingkat air sungai yang mengirim pembacaan setiap 30 menit. Perangkat tidur nyaris sepanjang hari, bangun, kirim beberapa byte, tidur lagi.
Warning
Frekuensi sub-GHz diatur regulasi telekomunikasi tiap negara (di Indonesia: regulasi SDPPI Kominfo). Untuk produksi LoRaWAN, pastikan kalian memakai frekuensi yang diizinkan dan gateway/network server yang sesuai. Jangan asal memakai perangkat 868 MHz Eropa di Indonesia.
NB-IoT (Narrowband IoT) adalah standar seluler 3GPP untuk perangkat berdaya rendah: memakai spektrum LTE berlisensi, jangkauan bagus, dan biaya langganan rendah. Cocok untuk meteran listrik/air dan aset yang bergerak (tracking) karena tidak bergantung pada jaringan WiFi atau gateway pribadi — cukup SIM dan coverage operator.
Untuk praktik series ini, kita fokus pada WiFi (sudah ada di ESP32) dan BLE. Uji koneksi WiFi + MQTT sekaligus:
mosquitto_sub -h 192.168.1.10 -t "test/wifi" -v &
curl -s http://192.168.1.10:8080 2>/dev/null || echo "cek endpoint firmware"Kombinasi yang direkomendasikan untuk prototype rumah: ESP32 + WiFi + MQTT. Untuk produk yang hemat baterai: BLE (dekat ponsel) atau LoRaWAN (jauh & jarang kirim). Keputusan ini harus ditulis di arsitektur sejak episode 2.
while tak terbatas tanpa timeout membuat firmware hang; gunakan retry dengan batas.Inti yang harus dibawa pulang:
Di episode 7 selanjutnya, kita akan menaikkan data ke level berikutnya: IoT platforms & cloud — bagaimana AWS IoT, Azure IoT Hub, dan GCP bekerja, konsep device registry dan device shadow, serta praktik mendaftarkan dan menghubungkan perangkat pertama ke cloud. Perangkat kalian akan mulai bicara ke internet!