📡 Komunikasi Antar ESP32 Menggunakan UART (Serial)
Komunikasi antar mikrokontroler adalah hal yang sangat penting dalam proyek IoT. Pada beberapa aplikasi, dua ESP32 perlu saling bertukar data, misalnya ketika satu ESP32 berfungsi sebagai pembaca sensor, dan ESP32 lainnya bertugas mengolah atau menampilkan data. Salah satu metode komunikasi paling sederhana, stabil, dan tidak membutuhkan koneksi internet adalah UART (Universal Asynchronous Receiver Transmitter).
🔧 Mengapa Memilih UART?
UART adalah metode komunikasi berbasis serial yang sudah tertanam di dalam ESP32. Beberapa alasan memilih UART:
- Mudah digunakan—cukup sambungkan TX ke RX dan RX ke TX.
- Tidak memerlukan WiFi atau jaringan lain.
- Kecepatan stabil, cocok untuk data sensor.
- Tidak terpengaruh interferensi, karena berbasis kabel.
UART sangat cocok untuk komunikasi jarak dekat (10–20 cm), misalnya antar dua board ESP32 dalam satu kotak proyek.
🔌 Diagram Wiring ESP32 ke ESP32
Untuk komunikasi menggunakan UART, koneksi dasar sangat sederhana. Kita hanya butuh tiga kabel:
Untuk komunikasi menggunakan UART, koneksi dasar sangat sederhana. Kita hanya butuh tiga kabel:
- TX -> RX
- RX -> TX
- GND -> GND

🧠 Bagaimana UART Bekerja?
UART bekerja dengan mengirimkan data dalam bentuk bit secara berurutan melalui satu kabel. Contohnya:
- Ketika ESP32-A mengirim angka 25, data tersebut dikodekan menjadi bit berbentuk sinyal HIGH & LOW.
- ESP32-B membaca rangkaian bit tersebut melalui pin RX.
- UART menerjemahkan kembali bit menjadi angka/string.
Format default komunikasi:
8 data bit, no parity, 1 stop bit (8N1)
📤 Source Code ESP32 A (Sender)
ESP32 ini bertugas mengirim data—misalnya data jarak dari sensor HC-SR04.
// ESP32 A (Sender)
void setup() {
Serial.begin(115200); // Serial monitor
Serial2.begin(9600, SERIAL_8N1, 16, 17); // UART2: RX=16, TX=17
}
void loop() {
int jarak = 25; // contoh data (bisa diganti dari sensor HC-SR04)
Serial.print("Mengirim: ");
Serial.println(jarak);
Serial2.println(jarak); // kirim melalui UART
delay(1000);
}
📥 Source Code ESP32 B (Receiver)
ESP32 ini bertindak sebagai penerima data.
// ESP32 B (Receiver)
String dataMasuk = "";
void setup() {
Serial.begin(115200);
Serial2.begin(9600, SERIAL_8N1, 16, 17); // UART2: RX=16, TX=17
}
void loop() {
if (Serial2.available()) {
dataMasuk = Serial2.readStringUntil('\n');
Serial.print("Data diterima: ");
Serial.println(dataMasuk);
}
}
📊 Alur Kerja Komunikasi Antar ESP32
digunakan untuk mengontrol relai, LED, buzzer, atau aktuator lainnya.
- ESP32 A membaca data sensor (misalnya HC-SR04).
- Data diubah menjadi angka atau string.
- ESP32 A mengirimkan data via TX menggunakan
Serial2.println() - ESP32 B menerima data melalui RX menggunakan
Serial2.readStringUntil() - Data ditampilkan di serial monitor ESP32 B.
- Dari sini, data bisa:
- dikirim ke server,
- disimpan ke database,
- ditampilkan di LCD
🚀 Kapan Komunikasi UART Digunakan?
UART sangat cocok untuk:
- Proyek dua ESP32 yang berada dalam satu perangkat.
- Sistem sensor → controller.
- Pemisahan tugas, contoh:
- ESP32-A hanya fokus membaca sensor ultrasonik.
- ESP32-B fokus mengirim data ke jaringan/WiFi.
Ini membuat sistem lebih stabil dan modular.
📝 Kesimpulan
Komunikasi UART pada ESP32 adalah metode paling sederhana untuk bertukar data antar mikrokontroler. Dengan hanya tiga kabel dan beberapa baris kode, dua ESP32 bisa berkomunikasi secara real-time tanpa perlu jaringan internet maupun router.
Metode ini sangat cocok untuk proyek IoT pemula maupun tingkat lanjut yang memerlukan efisiensi dan keandalan.