Pemula ESP32 Dasar
Peralatan
Daftar Kemasan
Pengenalan ESP32
Baru mengenal ESP32? Mulai di sini! ESP32 adalah serangkaian mikrokontroler System on a Chip (SoC) berbiaya rendah dan berdaya rendah yang dikembangkan oleh Espressif yang mencakup kemampuan nirkabel Wi-Fi dan Bluetooth serta prosesor inti ganda. Jika Anda familier dengan ESP8266, ESP32 adalah penerusnya, yang dilengkapi dengan banyak fitur baru.Spesifikasi ESP32
Jika Anda ingin mendapatkan sedikit lebih teknis dan spesifik, Anda dapat melihat spesifikasi ESP32 terperinci berikut (sumber: http://esp32.net/)-untuk lebih jelasnya, periksa lembar datanya):
- Konektivitas nirkabel WiFi: kecepatan data 150.0 Mbps dengan HT40
- Bluetooth: BLE (Bluetooth Hemat Energi) dan Bluetooth Klasik
- Prosesor: Mikroprosesor Tensilica Xtensa Dual-Core 32-bit LX6, berjalan pada 160 atau 240 MHz
- Ingatan:
- ROM: 448 KB (untuk booting dan fungsi inti)
- SRAM: 520 KB (untuk data dan instruksi)
- RTC fas SRAM: 8 KB (untuk penyimpanan data dan CPU utama selama RTC Boot dari mode deep-sleep)
- SRAM lambat RTC: 8KB (untuk akses co-prosesor selama mode deep-sleep) eFuse: 1 Kbit (256 bit di antaranya digunakan untuk sistem (alamat MAC dan konfigurasi chip) dan 768 bit sisanya dicadangkan untuk aplikasi pelanggan, termasuk Flash-Encryption dan Chip-ID)
Lampu kilat tertanam: lampu kilat terhubung secara internal melalui IO16, IO17, SD_CMD, SD_CLK, SD_DATA_0 dan SD_DATA_1 pada ESP32-D2WD dan ESP32-PICO-D4.
- 0 MiB (chip ESP32-D0WDQ6, ESP32-D0WD, dan ESP32-S0WD)
- 2 MiB (chip ESP32-D2WD)
- 4 MiB (modul SiP ESP32-PICO-D4)
Daya Rendah: memastikan Anda masih dapat menggunakan konversi ADC, misalnyaample, saat tidur nyenyak.
Masukan/Keluaran Perifer:
- antarmuka periferal dengan DMA yang mencakup sentuhan kapasitif
- ADC (Konverter Analog ke Digital)
- DAC (Konverter Digital ke Analog)
- I²C (Sirkuit Terpadu Antar Negara)
- UART (Penerima/Pemancar Asinkron Universal)
- SPI (antarmuka periferal serial)
- I²S (Suara Interchip Terintegrasi)
- RMII (Antarmuka Media Independen yang Dikurangi)
- PWM (Modulasi Lebar Pulsa)
Keamanan: akselerator perangkat keras untuk AES dan SSL/TLS
Papan Pengembangan ESP32
ESP32 merujuk pada chip ESP32 murni. Namun, istilah "ESP32" juga digunakan untuk merujuk pada papan pengembangan ESP32. Menggunakan chip murni ESP32 tidaklah mudah atau praktis, terutama saat belajar, menguji, dan membuat prototipe. Umumnya, Anda ingin menggunakan papan pengembangan ESP32.
Kami akan menggunakan papan ESP32 DEVKIT V1 sebagai referensi. Gambar di bawah menunjukkan papan ESP32 DEVKIT V1, versi dengan 30 pin GPIO.Spesifikasi – ESP32 DEVKIT V1
Tabel berikut menunjukkan ringkasan fitur dan spesifikasi papan ESP32 DEVKIT V1 DOIT:
Jumlah inti | 2 (inti ganda) |
Wifi gratis | 2.4 GHz hingga 150 Mbit/s |
Bahasa Indonesia: Bluetooth | BLE (Bluetooth Low Energy) dan Bluetooth lama |
Arsitektur | 32 bit |
Frekuensi jam | Hingga 240MHz |
RAM | 512 KB |
Peniti | 30 (tergantung modelnya) |
Periferal | Sentuh kapasitif, ADC (konverter analog ke digital), DAC (konverter digital ke analog), 12C (Inter-Integrated Circuit), UART (penerima/pemancar asinkron universal), CAN 2.0 (Controller Area Network), SPI (Serial Peripheral Interface), 12S (Integrated Inter-IC) Suara), RMII (Reduced Media-Independent Interface), PWM (modulasi lebar pulsa), dan banyak lagi. |
Tombol bawaan | Tombol RESET dan BOOT |
LED bawaan | LED biru internal terhubung ke GPIO2; LED merah internal yang menunjukkan papan sedang diberi daya |
USB ke UART menjembatani |
CP2102 |
Dilengkapi dengan antarmuka microUSB yang dapat Anda gunakan untuk menghubungkan papan ke komputer Anda untuk mengunggah kode atau memberikan daya.
Ia menggunakan chip CP2102 (USB ke UART) untuk berkomunikasi dengan komputer Anda melalui port COM menggunakan antarmuka serial. Chip populer lainnya adalah CH340. Periksa konverter chip USB ke UART pada papan Anda karena Anda perlu menginstal driver yang diperlukan agar komputer Anda dapat berkomunikasi dengan papan (informasi lebih lanjut tentang ini nanti dalam panduan ini).
Papan ini juga dilengkapi dengan tombol RESET (mungkin berlabel EN) untuk memulai ulang papan dan tombol BOOT untuk menempatkan papan dalam mode berkedip (tersedia untuk menerima kode). Perhatikan bahwa beberapa papan mungkin tidak memiliki tombol BOOT.
Papan ini juga dilengkapi dengan LED biru internal yang terhubung secara internal ke GPIO 2. LED ini berguna untuk debugging guna memberikan semacam output fisik visual. Ada juga LED merah yang menyala saat Anda memberikan daya ke papan.Pin Keluar ESP32
Periferal ESP32 meliputi:
- 18 saluran Konverter Analog-ke-Digital (ADC)
- 3 antarmuka SPI
- 3 antarmuka UART
- 2 antarmuka I2C
- 16 saluran keluaran PWM
- 2 Konverter Digital ke Analog (DAC)
- 2 antarmuka I2S
- 10 GPIO penginderaan kapasitif
Fitur ADC (konverter analog ke digital) dan DAC (konverter digital ke analog) ditetapkan ke pin statis tertentu. Namun, Anda dapat memutuskan pin mana yang UART, I2C, SPI, PWM, dll. – Anda hanya perlu menetapkannya dalam kode. Hal ini dimungkinkan karena fitur multiplexing chip ESP32.
Meskipun Anda dapat menentukan properti pin pada perangkat lunak, ada pin yang ditetapkan secara default seperti yang ditunjukkan pada gambar berikutSelain itu, ada pin dengan fitur tertentu yang membuatnya cocok atau tidak untuk proyek tertentu. Tabel berikut menunjukkan pin mana yang paling baik digunakan sebagai input, output, dan mana yang perlu Anda waspadai.
Pin yang disorot dengan warna hijau aman untuk digunakan. Pin yang disorot dengan warna kuning aman untuk digunakan, tetapi Anda perlu berhati-hati karena pin tersebut mungkin memiliki perilaku yang tidak diharapkan terutama saat boot. Pin yang disorot dengan warna merah tidak direkomendasikan untuk digunakan sebagai input atau output.
GP IO | Masukan | Keluaran | Catatan |
0 | ditarik ke atas | OK | mengeluarkan sinyal PWM saat boot, harus RENDAH untuk memasuki mode berkedip |
1 | Pin TX | OK | keluaran debug saat boot |
2 | OK | OK | terhubung ke LED on-board, harus dibiarkan mengambang atau RENDAH untuk masuk ke mode berkedip |
3 | OK | Pin RX | TINGGI di bagian boot |
4 | OK | OK | |
5 | OK | OK | mengeluarkan sinyal PWM saat boot, pin strapping |
12 | OK | OK | boot gagal jika ditarik tinggi, pin pengikat |
13 | OK | OK | |
14 | OK | OK | mengeluarkan sinyal PWM saat boot |
15 | OK | OK | mengeluarkan sinyal PWM saat boot, pin strapping |
16 | OK | OK | |
17 | OK | OK | |
18 | OK | OK | |
19 | OK | OK | |
21 | OK | OK | |
22 | OK | OK | |
23 | OK | OK | |
25 | OK | OK | |
26 | OK | OK | |
27 | OK | OK | |
32 | OK | OK | |
33 | OK | OK | |
34 | OK | masukan saja | |
35 | OK | masukan saja | |
36 | OK | masukan saja | |
39 | OK | masukan saja |
Teruskan membaca untuk analisis lebih detail dan mendalam tentang GPIO ESP32 dan fungsinya.
Hanya masukan pin
GPIO 34 hingga 39 adalah pin GPI – hanya sebagai masukan. Pin ini tidak memiliki resistor pull-up atau pull-down internal. Pin ini tidak dapat digunakan sebagai keluaran, jadi gunakan pin ini hanya sebagai masukan:
- GPIO 34
- GPIO 35
- GPIO 36
- GPIO 39
Flash SPI terintegrasi pada ESP-WROOM-32
GPIO 6 hingga GPIO 11 dipaparkan di beberapa papan pengembangan ESP32. Namun, pin ini terhubung ke flash SPI terintegrasi pada chip ESP-WROOM-32 dan tidak direkomendasikan untuk penggunaan lain. Jadi, jangan gunakan pin ini dalam proyek Anda:
- GPIO 6 (SCK/CLK)
- GPIO 7 (SDO/SD0)
- GPIO 8 (SDI/SD1)
- GPIO 9 (SHD/SD2)
- GPIO 10 (SWP/SD3)
- GPIO 11 (CSC/CMD)
GPIO sentuh kapasitif
ESP32 memiliki 10 sensor sentuh kapasitif internal. Sensor ini dapat mendeteksi variasi pada apa pun yang mengandung muatan listrik, seperti kulit manusia. Jadi, sensor ini dapat mendeteksi variasi yang ditimbulkan saat menyentuh GPIO dengan jari. Pin ini dapat dengan mudah diintegrasikan ke bantalan kapasitif dan menggantikan tombol mekanis. Pin sentuh kapasitif juga dapat digunakan untuk membangunkan ESP32 dari tidur lelap. Sensor sentuh internal tersebut terhubung ke GPIO berikut:
- T0 (GPIO4)
- T1 (GPIO0)
- T2 (GPIO2)
- T3 (GPIO15)
- T4 (GPIO13)
- T5 (GPIO12)
- T6 (GPIO14)
- T7 (GPIO27)
- T8 (GPIO33)
- T9 (GPIO32)
Konverter Analog ke Digital (ADC)
ESP32 memiliki 18 x 12 bit saluran input ADC (sementara ESP8266 hanya memiliki 1x 10 bit ADC). Berikut adalah GPIO yang dapat digunakan sebagai ADC dan salurannya:
- ADC1_CH0 (GPIO36)
- ADC1_CH1 (GPIO37)
- ADC1_CH2 (GPIO38)
- ADC1_CH3 (GPIO39)
- ADC1_CH4 (GPIO32)
- ADC1_CH5 (GPIO33)
- ADC1_CH6 (GPIO34)
- ADC1_CH7 (GPIO35)
- ADC2_CH0 (GPIO4)
- ADC2_CH1 (GPIO0)
- ADC2_CH2 (GPIO2)
- ADC2_CH3 (GPIO15)
- ADC2_CH4 (GPIO13)
- ADC2_CH5 (GPIO12)
- ADC2_CH6 (GPIO14)
- ADC2_CH7 (GPIO27)
- ADC2_CH8 (GPIO25)
- ADC2_CH9 (GPIO26)
Catatan: Pin ADC2 tidak dapat digunakan saat Wi-Fi digunakan. Jadi, jika Anda menggunakan Wi-Fi dan mengalami masalah dalam memperoleh nilai dari ADC2 GPIO, Anda dapat mempertimbangkan untuk menggunakan ADC1 GPIO sebagai gantinya. Itu akan menyelesaikan masalah Anda.
Saluran masukan ADC memiliki resolusi 12-bit. Ini berarti Anda bisa mendapatkan pembacaan analog mulai dari 0 hingga 4095, di mana 0 sesuai dengan 0V dan 4095 sesuai dengan 3.3V. Anda juga dapat mengatur resolusi saluran pada kode dan rentang ADC.
Pin ADC ESP32 tidak memiliki perilaku linier. Anda mungkin tidak akan dapat membedakan antara 0 dan 0.1V, atau antara 3.2 dan 3.3V. Anda perlu mengingatnya saat menggunakan pin ADC. Anda akan mendapatkan perilaku yang mirip dengan yang ditunjukkan pada gambar berikut.Konverter Digital ke Analog (DAC)
Ada 2 x 8 bit saluran DAC pada ESP32 untuk mengubah sinyal digital menjadi volume analog.tagkeluaran sinyal e. Berikut adalah saluran DAC:
- DAC1 (GPIO25)
- DAC2 (GPIO26)
GPIO RTC
Terdapat dukungan RTC GPIO pada ESP32. GPIO yang dirutekan ke subsistem daya rendah RTC dapat digunakan saat ESP32 dalam keadaan tidur nyenyak. GPIO RTC ini dapat digunakan untuk membangunkan ESP32 dari tidur nyenyak saat Ultra Low
Koprosesor daya (ULP) sedang berjalan. GPIO berikut dapat digunakan sebagai sumber pengaktifan eksternal.
- GPIO0 (GPIO36)
- GPIO3 (GPIO39)
- GPIO4 (GPIO34)
- GPIO5 (GPIO35)
- GPIO6 (GPIO25)
- GPIO7 (GPIO26)
- GPIO8 (GPIO33)
- GPIO9 (GPIO32)
- GPIO10 (GPIO4)
- GPIO11 (GPIO0)
- GPIO12 (GPIO2)
- GPIO13 (GPIO15)
- GPIO14 (GPIO13)
- GPIO15 (GPIO12)
- GPIO16 (GPIO14)
- GPIO17 (GPIO27)
PWM
Kontroler PWM LED ESP32 memiliki 16 saluran independen yang dapat dikonfigurasi 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 menentukan parameter berikut dalam kode:
- Frekuensi sinyal;
- Siklus tugas;
- saluran PWM;
- GPIO tempat Anda ingin mengeluarkan sinyal.
Bahasa Indonesia: I2C
ESP32 memiliki dua saluran I2C dan pin mana pun dapat ditetapkan sebagai SDA atau SCL. Saat menggunakan ESP32 dengan Arduino IDE, pin I2C default adalah:
- GPIO21 (SDA)
- GPIO22 (SCL)
Jika Anda ingin menggunakan pin lain saat menggunakan pustaka kawat, Anda hanya perlu memanggil:
Wire.mulai(SDA, SCL);
SPI
Secara default, pemetaan pin untuk SPI adalah:
SPI | MEMBUANG WAKTU | SUP KEDELAI JEPANG | CLK | CS |
VSPI | GPIO 23 | GPIO 19 | GPIO 18 | GPIO 5 |
HSPI | GPIO 13 | GPIO 12 | GPIO 14 | GPIO 15 |
Terganggu
Semua GPIO dapat dikonfigurasikan sebagai interupsi.
Pin pengikat
Chip ESP32 memiliki pin pengikat berikut:
- GPIO 0 (harus RENDAH untuk masuk ke mode boot)
- GPIO 2 (harus mengambang atau RENDAH saat boot)
- GPIO 4
- GPIO 5 (harus TINGGI saat boot)
- GPIO 12 (harus RENDAH saat boot)
- GPIO 15 (harus TINGGI saat boot)
Pin ini digunakan untuk menempatkan ESP32 ke mode bootloader atau flashing. Pada sebagian besar papan pengembangan dengan USB/Serial bawaan, Anda tidak perlu khawatir tentang status pin ini. Papan menempatkan pin dalam status yang tepat untuk mode flashing atau booting. Informasi selengkapnya tentang Pemilihan Mode Booting ESP32 dapat ditemukan di sini.
Namun, jika Anda memiliki periferal yang terhubung ke pin tersebut, Anda mungkin mengalami masalah saat mencoba mengunggah kode baru, mem-flash ESP32 dengan firmware baru, atau mengatur ulang papan. Jika Anda memiliki beberapa periferal yang terhubung ke pin pengikat dan Anda mengalami masalah saat mengunggah kode atau mem-flash ESP32, hal itu mungkin karena periferal tersebut mencegah ESP32 memasuki mode yang tepat. Baca dokumentasi Pemilihan Mode Booting untuk memandu Anda ke arah yang benar. Setelah mengatur ulang, mem-flash, atau melakukan booting, pin tersebut berfungsi seperti yang diharapkan.
Pin TINGGI di Boot
Beberapa GPIO mengubah statusnya ke TINGGI atau mengeluarkan sinyal PWM saat boot atau reset.
Artinya jika Anda memiliki keluaran yang terhubung ke GPIO ini, Anda mungkin mendapatkan hasil yang tidak diharapkan saat ESP32 melakukan reset atau booting.
- GPIO 1
- GPIO 3
- GPIO 5
- GPIO 6 hingga GPIO 11 (terhubung ke memori flash SPI terintegrasi ESP32 – tidak disarankan untuk digunakan).
- GPIO 14
- GPIO 15
Aktifkan (ID)
Enable (EN) adalah pin enable regulator 3.3V. Pin ini ditarik ke atas, jadi hubungkan ke ground untuk menonaktifkan regulator 3.3V. Ini berarti Anda dapat menggunakan pin ini yang terhubung ke tombol tekan untuk memulai ulang ESP32 Anda, misalnyaampsaya.
Arus GPIO yang ditarik
Arus maksimum absolut yang ditarik per GPIO adalah 40mA menurut bagian “Kondisi Operasi yang Direkomendasikan” dalam lembar data ESP32.
Sensor Efek Hall ESP32 Terintegrasi
ESP32 juga dilengkapi dengan sensor efek hall internal yang mendeteksi perubahan medan magnet di sekitarnya
ESP32 Arduino IDE
Ada add-on untuk Arduino IDE yang memungkinkan Anda memprogram ESP32 menggunakan Arduino IDE dan bahasa pemrogramannya. Dalam tutorial ini, kami akan menunjukkan cara memasang papan ESP32 di Arduino IDE, baik Anda menggunakan Windows, Mac OS X, atau Linux.
Prasyarat: Arduino IDE Terpasang
Sebelum memulai prosedur instalasi ini, Anda perlu menginstal Arduino IDE di komputer Anda. Ada dua versi Arduino IDE yang dapat Anda instal: versi 1 dan versi 2.
Anda dapat mengunduh dan menginstal Arduino IDE dengan mengklik tautan berikut: arduino.cc/id/Utama/Perangkat Lunak
Versi Arduino IDE mana yang kami rekomendasikan? Saat ini, ada beberapa plugins untuk ESP32 (seperti SPIFFS FilePlugin Pengunggah Sistem) yang belum didukung pada Arduino 2. Jadi, jika Anda ingin menggunakan plugin SPIFFS di masa mendatang, kami sarankan untuk menginstal versi lama 1.8.X. Anda hanya perlu menggulir ke bawah pada halaman perangkat lunak Arduino untuk menemukannya.
Memasang Add-on ESP32 di Arduino IDE
Untuk memasang papan ESP32 di Arduino IDE Anda, ikuti petunjuk berikut ini:
- Di Arduino IDE Anda, buka File> Preferensi
- Masukkan yang berikut ke dalam “Additional Board Manager” URLs” bidang:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Kemudian, klik tombol “OK”:Catatan: jika Anda sudah memiliki papan ESP8266 URL, Anda dapat memisahkan URLs dengan koma sebagai berikut:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json,
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Buka Boards Manager. Buka Tools > Board > Boards Manager…Pencarian untuk ESP32 dan tekan tombol instal untuk “ESP32 oleh Espressif Systems“:
Selesai. Aplikasi akan terinstal setelah beberapa detik.
Unggah Kode Uji
Hubungkan papan ESP32 ke komputer Anda. Dengan Arduino IDE yang terbuka, ikuti langkah-langkah berikut:
- Pilih Papan Anda di menu Alat > Papan (dalam kasus saya ini adalah Modul ESP32 DEV)
- Pilih Port (jika Anda tidak melihat Port COM di Arduino IDE Anda, Anda perlu menginstal Driver CP210x USB to UART Bridge VCP):
- Buka contoh berikutampaku dibawah File > Mantanampdaftar > WiFi
(ESP32) > Pemindaian WiFi - Sketsa baru terbuka di Arduino IDE Anda:
- Tekan tombol Upload di Arduino IDE. Tunggu beberapa detik sementara kode dikompilasi dan diunggah ke papan Anda.
- Jika semuanya berjalan sesuai harapan, Anda akan melihat pesan “Selesai mengunggah.”
- Buka Arduino IDE Serial Monitor pada baud rate 115200:
- Tekan tombol Aktifkan pada ESP32 dan Anda akan melihat jaringan yang tersedia di dekat ESP32 Anda:
Penyelesaian Masalah
Jika Anda mencoba mengunggah sketsa baru ke ESP32 dan mendapatkan pesan galat ini “Terjadi galat fatal: Gagal terhubung ke ESP32: Waktu habis… Menyambungkan…“. Ini berarti ESP32 Anda tidak dalam mode flashing/uploading.
Setelah nama papan dan COM yang tepat dipilih, ikuti langkah-langkah berikut:
Tekan terus tombol “BOOT” di papan ESP32 Anda
- Tekan tombol “Unggah” di Arduino IDE untuk mengunggah sketsa Anda:
- Setelah Anda melihat pesan “Connecting….” di Arduino IDE Anda, lepaskan jari dari tombol “BOOT”:
- Setelah itu, Anda akan melihat pesan “Selesai mengunggah”
Selesai. ESP32 Anda seharusnya sudah menjalankan sketsa baru. Tekan tombol “ENABLE” untuk memulai ulang ESP32 dan menjalankan sketsa baru yang diunggah.
Anda juga harus mengulangi urutan tombol itu setiap kali ingin mengunggah sketsa baru.
Proyek 1 Input Output ESP32
Dalam panduan memulai ini Anda akan mempelajari cara membaca masukan digital seperti tombol sakelar dan mengontrol keluaran digital seperti LED menggunakan ESP32 dengan Arduino IDE.
Prasyarat
Kita akan memprogram ESP32 menggunakan Arduino IDE. Jadi, pastikan Anda telah memasang add-on papan ESP32 sebelum melanjutkan:
- Memasang Add-on ESP32 di Arduino IDE
Output Digital Kontrol ESP32
Pertama, Anda perlu mengatur GPIO yang ingin Anda kendalikan sebagai OUTPUT. Gunakan fungsi pinMode() sebagai berikut:
pinMode(GPIO, OUTPUT);
Untuk mengendalikan keluaran digital, Anda hanya perlu menggunakan fungsi digitalWrite(), yang menerima argumen, GPIO (angka int) yang Anda maksud, dan statusnya, TINGGI atau RENDAH.
digitalWrite(GPIO, STATE);
Semua GPIO dapat digunakan sebagai keluaran kecuali GPIO 6 hingga 11 (terhubung ke flash SPI terintegrasi) dan GPIO 34, 35, 36, dan 39 (hanya GPIO masukan);
Pelajari lebih lanjut tentang GPIO ESP32: Panduan Referensi GPIO ESP32
ESP32 Membaca Input Digital
Pertama, atur GPIO yang ingin Anda baca sebagai INPUT, menggunakan fungsi pinMode() sebagai berikut:
pinMode(GPIO, INPUT);
Untuk membaca masukan digital, seperti tombol, Anda menggunakan fungsi digitalRead(), yang menerima sebagai argumen, GPIO (angka int) yang Anda maksud.
digitalRead(GPIO);
Semua GPIO ESP32 dapat digunakan sebagai input, kecuali GPIO 6 hingga 11 (terhubung ke flash SPI terintegrasi).
Pelajari lebih lanjut tentang GPIO ESP32: Panduan Referensi GPIO ESP32
Proyek Example
Untuk menunjukkan kepada Anda cara menggunakan input digital dan output digital, kami akan membuat proyek sederhanaampdengan tombol tekan dan LED. Kita akan membaca status tombol tekan dan menyalakan LED sebagaimana diilustrasikan pada gambar berikut.
Bagian yang Diperlukan
Berikut adalah daftar komponen yang Anda butuhkan untuk membangun rangkaian:
- ESP32 PENGEMBANGAN V1
- LED 5 mm
- Resistor 220 Ohm
- Tekan tombol
- Resistor 10k Ohm
- Papan tempat memotong roti
- Kabel jumper
Diagram Skema
Sebelum melanjutkan, Anda perlu merakit rangkaian dengan LED dan tombol tekan.
Kita akan menghubungkan LED ke GPIO 5 dan tombol tekan ke GPIO 4.Kode
Buka kode Project_1_ESP32_Inputs_Outputs.ino di arduino IDECara Kerja Kode
Pada dua baris berikut, Anda membuat variabel untuk menetapkan pin:
Tombol terhubung ke GPIO 4 dan LED terhubung ke GPIO 5. Saat menggunakan Arduino IDE dengan ESP32, 4 sesuai dengan GPIO 4 dan 5 sesuai dengan GPIO 5.
Selanjutnya, Anda membuat variabel untuk menahan status tombol. Secara default, nilainya adalah 0 (tidak ditekan).
int tombolState = 0;
Dalam setup(), Anda menginisialisasi tombol sebagai INPUT, dan LED sebagai OUTPUT.
Untuk itu, Anda menggunakan fungsi pinMode() yang menerima pin yang Anda maksud, dan modenya: INPUT atau OUTPUT.
pinMode(tombolPin, INPUT);
pinMode(ledPin, OUTPUT);
Dalam loop() adalah tempat Anda membaca status tombol dan mengatur LED sebagaimana mestinya.
Pada baris berikutnya, Anda membaca status tombol dan menyimpannya dalam variabel buttonState.
Seperti yang telah kita lihat sebelumnya, Anda menggunakan fungsi digitalRead()
buttonState = digitalRead(pintombol);
Pernyataan if berikut, memeriksa apakah status tombol TINGGI. Jika ya, maka LED akan menyala menggunakan fungsi digitalWrite() yang menerima ledPin sebagai argumen, dan status TINGGI.
jika (buttonState == TINGGI)Jika status tombol tidak HIGH, Anda akan mematikan LED. Tetapkan saja LOW sebagai argumen kedua dalam fungsi digitalWrite().
Mengunggah Kode
Sebelum mengeklik tombol unggah, buka Alat > Papan, dan pilih papan :Papan DOIT ESP32 DEVKIT V1.
Buka Tools > Port dan pilih port COM yang terhubung dengan ESP32. Kemudian, tekan tombol unggah dan tunggu pesan “Done uploading” (Selesai mengunggah).Catatan: Jika Anda melihat banyak titik (menghubungkan…__…__) pada jendela debugging dan pesan “Gagal terhubung ke ESP32: Waktu habis menunggu header paket”, itu berarti Anda perlu menekan tombol BOOT on-board ESP32 setelah titik-titik tersebut
mulai muncul.Pemecahan Masalah
Demonstrasi
Setelah mengunggah kode, uji sirkuit Anda. LED Anda akan menyala saat Anda menekan tombol tekan:Dan matikan saat Anda melepaskannya:
Proyek 2 Input Analog ESP32
Proyek ini menunjukkan cara membaca masukan analog dengan ESP32 menggunakan Arduino IDE.
Pembacaan analog berguna untuk membaca nilai dari resistor variabel seperti potensiometer, atau sensor analog.
Masukan Analog (ADC)
Membaca nilai analog dengan ESP32 berarti Anda dapat mengukur vol yang bervariasitaglevel antara 0 V dan 3.3 V.
volumetagyang diukur kemudian ditetapkan ke nilai antara 0 dan 4095, di mana 0 V sesuai dengan 0, dan 3.3 V sesuai dengan 4095. Vol apa puntage antara 0 V dan 3.3 V akan diberikan nilai yang sesuai di antaranya.ADC bersifat Non-linier
Idealnya, Anda mengharapkan perilaku linear saat menggunakan pin ADC ESP32.
Namun, hal itu tidak terjadi. Yang akan Anda dapatkan adalah perilaku seperti yang ditunjukkan pada bagan berikut:Perilaku ini berarti ESP32 Anda tidak dapat membedakan 3.3 V dari 3.2 V.
Anda akan mendapatkan nilai yang sama untuk kedua voltagbahasa Inggris: 4095.
Hal yang sama terjadi pada volume yang sangat rendahtagNilai e: untuk 0 V dan 0.1 V Anda akan mendapatkan nilai yang sama: 0. Anda perlu mengingatnya saat menggunakan pin ADC ESP32.
Fungsi analogRead()
Membaca input analog dengan ESP32 menggunakan Arduino IDE semudah menggunakan fungsi analogRead(). Fungsi ini menerima GPIO yang ingin Anda baca sebagai argumen:
analogRead(GPIO);
Hanya 15 yang tersedia di DEVKIT V1board (versi dengan 30 GPIO).
Ambil pinout papan ESP32 Anda dan cari pin ADC. Pin ini ditandai dengan batas merah pada gambar di bawah.Pin input analog ini memiliki resolusi 12-bit. Ini berarti bahwa saat Anda membaca input analog, rentangnya dapat bervariasi dari 0 hingga 4095.
Catatan: Pin ADC2 tidak dapat digunakan saat Wi-Fi digunakan. Jadi, jika Anda menggunakan Wi-Fi dan mengalami masalah dalam memperoleh nilai dari GPIO ADC2, Anda dapat mempertimbangkan untuk menggunakan GPIO ADC1 sebagai gantinya, yang seharusnya dapat menyelesaikan masalah Anda.
Untuk melihat bagaimana semuanya terhubung, kita akan membuat ex sederhanaample untuk membaca nilai analog dari potensiometer.
Bagian yang Diperlukan
Untuk mantan iniample, Anda memerlukan bagian-bagian berikut:
- Papan ESP32 DEVKIT V1
- Potensiometer
- Papan tempat memotong roti
- Kabel jumper
Skema
Hubungkan potensiometer ke ESP32 Anda. Pin tengah potensiometer harus dihubungkan ke GPIO 4. Anda dapat menggunakan diagram skema berikut sebagai referensi.Kode
Kita akan memprogram ESP32 menggunakan Arduino IDE, jadi pastikan Anda telah menginstal add-on ESP32 sebelum melanjutkan:(Jika Anda telah melakukan langkah ini, Anda dapat melompat ke langkah berikutnya.)
Memasang Add-on ESP32 di Arduino IDE
Buka kode Project_2_ESP32_Inputs_Outputs.ino di arduino IDEKode ini hanya membaca nilai dari potensiometer dan mencetak nilai tersebut di Serial Monitor.
Dalam kode tersebut, Anda mulai dengan mendefinisikan GPIO yang terhubung dengan potensiometer. Dalam contoh iniample, GPIO 4.Dalam setup(), inisialisasi komunikasi serial pada baud rate 115200.
Dalam loop(), gunakan fungsi analogRead() untuk membaca masukan analog dari potPin.
Terakhir, cetak nilai yang terbaca dari potensiometer di monitor serial.
Unggah kode yang diberikan ke ESP32 Anda. Pastikan Anda telah memilih board dan port COM yang tepat di menu Tools.
Menguji Mantanample
Setelah mengunggah kode dan menekan tombol reset ESP32, buka Serial Monitor pada baud rate 115200. Putar potensiometer dan lihat perubahan nilainya.Nilai maksimum yang akan Anda dapatkan adalah 4095 dan nilai minimumnya adalah 0.
Penutup
Dalam artikel ini Anda telah mempelajari cara membaca input analog menggunakan ESP32 dengan Arduino IDE. Singkatnya:
- Papan ESP32 DEVKIT V1 DOIT (versi dengan 30 pin) memiliki 15 pin ADC yang dapat Anda gunakan untuk membaca input analog.
- Pin ini memiliki resolusi 12 bit, yang berarti Anda bisa mendapatkan nilai dari 0 hingga 4095.
- Untuk membaca nilai dalam Arduino IDE, Anda cukup menggunakan fungsi analogRead()
- Pin ADC ESP32 tidak memiliki perilaku linier. Anda mungkin tidak akan dapat membedakan antara 0 dan 0.1V, atau antara 3.2 dan 3.3V. Anda perlu mengingatnya saat menggunakan pin ADC.
Proyek 3 ESP32 PWM (Keluaran Analog)
Dalam tutorial ini kami akan menunjukkan kepada Anda cara menghasilkan sinyal PWM dengan ESP32 menggunakan Arduino IDE. Sebagai contohamp"Mari kita buat rangkaian sederhana yang meredupkan LED menggunakan pengontrol PWM LED dari ESP32.Pengontrol PWM LED ESP32
ESP32 memiliki pengontrol PWM LED dengan 16 saluran independen yang dapat dikonfigurasi untuk menghasilkan sinyal PWM dengan properti berbeda.
Berikut langkah-langkah yang harus Anda ikuti untuk meredupkan LED dengan PWM menggunakan Arduino IDE:
- Pertama, Anda perlu memilih saluran PWM. Ada 16 saluran dari 0 hingga 15.
- Kemudian, Anda perlu mengatur frekuensi sinyal PWM. Untuk LED, frekuensi 5000 Hz sudah cukup baik untuk digunakan.
- Anda juga perlu mengatur resolusi siklus kerja sinyal: Anda memiliki resolusi dari 1 hingga 16 bit. Kami akan menggunakan resolusi 8-bit, yang berarti Anda dapat mengontrol kecerahan LED menggunakan nilai dari 0 hingga 255.
- Selanjutnya, Anda perlu menentukan GPIO mana saja yang akan menerima sinyal. Untuk itu, Anda akan menggunakan fungsi berikut:
ledcAttachPin(GPIO, saluran)
Fungsi ini menerima dua argumen. Yang pertama adalah GPIO yang akan mengeluarkan sinyal, dan yang kedua adalah saluran yang akan menghasilkan sinyal. - Terakhir, untuk mengontrol kecerahan LED menggunakan PWM, Anda menggunakan fungsi berikut:
ledcWrite(saluran, siklus tugas)
Fungsi ini menerima argumen saluran yang menghasilkan sinyal PWM, dan siklus kerja.
Bagian yang Diperlukan
Untuk mengikuti tutorial ini Anda memerlukan bagian-bagian berikut:
- Papan ESP32 DEVKIT V1
- 5mm LED
- Resistor 220 Ohm
- Papan tempat memotong roti
- Kabel jumper
Skema
Hubungkan LED ke ESP32 Anda seperti pada diagram skema berikut. LED harus dihubungkan ke GPIO 4.Catatan: Anda dapat menggunakan pin apa pun yang Anda inginkan, asalkan dapat berfungsi sebagai output. Semua pin yang dapat berfungsi sebagai output dapat digunakan sebagai pin PWM. Untuk informasi lebih lanjut tentang GPIO ESP32, baca: Referensi Pinout ESP32: Pin GPIO mana yang harus Anda gunakan?
Kode
Kita akan memprogram ESP32 menggunakan Arduino IDE, jadi pastikan Anda telah menginstal add-on ESP32 sebelum melanjutkan:(Jika Anda telah melakukan langkah ini, Anda dapat melompat ke langkah berikutnya.)
Memasang Add-on ESP32 di Arduino IDE
Buka kode Project_3_ESP32_PWM.ino di arduino IDEAnda mulai dengan menentukan pin tempat LED dipasang. Dalam kasus ini, LED dipasang ke GPIO 4.
Kemudian, Anda mengatur properti sinyal PWM. Anda menetapkan frekuensi 5000 Hz, memilih saluran 0 untuk menghasilkan sinyal, dan mengatur resolusi 8 bit. Anda dapat memilih properti lain, selain properti ini, untuk menghasilkan sinyal PWM yang berbeda.
Dalam setup(), Anda perlu mengonfigurasi LED PWM dengan properti yang telah Anda tetapkan sebelumnya dengan menggunakan fungsi ledcSetup() yang menerima argumen, ledChannel, frekuensi, dan resolusi, sebagai berikut:
Selanjutnya, Anda perlu memilih GPIO tempat Anda akan mendapatkan sinyal. Untuk itu gunakan fungsi ledcAttachPin() yang menerima argumen GPIO tempat Anda ingin mendapatkan sinyal, dan saluran yang menghasilkan sinyal. Dalam contoh iniample, kita akan mendapatkan sinyal di ledPin GPIO, yang sesuai dengan GPIO 4. Saluran yang menghasilkan sinyal adalah ledChannel, yang sesuai dengan saluran 0.
Dalam loop, Anda akan memvariasikan siklus tugas antara 0 dan 255 untuk meningkatkan kecerahan LED.
Dan kemudian, antara 255 dan 0 untuk mengurangi kecerahan.
Untuk mengatur kecerahan LED, Anda hanya perlu menggunakan fungsi ledcWrite() yang menerima argumen saluran yang menghasilkan sinyal, dan siklus kerja.
Karena kami menggunakan resolusi 8-bit, siklus kerja akan dikontrol menggunakan nilai dari 0 hingga 255. Perhatikan bahwa dalam fungsi ledcWrite() kami menggunakan saluran yang menghasilkan sinyal, dan bukan GPIO.
Menguji Mantanample
Unggah kode ke ESP32 Anda. Pastikan Anda telah memilih board dan port COM yang tepat. Lihat rangkaian Anda. Anda harus memiliki LED dimmer yang meningkatkan dan menurunkan kecerahan.
Proyek 4 Sensor Gerak PIR ESP32
Proyek ini menunjukkan cara mendeteksi gerakan dengan ESP32 menggunakan sensor gerak PIR. Buzzer akan membunyikan alarm saat gerakan terdeteksi, dan menghentikan alarm saat tidak ada gerakan yang terdeteksi selama waktu yang telah ditentukan (misalnya 4 detik).
Cara Kerja Sensor Gerak HC-SR501
.Prinsip kerja sensor HC-SR501 didasarkan pada perubahan radiasi inframerah pada objek yang bergerak. Agar dapat dideteksi oleh sensor HC-SR501, objek tersebut harus memenuhi dua persyaratan:
- Objek tersebut memancarkan sinar inframerah.
- Objek tersebut bergerak atau bergetar
Jadi:
Bila suatu benda memancarkan sinar inframerah tetapi NoT-nya bergerak (misalnya, seseorang berdiri diam tanpa bergerak), maka NoT tersebut terdeteksi oleh sensor.
Jika suatu objek bergerak tetapi tidak memancarkan sinar inframerah (misalnya robot atau kendaraan), maka objek tersebut TIDAK terdeteksi oleh sensor.
Memperkenalkan Timer
Dalam hal iniample kita juga akan memperkenalkan pengatur waktu. Kita ingin LED tetap menyala selama beberapa detik yang telah ditentukan setelah gerakan terdeteksi. Daripada menggunakan fungsi delay() yang memblokir kode Anda dan tidak memungkinkan Anda melakukan hal lain selama beberapa detik yang ditentukan, kita harus menggunakan pengatur waktu.Fungsi delay()
Anda harus familier dengan fungsi delay() karena fungsi ini banyak digunakan. Fungsi ini cukup mudah digunakan. Fungsi ini menerima satu angka int sebagai argumen.
Angka ini menyatakan waktu dalam milidetik yang harus ditunggu program hingga berpindah ke baris kode berikutnya.Ketika Anda melakukan delay(1000) program Anda berhenti pada baris tersebut selama 1 detik.
delay() adalah fungsi pemblokiran. Fungsi pemblokiran mencegah program melakukan hal lain hingga tugas tertentu selesai. Jika Anda ingin beberapa tugas terjadi pada saat yang sama, Anda tidak dapat menggunakan delay().
Untuk sebagian besar proyek, Anda harus menghindari penggunaan penundaan dan menggunakan pengatur waktu sebagai gantinya.
Fungsi millis()
Dengan menggunakan fungsi yang disebut millis() Anda dapat mengembalikan jumlah milidetik yang telah berlalu sejak program pertama kali dimulai.Mengapa fungsi itu berguna? Karena dengan menggunakan matematika, Anda dapat dengan mudah memverifikasi berapa banyak waktu yang telah berlalu tanpa memblokir kode Anda.
Bagian yang Diperlukan
Untuk mengikuti tutorial ini Anda memerlukan bagian-bagian berikut
- Papan ESP32 DEVKIT V1
- Sensor gerak PIR (HC-SR501)
- Buzzer aktif
- Kabel jumper
- Papan tempat memotong roti
SkemaCatatan: Volume kerjatagTegangan pada HC-SR501 adalah 5V. Gunakan pin Vin untuk menyalakannya.
Kode
Sebelum melanjutkan tutorial ini, Anda harus memasang add-on ESP32 di Arduino IDE Anda. Ikuti salah satu tutorial berikut untuk memasang ESP32 di Arduino IDE, jika Anda belum melakukannya. (Jika Anda telah melakukan langkah ini, Anda dapat melanjutkan ke langkah berikutnya.)
Memasang Add-on ESP32 di Arduino IDE
Buka kode Project_4_ESP32_PIR_Motion_Sensor.ino di arduino IDE.
Demonstrasi
Unggah kode ke papan ESP32 Anda. Pastikan Anda telah memilih papan dan port COM yang tepat. Langkah referensi unggah kode.
Buka Serial Monitor pada baud rate 115200.Gerakkan tangan Anda di depan sensor PIR. Bel akan menyala, dan pesan akan tercetak di Serial Monitor yang menyatakan “Gerakan terdeteksi! Alarm bel”.
Setelah 4 detik, bel akan mati.
Proyek 5 Sakelar ESP32 Web Pelayan
Dalam proyek ini Anda akan membuat sebuah web server dengan ESP32 yang mengontrol output (dua LED) menggunakan lingkungan pemrograman Arduino IDE. web server responsif seluler dan dapat diakses dengan perangkat apa pun seperti browser di jaringan lokal. Kami akan menunjukkan cara membuat web server dan cara kerja kode langkah demi langkah.
Proyek Berakhirview
Sebelum langsung ke proyek, penting untuk menguraikan apa yang kita web server akan melakukannya, sehingga lebih mudah mengikuti langkah-langkah selanjutnya.
- Itu web server yang akan Anda bangun mengontrol dua LED yang terhubung ke ESP32 GPIO 26 dan GPIO 27;
- Anda dapat mengakses ESP32 web server dengan mengetikkan alamat IP ESP32 pada browser di jaringan lokal;
- Dengan mengklik tombol pada web server Anda dapat langsung mengubah status setiap LED.
Bagian yang Diperlukan
Untuk tutorial ini Anda memerlukan bagian-bagian berikut:
- Papan ESP32 DEVKIT V1
- Lampu LED 2x 5mm
- 2x resistor 200 Ohm
- Papan tempat memotong roti
- Kabel jumper
Skema
Mulailah dengan membangun rangkaian. Hubungkan dua LED ke ESP32 seperti yang ditunjukkan pada diagram skema berikut – satu LED terhubung ke GPIO 26, dan yang lainnya ke GPIO 27.
Catatan: Kami menggunakan papan ESP32 DEVKIT DOIT dengan 36 pin. Sebelum merakit rangkaian, pastikan Anda memeriksa pinout untuk papan yang Anda gunakan.Kode
Di sini kami menyediakan kode yang membuat ESP32 web server. Buka kode Project_5_ESP32_Switch _Web_Server.ino di arduino IDE, tetapi jangan unggah dulu. Anda perlu membuat beberapa perubahan agar dapat berfungsi untuk Anda.
Kita akan memprogram ESP32 menggunakan Arduino IDE, jadi pastikan Anda telah menginstal add-on ESP32 sebelum melanjutkan:(Jika Anda telah melakukan langkah ini, Anda dapat melompat ke langkah berikutnya.)
Memasang Add-on ESP32 di Arduino IDE
Mengatur Kredensial Jaringan Anda
Anda perlu mengubah baris berikut dengan kredensial jaringan Anda: SSID dan kata sandi. Kode tersebut memberikan komentar yang jelas tentang di mana Anda harus melakukan perubahan.Mengunggah Kode
Sekarang, Anda dapat mengunggah kode dan web Server akan langsung berfungsi.
Ikuti langkah-langkah berikut untuk mengunggah kode ke ESP32:
- Hubungkan papan ESP32 Anda ke komputer;
- Pada Arduino IDE pilih papan Anda di Alat > Papan (dalam kasus kami, kami menggunakan papan ESP32 DEVKIT DOIT);
- Pilih port COM di Alat > Port.
- Tekan tombol Unggah di Arduino IDE dan tunggu beberapa detik sementara kode dikompilasi dan diunggah ke papan Anda.
- Tunggu pesan “Selesai mengunggah”.
Menemukan Alamat IP ESP
Setelah mengunggah kode, buka Serial Monitor pada baud rate 115200.Tekan tombol ESP32 EN (reset). ESP32 terhubung ke Wi-Fi, dan mengeluarkan alamat IP ESP pada Serial Monitor. Salin alamat IP tersebut, karena Anda memerlukannya untuk mengakses ESP32 web server.
Mengakses Web Pelayan
Untuk mengakses web server, buka peramban Anda, tempel alamat IP ESP32, dan Anda akan melihat halaman berikut.
Catatan: Peramban dan ESP32 Anda harus terhubung ke LAN yang sama.Jika Anda melihat Serial Monitor, Anda dapat melihat apa yang terjadi di latar belakang. ESP menerima permintaan HTTP dari klien baru (dalam hal ini, browser Anda).
Anda juga dapat melihat informasi lain tentang permintaan HTTP.
Demonstrasi
Sekarang Anda dapat menguji apakah web server berfungsi dengan baik. Klik tombol untuk mengontrol LED.Pada saat yang sama, Anda dapat melihat Serial Monitor untuk melihat apa yang terjadi di latar belakang. Misalnyaample, ketika Anda mengklik tombol untuk mengaktifkan GPIO 26, ESP32 menerima permintaan di /26/on URL.
Ketika ESP32 menerima permintaan tersebut, ia menyalakan LED yang terpasang pada GPIO 26 dan memperbarui statusnya pada web halaman.
Tombol untuk GPIO 27 bekerja dengan cara yang sama. Uji apakah tombol tersebut berfungsi dengan baik.
Cara Kerja Kode
Pada bagian ini kita akan melihat lebih dekat pada kode untuk mengetahui cara kerjanya.
Hal pertama yang perlu Anda lakukan adalah menyertakan pustaka WiFi.Seperti disebutkan sebelumnya, Anda perlu memasukkan ssid dan kata sandi Anda di baris berikut di dalam tanda kutip ganda.
Kemudian, Anda mengatur web server ke port 80.
Baris berikut membuat variabel untuk menyimpan header permintaan HTTP:
Selanjutnya, Anda membuat variabel tambahan untuk menyimpan status keluaran Anda saat ini. Jika Anda ingin menambahkan lebih banyak keluaran dan menyimpan statusnya, Anda perlu membuat lebih banyak variabel.
Anda juga perlu menetapkan GPIO untuk setiap output Anda. Di sini kami menggunakan GPIO 26 dan GPIO 27. Anda dapat menggunakan GPIO lain yang sesuai.
pengaturan()
Sekarang, mari kita masuk ke setup(). Pertama, kita mulai komunikasi serial pada baud rate 115200 untuk keperluan debugging.Anda juga mendefinisikan GPIO Anda sebagai OUTPUT dan menyetelnya ke RENDAH.
Baris berikut memulai koneksi Wi-Fi dengan WiFi.begin(ssid, kata sandi), menunggu koneksi yang berhasil dan mencetak alamat IP ESP di Serial Monitor.
lingkaran()
Dalam loop() kita memprogram apa yang terjadi ketika klien baru membuat koneksi dengan web server.
ESP32 selalu mendengarkan klien yang masuk dengan baris berikut:Saat permintaan diterima dari klien, kami akan menyimpan data yang masuk. Perulangan while yang mengikuti akan berjalan selama klien tetap terhubung. Kami tidak menyarankan untuk mengubah bagian kode berikut kecuali Anda tahu persis apa yang Anda lakukan.
Bagian selanjutnya dari pernyataan if dan else memeriksa tombol mana yang ditekan di web halaman, dan mengontrol output yang sesuai. Seperti yang telah kita lihat sebelumnya, kita membuat permintaan pada berbagai URLtergantung pada tombol yang ditekan.
Misalnyaample, jika Anda menekan tombol GPIO 26 ON, ESP32 menerima permintaan pada /26/ON URL (kita dapat melihat informasi tersebut pada header HTTP di Serial Monitor). Jadi, kita dapat memeriksa apakah header tersebut berisi ekspresi GET /26/on. Jika berisi, kita ubah variabel output26state menjadi ON, dan ESP32 menyalakan LED.
Cara kerjanya sama untuk tombol lainnya. Jadi, jika Anda ingin menambahkan lebih banyak output, Anda harus mengubah bagian kode ini untuk menyertakannya.
Menampilkan HTML web halaman
Hal berikutnya yang perlu Anda lakukan adalah membuat web halaman. ESP32 akan mengirimkan respons ke browser Anda dengan beberapa kode HTML untuk membangun web halaman.
Itu web halaman dikirim ke klien menggunakan ekspresi client.println() ini. Anda harus memasukkan apa yang ingin Anda kirim ke klien sebagai argumen.
Hal pertama yang harus kita kirim adalah selalu baris berikut, yang menunjukkan bahwa kita sedang mengirim HTML.Kemudian, baris berikut membuat web halaman responsif dalam bentuk apa pun web peramban.
Dan yang berikut ini digunakan untuk mencegah permintaan pada favicon. – Anda tidak perlu khawatir tentang baris ini.
Menata gaya Web Halaman
Selanjutnya, kita memiliki beberapa teks CSS untuk memberi gaya pada tombol dan web tampilan halaman.
Kami memilih font Helvetica, menentukan konten yang akan ditampilkan sebagai blok dan menyelaraskannya di tengah.Kami menata tombol kami dengan warna #4CAF50, tanpa batas, teks berwarna putih, dan dengan padding ini: 16px 40px. Kami juga mengatur text-decoration menjadi none, menentukan ukuran font, margin, dan kursor menjadi pointer.
Kami juga menentukan gaya untuk tombol kedua, dengan semua properti tombol yang telah kami tentukan sebelumnya, tetapi dengan warna yang berbeda. Ini akan menjadi gaya untuk tombol mati.
Pengaturan Web Halaman Judul Pertama
Pada baris berikutnya Anda dapat mengatur judul pertama Anda web halaman. Di sini kita memiliki “ESP32 Web Server”, tetapi Anda dapat mengubah teks ini menjadi apa pun yang Anda suka.Menampilkan Tombol dan Status yang Sesuai
Kemudian, Anda menulis paragraf untuk menampilkan status terkini GPIO 26. Seperti yang dapat Anda lihat, kami menggunakan variabel output26State, sehingga status diperbarui secara instan saat variabel ini berubah.Kemudian, kami menampilkan tombol on atau off, tergantung pada status GPIO saat ini. Jika status GPIO saat ini off, kami menampilkan tombol ON, jika tidak, kami menampilkan tombol OFF.
Kami menggunakan prosedur yang sama untuk GPIO 27.
Menutup Koneksi
Akhirnya, ketika respon berakhir, kami menghapus variabel header, dan menghentikan koneksi dengan klien dengan client.stop().
Penutup
Dalam tutorial ini kami telah menunjukkan kepada Anda cara membangun web server dengan ESP32. Kami telah menunjukkan contoh sederhanaample yang mengendalikan dua LED, tetapi idenya adalah mengganti LED tersebut dengan relai, atau keluaran lain yang ingin Anda kendalikan.
Proyek 6 RGB LED Web Pelayan
Dalam proyek ini kami akan menunjukkan kepada Anda cara mengontrol LED RGB dari jarak jauh dengan papan ESP32 menggunakan web server dengan pemilih warna.
Proyek Berakhirview
Sebelum memulai, mari kita lihat cara kerja proyek ini:
- ESP32 adalah web server menampilkan pemilih warna.
- Saat Anda memilih warna, browser Anda membuat permintaan pada URL yang berisi parameter R, G, dan B dari warna yang dipilih.
- ESP32 Anda menerima permintaan dan membagi nilai untuk setiap parameter warna.
- Kemudian, ia mengirimkan sinyal PWM dengan nilai yang sesuai ke GPIO yang mengendalikan LED RGB.
Bagaimana cara kerja LED RGB?
Pada LED RGB katoda umum, ketiga LED berbagi koneksi negatif (katoda). Semua yang disertakan dalam kit adalah RGB katoda umum.Bagaimana cara membuat warna yang berbeda?
Dengan LED RGB Anda tentu saja dapat menghasilkan cahaya merah, hijau, dan biru, dan dengan mengonfigurasi intensitas setiap LED, Anda juga dapat menghasilkan warna lain.
MisalnyaampMisalnya, untuk menghasilkan cahaya biru murni, Anda harus menyetel LED biru ke intensitas tertinggi dan LED hijau dan merah ke intensitas terendah. Untuk cahaya putih, Anda harus menyetel ketiga LED ke intensitas tertinggi.
Mencampur warna
Untuk menghasilkan warna lain, Anda dapat menggabungkan ketiga warna tersebut dengan intensitas yang berbeda. Untuk menyesuaikan intensitas setiap LED, Anda dapat menggunakan sinyal PWM.
Karena LED sangat berdekatan satu sama lain, mata kita melihat hasil kombinasi warna, bukan tiga warna secara individual.
Untuk mendapatkan gambaran tentang cara memadukan warna, perhatikan bagan berikut.
Ini adalah bagan pencampuran warna yang paling sederhana, tetapi memberi Anda gambaran tentang cara kerjanya dan cara menghasilkan warna yang berbeda.Bagian yang Diperlukan
Untuk proyek ini Anda memerlukan komponen berikut:
- Papan ESP32 DEVKIT V1
- Lampu LED RGB
- 3 resistor 220 ohm
- Kabel jumper
- Papan tempat memotong roti
SkemaKode
Kita akan memprogram ESP32 menggunakan Arduino IDE, jadi pastikan Anda telah menginstal add-on ESP32 sebelum melanjutkan:(Jika Anda telah melakukan langkah ini, Anda dapat melompat ke langkah berikutnya.)
- Memasang Add-on ESP32 di Arduino IDE
Setelah merakit sirkuit, Buka kodenya
Proyek_6_RGB_LED_Web_Server.ino di arduino IDE.
Sebelum mengunggah kode, jangan lupa memasukkan kredensial jaringan Anda sehingga ESP dapat terhubung ke jaringan lokal Anda.Cara kerja kode tersebut
Sketsa ESP32 menggunakan pustaka WiFi.h.Baris berikut mendefinisikan variabel string untuk menampung parameter R, G, dan B dari permintaan.
Empat variabel berikutnya digunakan untuk mendekode permintaan HTTP selanjutnya.
Buat tiga variabel untuk GPIO yang akan mengendalikan parameter strip R, G, dan B. Dalam kasus ini, kami menggunakan GPIO 13, GPIO 12, dan GPIO 14.
GPIO ini perlu mengeluarkan sinyal PWM, jadi kita perlu mengonfigurasi properti PWM terlebih dahulu. Atur frekuensi sinyal PWM ke 5000 Hz. Kemudian, kaitkan saluran PWM untuk setiap warna
Dan terakhir, atur resolusi saluran PWM menjadi 8-bit
Dalam setup(), tetapkan properti PWM ke saluran PWM
Pasangkan saluran PWM ke GPIO yang sesuai
Bagian kode berikut menampilkan pemilih warna di web halaman dan membuat permintaan berdasarkan warna yang Anda pilih.
Saat Anda memilih warna, Anda menerima permintaan dengan format berikut.
Jadi, kita perlu membagi string ini untuk mendapatkan parameter R, G, dan B. Parameter tersebut disimpan dalam variabel redString, greenString, dan blueString dan dapat memiliki nilai antara 0 dan 255.Untuk mengontrol strip dengan ESP32, gunakan fungsi ledcWrite() untuk menghasilkan sinyal PWM dengan nilai yang didekodekan dari HTTP meminta.
Catatan: pelajari lebih lanjut tentang PWM dengan ESP32: Proyek 3 ESP32 PWM (Keluaran Analog)
Untuk mengontrol strip dengan ESP8266, kita hanya perlu menggunakan
fungsi analogWrite() untuk menghasilkan sinyal PWM dengan nilai yang didekode dari permintaan HTPP.
analogWrite(pinmerah, stringmerah.toInt());
analogWrite(pinhijau, stringhijau.toInt());
analogWrite(pinbiru, stringbiru.toInt())
Karena kita mendapatkan nilai dalam variabel string, kita perlu mengubahnya menjadi integer menggunakan metode toInt().
Demonstrasi
Setelah memasukkan kredensial jaringan Anda, pilih papan dan port COM yang tepat lalu unggah kode ke ESP32 Anda. Langkah referensi unggah kode.
Setelah mengunggah, buka Serial Monitor pada baud rate 115200 dan tekan tombol ESP Enable/Reset. Anda akan mendapatkan alamat IP board.Buka peramban Anda dan masukkan alamat IP ESP. Sekarang, gunakan pemilih warna untuk memilih warna LED RGB.
Kemudian, Anda perlu menekan tombol “Ubah Warna” agar warnanya berlaku.Untuk mematikan LED RGB, pilih warna hitam.
Warna yang paling kuat (pada bagian atas pemilih warna), adalah warna yang akan menghasilkan hasil yang lebih baik.
Proyek 7 Relai ESP32 Web Pelayan
Menggunakan relai dengan ESP32 merupakan cara yang bagus untuk mengendalikan peralatan rumah tangga AC dari jarak jauh. Tutorial ini menjelaskan cara mengendalikan modul relai dengan ESP32.
Kita akan melihat cara kerja modul relai, cara menghubungkan relai ke ESP32 dan membangunnya web server untuk mengendalikan relai dari jarak jauh.
Memperkenalkan Relay
Relai adalah sakelar yang dioperasikan secara elektrik dan seperti sakelar lainnya, relai dapat dinyalakan atau dimatikan, membiarkan arus mengalir atau tidak. Relai dapat dikontrol dengan tegangan rendahtages, seperti 3.3V yang disediakan oleh GPIO ESP32 dan memungkinkan kita untuk mengontrol vol tinggitagseperti 12V, 24V atau tegangan listriktage (230V di Eropa dan 120V di AS).Di sisi kiri, ada dua set tiga soket untuk menghubungkan vol tinggitages, dan pin di sisi kanan (vol rendahtage) hubungkan ke GPIO ESP32.
Volu Listriktage KoneksiModul relai yang ditunjukkan pada foto sebelumnya memiliki dua konektor, masing-masing dengan tiga soket: umum (COM), Biasanya Tertutup (NC), dan Biasanya Terbuka (NO).
- COM: hubungkan arus yang ingin Anda kendalikan (vol listrik)tagdan).
- NC (Normally Closed): konfigurasi yang biasanya tertutup digunakan saat Anda ingin relai ditutup secara default. NC adalah pin COM yang terhubung, artinya arus mengalir kecuali Anda mengirim sinyal dari ESP32 ke modul relai untuk membuka sirkuit dan menghentikan aliran arus.
- NO (Biasanya Terbuka): konfigurasi biasanya terbuka bekerja sebaliknya: tidak ada koneksi antara pin NO dan COM, sehingga rangkaian terputus kecuali Anda mengirimkan sinyal dari ESP32 untuk menutup rangkaian.
Pin KontrolVolume rendahtagSisi e memiliki satu set empat pin dan satu set tiga pin. Set pertama terdiri dari VCC dan GND untuk menyalakan modul, dan input 1 (IN1) dan input 2 (IN2) untuk mengendalikan relai bawah dan atas.
Jika modul relai Anda hanya memiliki satu saluran, Anda hanya akan memiliki satu pin IN. Jika Anda memiliki empat saluran, Anda akan memiliki empat pin IN, dan seterusnya.
Sinyal yang Anda kirim ke pin IN menentukan apakah relai aktif atau tidak. Relai dipicu saat input turun di bawah sekitar 2V. Ini berarti Anda akan mengalami skenario berikut:
- Konfigurasi Normal Tertutup (NC):
- Sinyal TINGGI – arus mengalir
- Sinyal RENDAH – arus tidak mengalir
- Konfigurasi Normal Terbuka (NO):
- Sinyal TINGGI – arus tidak mengalir
- Sinyal RENDAH – arus mengalir
Anda harus menggunakan konfigurasi tertutup normal ketika arus seharusnya mengalir hampir sepanjang waktu, dan Anda hanya ingin menghentikannya sesekali.
Gunakan konfigurasi yang biasanya terbuka ketika Anda ingin arus mengalir sesekali (misalnyaample, nyalakan semuaamp kadang-kadang).
Pemilihan Catu DayaSet pin kedua terdiri dari pin GND, VCC, dan JD-VCC.
Pin JD-VCC memberi daya pada elektromagnet relai. Perhatikan bahwa modul memiliki tutup jumper yang menghubungkan pin VCC dan JD-VCC; yang ditunjukkan di sini berwarna kuning, tetapi warna tutup jumper Anda mungkin berbeda.
Dengan tutup jumper terpasang, pin VCC dan JD-VCC tersambung. Artinya, elektromagnet relai langsung dialiri daya dari pin daya ESP32, sehingga modul relai dan rangkaian ESP32 tidak terisolasi secara fisik satu sama lain.
Tanpa tutup jumper, Anda perlu menyediakan sumber daya independen untuk menyalakan elektromagnet relai melalui pin JD-VCC. Konfigurasi tersebut secara fisik mengisolasi relai dari ESP32 dengan optocoupler internal modul, yang mencegah kerusakan pada ESP32 jika terjadi lonjakan listrik.
SkemaPeringatan: Penggunaan volume tinggitagCatu daya dapat menyebabkan cedera serius.
Oleh karena itu, LED 5mm digunakan sebagai pengganti catu daya volume tinggi.tagbohlam e dalam percobaan. Jika Anda tidak terbiasa dengan vol listriktagMintalah bantuan seseorang. Saat memprogram ESP atau memasang kabel pada sirkuit, pastikan semuanya terputus dari tegangan listrik.tage.Menginstal Perpustakaan untuk ESP32
Untuk membangun ini web server, kami menggunakan ESPAsyncWebPustaka server dan Pustaka AsyncTCP.
Menginstal ESPAsyncWebPerpustakaan server
Ikuti langkah-langkah berikut untuk menginstal Sinkronisasi ESPAWebPelayan perpustakaan:
- Klik di sini untuk mengunduh ESPAsyncWebPerpustakaan server. Anda harus memiliki
folder .zip di folder Unduhan Anda - Ekstrak folder .zip dan Anda akan mendapatkan ESPAsyncWebFolder master server
- Ganti nama folder Anda dari ESPAsyncWebServer master ke ESPAsyncWebPelayan
- Pindahkan ESPAsyncWebFolder server ke folder pustaka instalasi Arduino IDE Anda
Atau, di Arduino IDE Anda, Anda dapat membuka Sketch > Include
Perpustakaan > Tambahkan perpustakaan .ZIP… dan pilih perpustakaan yang baru saja Anda unduh.
Menginstal Pustaka AsyncTCP untuk ESP32
Itu Sinkronisasi ESPAWebPelayan perpustakaan membutuhkan TCP Asinkron perpustakaan untuk bekerja. Ikuti
langkah selanjutnya untuk menginstal pustaka tersebut:
- Klik di sini untuk mengunduh pustaka AsyncTCP. Anda harus memiliki folder .zip di folder Unduhan Anda
- Ekstrak folder .zip dan Anda akan mendapatkan folder AsyncTCP-master
1. Ubah nama folder Anda dari AsyncTCP-master menjadi AsyncTCP
3. Pindahkan folder AsyncTCP ke folder pustaka instalasi Arduino IDE Anda
4. Terakhir, buka kembali Arduino IDE Anda
Atau, di Arduino IDE Anda, Anda dapat membuka Sketch > Include
Perpustakaan > Tambahkan perpustakaan .ZIP… dan pilih perpustakaan yang baru saja Anda unduh.
Kode
Kita akan memprogram ESP32 menggunakan Arduino IDE, jadi pastikan Anda telah menginstal add-on ESP32 sebelum melanjutkan:(Jika Anda telah melakukan langkah ini, Anda dapat melompat ke langkah berikutnya.)
Memasang Add-on ESP32 di Arduino IDE
Setelah menginstal pustaka yang diperlukan, Buka kode Project_7_ESP32_Relay_Web_Server.ino di arduino IDE.
Sebelum mengunggah kode, jangan lupa memasukkan kredensial jaringan Anda sehingga ESP dapat terhubung ke jaringan lokal Anda.Demonstrasi
Setelah membuat perubahan yang diperlukan, unggah kode ke ESP32 Anda. Unggah langkah referensi kode.
Buka Serial Monitor pada baud rate 115200 dan tekan tombol ESP32 EN untuk mendapatkan alamat IP-nya. Kemudian, buka browser di jaringan lokal Anda dan ketik alamat IP ESP32 untuk mendapatkan akses ke web server.
Buka Serial Monitor pada baud rate 115200 dan tekan tombol ESP32 EN untuk mendapatkan alamat IP-nya. Kemudian, buka browser di jaringan lokal Anda dan ketik alamat IP ESP32 untuk mendapatkan akses ke web server.Catatan: Peramban dan ESP32 Anda harus terhubung ke LAN yang sama.
Anda akan mendapatkan sesuatu seperti berikut dengan dua tombol sebanyak jumlah relai yang telah Anda tetapkan dalam kode Anda.Sekarang, Anda dapat menggunakan tombol untuk mengendalikan relai menggunakan telepon pintar Anda.
Proyek_8_Keluaran_Status_Sinkronisasi_ Web_Pelayan
Proyek ini menunjukkan cara mengontrol output ESP32 atau ESP8266 menggunakan web server dan tombol fisik secara bersamaan. Status keluaran diperbarui pada web halaman apakah itu diubah melalui tombol fisik atau web server.
Proyek Berakhirview
Mari kita lihat sekilas cara kerja proyek ini.ESP32 atau ESP8266 menjadi tuan rumah web server yang memungkinkan Anda mengontrol status keluaran;
- Status keluaran saat ini ditampilkan pada web pelayan;
- ESP juga terhubung ke tombol tekan fisik yang mengendalikan output yang sama;
- Jika Anda mengubah status keluaran menggunakan tombol tekan fisik, status saat ini juga diperbarui di web server.
Singkatnya, proyek ini memungkinkan Anda untuk mengontrol output yang sama menggunakan web server dan tombol tekan secara bersamaan. Setiap kali status keluaran berubah, web server diperbarui.
Bagian yang Diperlukan
Berikut adalah daftar komponen yang Anda butuhkan untuk membangun rangkaian:
- Papan ESP32 DEVKIT V1
- LED 5 mm
- Resistor 220 Ohm
- Tekan tombol
- Resistor 10k Ohm
- Papan tempat memotong roti
- Kabel jumper
SkemaMenginstal Perpustakaan untuk ESP32
Untuk membangun ini web server, kami menggunakan ESPAsyncWebPustaka server dan Pustaka AsyncTCP. (Jika Anda sudah melakukan langkah ini, Anda dapat melompat ke langkah berikutnya.)
Menginstal ESPAsyncWebPerpustakaan server
Ikuti langkah-langkah berikut untuk menginstal ESPAsyncWebPerpustakaan server:
- Klik di sini untuk mengunduh ESPAsyncWebPerpustakaan server. Anda harus memiliki
folder .zip di folder Unduhan Anda - Ekstrak folder .zip dan Anda akan mendapatkan ESPAsyncWebFolder master server
- Ganti nama folder Anda dari ESPAsyncWebServer master ke ESPAsyncWebPelayan
- Pindahkan ESPAsyncWebFolder server ke folder pustaka instalasi Arduino IDE Anda
Atau, di Arduino IDE Anda, Anda dapat membuka Sketch > Include
Perpustakaan > Tambahkan perpustakaan .ZIP… dan pilih perpustakaan yang baru saja Anda unduh.
Menginstal Pustaka AsyncTCP untuk ESP32
Sinkronisasi ESPAWebPustaka server memerlukan pustaka AsyncTCP agar dapat berfungsi. Ikuti langkah-langkah berikut untuk menginstal pustaka tersebut:
- Klik di sini untuk mengunduh pustaka AsyncTCP. Anda harus memiliki folder .zip di folder Unduhan Anda
- Ekstrak folder .zip dan Anda akan mendapatkan folder AsyncTCP-master
- Ubah nama folder Anda dari AsyncTCP-master menjadi AsyncTCP
- Pindahkan folder AsyncTCP ke folder pustaka instalasi Arduino IDE Anda
- Terakhir, buka kembali Arduino IDE Anda
Atau, di Arduino IDE Anda, Anda dapat membuka Sketch > Include
Perpustakaan > Tambahkan perpustakaan .ZIP… dan pilih perpustakaan yang baru saja Anda unduh.
Kode
Kita akan memprogram ESP32 menggunakan Arduino IDE, jadi pastikan Anda telah menginstal add-on ESP32 sebelum melanjutkan:(Jika Anda telah melakukan langkah ini, Anda dapat melompat ke langkah berikutnya.)
Memasang Add-on ESP32 di Arduino IDE
Setelah menginstal perpustakaan yang diperlukan, Buka kodenya
Proyek_8_Keluaran_Status_Sinkronisasi_Web_Server.ino di arduino IDE.
Sebelum mengunggah kode, jangan lupa memasukkan kredensial jaringan Anda sehingga ESP dapat terhubung ke jaringan lokal Anda.
Cara Kerja Kode
Status Tombol dan Status Output
Variabel ledState menyimpan status keluaran LED. Secara default, saat web server mulai, nilainya RENDAH.
buttonState dan lastButtonState digunakan untuk mendeteksi apakah tombol tekan ditekan atau tidak.Tombol (web pelayan)
Kami tidak menyertakan HTML untuk membuat tombol pada variabel index_html.
Itu karena kami ingin dapat mengubahnya tergantung pada status LED saat ini yang juga dapat diubah dengan tombol tekan.
Jadi, kita membuat tempat penampung untuk tombol %BUTTONPLACEHOLDER% yang akan diganti dengan teks HTML untuk membuat tombol tersebut nanti pada kode (ini dilakukan dalam fungsi processor()).prosesor()
Fungsi prosesor() mengganti placeholder apa pun pada teks HTML dengan nilai sebenarnya. Pertama, ia memeriksa apakah teks HTML berisi
tempat penampung %BUTTONPLACEHOLDER%.Kemudian, panggil fungsi outputState() yang mengembalikan status output saat ini. Kita simpan dalam variabel outputStateValue.
Setelah itu, gunakan nilai itu untuk membuat teks HTML untuk menampilkan tombol dengan status yang tepat:
Permintaan HTTP GET untuk Mengubah Status Output (JavaScript)
Ketika Anda menekan tombol, fungsi toggleCheckbox() dipanggil. Fungsi ini akan membuat permintaan pada berbagai URLs untuk menyalakan atau mematikan LED.Untuk menyalakan LED, ia membuat permintaan pada /update?state=1 URL:
Jika tidak, ia membuat permintaan pada /update?state=0 URL.
Permintaan HTTP GET untuk Memperbarui Status (JavaScript)
Untuk menjaga status keluaran tetap diperbarui pada web server, kami memanggil fungsi berikut yang membuat permintaan baru di /state URL setiap detik.Menangani Permintaan
Kemudian, kita perlu menangani apa yang terjadi ketika ESP32 atau ESP8266 menerima permintaan pada perangkat tersebut URLs.
Ketika permintaan diterima di root /URL, kami kirimkan halaman HTML sekaligus prosesornya.Baris berikut memeriksa apakah Anda menerima permintaan pada /update?state=1 atau /update?state=0 URL dan mengubah ledState sebagaimana mestinya.
Ketika permintaan diterima di /state URL, kami mengirimkan status keluaran saat ini:
lingkaran()
Dalam loop(), kita debounce tombol tekan dan menyalakan atau mematikan LED tergantung pada nilai ledState variabel.Demonstrasi
Unggah kode ke papan ESP32 Anda. Unggah langkah referensi kode.
Kemudian, buka Serial Monitor pada baud rate 115200. Tekan tombol EN/RST pada board untuk mendapatkan alamat IP.Buka browser di jaringan lokal Anda, dan ketik alamat IP ESP. Anda seharusnya memiliki akses ke web server seperti yang ditunjukkan di bawah ini.
Catatan: Peramban dan ESP32 Anda harus terhubung ke LAN yang sama.Anda dapat mengaktifkan tombol di web server untuk menyalakan LED.
Anda juga dapat mengontrol LED yang sama dengan tombol tekan fisik. Statusnya akan selalu diperbarui secara otomatis di web server.
Proyek 9 ESP32 DHT11 Web Pelayan
Dalam proyek ini, Anda akan mempelajari cara membangun ESP32 asinkron web server dengan DHT11 yang menampilkan suhu dan kelembapan menggunakan Arduino IDE.
Prasyarat
Itu web server yang akan kami bangun memperbarui pembacaan secara otomatis tanpa perlu menyegarkan web halaman.
Dengan proyek ini Anda akan belajar:
- Cara membaca suhu dan kelembapan dari sensor DHT;
- Membangun asinkron web server menggunakan Sinkronisasi ESPAWebPerpustakaan server;
- Perbarui pembacaan sensor secara otomatis tanpa perlu menyegarkan web halaman.
Asinkron Web Pelayan
Untuk membangun web server yang akan kita gunakan Sinkronisasi ESPAWebPerpustakaan server yang menyediakan cara mudah untuk membangun asinkron web server. Membangun server asinkron web server memiliki beberapa keunggulantagseperti yang disebutkan di halaman GitHub perpustakaan, seperti:
- “Menangani lebih dari satu koneksi pada saat yang bersamaan”;
- “Saat Anda mengirim respons, Anda segera siap menangani koneksi lain sementara server mengurus pengiriman respons di latar belakang”;
- “Mesin pemrosesan templat sederhana untuk menangani templat”;
Bagian yang Diperlukan
Untuk menyelesaikan tutorial ini Anda memerlukan bagian-bagian berikut:
- Papan pengembangan ESP32
- Modul DHT11
- Papan tempat memotong roti
- Kabel jumper
SkemaMemasang Perpustakaan
Anda perlu menginstal beberapa pustaka untuk proyek ini:
- Itu DHT dan Sensor Terpadu Adafruit Pustaka driver untuk membaca dari sensor DHT.
- Sinkronisasi ESPAWebPelayan Dan TCP Asinkron perpustakaan untuk membangun asinkron web server.
Ikuti petunjuk berikut untuk menginstal pustaka tersebut:
Memasang Perpustakaan Sensor DHT
Untuk membaca dari sensor DHT menggunakan Arduino IDE, Anda perlu menginstal Perpustakaan sensor DHTIkuti langkah-langkah berikut untuk menginstal pustaka.
- Klik di sini untuk mengunduh pustaka DHT Sensor. Anda harus memiliki folder .zip di folder Unduhan Anda
- Ekstrak folder .zip dan Anda akan mendapatkan folder DHT-sensor-library-master
- Ubah nama folder Anda dari DHT-sensor-library-master menjadi DHT_sensor
- Pindahkan folder DHT_sensor ke folder pustaka instalasi Arduino IDE Anda
- Terakhir, buka kembali Arduino IDE Anda
Menginstal Driver Sensor Terpadu Adafruit
Anda juga perlu menginstal Pustaka Pengandar Sensor Terpadu Adafruit untuk bekerja dengan sensor DHT. Ikuti langkah-langkah berikut untuk menginstal pustaka.
- Klik di sini untuk mengunduh pustaka Adafruit Unified Sensor. Anda harus memiliki folder .zip di folder Unduhan Anda
- Ekstrak folder .zip dan Anda akan mendapatkan folder Adafruit_sensor-master
- Ubah nama folder Anda dari Adafruit_sensor-master menjadi Adafruit_sensor
- Pindahkan folder Adafruit_sensor ke folder pustaka instalasi Arduino IDE Anda
- Terakhir, buka kembali Arduino IDE Anda
Menginstal ESPAsyncWebPerpustakaan server
Ikuti langkah-langkah berikut untuk menginstal Sinkronisasi ESPAWebPelayan perpustakaan:
- Klik di sini untuk mengunduh ESPAsyncWebPerpustakaan server. Anda harus memiliki
folder .zip di folder Unduhan Anda - Ekstrak folder .zip dan Anda harus
dapatkan ESPAsyncWebFolder master server - Ganti nama folder Anda dari ESPAsyncWebServer master ke ESPAsyncWebPelayan
- Pindahkan ESPAsyncWebFolder server ke folder pustaka instalasi Arduino IDE Anda
Menginstal Pustaka TCP Async untuk ESP32
Itu Sinkronisasi ESPAWebPelayan perpustakaan membutuhkan TCP Asinkron pustaka agar berfungsi. Ikuti langkah-langkah berikut untuk memasang pustaka tersebut:
- Klik di sini untuk mengunduh pustaka AsyncTCP. Anda harus memiliki folder .zip di folder Unduhan Anda
- Ekstrak folder .zip dan Anda akan mendapatkan folder AsyncTCP-master
- Ubah nama folder Anda dari AsyncTCP-master menjadi AsyncTCP
- Pindahkan folder AsyncTCP ke folder pustaka instalasi Arduino IDE Anda
- Terakhir, buka kembali Arduino IDE Anda
Kode
Kita akan memprogram ESP32 menggunakan Arduino IDE, jadi pastikan Anda telah menginstal add-on ESP32 sebelum melanjutkan:(Jika Anda telah melakukan langkah ini, Anda dapat melompat ke langkah berikutnya.)
Memasang Add-on ESP32 di Arduino IDE
Setelah menginstal perpustakaan yang diperlukan, Buka kodenya
Proyek_9_ESP32_DHT11_Web_Server.ino di arduino IDE.
Sebelum mengunggah kode, jangan lupa memasukkan kredensial jaringan Anda sehingga ESP dapat terhubung ke jaringan lokal Anda.Cara Kerja Kode
Dalam paragraf berikut kami akan menjelaskan cara kerja kode tersebut. Teruslah membaca jika Anda ingin mempelajari lebih lanjut atau langsung ke bagian Demonstrasi untuk melihat hasil akhirnya.
Mengimpor perpustakaan
Pertama, impor pustaka yang diperlukan. WiFi, ESPAsyncWebServer dan ESPAsyncTCP diperlukan untuk membangun web server. Pustaka Adafruit_Sensor dan DHT diperlukan untuk membaca dari sensor DHT11 atau DHT22.Definisi variabel
Tentukan GPIO yang terhubung dengan pin data DHT. Dalam kasus ini, terhubung ke GPIO 4.Kemudian, pilih jenis sensor DHT yang Anda gunakan. Dalam contoh kamiample, kami menggunakan DHT22. Jika Anda menggunakan tipe lain, Anda hanya perlu menghapus komentar pada sensor Anda dan mengomentari semua yang lain.
Buat objek DHT dengan tipe dan pin yang telah kita definisikan sebelumnya.Buat AsyncWebObjek server pada port 80.
Membaca Fungsi Suhu dan Kelembaban
Kami telah membuat dua fungsi: satu untuk membaca suhu. Kami telah membuat dua fungsi: satu untuk membaca suhu (readDHTTemperature()) dan yang lainnya untuk membaca kelembapan (readDHTHumidity()).Mendapatkan pembacaan sensor semudah menggunakan metode readTemperature() dan readHumidity() pada objek dht.
Kami juga memiliki kondisi yang mengembalikan dua tanda hubung (–) jika sensor gagal mendapatkan pembacaan.
Hasil pembacaan dikembalikan sebagai tipe string. Untuk mengubah float menjadi string, gunakan fungsi String()
Secara default, kita membaca suhu dalam derajat Celsius. Untuk mendapatkan suhu dalam derajat Fahrenheit, komentari suhu dalam Celsius dan hapus komentar pada suhu dalam Fahrenheit, sehingga Anda memperoleh hasil sebagai berikut:
Unggah Kode
Sekarang, unggah kode ke ESP32 Anda. Pastikan Anda telah memilih board dan port COM yang tepat. Langkah referensi unggah kode.
Setelah mengunggah, buka Serial Monitor pada baud rate 115200. Tekan tombol reset ESP32. Alamat IP ESP32 harus dicetak dalam serial memantau.Demonstrasi
Buka browser dan ketik alamat IP ESP32. web server harus menampilkan pembacaan sensor terkini.
Catatan: Peramban dan ESP32 Anda harus terhubung ke LAN yang sama.
Perhatikan bahwa pembacaan suhu dan kelembaban diperbarui secara otomatis tanpa perlu menyegarkan web halaman.
Proyek_10_ESP32_Layar_OLED
Proyek ini menunjukkan cara menggunakan layar OLED SSD0.96 1306 inci dengan ESP32 menggunakan Arduino IDE.
Memperkenalkan Layar OLED 0.96 inci
Itu layar OLED yang akan kita gunakan dalam tutorial ini adalah model SSD1306: layar monokromatik berukuran 0.96 inci dengan piksel 128×64 seperti yang ditunjukkan pada gambar berikut.Layar OLED tidak memerlukan lampu latar, yang menghasilkan kontras yang sangat bagus di lingkungan yang gelap. Selain itu, pikselnya hanya mengonsumsi energi saat menyala, sehingga layar OLED mengonsumsi lebih sedikit daya jika dibandingkan dengan layar lainnya.
Karena layar OLED menggunakan protokol komunikasi I2C, pengkabelannya sangat mudah. Anda dapat menggunakan tabel berikut sebagai referensi.
Pin OLED | ESP32 |
Anggur | 3.3V |
GND | GND |
SCL | GPIO 22 |
Gereja Masehi Advent Hari Ketujuh | GPIO 21 |
SkemaMenginstal Pustaka SSD1306 OLED – ESP32
Ada beberapa pustaka yang tersedia untuk mengendalikan layar OLED dengan ESP32.
Dalam tutorial ini kita akan menggunakan dua pustaka Adafruit: Pustaka Adafruit_SSD1306 Dan Perpustakaan Adafruit_GFX.
Ikuti langkah-langkah berikut untuk menginstal pustaka tersebut.
- Buka Arduino IDE Anda dan masuk ke Sketch > Include Library > Manage Libraries. Library Manager akan terbuka.
- Ketik “SSD1306” di kotak pencarian dan instal pustaka SSD1306 dari Adafruit.
- Setelah menginstal pustaka SSD1306 dari Adafruit, ketik “GFX” di kotak pencarian dan instal pustaka tersebut.
- Setelah memasang pustaka, mulai ulang Arduino IDE Anda.
Kode
Setelah menginstal pustaka yang diperlukan, Buka Project_10_ESP32_OLED_Display.ino di arduino IDE. kode
Kita akan memprogram ESP32 menggunakan Arduino IDE, jadi pastikan Anda telah menginstal add-on ESP32 sebelum melanjutkan: (Jika Anda telah melakukan langkah ini, Anda dapat melompat ke langkah berikutnya.)
Memasang Add-on ESP32 di Arduino IDECara Kerja Kode
Mengimpor perpustakaan
Pertama, Anda perlu mengimpor pustaka yang diperlukan. Pustaka Wire untuk menggunakan I2C dan pustaka Adafruit untuk menulis ke layar: Adafruit_GFX dan Adafruit_SSD1306.Inisialisasi tampilan OLED
Kemudian, Anda menentukan lebar dan tinggi OLED Anda. Dalam contoh iniample, kami menggunakan layar OLED 128×64. Jika Anda menggunakan ukuran lain, Anda dapat mengubahnya di variabel SCREEN_WIDTH dan SCREEN_HEIGHT.Kemudian, inisialisasi objek tampilan dengan lebar dan tinggi yang ditentukan sebelumnya dengan protokol komunikasi I2C (&Wire).
Parameter (-1) berarti layar OLED Anda tidak memiliki pin RESET. Jika layar OLED Anda memiliki pin RESET, maka layar tersebut harus terhubung ke GPIO. Dalam hal ini, Anda harus memasukkan nomor GPIO sebagai parameter.
Dalam setup(), inisialisasi Serial Monitor pada baud rute 115200 untuk tujuan debugging.Inisialisasi tampilan OLED dengan metode begin() sebagai berikut:
Cuplikan ini juga mencetak pesan pada Serial Monitor, apabila kita tidak dapat terhubung ke layar.
Jika Anda menggunakan layar OLED yang berbeda, Anda mungkin perlu mengubah alamat OLED. Dalam kasus kami, alamatnya adalah 0x3C.
Setelah menginisialisasi tampilan, tambahkan penundaan dua detik, sehingga OLED memiliki cukup waktu untuk melakukan inisialisasi sebelum menulis teks:
Tampilan yang jelas, atur ukuran font, warna dan tulis teks
Setelah menginisialisasi tampilan, bersihkan buffer tampilan dengan metode clearDisplay():
Sebelum menulis teks, Anda perlu mengatur ukuran teks, warna, dan di mana teks akan ditampilkan di OLED.
Atur ukuran font menggunakan metode setTextSize():Atur warna font dengan metode setTextColor():
WHITE mengatur font putih dan latar belakang hitam.
Tentukan posisi awal teks menggunakan metode setCursor(x,y). Dalam kasus ini, kita akan mengatur teks agar dimulai pada koordinat (0,0) – di sudut kiri atas.Terakhir, Anda dapat mengirim teks ke tampilan menggunakan metode println(), sebagai berikut
Kemudian, Anda perlu memanggil metode display() untuk benar-benar menampilkan teks di layar.
Pustaka Adafruit OLED menyediakan metode yang berguna untuk menggulir teks dengan mudah.
- startscrollright(0x00, 0x0F): menggulir teks dari kiri ke kanan
- startscrollleft(0x00, 0x0F): menggulir teks dari kanan ke kiri
- startscrolldiagright(0x00, 0x07): menggulir teks dari sudut kiri bawah ke sudut kanan atas startscrolldiagleft(0x00, 0x07): menggulir teks dari sudut kanan bawah ke sudut kiri atas
Unggah Kode
Sekarang, unggah kode ke ESP32 Anda. Unggah langkah referensi kode.
Setelah mengunggah kode, OLED akan menampilkan teks bergulir.
Dokumen / Sumber Daya
![]() |
Kit Pemula Dasar LAFVIN ESP32 [Bahasa Indonesia:] Panduan Instruksi Kit Pemula Dasar ESP32, ESP32, Kit Pemula Dasar, Kit Pemula |