Cara Berkomunikasi dengan ESP32

ESP32 adalah mikrokontroler canggih yang dikembangkan oleh Espressif Systems. Dikenal karena kemampuan konektivitasnya yang luar biasa, ESP32 sangat populer di kalangan pengembang IoT karena dilengkapi dengan fitur WiFi dan Bluetooth. Dalam tutorial ini, kita akan membahas berbagai cara untuk berkomunikasi dengan ESP32.

Termasuk:

  • UART (Serial)
  • WiFi (HTTP Server & Web Socket)
  • Bluetooth Classic (untuk ESP32)

1. Komunikasi UART (Serial)

UART (Universal Asynchronous Receiver-Transmitter) adalah metode komunikasi serial sederhana yang sering digunakan untuk debugging dan komunikasi antar perangkat.

Cara Kerja UART

UART bekerja secara asinkron, artinya tidak ada clock bersama antara pengirim dan penerima.

  • Data dikirim dalam bentuk frame, yang terdiri dari:
    • Start bit
    • Data (biasanya 8 bit)
    • Parity bit (opsional)
    • Stop bit
  • ESP32 memiliki beberapa pin UART, seperti:
    • UART0: GPIO1 (TX), GPIO3 (RX) → biasanya terhubung ke USB-to-Serial
    • UART1: GPIO9 (TX), GPIO10 (RX)
    • UART2: GPIO16 (TX), GPIO17 (RX)

Wiring Diagram

ESP32 → USB-to-TTL (atau langsung ke komputer jika menggunakan board dengan USB)
GPIO1 (TX) → RX
GPIO3 (RX) → TX
GND → GND
VCC → 3.3V

Bagaimana Cara Berkomunikasi?

  • Dikirim: ESP32 mengirim data melalui pin TX.
  • Diterima: Data diterima oleh komputer melalui USB-to-Serial.
  • Dibaca: Di komputer, kamu bisa membuka Serial Monitor di Arduino IDE untuk melihat data yang dikirim.

2. Komunikasi WiFi (HTTP Server)

Komunikasi WiFi memungkinkan ESP32 berinteraksi dengan perangkat lain melalui jaringan, seperti komputer, smartphone, atau aplikasi web.

Cara Kerja WiFi

  • ESP32 menghubungkan diri ke jaringan WiFi.
  • ESP32 menjalankan server HTTP.
  • Perangkat lain (misalnya browser) mengirim permintaan (request) ke IP ESP32.
  • ESP32 mengirimkan balasan (response) dalam bentuk HTML, JSON, atau plain text.

Wiring Diagram

Tidak diperlukan wiring tambahan, cukup hubungkan ESP32 ke komputer via USB untuk meng-upload program.

Source Code

#include <WiFi.h>

const char* ssid = "Nama_WiFi_Kamu";
const char* password = "Password_WiFi_Kamu";

WiFiServer server(80);

String header;

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  Serial.println("WiFi connected!");
  Serial.println(WiFi.localIP()); // Cetak IP ESP32 ke Serial Monitor

  server.begin();
}

void loop() {
  WiFiClient client = server.available();
  if (client) {
    Serial.println("New client connected");
    String currentLine = "";
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        header += c;
        if (c == '\n') {
          if (currentLine.length() == 0) {
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println("Connection: close");
            client.println();
            client.println("<!DOCTYPE html><html>");
            client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"></head>");
            client.println("<body><h1>Hello from ESP32!</h1></body>");
            client.println("</html>");
            break;
          } else {
            currentLine = "";
          }
        } else if (c != '\r') {
          currentLine += c;
        }
      }
    }
    header = "";
    client.stop();
  }
}

Bagaimana Cara Berkomunikasi?

  • Pengiriman: Kamu mengakses IP ESP32 dari browser atau aplikasi.
  • Permintaan (Request): Browser mengirim permintaan HTTP GET ke ESP32.
  • Pemrosesan: ESP32 membaca permintaan dan membalas dengan HTML.
  • Penerimaan: Browser menampilkan halaman web yang dikirim oleh ESP32.

3. Komunikasi Bluetooth Classic

Bluetooth memungkinkan komunikasi nirkabel jarak pendek antara ESP32 dan perangkat lain seperti smartphone atau komputer.

Cara Kerja Bluetooth

  • ESP32 menjalankan modul Bluetooth dan menjadi perangkat yang bisa dipasangkan.
  • Perangkat lain (misalnya smartphone) mencari dan memasangkan dengan ESP32.
  • Setelah terhubung, data bisa dikirim dan diterima melalui serial virtual (SPP).

Wiring Diagram

Tidak perlu wiring, karena Bluetooth sudah built-in di ESP32.

Source Code

#include "BluetoothSerial.h"

BluetoothSerial SerialBT;

void setup() {
  Serial.begin(115200);
  SerialBT.begin("ESP32_Bluetooth"); // Nama perangkat Bluetooth
  Serial.println("Bluetooth Device is Ready to Pair");
}

void loop() {
  if (SerialBT.available()) {
    int incoming = SerialBT.read();
    Serial.write(incoming); // Kirim ke Serial Monitor
  }
  if (Serial.available()) {
    SerialBT.write(Serial.read()); // Kirim dari Serial ke Bluetooth
  }
  delay(20);
}

Bagaimana Cara Berkomunikasi?

  • Pemasangan (Pairing): Smartphone mencari dan memasangkan dengan “ESP32_Bluetooth”.
  • Koneksi: Aplikasi Bluetooth di smartphone menghubungkan ke ESP32.
  • Pengiriman: Aplikasi di smartphone mengirim data ke ESP32 melalui Bluetooth.
  • Penerimaan: ESP32 menerima data dan bisa mengirim balasan.