ESP32 adalah mikrokontroler yang dilengkapi dengan WiFi dan Bluetooth, dikembangkan oleh Espressif Systems. Modul ini sangat populer dalam pengembangan IoT karena performanya yang tinggi dan biaya yang terjangkau.
| Fitur | Spesifikasi |
|---|---|
| CPU | Dua inti Tensilica Xtensa LX6, hingga 240 MHz |
| RAM | 520 KB SRAM internal |
| WiFi | 802.11 b/g/n |
| Bluetooth | v4.2 BR/EDR dan BLE |
| GPIO | Hingga 34 pin |
| ADC/DAC | 12-bit ADC, 2 × 8-bit DAC |
ESP32 memiliki pin multifungsi (GPIO) yang dapat digunakan sebagai digital input/output, ADC, PWM, UART, SPI, dan I2C.
ESP32 dapat berkomunikasi dengan perangkat lain melalui I2C (Inter-Integrated Circuit), SPI (Serial Peripheral Interface), dan UART (universal asynchronous receiver-transmitter). Protokol ini umum digunakan untuk menghubungkan sensor dan aktuator.
ESP32 bekerja dengan memancarkan sinyal WiFi agar diterima oleh perangkat lain (Smartpone, Laptop, dll.). SSID (nama Wifi) dan password yang diberikan dapat dikonfigurasi melalui program yang diupload pada ESP32. Mode ini biasa digunakan saat ESP32 bertindak sebagai penyedia data jaringan lokal.
ESP32 bertindak sebagai station atau penerima sinyal Wifi yang dipancarkan oleh perangkat lain (Router, Access Point, dll.) sehingga ESP32 harus menyesuaikan SSID dan password sesuai dengan router yang dikoneksikan. SSID (nama Wifi) dan password dapat dikonfigurasi melalui program yang diupload pada ESP32 sesuai dengan router/access point yang akan dihubungkan. ESP32 akan menerima alamat IP dari router tersebut. Mode ini lebih fleksibel karena dapat digunakan saat ESP32 bertindak sebagai penyedia data, maupun pengirim data ke jaringan lokal dan internet.
#if defined(ESP8266)
#include
#elif defined(ESP32)
#include
#endif
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""
#define SERIAL_DEBUG_BAUD 115200
#define LED 2
// the Wifi radio's status
int status = WL_IDLE_STATUS;
void InitWiFi()
{
Serial.println("Connecting to AP ...");
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Connected to AP");
}
void reconnect() {
status = WiFi.status();
if ( status != WL_CONNECTED) {
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Connected to AP");
}
}
void setup() {
// initialize serial for debugging
Serial.begin(SERIAL_DEBUG_BAUD);
Serial.println();
InitWiFi();
pinMode(LED, OUTPUT);
}
void loop() {
delay(1000);
if (WiFi.status() != WL_CONNECTED) {
reconnect();
}
else {
Serial.print("WiFi sudah terkoneksi dengan ");
Serial.println(WIFI_SSID);
Serial.print("IP: ");
Serial.println(WiFi.localIP());
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
delay(1000);
}
}
Buatlah simulasi esp32 scan koneksi wifi dengan tekan button kemudian dengan indikator led menyala jika berhasil.
| No | Komponen | Label | Fungsi |
|---|---|---|---|
| 1 | ESP32 Devkit-C V4 | esp |
Mikrokontroler utama yang mengendalikan LED dan membaca input tombol |
| 2 | LED Merah | led1 |
Indikator visual yang menyala saat tombol ditekan |
| 3 | Resistor 220Ω | r1 |
Membatasi arus ke LED agar tidak rusak |
| 4 | Push Button | btn1 |
Saklar input untuk mengendalikan LED |
| 5 | Resistor 10kΩ | r2 |
Resistor pull-down agar pembacaan tombol stabil |
| Komponen | Pin Komponen | Terhubung ke | Pin ESP32 | Keterangan |
|---|---|---|---|---|
| LED Merah | Anoda (+) | ESP32 | GPIO2 | Kontrol LED |
| LED Merah | Katoda (–) | Resistor 220Ω | GND | Pembatas arus |
| Push Button | Kaki kiri | ESP32 | 5V | Sumber logika HIGH |
| Push Button | Kaki kanan | ESP32 | GPIO12 | Input tombol |
| Resistor 10kΩ | Satu ujung | Push Button kaki kanan | GPIO12 | Menarik input ke LOW saat tombol dilepas |
| Resistor 10kΩ | Ujung lain | ESP32 | GND | Pull-down |
Pada pertemuan ini, Anda telah mempelajari konsep dasar ESP32, spesifikasinya, serta cara menghubungkan ESP32 ke jaringan WiFi sebagai client.