KOMUNIKASI ANTAR ESP32

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?

MetodeKelebihanKekurangan
UARTSimple, cepat, stabilHanya 1 master ↔ 1 slave (per TX/RX)
I2CBisa banyak slaveAgak lebih kompleks
ESP-NOWWireless tanpa WiFiJarak terbatas, paket kecil
WiFi TCP/UDPPaling fleksibelBoros daya


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *