1.1 Berkenalan dengan ESP32 | Koding Indonesia

1.1 Berkenalan dengan ESP32

Internet of Things (IoT) telah menjadi tren yang semakin populer dalam beberapa tahun terakhir karena memiki kemampuan untuk menghubungkan sebuah perangkat dengan perangkat lain melalui jaringan internet. IoT memungkinkan kita untuk menciptakan solusi yang cerdas pada studi kasus apapun, salah satu platform hardware yang populer untuk membangun proyek IoT adalah ESP32.

Apa itu ESP32?

ESP32 adalah sebuah mikrokontroler yang powerfull dan serbaguna yang dirancang khusus untuk aplikasi IoT. Dikembangkan oleh perusahaan Tiongkok, Espressif Systems, ESP32 menawarkan berbagai fitur yang membuatnya menjadi pilihan yang sangat baik untuk pengembangan proyek IoT. Mikrokontroler ini memiliki kemampuan Wi-Fi dan Bluetooth, serta dukungan untuk berbagai protokol komunikasi lainnya. Berikut contoh pengaplikasian ESP32:

  1. Monitoring lingkungan: ESP32 dapat digunakan untuk memonitor lingkungan seperti suhu, kelembaban, dan kualitas udara, serta mengirimkan data ke server atau aplikasi untuk diproses lebih lanjut.
  2. Kontrol perangkat: ESP32 dapat digunakan untuk mengontrol perangkat seperti lampu, kipas, atau mesin dengan mengirimkan sinyal melalui Wi-Fi atau Bluetooth.
  3. Aplikasi keamanan: ESP32 dapat digunakan dalam sistem keamanan seperti alarm pintar, kamera pengawas, dan sistem pengunci pintu yang dapat dikontrol melalui internet.
  4. Sistem otomasi: ESP32 dapat digunakan untuk mengotomatisasi sistem seperti sistem irigasi otomatis, sistem monitoring tanaman, dan sistem kontrol peralatan rumah tangga.
  5. Aplikasi kesehatan: ESP32 dapat digunakan untuk memonitor kondisi kesehatan seperti detak jantung dan tekanan darah, serta mengirimkan data ke server atau aplikasi untuk dianalisis.

Fitur ESP32

ESP32 dilengkapi dengan sejumlah fitur yang sangat berguna untuk pengembangan proyek IoT:

  1. Kemampuan Wi-Fi dan Bluetooth: ESP32 memiliki kemampuan terintegrasi untuk terhubung ke jaringan Wi-Fi dan perangkat Bluetooth, memungkinkannya berkomunikasi dengan mudah dengan perangkat lain.
  2. Dual Core: Mikrokontroler ini dilengkapi dengan dua inti prosesor, yang memungkinkan penanganan tugas yang lebih efisien dan pemrosesan paralel.
  3. Ukuran Kecil: ESP32 memiliki ukuran kecil, yang memungkinkan Anda untuk mengintegrasikannya ke dalam berbagai proyek dengan mudah.
  4. Konsumsi Energi yang Rendah: Meskipun memiliki kemampuan yang kuat, ESP32 tetap efisien dalam penggunaan daya, yang membuatnya cocok untuk perangkat baterai atau energi terbatas.
  5. Dukungan Protokol Komunikasi: ESP32 mendukung berbagai protokol komunikasi, seperti MQTT, CoAP, dan HTTP, memudahkan integrasi dengan berbagai platform IoT.
  6. Banyak Pin I/O: Mikrokontroler ini memiliki banyak pin I/O yang dapat digunakan untuk menghubungkan berbagai sensor dan perangkat eksternal tambahan.

Module Comparison

CPU & Memory Peripherals Operating Temperature Range Antenna Module Dimensions (mm) Pins Wi-Fi Protocol Bluetooth Protocol Footprint
Core Maximum freq. Flash (MB) PSRAM (MB) Interfaces Touch Sensor Hall sensor
ESP32-D0WD-V3
Dual Core
240 MHz 4,8,16 N/A SD card, UART, SPI, SDIO, I2C, LED PWM, Motor PWM,
I2S, IR, pulse counter, GPIO, capacitive touch
sensor, ADC, DAC
Yes Yes -40°C ~ +85/105°C PCB / IPEX 18×25.5×3.1 / 18×19.2×3.2 38 802.11 b/g/n (802.11n up to 150 Mbps),2.4 GHz Bluetooth V4.2 BR/EDR,
Bluetooth LE specification
2D3D2D
3D
ESP32-D0WD-V3 or
ESP32-D0WDR2-V3
Dual Core
240 MHz 4,8,16 N/A SD card, UART, SPI, SDIO, I2C, LED PWM, Motor PWM,
I2S, IR, pulse counter, GPIO, capacitive touch
sensor, ADC, DAC, TWAI® (compatible with ISO 11898-1, i.e. CAN
Specification 2.0)
Yes Yes -40 °C ~ +85 °C On-board dual PCB antennas 35.6×34.4×3.5 41 802.11 b/g/n (802.11n up to 150 Mbps) Bluetooth V4.2 BR/EDR,
Bluetooth LE specification
N/A
ESP32-D0WD Dual Core 240 MHz 4,8,16 N/A SD card, UART, SPI, SDIO, I2C, LED PWM, Motor PWM,
I2S, IR, pulse counter, GPIO, capacitive touch
sensor, ADC, DAC
Yes Yes -40°C ~ +85/105°C PCB / IPEX 18×25.5×3.1 / 18×19.2×3.2 38 802.11 b/g/n (802.11n up to 150 Mbps),2.4 GHz Bluetooth V4.2 BR/EDR,
Bluetooth LE specification
N/A
ESP32-D0WD-V3
Dual Core
240 MHz 4,8,16 8 SD card, UART, SPI, SDIO, I2C, LED PWM, Motor PWM,
I2S, IR, pulse counter, GPIO, capacitive touch
sensor, ADC, DAC
Yes Yes -40°C ~ +85°C PCB / IPEX 18×31.4×3.3 38 802.11 b/g/n (802.11n up to 150 Mbps), 2.4 GHz Bluetooth V4.2 BR/EDR,
Bluetooth LE specification
2D
3D2D
3D
ESP32-D0WD Dual Core 240 MHz 4,8,16 8 SD card, UART, SPI, SDIO, I2C, LED PWM, Motor PWM,
I2S, IR, pulse counter, GPIO, capacitive touch
sensor, ADC, DAC
Yes Yes -40°C ~ +85°C PCB / IPEX 18×31.4×3.3 38 802.11 b/g/n (802.11n up to 150 Mbps), 2.4 GHz Bluetooth V4.2 BR/EDR,
Bluetooth LE specification
N/A
ESP32-U4WDH
Single Core
160 MHz 4MB Flash packaged in chipset N/A SD card, UART, SPI, SDIO, I2C, LED PWM, Motor PWM,
I2S, IR, pulse counter, GPIO, capacitive touch
sensor, ADC, DAC
Yes Yes -40°C ~ +85/105°C PCB 13.2×19×2.4 55 802.11 b/g/n (802.11n up to 150 Mbps) Bluetooth V4.2 BR/EDR,
Bluetooth LE specification
2D
3D N/A
ESP32-S0WD Single Core 160 MHz 4 N/A SD card, UART, SPI, SDIO, I2C, LED PWM, Motor PWM,
I2S, IR, pulse counter, GPIO, capacitive touch
sensor, ADC, DAC
Yes Yes -40°C ~ +85/105°C PCB 18×25.5×3.1 38 802.11 b/g/n (802.11n up to 150 Mbps), 2.4 GHz ~ 2.5 GHz Bluetooth V4.2 BR/EDR,
Bluetooth LE specification
N/A
ESP32-D0WD Dual Core 240 MHz 4,8,16 N/A SD card, UART, SPI, SDIO, I2C, LED PWM, Motor PWM,
I2S, IR, pulse counter, GPIO, capacitive touch
sensor, ADC, DAC
Yes Yes -40°C ~ +85°C PCB 18×25.5×3.1 38 802.11 b/g/n (802.11n up to 150 Mbps), 2.4 GHz ~ 2.5 GHz Bluetooth V4.2 BR/EDR,
Bluetooth LE specification
N/A
ESP32-PICO-V3-02 240 MHz 8 2 SD card, UART, SPI, SDIO, I2C, LED PWM, Motor PWM,
I2S, IR, pulse counter, GPIO, capacitive touch
sensor, ADC, DAC, Two-Wire Automotive Interface (TWAI®,
compatible with ISO11898-1), Ethernet MAC
Yes N/A -40 °C ~ +85 °C PCB / IPEX 13.2×16.6×2.4 53 802.11 b/g/n (802.11n up to 150 Mbps) Bluetooth V4.2 BR/EDR,
Bluetooth LE specification
2D

N/A


Referensi Pinout ESP32: Pin GPIO mana yang harus Anda gunakan?

Setiap pin yang ada pada board ini tidak semuanya bisa digunakan. Karena apabila sampai salah pengunaan pin, maka bisa jadi board kita gagal booting atau malah rusak.

GPIO (General Purpose Input/Output) Input/Output Notes
0 pulled up / O outputs PWM saat boot
1 TX / O
2 IO
3 I / RX boot HIGH
4 IO
5 IO outputs PWM saat boot
6 IO terhubung ke SPI flash
7 IO terhubung ke SPI flash
8 IO terhubung ke SPI flash
9 IO terhubung ke SPI flash
10 IO terhubung ke SPI flash
11 IO terhubung ke SPI flash
12 I / O pulled HIGH ⇒ gagal boot
13 IO
14 IO outputs PWM saat boot
15 IO outputs PWM saat boot
16 IO
17 IO
18 IO
19 IO
21 IO
22 IO
23 IO
25 IO
26 IO
27 IO
32 IO
33 IO
34 I Hanya input
35 I Hanya input
36 I Hanya input
39 I Hanya input
Hijau Aman untuk digunakan
Kuning Dapat digunakan, tapi perlu perhatian
Merah Tidak dianjurkan untuk digunakan

 

GPIO

ESP32 memiliki 34 pin GPIO yang dikategorikan sebagai berikut:

  • Digital only
  • Analog enabled
  • Capacitive touch enabled
  • dll

GPIO analog dan GPIO yang kompatibel dengan capacitive touch dapat dikonfigurasi sebagai GPIO digital. Sebagian besar GPIO digital dapat dikonfigurasi sebagai pull-up internal, pull-down, atau disetel ke high impedance.

Pin berikut tidak memiliki resistor pull-up atau pull-down internal dan karenanya hanya dapat digunakan sebagai input:

  • GPIO34
  • GPIO35
  • GPIO36
  • GPIO39

Pin yang Tidak Disarankan untuk Digunakan

Pin berikut terhubung ke flash SPI terintegrasi. Beberapa development board memiliki pin berikut untuk pengguna tetapi tidak direkomendasikan untuk digunakan:

  • GPIO6
  • GPIO7
  • GPIO8
  • GPIO9
  • GPIO10
  • GPIO11

Pin ADC (Analog-to-Digital Converter)

ESP32 mengintegrasikan ADC SAR 12-bit dan mendukung pengukuran pada 18 channel. Koprosesor ULP ESP32 juga dirancang untuk mengukur voltase bahkan dalam sleep mode, memungkinkan pengoperasian berdaya rendah.

Berikut adalah pin ADC dan channel-nya:

  • GPIO36 (ADC1_CH0)
  • GPIO37 (ADC1_CH1)
  • GPIO38 (ADC1_CH2)
  • GPIO39 (ADC1_CH3)
  • GPIO32 (ADC1_CH4)
  • GPIO33 (ADC1_CH5)
  • GPIO34 (ADC1_CH6)
  • GPIO35 (ADC1_CH7)
  • GPIO4 (ADC2_CH0)
  • GPIO0 (ADC2_CH1)
  • GPIO2 (ADC2_CH2)
  • GPIO15 (ADC2_CH3)
  • GPIO13 (ADC2_CH4)
  • GPIO12 (ADC2_CH5)
  • GPIO14 (ADC2_CH6)
  • GPIO27 (ADC2_CH7)
  • GPIO25 (ADC2_CH8)
  • GPIO26 (ADC2_CH9)

Pelajari cara menggunakan pin ADC ESP32:

  • ESP32 ADC Pins dengan Arduino IDE (Link will be available later)
  • ESP32 ADC Pins dengan MicroPython (Link will be available later)

Hall Sensor

Hall sensor terintegrasi pada ESP32 didasarkan pada N-carrier resistor. Ketika chip terkena medan magnet, hall sensor menghasilkan tegangan (kecil) yang dapat diukur oleh pin ADC pada ESP32.

Pelajari cara menggunakan Hall Sensor dengan Arduino IDE: Hall Sensor ESP32 dengan Arduino IDE (Link will be available later)


Pin DAC (Digital-to-Analog Converter)

ESP32 memiliki 2 channel 8-bit DAC yang dapat digunakan untuk mengkonversi 2 signal digital menjadi 2 signal analog. DAC ini juga support konversi independent. Berikut ini pin DAC:

  • GPIO25 (DAC1)
  • GPIO26 (DAC2)

Touch sensors

ESP32 memiliki 10 internal capacitive touch sensors. Sensor sentuh ini dapat mendeteksi sentuhan baik secara langsung maupun dengan menghubungkannya ke capacitive pads atau bantalan kapasitif. Selain itu sensor sentuh ini juga dapat digunakan untuk membangunkan ESP32 dari deep sleep, berikut pin-pin yang mendukung sensor sentuh:

  • T0 GPIO4
  • T1 GPIO0
  • T2 GPIO2
  • T3 GPIO15 (MTDO)
  • T4 GPIO13 (MTCK)
  • T5 GPIO12 (MTDI)
  • T6 GPIO14 (MTMS)
  • T7 GPIO27
  • T8 GPIO33 (32K_XN)
  • T9 GPIO32 (32K_XP)

Pelajari cara menggunakan pin sentuh dengan Arduino IDE: Pin Sentuh ESP32 dengan Arduino IDE (Link will be available later)


UART (Universal Asynchronous Receiver Transmitter)

ESP32 memiliki 3 antarmuka UART, yaitu UART0, UART1 dan UART2, yang menyediakan komunikasi asinkron (RS232 dan RS485) dan mendukung IrDA, dapat berkomunikasi dengan kecepatan 5Mbps.


I2C Interface

ESP32 memiliki 2 antarmuka bus I2C yang dapat diperlakukan sebagai master atau slave. Berikut Dukungan antarmuka I2C:

  • Standard mode (100 Kbit/s)
  • Fast mode (400 Kbit/s)
  • Up to 5 MHz, tetapi dibatasi SDA pull-up strength
  • 7-bit/10-bit addressing mode
  • Dual addressing mode

Saat menggunakan ESP32 dengan Arduino IDE pin I2C default adalah:

  • SDA GPIO21
  • SCL GPIO22

Pelajari lebih lanjut tentang protokol komunikasi I2C dengan ESP32 menggunakan Arduino IDE: Komunikasi I2C ESP32 (Mengatur Pin, Antarmuka dan Periferal Beberapa Bus) (Link will be available later)


PWM (Pulse Width Modulation)

Pengontrol PWM LED ESP32 memiliki 16 independent channels yang dapat dikonfigurasikan untuk menghasilkan sinyal PWM dengan properti yang berbeda. Semua pin yang dapat berfungsi sebagai output dapat digunakan sebagai pin PWM (GPIO 34 hingga 39 tidak dapat menghasilkan PWM).

Untuk mengatur sinyal PWM, Anda perlu mendefinisikan parameter ini dalam kode:

  • Signal’s frequency;
  • Duty cycle;
  • PWM channel;
  • GPIO yang Anda inginkan untuk mengeluarkan sinyal PWM.

Pengontrol PWM dapat digunakan sebagai pengontrol motor digital dan lampu pintar.

Pelajari cara menggunakan ESP32 PWM dengan Arduino IDE: ESP32 PWM dengan Arduino IDE (Link will be available later)


RTC GPIOs dan Low-Power Management

Terdapat dukungan GPIO RTC pada ESP32. GPIO yang dialihkan ke subsistem daya rendah RTC dapat digunakan ketika ESP32 dalam kondisi deep sleep. GPIO RTC ini dapat digunakan untuk membangunkan ESP32 dari deep sleep ketika co-prosesor Ultra Low Power (ULP) berjalan. GPIO berikut ini dapat digunakan sebagai external wake up source.

  • RTC_GPIO0 (GPIO36)
  • RTC_GPIO3 (GPIO39)
  • RTC_GPIO4 (GPIO34)
  • RTC_GPIO5 (GPIO35)
  • RTC_GPIO6 (GPIO25)
  • RTC_GPIO7 (GPIO26)
  • RTC_GPIO8 (GPIO33)
  • RTC_GPIO9 (GPIO32)
  • RTC_GPIO10 (GPIO4)
  • RTC_GPIO11 (GPIO0)
  • RTC_GPIO12 (GPIO2)
  • RTC_GPIO13 (GPIO15)
  • RTC_GPIO14 (GPIO13)
  • RTC_GPIO15 (GPIO12)
  • RTC_GPIO16 (GPIO14)
  • RTC_GPIO17 (GPIO27)

Power Modes

  • Active mode: Radio chip radio menyala. Chip dapat menerima, mengirimkan, atau mendengarkan.
  • Modem-sleep mode: CPU beroperasi dan clock dapat dikonfigurasi. Baseband dan radio Wi-Fi/Bluetooth dinonaktifkan.
  • Light-sleep mode: CPU dijeda. RTC memory dan RTC peripherals, serta prosesor bersama ULP berjalan. Setiap wake-up events (MAC, host, RTC timer, atau external interrupts) akan membangunkan chip.
  • Deep-sleep mode: Hanya RTC memory dan RTC peripherals yang menyala. Data koneksi Wi-Fi dan Bluetooth disimpan di memori RTC. ULP co-processor berfungsi.
  • Hibernation mode: Oscillator internal 8-MHz dan ULP co-processor dinonaktifkan. RTC recovery memory dimatikan. Hanya satu RTC timer pada slow clock dan GPIO RTC tertentu yang aktif. RTC timer atau RTC GPIO dapat mengaktifkan chip dari Hibernation mode.

Pelajari cara menggunakan GPIO RTC untuk membangunkan ESP32 dari deep sleep: Deep Sleep ESP32 dengan Arduino IDE dan Wake Up Sources (Link will be available later)


Pin Interrupts

Semua GPIO pin pada ESP32 dapat dikonfigurasi sebagai interrupts.

Pelajari cara menggunakan interupsi dengan ESP32:

  • Interupsi ESP32 dengan Arduino IDE (Link will be available later)
  • Interupsi ESP32 dengan MicroPython (Link will be available later)

Pin SPI

By default, the pin mapping for SPI is:

SPI MOSI MISO CLK CS
VSPI GPIO 23 GPIO 19 GPIO 18 GPIO 5
HSPI GPIO 13 GPIO 12 GPIO 14 GPIO 15

Warning: tergantung pada board yang Anda gunakan, pin SPI default mungkin berbeda. Jadi, pastikan Anda memeriksa pinout untuk board yang Anda gunakan. Selain itu, beberapa board tidak memiliki pin SPI yang telah ditetapkan sebelumnya, jadi Anda perlu mengaturnya lagi pada kode.

Note: Biasanya, jika tidak ditentukan, board akan menggunakan pin VSPI ketika menginisialisasi komunikasi SPI dengan pengaturan default.

Pelajari lebih lanjut tentang protokol komunikasi SPI dengan ESP32 menggunakan Arduino IDE: Komunikasi SPI ESP32: Mengatur Pin, Beberapa Antarmuka Bus SPI, dan Periferal (Arduino IDE) (Link will be available later)

references: #randomnerdtutorials.com #arduino.cc #kodingindonesia.com #microcontrollerslab.com #circuito.io #ahonerd.com #instructables.com #mischianti.org #simple-circuit.com #how2electronics.com
Anton Prafanto
Anton Prafanto
Konten developer kodingindonesia.com & staf pengajar tetap di Universitas Mulawarman Samarinda