Sistem Embedded Project 10: UART Connection with two ESP32s

Justin
3 min readMar 19, 2023

--

Pada project ini dalam mengoperasikan ESP32, saya menyambungkan dua ESP32 dengan koneksi UART (Universal Asynchronous Receive Transmit) atau Serial Communication. Referensi yang saya gunakan untuk project ini dapat dilihat pada website ini.

UART menggunakan protokol transfer yang berbeda dengan SPI dan I2C. Satu kelebihan yang signifikan yaitu UART hanya menggunakan dua kabel untuk memindahkan data.

Cara Koneksi UART

ESP32 memiliki tiga universal asynchronous receivers and transmitter (UART) ports yaitu UART0, UART1, dan UART2 yang bekerja pada level 3.3V TTL. Ketiga port tersebut hardware supported. Setiap port tersebut memiliki 4 pin: RX, TX, RTS, dan CTS. Tetapi, Arduino IDE hanya menggunakan pin RX dan TX. Secara default, hanya UART0 dan UART2 yang dapat digunakan. Untuk menggunakan UART1, kita harus mendefinisikan ulang pin yang digunakan.

Tabel Pins Yang Dapat Digunakan Untuk UART

Alat-alat yang dibutuhkan untuk project ini antara lain sebagai berikut:

1. 2 buah ESP32 (30 pin/38 pin, saya menggunakan yang 38 untuk project ini)
2. 2 buah Breadboard
3. Laptop dengan Arduino IDE
4. Kabel USB
5. Kabel-kabel jumper (Male to Male)

Setelah mempersiapkan barang-barang diatas, buatlah rangkaian project ini dengan mengikuti skema berikut dengan gambar dibawahnya sebagai skema referensi pins pada ESP32 yang saya gunakan.

Rangkaian Komunikasi UART
Skema Referensi Pins ESP32 38 Pin

Setelah merangkai alat-alat yang diperlukan, saya melakukan langkah-langkah berikut agar ESP32 dapat berkomunikasi dengan ESP32 lain nya:

1. Sambungkan kabel USB ke ESP32 pertama.
2. Masukkan kode di bawah ini ke Arduino IDE.

#include <HardwareSerial.h>

int TX_pin = 1;
int RX_pin = 3;
char number = ' ';

void setup() {
Serial.begin(9600, SERIAL_8N1, RX_pin, TX_pin);
}

void loop() {
Serial.print(0);
delay(1000);
Serial.print(1);
delay(1000);
}

3. Pilih board dan port yang sesuai dengan ke kolom Tools → Board dan Tools → Port kemudian tekan Upload.
4. Bersamaan dengan proses Upload, tekan tombol BOOT pada ESP32.
5. Setelah proses Upload selesai, Sambungkan kabel USB ke ESP32 kedua.
6. Masukkan kode di bawah ini ke Arduino IDE.

#include <HardwareSerial.h>

int TX_pin = 1;
int RX_pin = 3;
char number = ' ';

void setup() {
Serial.begin(9600, SERIAL_8N1, RX_pin, TX_pin);
}

void loop() {
if (Serial.available()) {
number = Serial.read();
if (number == '0') {
Serial.println("number is zero");
}
if (number == '1') {
Serial.println("number is one");
}
}
}

7. Pilih board dan port yang sesuai dengan ke kolom Tools → Board dan Tools → Port kemudian tekan Upload.
8. Bersamaan dengan proses Upload, tekan tombol BOOT pada ESP32.
9. Setelah proses Upload selesai, sambungkan kedua ESP32 dengan kabel USB.
10. ESP32 yang kedua akan menampilkan output berdasarkan data yang dikirim ESP32 yang pertama!

Jika setelah melakukan semua langkah-langkah diatas tetapi Serial Monitor masih belum apapun, maka coba tekan tombol RESET pada ESP32. Tombol tersebut terletak di seberang tombol BOOT.

Project ini bagi saya cukup straightforward apabila mengikuti referensi. Project ini juga membuka banyak possibilities dalam membuat suatu rangkaian menggunakan ESP32.

18221016 - Justin Yusuf Abidjoko

--

--