Unit 4 – ESP32 Membaca Input Analog
Pendahuluan
Dalam bagian ini, Anda akan belajar cara membaca input analog dengan ESP32. Ini berguna untuk membaca nilai dari resistor variabel seperti potensiometer atau sensor analog lainnya.
Input Analog
Membaca nilai analog dengan ESP32 berarti Anda dapat mengukur level tegangan yang bervariasi antara 0V dan 3.3V. Tegangan yang diukur kemudian diberikan nilai antara 0 dan 4095, di mana 0V sesuai dengan 0, dan 3.3V sesuai dengan 4095. Setiap tegangan antara 0V dan 3.3V akan diberikan nilai yang sesuai di antara kedua nilai tersebut.
ADC Non-linear
Idealnya, Anda akan mengharapkan perilaku linear saat menggunakan pin ADC ESP32. Namun, hal itu tidak terjadi. Anda akan mendapatkan perilaku yang ditunjukkan dalam grafik berikut. Ini menunjukkan bahwa ESP32 tidak dapat membedakan 3.3V dari 3.2V dengan baik, keduanya akan menghasilkan nilai 4095. Hal yang sama berlaku untuk tegangan yang sangat kecil; misalnya, 0V dan 0.1V akan memberikan nilai yang sama yaitu 0. Penting untuk mempertimbangkan hal ini saat menggunakan pin ADC ESP32.
Fungsi analogRead()
Membaca input analog dengan ESP32 menggunakan Arduino IDE adalah semudah menggunakan fungsi `analogRead()`, yang menerima argumen GPIO yang ingin Anda baca, seperti berikut:
ESP32 mendukung pengukuran pada 18 channel yang berbeda, tetapi hanya 15 yang tersedia pada board DEVKIT V1 DOIT (versi dengan 30 GPIO). Anda dapat melihat pinout ESP32 dan menemukan pin ADC yang ditandai dengan garis merah.
Catatan: Pin ADC2 tidak dapat digunakan saat Wi-Fi digunakan. Jadi, jika Anda menggunakan Wi-Fi dan mengalami kesulitan mendapatkan nilai dari pin ADC2, Anda dapat mempertimbangkan menggunakan pin ADC1 sebagai gantinya.
Contoh Proyek
Bagian ini memberikan contoh sederhana untuk membaca nilai analog dari sebuah potensiometer untuk memperlihatkan cara kerjanya.
Skematik
Berikut adalah daftar komponen yang Anda perlukan untuk merakit rangkaian:
- ESP32 S3 Dev Module Board
- Potensiometer
- Breadboard
- Kabel jumper
Instruksi Perakitan:
Hubungkan potensiometer ke ESP32 Anda menggunakan skema berikut, dengan pin tengah potensiometer terhubung ke GPIO 34.
Kode
Salin kode berikut ke Arduino IDE Anda:
Kode ini secara sederhana membaca nilai dari potensiometer dan mencetak nilai-nilai tersebut pada Serial Monitor.
Dalam kode ini, Anda mulai dengan mendefinisikan GPIO tempat potensiometer terhubung. Pada contoh ini, GPIO 7.
Pada fungsi `setup()`, kita menginisialisasi komunikasi serial pada baud rate 115200.
Pada fungsi `loop()`, Anda menggunakan fungsi `analogRead()` untuk membaca input analog dari `potPin`.
Akhirnya, Anda mencetak nilai yang dibaca dari potensiometer di Serial Monitor.
Pengujian Contoh
Unggah kode yang telah disediakan ke ESP32 Anda.
Buka Serial Monitor pada baud rate 115200. Putar potensiometer dan lihat nilai-nilai yang berubah.
Nilai maksimum yang bisa Anda dapatkan adalah 4095, dan nilai minimum adalah 0.
Ringkasan
- Board ESP32 DEVKIT V1 DOIT (versi dengan 30 pin) memiliki 15 pin ADC yang bisa Anda gunakan untuk membaca input analog.
- Resolusi 12-bit pada pin ini memungkinkan Anda mendapatkan nilai dari 0 hingga 4095.
- Untuk membaca nilai pada Arduino IDE, gunakan fungsi `analogRead()`.
- Pin ADC ESP32 tidak memiliki perilaku linear. Anda mungkin tidak bisa membedakan antara 0 dan 0.1V, atau antara 3.2 dan 3.3V. Anda perlu mempertimbangkan hal ini saat menggunakan pin ADC.
Jika ada pertanyaan lebih lanjut atau penjelasan tambahan yang diperlukan, jangan ragu untuk bertanya pada grup telegram https://t.me/kodingindonesia.
Referensi
- Random Nerd Tutorials.