1. KOMUNIKASI ANTAR ESP32 VIA SERIAL (UART)
Metode paling sederhana dan stabil: menggunakan pin TX–RX.
A. Wiring Diagram UART (TX ↔ RX)
Gunakan level 3.3V (ESP32 sudah 3.3V).
ESP32 (Master) ESP32 (Slave)
GPIO17 (TX) -------------> GPIO16 (RX)
GPIO16 (RX) <------------- GPIO17 (TX)
GND ----------------------- GND (harus satu ground)
5V / 3.3V ---------------> 5V / 3.3V (opsional untuk power)
B. Program ESP32 MASTER (Pengirim Data UART)
// ESP32 Master - Mengirim data
void setup() {
Serial.begin(115200); // Serial monitor
Serial2.begin(9600, SERIAL_8N1, 16, 17);
// RX=16, TX=17
}
void loop() {
Serial2.println("Hello dari ESP32 Master!");
delay(1000); // setiap 1 detik kirim pesan
}
C. Program ESP32 SLAVE (Penerima Data UART)
// ESP32 Slave - Menerima data
void setup() {
Serial.begin(115200);
Serial2.begin(9600, SERIAL_8N1, 16, 17);
}
void loop() {
if (Serial2.available()) {
String data = Serial2.readStringUntil('\n');
Serial.print("Data diterima: ");
Serial.println(data);
}
}
WIRING DIAGRAM ESP32 → ESP32 (UART / Serial)
Mode: ESP32 Master → ESP32 Slave
ESP32 MASTER ESP32 SLAVE
-----------------------------------------------
TX (GPIO17) ---> RX (GPIO16)
RX (GPIO16) <--- TX (GPIO17)
GND --- GND
5V / 3.3V ---> 5V / 3.3V (opsional)
-----------------------------------------------
- Gunakan level 3.3V (ESP32 native 3.3V, jadi aman).
- TX Master → RX Slave
- RX Master → TX Slave
- WAJIB: GND kedua ESP32 harus tersambung agar komunikasi serial stabil.
- Power 5V/3.3V opsional jika tiap ESP32 sudah punya sumber dayanya sendiri.
2. KOMUNIKASI ANTAR ESP32 VIA I2C
A. Wiring Diagram I2C (SDA–SCL)
ESP32 (Master) ESP32 (Slave)
GPIO21 (SDA) --------------> GPIO21 (SDA)
GPIO22 (SCL) --------------> GPIO22 (SCL)
GND -------------------------GND
(opsional) resistor 4.7k antara SDA–3.3V dan SCL–3.
B. Program MASTER (I2C)
#include <wire.h>
void setup() {
Serial.begin(115200);
Wire.begin(); // default SDA 21, SCL 22
}
void loop() {
Wire.beginTransmission(8); // alamat slave
Wire.write("Halo dari Master!");
Wire.endTransmission();
delay(1000);
}
C. Program SLAVE (I2C)
#include <wire.h>
void receiveEvent(int howMany) {
Serial.print("Data diterima: ");
while (Wire.available()) {
char c = Wire.read();
Serial.print(c);
}
Serial.println();
}
void setup() {
Serial.begin(115200);
Wire.begin(8); // alamat slave = 8
Wire.onReceive(receiveEvent);
}
void loop() {
// kosongkan
}
Metode Mana yang Paling Cocok?
| Metode | Kelebihan | Kekurangan |
|---|---|---|
| UART | Simple, cepat, stabil | Hanya 1 master ↔ 1 slave (per TX/RX) |
| I2C | Bisa banyak slave | Agak lebih kompleks |
| ESP-NOW | Wireless tanpa WiFi | Jarak terbatas, paket kecil |
| WiFi TCP/UDP | Paling fleksibel | Boros daya |
Leave a Reply