Tutorial ESP32 : Internal Sensor
Hello guys! Welcome to project #3
Pada proyek kali ini, kita bakal belajar tentang internal sensor yang ada di ESP32. Hah emang ESP32 sekecil itu punya sensor? Ternyata, di ESP32 tu ada sensornya lhoo, lebih tepatnya ada 3, touch sensor, hall effect sensor, dan temperature sensor. Touch sensor dapat mendeteksi sentuhan, hall effect sensor dapat mendeteksi medan magnet, sedangkan temperature sensor dapat mendeteksi perubahan suhu internal. Keren banget, kan? Untuk proyek kali ini, kita akan mencoba touch sensor dan hall effect sensor. Yuk langsung kita coba!
Komponen yang Dibutuhkan
Buat proyek kali ini, kita butuh beberapa komponen yaitu :
- ESP32 Development Board
- Kabel micro-USB
- Laptop
- Push button
- Lampu LED 5mm
- Kabel jumper male-to-male
- Resistor 330 ohm
- Breadboard
- Magnet
Touch Sensor
Langkah pertama yang perlu kita lakukan adalah melihat nilai yang dideteksi oleh sensor sentuh. Caranya cukup salin kode pada Gambar 1 ke Arduino IDE dan upload. Buka bagian Tools → Serial Monitor dan ubah rate baud menjadi 115200. Nah, Gambar 2 menunjukkan nilai-nilai yang dideteksi ESP32 ku. Kalau kalian perhatiin, nilainya dimulai dari sekitar 80an dan berubah drastis menjadi sekitar 11an. Penurunan nilai itu terjadi waktu aku pegang ujung kabel jumper yang terhubung ke sensor sentuh ESP32. Tapi kalo misal waktu kalian coba ternyata nilainya berbeda, tenang aja, karena nilainya tergantung dari muatan listrik dan kondisi (misal di ruangan suhu dingin atau panas) masing-masing orang. Bahkan waktu aku coba, nilainya sempat di bawah 5. Nilai ini nantinya dijadikan threshold yang fungsinya sebagai batas untuk mengetahui ada sentuhan atau tidak. Kalo dari contoh di Gambar 2, kan nilai waktu sensornya aku sentuh sekitar 10, misal aku ambil nilai 20 sebagai threshold, jadi kalo nilai yang dideteksi di bawah 20 berarti sensor disentuh dan sebaliknya. Oh ya, kalian juga bisa lihat perubahan nilai yang dideteksi sensor sentuh dengan Serial Plotter yang terdapat pada Tools. Hasil yang ditampilkan berupa grafik jadi lebih jelas kenaikan dan penurunan nilainya.
Setelah kita tau bahwa sensor sentuh kita bekerja dengan baik, ayo kita mulai percobaan utamanya. Pada percobaan ini, aku mau supaya lampu LED merah dan biru berkelap-kelip secara bergantian saat ujung kabel jumper disentuh dan mati saat tidak disentuh. Karena kita menggunakan LED sebagai output dari percobaan ini, kita perlu menghubungkan LED merah ke GPIO 19 serta LED biru ke GPIO 5 melalui resistor 330 Ohm yang disambungkan dengan anoda(+) LED dan kabel jumper male-to-male . Sedangkan katoda (-) LED disambungkan ke ground melalui power bus negatif pada breadboard. Untuk touch sensor, kita dapat menggunakan GPIO 4 yang merupakan Touch Sensor 0 pada ESP32 yang dihubungkan dengan kabel jumper (kabel hijau) .
Setelah rangkaiannya sudah jadi, kita sambungin ESP32 ke laptop pakai kabel micro-USB. Setelah itu, kita buka Arduino IDE dan masukkan program seperti di bawah ini. Di bagian awal, aku kasih nama buat masing-masing komponen biar lebih mudah saat buat kodenya, sesuaikan dengan GPIO pada ESP32 kalian. Pastiin buat nyesuaiin nilai threshold juga sesuai dengan nilai di serial monitor kalian masing-masing yaa. Kondisi pada bagian loop ada 2 kondisi, yaitu touchValue<threshold yang berarti sensor disentuh dan touchValue>=threshold yang berarti sensor tidak disentuh.
Hall Effect Sensor
Buat percobaan ini kita butuh satu komponen tambahan yaitu magnet. Mirip kayak touch sensor yang perlu cari nilai thresholdnya, kita perlu cari tau kutub positif dan negatif dari magnet yang kita gunakan. Caranya, salin kode di bawah dan upload, kemudian buka Tools → Serial Monitor. Untuk percobaan ini, kita ubah rate baud ke 9600. Kalo udah, coba taruh magnet di atas ESP32, tepatnya di bagian kotak logamnya. Kalo angka di serial monitor bernilai negatif seperti pada Gambar 6 sebelah kiri, berarti bagian magnet yang ditempelkan adalah kutub negatif dan sebaliknya. Nilai yang aku dapat waktu nempelin kutub positif tidak menunjukkan perbedaan yang drastis (Gambar 6 sebelah kanan), yaitu sekitar 30–40an, itu karena aku pakai magnet tempelan kulkas, jadi magnetnya tidak bersentuhan secara langsung dengan ESP32 nya.


Sebenarnya aku cari kutub positif dan negatif dari magnet yang aku pakai karena aku pingin buat rangkaian yang bisa bikin 2 LED kelap-kelip bergantian ketika kutub negatif didekatkan, nyala bersamaan saat kutub positif didekatkan, dan mati bersamaan saat tidak ada magnet yang didekatkan. Untuk rangkaiannya sangat mirip dengan rangkaian untuk touch sensor, hanya perlu melepas kabel jumper yang digunakan untuk menghubungkan sensor sentuh.
Seperti biasa, setelah rangkaiannya jadi, sambungin ESP32 ke laptop pakai kabel micro-USB. Setelah itu, kita buka Arduino IDE dan masukkan program seperti di bawah ini. Nah, pada bagian loop, aku bagi jadi tiga kondisi. Kondisi pertama adalah sensorValue<0 yang berarti kutub negatif yang didekatkan ke ESP32 dan menyebabkan LED berkelap-kelip secara bergantian. Kondisi kedua adalah sensorValue>30 yang akan menyebabkan kedua LED nyala bersamaan. Aku pilih angka 30 karena waktu dicek di serial monitor, nilai saat kutub positif magnet yang aku pakai saat didekatkan berkisar 30–40 dan saat tidak ada magnet yang didekatkan nilainya sekitar 20an. Terakhir, pada bagian else akan menyebabkan kedua LED mati.
Nah, buat lebih jelasny, bisa langsung aja cek video di bawah ini yaa…
Analisis
Pada proyek kali ini, aku belajar tentang sensor internal ESP32, lebih tepatnya touch sensor dan hall effect sensor. Pada kali ini, output dari percobaan adalah LED, sedangkan inputnya berupa sentuhan untuk percobaan touch sensor dan medan magnet untuk percobaan hall effect sensor. Menurutku, hal yang menarik adalah pada saat mencoba melihat nilai yang dideteksi touch sensor karena beberapa kali aku coba nilai yang dideteksi berbeda-beda dan kadang bedanya drastis. Selama percobaan ini, untungnya aku ga ada kendala yang terlalu mengganggu. Waktu aku coba upload program, sempet beberapa kali gagal, tapi ternyata salah di pemasangan komponen atau kode program hehe… Jadi, pastikan komponen-komponen sudah terpasang dengan tepat dan juga kode programnya sudah sesuai. Nah, sekian dulu buat proyek kali ini. Tambah seru kan proyek-proyeknya? :) Stay tune buat proyek-proyek selanjutnyaa yaa….