📚 TUTORIAL IoT LENGKAP
Panduan step-by-step untuk menghubungkan ESP32 ke Chat AIoT dan membangun proyek IoT dari nol. Cocok untuk pemula hingga mahir.
1. Setup ESP32 Pertama Kali dengan Chat AIoT
ESP32PemulaMQTTWiFi
Tutorial ini akan memandu Anda dari awal hingga ESP32 berhasil terhubung ke Chat AIoT dan bisa dikontrol dari smartphone. Tidak diperlukan pengalaman pemrograman sebelumnya.
Yang Anda Butuhkan
- ESP32 development board (NodeMCU ESP32, WROOM, atau sejenisnya)
- Kabel USB Micro-B atau USB-C (tergantung board)
- Komputer dengan Arduino IDE terinstall
- Smartphone dengan Chat AIoT
- Jaringan WiFi dengan akses internet
01
INSTALL ARDUINO IDE DAN ESP32 BOARD
Download Arduino IDE dari arduino.cc/en/software. Setelah install, buka Arduino IDE dan pergi ke File → Preferences. Di kolom "Additional boards manager URLs", tambahkan URL berikut:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Kemudian pergi ke Tools → Board → Boards Manager, cari "esp32", dan install package dari Espressif Systems.
02
INSTALL LIBRARY YANG DIPERLUKAN
Buka Tools → Manage Libraries dan install library berikut:
- PubSubClient oleh Nick O'Leary — untuk koneksi MQTT
- ArduinoJson oleh Benoit Blanchon — untuk parsing JSON
- DHT sensor library oleh Adafruit — jika menggunakan sensor suhu
03
DAPATKAN FIRMWARE DARI CHAT AIOT
Buka Chat AIoT di smartphone atau browser, pergi ke menu IoT Devices, tap tombol + untuk tambah device baru. Isi nama device, pilih board "ESP32 WiFi MQTT", lalu salin kode firmware yang dihasilkan secara otomatis.
💡 Firmware dihasilkan otomatis dengan GenkID unik Anda sudah tertanam di dalamnya. Ini memastikan hanya Anda yang bisa mengontrol device tersebut.
04
FLASH FIRMWARE KE ESP32
Paste kode firmware ke Arduino IDE. Ganti SSID dan password WiFi dengan jaringan Anda. Pilih board yang sesuai di Tools → Board → ESP32 Arduino → pilih board Anda. Pilih port COM yang sesuai, lalu klik tombol Upload (→).
// Ubah bagian ini sesuai WiFi Anda
const char* ssid = "NAMA_WIFI_ANDA";
const char* password = "PASSWORD_WIFI_ANDA";
05
VERIFIKASI KONEKSI
Buka Serial Monitor di Arduino IDE (Tools → Serial Monitor, set baud rate 115200). Anda akan melihat log koneksi ESP32. Jika berhasil, akan muncul pesan "Connected to MQTT broker". Di Chat AIoT, device Anda akan muncul dengan status online (dot hijau).
⚠️ Pastikan MQTT broker di Chat AIoT sudah diset ke "wss://sugenxos.cloud:8084" di pengaturan device. Ini adalah broker MQTT yang dioperasikan oleh Chat AIoT.
2. BLE Gateway: Kontrol ESP32 via Bluetooth
BLEBluetoothGatewayAdvanced
BLE Gateway memungkinkan Anda mengontrol ESP32 via Bluetooth Low Energy dari smartphone, bahkan tanpa koneksi WiFi. Smartphone menjadi jembatan antara internet dan perangkat BLE.
Cara Kerja BLE Gateway
Dalam mode BLE Gateway, smartphone menjalankan dua koneksi secara bersamaan: koneksi MQTT ke internet untuk menerima perintah dari pengguna lain, dan koneksi Bluetooth ke ESP32 untuk meneruskan perintah tersebut. Ini memungkinkan kontrol ESP32 yang tidak terhubung ke WiFi.
Keunggulan BLE Gateway
- ESP32 tidak perlu terhubung ke WiFi — hemat daya signifikan
- Jangkauan Bluetooth mencapai 10-50 meter (tergantung environment)
- Latensi sangat rendah untuk kontrol lokal
- ESP32 bisa beroperasi di area tanpa jaringan WiFi
- Cocok untuk perangkat portable atau outdoor
01
FLASH FIRMWARE BLE KE ESP32
Di Chat AIoT, tambah device baru dan pilih board "ESP32 BLE". Firmware BLE berbeda dari firmware WiFi — tidak memerlukan konfigurasi WiFi sama sekali.
// Firmware BLE ESP32 — tidak perlu WiFi
#include <BLEDevice.h>
#include <BLEServer.h>
#include <BLEUtils.h>
// UUID service dan characteristic sudah otomatis
// diisi oleh Chat AIoT firmware generator
#define SERVICE_UUID "6E400001-B5A3-F393-E0A9-E50E24DCCA9E"
#define CHAR_UUID_RX "6E400002-B5A3-F393-E0A9-E50E24DCCA9E"
#define CHAR_UUID_TX "6E400003-B5A3-F393-E0A9-E50E24DCCA9E"
02
AKTIFKAN BLE GATEWAY DI CHAT AIOT
Di Chat AIoT, buka menu IoT Devices, pilih device BLE Anda, tap tombol "BLE Gateway". Smartphone akan mulai scan perangkat Bluetooth terdekat. Pilih ESP32 Anda dari daftar yang muncul.
03
TEST KONTROL BLE
Setelah koneksi BLE terbentuk, Anda bisa mengontrol ESP32 via tombol ON/OFF di Chat AIoT. Perintah akan diteruskan via Bluetooth dari smartphone ke ESP32 secara real-time.
💡 BLE Gateway bekerja paling baik dalam jarak 5-10 meter. Untuk jarak lebih jauh, gunakan mode WiFi MQTT biasa.
3. Greenhouse Monitor dengan ESP32 dan Chat AIoT
GreenhouseSensorDHT22Monitoring
Proyek ini membuat sistem monitoring greenhouse otomatis yang memantau suhu, kelembaban, dan kelembaban tanah secara real-time. Data dikirim ke Chat AIoT dan Anda bisa mengontrol pompa air dan kipas dari mana saja.
Komponen yang Dibutuhkan
- ESP32 development board
- Sensor DHT22 (suhu dan kelembaban udara)
- Sensor kelembaban tanah kapasitif
- Relay module 2 channel (untuk pompa dan kipas)
- Pompa air mini 5V
- Kipas DC 12V
- Power supply 5V dan 12V
Skema Wiring
ESP32 Pin → Komponen
GPIO 4 → DHT22 Data
GPIO 34 → Soil Sensor Output
GPIO 26 → Relay 1 (Pompa Air)
GPIO 27 → Relay 2 (Kipas)
3.3V → DHT22 VCC, Soil Sensor VCC
GND → Semua GND
Fitur Sistem
- Monitoring suhu dan kelembaban udara real-time via DHT22
- Monitoring kelembaban tanah via sensor kapasitif
- Auto-watering: pompa aktif otomatis saat tanah kering
- Auto-fan: kipas aktif otomatis saat suhu tinggi
- Notifikasi ke Chat AIoT saat kondisi kritis
- Kontrol manual pompa dan kipas via Chat AIoT
// Contoh loop monitoring greenhouse
void loop() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
int soilMoisture = analogRead(SOIL_PIN);
// Kirim data ke MQTT
String payload = "{\"temp\":" + String(temperature) +
",\"hum\":" + String(humidity) +
",\"soil\":" + String(soilMoisture) + "}";
client.publish("greenhouse/data", payload.c_str());
// Auto control
if (soilMoisture > 3000) { // tanah kering
digitalWrite(PUMP_PIN, HIGH);
client.publish("greenhouse/status", "Pompa ON - Tanah Kering");
}
if (temperature > 35) { // suhu terlalu tinggi
digitalWrite(FAN_PIN, HIGH);
client.publish("greenhouse/status", "Kipas ON - Suhu Tinggi");
}
delay(30000); // update setiap 30 detik
}
💡 Gunakan delay 30 detik atau lebih untuk monitoring sensor. Update terlalu sering akan menguras baterai dan membebani broker MQTT.
4. Remote DPAD Control untuk Robot dengan Chat AIoT
RobotDPADRemote ControlMotor
Tutorial ini menjelaskan cara membuat robot sederhana yang bisa dikontrol via DPAD di Chat AIoT dari jarak jauh. Cocok untuk proyek robot line-follower yang ingin dikontrol manual, atau robot eksplorasi.
Komponen Robot
- ESP32 sebagai otak robot
- Motor DC 2 buah dengan roda
- Driver motor L298N atau L293D
- Baterai Li-Po 7.4V atau 4x AA
- Chassis robot (bisa dari akrilik atau 3D print)
Cara Kerja DPAD Control
Chat AIoT memiliki fitur DPAD (Directional Pad) bawaan di menu GENK CTRL. Saat tombol DPAD ditekan, perintah dikirim via MQTT ke ESP32. ESP32 menerima perintah dan menggerakkan motor sesuai arah yang dipilih.
// Handler perintah DPAD di ESP32
void handleCommand(String cmd) {
if (cmd == "FORWARD") {
motorLeft(HIGH, LOW, 200);
motorRight(HIGH, LOW, 200);
} else if (cmd == "BACKWARD") {
motorLeft(LOW, HIGH, 200);
motorRight(LOW, HIGH, 200);
} else if (cmd == "LEFT") {
motorLeft(LOW, HIGH, 150);
motorRight(HIGH, LOW, 150);
} else if (cmd == "RIGHT") {
motorLeft(HIGH, LOW, 150);
motorRight(LOW, HIGH, 150);
} else if (cmd == "STOP") {
motorLeft(LOW, LOW, 0);
motorRight(LOW, LOW, 0);
}
}
💡 Gunakan PWM (analogWrite) untuk kontrol kecepatan motor yang lebih halus. Nilai 0-255 untuk mengatur kecepatan dari berhenti hingga penuh.
5. Multi-Device IoT Network dengan Chat AIoT
NetworkMulti-DeviceMQTTAdvanced
Tutorial ini menjelaskan cara menghubungkan banyak ESP32 dalam satu jaringan IoT yang terpusat. Semua device bisa dikontrol dari satu aplikasi Chat AIoT.
Arsitektur Multi-Device
Setiap ESP32 memiliki device ID unik yang digunakan sebagai topik MQTT. Chat AIoT mengelola semua device dalam satu dashboard. Komunikasi antar device juga dimungkinkan melalui MQTT broker.
// Contoh naming convention topik MQTT
// Device 1: Ruang Tamu
sugenx/{GenkID}/device/ruangtamu/cmd
sugenx/{GenkID}/device/ruangtamu/status
// Device 2: Dapur
sugenx/{GenkID}/device/dapur/cmd
sugenx/{GenkID}/device/dapur/status
// Device 3: Garasi
sugenx/{GenkID}/device/garasi/cmd
sugenx/{GenkID}/device/garasi/status
Tips Skalabilitas
- Gunakan QoS 0 untuk data sensor yang tidak kritis (lebih cepat, lebih ringan)
- Gunakan QoS 1 untuk perintah kontrol penting (guaranteed delivery)
- Set retain flag untuk status device agar state tersimpan di broker
- Implementasikan Last Will Testament (LWT) untuk deteksi device offline otomatis
- Batasi frekuensi publish sensor maksimal 1x per 10 detik untuk efisiensi broker
Monitoring Semua Device
Chat AIoT menampilkan semua device dalam satu halaman IoT Devices. Setiap device menampilkan status online/offline, nilai sensor terakhir, dan tombol kontrol. Notifikasi akan dikirim ke Chat AIoT jika ada device yang offline atau kondisi kritis.