Everything About Fitur ESP32 Cara Penggunaan dengan Arduino IDE

Dalam beberaoa tahun terakhir, ESP8266 menjadi pusat perhatian dalam dunia IoT. Dengan hanya mengeluarkan 50rb rupiah, kita bisa dapat microcontroller dengan WIFI yang sudah terintegrasi yang memungkinkan kita untuk memantau dan mengontrol apapun dan dari manapun. Dan saat ini, Espressif (Produsen ESP8266) telah merilis ESP32, sang super penyempurna. Sebagai suksesor dari ESP8266, ESP32 tidak hanya memiliki fitur WIFI tapi juga memiliki fitur Bluetooth 4.0 (BLE/Bluetooth Smart) – yang sangat berguna untuk project IoT.

ESP-WROOM-32 Modul

ESP-WROOM-32 Modul dilengkapi dengan Tensilica Xtensa® Dual-Core 32-bit LX6 microprocessor. Prosesor ini mirip dengan ESP8266 tapi memiliki 2 Core CPU (Setiap core bisa dikontrol terpisah), beroperasi di 80 – 240 MHz Frekuensi Clock dan beroperasi sampai dengan 600 DMIPS (Dhrystone Million Instructions Per Second).

ESP-WROOM-32 Chip

  • Xtensa® Dual-Core 32-bit LX6
  • Upto 240MHz Clock Freq.
  • 520kB internal SRAM
  • 4MB external flash
  • 802.11b/g/n Wi-Fi transceiver
  • Bluetooth 4.2/BLE

Dan juga memiliki 448 KB ROM, 520 KB SRAM dan 4MB Flash Memory ( untuk memprogram dan penyimpanan data) yang sangat cukup untuk membuat program Web pages, JSON/XML data dan bermacam hal yang biasa digunakan dalam IoT.

ESP32 memiliki integrasi 802.11b/g/n HT40 Wi-Fi transceiver, jadi bukan hanya terhubung dengan jaringan WIFI dan ber-Internet, tapi juga sanggup membuat jaringan sendiri, yang memungkinkan perangkat lain untuk terhubung langsung dengan ESP32. ESP32 juga mendukung Wifi Direct, yang mana merupakan pilihan bagus untuk peer to peer connection tanpa membutuhkan access point. Wifi Direct sangat mudah untuk di rangkai dengan kecepatan data lebih cepat dibanding dengan Bluetooth.

ESP32 chip juga memiliki kemampuan dual mode Bluetooth, yang dapat mendukung Bluetooth 4.0 (BLE/Bluetooth Smart) dan Bluetooth Classic (BT),  yang membuat nya lebih fleksibel.

Power Requirement

Tegangan kerja dari ESP32 adalah 2.2V – 3.6V, Board nya dilengkapi dengan LDO regulator tegangan yang menjaga tegangan stabil di 3.3V dan dapat men-supply sampai 600mA, yang sangat cukup digunakan saat ESP32 melakukan RF transmissions yang hanya menggunakan 250mA. Keluaran dari regulator ini juga tersimpan di salah satu ujung board dan dilabeli sebagai 3V3. Pin ini bisa digunakan untuk men-supply tegangan ke         komponen lainnya.

Power Requirement

  • Operating Voltage: 2.2V to 3.6V
  • On-board 3.3V 600mA regulator
  • 5 µA during Sleep Mode
  • 250mA during RF transmissions

Power ke ESP32 Dev Board di supply oleh on-board MicroB USB Connector. Selain itu, ESP32 bisa di supply dengan regulator 5V, VIN pin bisa digunakan untuk langsung men-supply ESP32 dan perangkat lain nya.

Tegangan sleep ESP32 chip itu hanya kurang dari 5 µA, yang membuat ESP32 sangat cocok untuk perangkat elektronik yang menggunakan baterai.

Warning:

ESP32 membutuhkan 3.3V Supply dan 3.3V level logika untuk berkomunikasi.

GPIO pins bukan 5V. kalo kita mau melakukan interaksi dengan perangkat 5V (atau lebih), kita perlu melakukan sedikit perubahan.

Peripherals and I/O

Walaupun ESP32 memiliki total 48 GPIO pin, hanya 25 pin yang bisa digunakan sebagai I/O.  Pin ini bisa di assign ke berbagai perangkat, termasuk :

  • 15 ADC channels – 15 channels of 12-bit SAR ADC’s. Range ADC  bisa di set, di firmware, jadi sebesar 0-1V, 0-1.4V, 0-2V, atau 0-4V
  • 2 UART interfaces – 2 UART interfaces. Satu digunakan untuk load kode secara serial. Dan bisa juga berfungsi untuk flow control dan IrDA.
  • 25 PWM outputs – 25 channels of PWM pins untuk dimming LEDs atau controlling motors.
  • 2 DAC channels – 8-bit DACs to menghasilkan tegangan Analog.
  • SPI, I2C & I2S interface – ada  3 SPI dan 1 I2C interfaces untuk meng-cover berbagai sensor dan perangkat, ditambah dengan 2 I2S jika kita mau menambahkan suara di projek kita.
  • 9 Touch Pads – 9 GPIOs feature capacitive touch sensing.

Multiplexed I/Os

  • 15 ADC channels
  • 2 UART interfaces
  • 25 PWM outputs
  • 2 DAC channels
  • SPI, I2C & I2S interface
  • 9 Touch Pads

Fitur pin multiplexing di ESP32 itu sangat luar biasa, Pin GPIO dapat berfungsi sebagai ADC input atau DAC output atau sebagai touch pad.

GPIO Input

Pin D34, D35, VP dan VN tidak bisa di konfigurasi kan sebagai output, tapi hanya bisa digunakan sebagai digital input, analog input atau input lain nya. Patut dicatat juga bahwa pin ini tidak memiliki internal pull-up atau pull-down resistor, seperti Pin GPIO lainnya.

GPIO pin VP dan VN juga bagian dari ultra low noise pre amplifier untuk ADC yang sangat membantu untuk men- setting waktu sampling dan noise dari pre-amp.

On-board Switches & LED Indicators

ESP32 development board memiliki 2 tombol. Satu ditandai sebagai EN yang terdapat di ujung kiri atas sebagai tombol Reset yang berfungsi untuk me-reset chip ESP-32. Dan yang lainnya yaitu tombol Boot sebagai tombol download yang terletak di ujung kiri bawah yang berguna untuk men-download program/ sketch.

Switches & Indicators

  • EN – Reset the ESP32 chip
  • Boot – Download new programs
  • Red LED – Power Indicator
  • Blue LED – User Programmable

Board ini juga memiliki 2 indikator LED, yaitu LED merah dan LED biru. LED merah mengindikasikan bahwa board nya telah menyala dan mendapat 3.3V dari regulator. LED biru mengindikasikan bahwa board telah siap di program dan terhubung dengan Pin D2.

Serial Communication

Board ini juga memiliki CP2102 USB-to-UART Bridge Controller dari Silicon Labs, yang berguna untuk mengubah sinyal USB ke serial dan memungkinkan computer kita untuk mem-program dan berkomunikasi dengan chip ESP32.

Serial Communication

  • CP2102 USB-to-UART converter
  • 5 Mbps communication speed
  • IrDA support

Jika kamu memiliki CP2102 driver dengan versi sebelumnya, saya merekomendasikan untuk meng-upgrade nya sekarang.

CP2102 Driver

ESP32 Development Board Pinout

The ESP32 development board memiliki total 30 pin yang dapat terhubung dengan perangkat lain. Koneksi nya adalah sebagai berikut :

Secara sederhananya, kita bisa menggolongkan Pin ESP32 berdasarkan fungsi nya.

Power Pins terdapat 2 pin power viz. Pin VIN & 3.3V Pin. Pin VIN dapat digunakan untuk men-suply ESP32 dan perangkat nya secara langsung, jika kita menggunakan tegangan 5V. Pin 3.3V merupakan output dari on board regulator. Pin ini dapat digunakan untuk men-supply power ke komponen lainnya.

GND adalah PIN ground di ESP32 dev Board.

Arduino Pins adalah  ESP32 hardware I2C and SPI pins untuk menghubungkan dengan sensor dan perangkat lainnnya.

GPIO Pins ESP32 Dev Board memiliki 25 pin GPIO yang dapat kita sesuaikan dengan program yang kita buat. Setiap GPIO yang diaktifkan secara digital dapat di set dengan internal pull-up atau pull-down atau di set ke high impedansi.  Ketika kita set menjadi input, GPIO juga bisa kita set menjadi edge-trigger atau level-trigger untuk menghasilkan CPU interrupts.

ADC Channels Board ini mengintegrasikan 12-bit SAR ADC dan 15 Channel pin analog. Beberapa Pin ini bisa digunakan untuk membuat penguat amplifier yang dapat digunakan untuk pengukuran sinyal analog yang rendah. ESP32 juga di design untuk mengukur tegangan ketika beroperasi dalam mode sleep.

DAC Channels Board ini memilii fitur dua 8-bit DAC channel yang berfungsi untuk  mengubah sinyal digital menjadi tegangan analog. Dual DAC ini dapat juga digunakan untuk men-drive rangkaian lainnya.

Touch Pads Board ini mempunyai 9 capacitive sensing GPIO yang dapat mendeteksi berbagai capacitive dengan kontak langsung atau close proximity melalui sentuhan jari atau benda lain.

UART Pins ESP32 Dev Board memiliki 2 UART interfaces, yaitu UART0 dan UART2, yang menyediakan komunikasi asinkron (RS232 dan RS485) dan juga IrDA dana dapat berkomunikasi hingga 5Mbps. UART juga menyediakan manajemen hardware dari CTS dan sinyal RTS dan software flow control (XON dan XOFF).

SPI Pins ESP32 memiliki 3 SPI (SPI, HSPI dan VSPI) dalam slave dan master mode. SPI ini juga mendukung :

  • 4 timing modes of the SPI format transfer
  • Up to 80 MHz and the divided clocks of 80 MHz
  • Up to 64-Byte FIFO

Semua SPI dapat juga digunakan untuk terhubung dengan external Flash / SRAM dan LCD.

~ PWM Pins Board ini memiliki 25 Channel Pin PWM. Output dari PWM dapat digunakan untuk men-drive digital motor dan LED. Controller ini terdiri dari PWM timer dan PWM operator. Setiap timer menghasilkan sinkronisasi waktu atau dalam bentuk independent dan setiap PWM operator menghasilkan bentuk gelombang untuk satu PWM channel.

EN Pin digunakan untuk meng-enable ESP32. Chip ini di enable dengan di set HIGH, saat di set LOW, chip bekerja dengan power minimum.

ESP32 Development Platforms

Nah !!! ini yang menarik nih !!!

Terdapat beberapa software yang dapat digunakan untuk mem-program ESP32. Kita bisa menggunakan Espruino – Javascript SDK dan firmware emulating Node.js atau menggunakan Mongoose OS – sebuah operating system untuk IoT device ( software yang direkomendasi kan oleh Espressif Systems dan Google Cloud IoT) atau gunakan Software Development Kit (SDK) yang disediakan oleh Espressif atau bisa menggunakan salah satu platform yang disediakan oleh WiKiPedia.

Untungnya, komunitas ESP32 baru baru ini membuat add on Arduino dalam IDE selection. Jika kamu baru mulai memprogram ESP32, kita sangat merekomendasikan untuk masuk dalam komunitas ini. untuk informasi lebih lanjut, silahkan kunjungi web ESP32 Arduino GitHub repository.

Installing the ESP32 Core On – Windows OS

ESP32 Arduino Core Official dari Espressif tersedia di GitHub.

Mereka belum memiliki Arduino board manager seperti saat kita menginstall ESP8266 core di Arduino IDE. Kayaknya sih bakalan tersedia sebentar lagi. Sampai itu tersedia, kita akan menginstall nya secara manual.

Mari kita mulai dengan meng-install ESP32 Arduino Core.

Hal pertama yang mesti kita lakukan adalah menginstall Arduino IDE (Arduino 1.8.5 or higher). Jika belum, maka lakukan upgrade sekarang.

Latest Arduino IDE

Next, kita men-download isi dari ESP32-Arduino GitHub repository. Kamu bisa mengunjungi web GitHub dan download secara manual atau bisa juga dengan mengklik link di bawah.

ESP32 Arduino Core

Sekarang kite menuju ke folder Arduino Sketchbook. Secara default, folder Arduino itu ada di My Document, kecuali kamu ubah lokasi foldernya. Kamu bisa memastikan nya dengan membuka Arduino IDE > File > Preferences > Sketchbook Location.

Sekarang anggap saja folder sketchbook  kamu ada di My Documents > Arduino, lalu buka lah folder nya. Kamu akan lihat ada libraries di dalam nya.

Sekarang, buat folder baru bernama hardware. Di dalamnya buat folder lagi bernama espressif. Di dalamnya buat lagi folder bernama esp32.

Struktur folder nya akan menjadi seperti ini My Documents > Arduino > hardware > espressif > esp32

Lalu, extract ESP32 core yang telah di download ke dalam folder esp32.

Setelah selesai, pastikan terdapat file “boards.txt”, “platform.txt”, and the cores, doc, tools, etc. dalam folder esp32.

Untuk mengcompile code EPS32, kita butuh untuk meng-install Xtensa GNU compiler collection (GCC). Masuk ke folder esp32 > tools dan double klik get.exe

File ini akan mendownload Xtensa GNU tools dan ESP32 software development kit (SDK) dan unzip file tersebut lokasi yang kamu inginkan.

Kamu akan melihat beberapa folder baru dalam folder “tools”, termasuk “sdk” dan “xtensa-esp32-elf” saat selesai.

Installing the ESP32 Core On – Mac OS

ESP32 Arduino Core Official dari Espressif tersedia di GitHub.

Mereka belum memiliki Arduino board manager seperti saat kita menginstall ESP8266 core di Arduino IDE. Kayaknya sih bakalan tersedia sebentar lagi. Sampai itu tersedia, kita akan menginstall nya secara manual.

Mari kita mulai dengan meng-install ESP32 Arduino Core.

Hal pertama yang mesti kita lakukan adalah menginstall Arduino IDE (Arduino 1.8.5 or higher). Jika belum, maka lakukan upgrade sekarang.

Latest Arduino IDE

Next, buka Terminal dan execute command di bawah ini.

curl -o get-pip.py https://bootstrap.pypa.io/get-pip.py && \

sudo python get-pip.py && \

sudo pip install pyserial

mkdir -p ~/Documents/Arduino/hardware/espressif && \

cd ~/Documents/Arduino/hardware/espressif && \

git clone https://github.com/espressif/arduino-esp32.git esp32 && \

cd esp32 && \

git submodule update –init –recursive && \

cd tools && \

python get.py

Folder  ~/Documents/Arduino merepresentasikan sketchbook kita sesuai di Arduino IDE > File> Preferences > Sketchbook location. Ubah command diatas sesuai dengan yagn kita butuhkan!

Jika error, install line command dev tools dan ulangi commands diatas lagi :

xcode-select –install

Arduino Example: Blink

Untuk memastikan ESP32 Arduino Core dan ESP32 Dev Board telah terinstall dengan baik, kita akan upload program yang paling simple., LED Blinking !!

Kita akan menggunakan on-board LED untuk test ini.  seperti dibahas sebelumnya dalam tutorial ini, Pin D2 itu terhubung dengan on-board LED biru dan dapat di program. Perfect !!!

Sebelum kita dapat meng-upload sketch dan bermain dengan LED, kita perlu untuk make sure dulu bahwa board yang digunakan sesuai dengan Arduino IDE. Buka Arduino IDE lalu menu Tools dan pilih ESP32 Dev Module

Lalu, coloklah ESP32 Dev Board kamu ke PC / Laptop menggunakan kabel micro-B USB. Setelah board terpasang, itu akan di assign sebagai COM Port.

Di Windows, akan terlihat sebagai COM#, di Mac/Linux, itu akan terlihat sebagai /dev/tty.usbserial-XXXXXX. Pilih serial port di Arduino IDE > Tools >Port menu.

Untuk upload speed, settingan defaultnya adalah 921600. Kurangi upload speed ke 115200 karena banyak user yang complain karena dapat espcomm sync error saat mencoba upload di kecepatan 921600.

Saat sudah selesai, kita coba dengan program di bawah ini

int ledPin = 2;
void setup()
{
	pinMode(ledPin, OUTPUT);
}
void loop()
{
	digitalWrite(ledPin, HIGH);
	delay(500);
	digitalWrite(ledPin, LOW);
	delay(500);
}

Saat program telah berhasil di upload, LED akan mulai blinking. Kamu dapat menyentuh tombol EN untuk memulai program nya.

Troubleshooting – Booting up ESP32

Saat mencoba untuk upload program ke EPS32 di Arduino IDE, seringkali kita dapat error bertuliskan ‘A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header’.

Hal ini lumrah terjadi dan itu disebabkan karena ESP32 tidak dalam mode flashing / uploading. Untuk menyelesaikan masalah ini, kamu bisa mengikuti Langkah Langkah di bawah ini.

  • Pastikan kamu telah memilih COM Port yang sesuai, upload speed set ke 115200 atau kurang dan Board terpilih ke ESP32 Dev Module.
  • Hold-down tombol BOOT di Board ESP32.
  • Tekan tombol upload di Arduino IDE untuk mengupload program baru.
  • Ketika kamu melihat di Arduino IDE Logad ada pesan Writing at 0x00001000… (100 %) message after Connecting…. Lepas tekanan dari tombol BOOT.
  • Setelah itu kamu akan melihat Done uploading

Singkat nya, kamu perlu untuk tekan dan tahan tombol BOOT sebelum mengklik tombol upload dan tahan tekanan di tombol BOOT sampai Arduino IDE mulai mengupload ke ESP32.

THAT’S IT.

ESP32 kamu sekarang akan mulai menjalankan program yang baru, setelah selesai upload, tekan tombol ENABLE untuk restart dan menjalankan program baru.

INGAT!!! Kamu perlu mengulangi Langkah diatas setiap kamu upload program baru.

Sejujurnya kita tga tau kenapa si Board nya bertingkah kayak gitu,  karena board ESP32 yang kita punya ga kayak gitu. Mungkin ada yang berbeda antara Board nya atau mungkin Arduino IDE gagal untuk mengupload perintah yang menyebabkan ESP32 secara otomatis dalam Flashing / uploading Mode.

SEKIAN DAN TERIMA KASIH

Credit to : lastminuteengineer.com

Translate by :YO


Diterbitkan

dalam

oleh

Tags:

Comments

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *