ESP-32 Tutorial:Internal Sensor
Bagimana cara memanfaatkan sensor internal dari ESP-32 untuk sentuhan serta medan magnet? Simak pembahasan berikut ini.
Halo teman-teman semua! Selamat datang kembali di serial blog “ESP-32 Tutorial” saya. Pada kesempatan kali ini, saya akan membahas terkait penggunaan internal sensor yang dimiliki oleh ESP-32 dan secara lebih detailnya, saya akan menggunakan capacitive touch sensor(akan lebih sering disebut dengan sensor sentuhan) dan Built-in Hall Effect Sensor(akan lebih sering disebut dengan sensor medan magnet).
Secara singkat, sensor sentuhan adalah sensor yang membaca sentuhan pada sumber input, membacanya, lalu memprosesnya untuk menjadi sebuah keluar(contohnya pada modul kali ini, menyalakan lampu).
Sementara untuk sensor medan magnet, sensor akan membaca perbedaan medan magnet yang ada pada ESP-32, membaca serta memprosesnya, lalu menjadikannya sebagai sebuah output(sama seperti sensor sentuhan, pada modul kali ini output yang akan saya gunakan adalah menyalakan lampu.)
Tanpa berlama-lama lagi, mari kita bahas modul internal sensor ini secara mendalam namun tetap easy to read :D
Daftar Komponen dan Perangkat
Pada modul kali ini, saya akan menggunakan beberapa komponen berikut ini:
a. ESP-32 DOIT DEVKIT V1 Board
b. 5mm LED
c. Resistor 330 Ohm
d. Breadboard
e. Jumper wires
Walaupun sudah dibahas secara terus menerus, berikut ini akan saya jelaskan sedikit tentang penggunaan dan fungsi dari masing-masing komponen
1. ESP-32 DOIT DEVKIT V1 Board: Komponen ini akan menjadi ‘otak’ utama kita. Segala input dan output akan diproses oleh jagoan satu ini
2. 5mm LED: adalah lampu LED. Fungsinya adalah menjadi sarana output program kita dan menunjukan apabila program kita berhasil atau tidak
3. Resistor 330 Ohm: Fungsinya adalah menjadi pembagi tegangan sehingga lampu LED tidak cepat panas dan mengakibatkan kerusakan lampu
4. Breadboard: Fungsinya adalah menjadi tempat utama semua komponen kita saling terhubung satu sama lain
5. Jumper wires: Fungsinya adalah menghubungkan antar komponen diatas sehingga semua komponen dapat saling tersambung dan menjalankan program yang diinginkan
Skema Perangkat
Pada skema perangkat ini, akan terdapat 4 buah skema. Secara mendetail, skema tersebut akan saya bagi menjadi
1. Skema dasar Capacitive Touch Sensor
2. Skema modifikasi Capacitive Touch Sensor
3. Skema dasar Built-in Hall Effect Sensor
4. Skema modifikasi Built-in Hall Effect Sensor
Tanpa berlama-lama lagi, berikut ini adalah skema dari masing-masing skenario
1.Skema Dasar Capacitive Touch Sensor
2.Skema Modifikasi Capacitive Touch Sensor
3.Skema Dasar Built-in Hall Effect Sensor
Karena Built-in Hall Effect Sensor tidak memerlukan komponen lainnya dan hanya menggunakan ESP-32 DOIT DEVKIT K1 Board, maka tidak terdapat skema untuk rangkaian berikut
4.Skema Modifikasi Built-in Hall Effect Sensor
List Program
Sesuai dengan skema diatas, maka masing-masing skema akan memiliki programnya sendiri. Oleh karena itu, berikut ini merupakan program atau barisan-barisan code yang dibuat untuk masing-masing skema
1.Program untuk Skema Dasar Capacitive Touch Sensor
2.Program untuk Skema Modifikasi Capacitive Touch Sensor
3.Program untuk Skema Dasar Built-in Hall Effect Sensor
4.Program untuk Skema Modifikasi Built-in Hall Effect Sensor
Meskipun terlihat rumit dan panjang, sebenarnya keempat program ini memilki banyak kesamaan, terutama pada sub-bagian yang sama(contoh: program dasar Built-in Hall Effect Sensor akan mirip dengan program modifikasi Built-in Hall Effect Sensor). Hanya saja perbedaan tersebut berada pada bagian output yang dihasilkan(dari cara lampu menyala dan jumlah lampu yang digunakan) serta sensor atau input yang digunakan.
Namun secara garis besar, program dibagi menjadi 3 bagian yaitu inisiasi,void setup dan void loop. Pada bagian inisiasi, akan disiapkan nilai konstan serta sebuah variabel bebas untuk pembacaan sensor nanti. Tujuan dari bagian ini adalah untuk persiapan serta penyamaan nama variabel untuk program void setup dan void loop.
Pada bagian void setup, program akan mempersiapkan ESP-32 agar bisa menjalankan void loop nantinya. Secara garis besar, program akan mempersiapkan lampu LED sebagai output sehingga lampu dapat memahami perintah berikutnya. Namun ada sebuah hal yang baru, yaitu Serial.begin yang berfungsi untuk menetapkan kecepatan pengiriman dan penerimaan data lewat por serial. Kecepatan ini ada dalam satuan bit per detik.
Pada bagian void loop, ESP-32 akan digunakan untuk membaca input yang kita berikan sesuai dengan sensor yang kita gunakan. Apabila kita menggunakan sensor sentuhan, maka kita perlu menyentuhkan jari kita pada sebuah jumper wire yang terhubung dengan sensor tersebut, sedangkan apabila kita menggunakan sensor medan magnet, maka kita perlu mendekatkan magnet pada ESP-32. Apabila input yang kita berikan melebihi suatu threshold, maka program akan masuk ke bagian “if” dan lampu akan menyala, sementara bila input yang kita berikan tidak melebihi threshold maka lampu akan tetap mati.
Demo Modul
Setelah komponen dirangkai sesuai dengan skema dan program sudah diupload kedalam ESP-32 DOIT DEVKIT K1 Board, maka diperlukan percobaan apabila rangkaian yang dibuat sudah berhasil dijalankan. Oleh karena itu, berikut ini merupakan live experience saya dalam menguji rangkaian tersebut.
1.Rangkaian Dasar Capacitive Touch Sensor
2.Rangkaian Modifikasi Capacitive Touch Sensor
3.Rangkaian Dasar Built-in Hall Effect Sensor
4.Rangkaian Modifikasi Built-in Hall Effect Sensor
Analisis
Pada modul kali ini, digunakan dua sensor utama yaitu sensor sentuhan dan sensor medan magnet. Kedua sensor tersebut merupakan sensor bawaan yang dimiliki oleh ESP-32, sehingga kita dapat langsung menggunakannya. Meskipun demikian, terdapat beberapa perbedaan dari kedua sensor yang perlu dilakukan penekan terlebih dahulu
1.Input: Untuk sensor sentuhan, kita perlu menghubungkan ESP-32 dengan jumper wire untuk membaca sentuhan kita, sementara untuk sensor medan magnget hanya memerlukan pendekatan medan magnet pada ESP-32
2. Apa yang dibaca: Untuk sensor sentuhan, hal yang sesungguhnya dibaca adalah tegangan listrik yang ada pada kulit manusia(karena hanya aktif bila kita menyentuhkan jari pada jumper wire, maka sensor memiliki kesan sensor sentuhan). Sementara untuk sensor medan magnet, sensor membaca perbedaan medan magnet yang terjadi pada ESP-32
3. Cara pemanggilan: Untuk sensor sentuhan, diperlukan fungsi “touchread()” sementara untuk sensor medan magnet diperlukan “hallread()”
Setelah memahami kembali ketiga perbedaan tersebut, mari kita bahas program secara lebih lanjut. Dengan mengasumsikan bahwa kalian sudah membaca dan memahami bagian inisiasi dan void setup, maka saya hanya akan membahas bagian void loop pada program.
Pada setiap bagian void loop, sebenarnya hanya terdapat 2 perbedaan, yaitu inisiasi sensor pembaca serta keadaan apabila pembacaan melebihi suatu threshold. Pada perbedaan pertama, seperti yang sudah dibahas pada perbedaan sensor, apabila kita menggunakan program yang memanfaatkan sensor sentuhan maka kita juga perlu memanfaatkan “touchread()”. Hal ini dapat dilihat kembali pada percobaan sensor sentuhan, dimana setiap programnya memiliki “touchValue=touchread(touchPin)”
Sementara untuk program yang memanfaatkan sensor medan magnet, maka kita perlu memanfaatkan “hallread()”. Hal ini dapat dilihat kembali pada percobaan sensor medan magnet, dimana setiap programnya memiliki “val=hallread()”.
Perbedaan kedua adalah pada bagian “if”. Jika dilihat kembali secara seksama, maka perbedaan output dari program dasar dan modifikasi hanya terlihat pada lampu LED. Jika pada keadaan dasar, sensor hanya digunakan untuk menyalakan satu buah lampu secara terus menerus apabila sensor mendapat respon positif, pada keadaan modifkasi lampu akan menyala secara berkelap-kelip dan bergantian tergantung dengan input yang kita berikan pada sensor(contoh: menyalakan 3 lampu LED secara bergantian.)
Kerangka program dari void loop sekarang sudah dipahami, tapi bagaimana cara kerja sesungguhnya dari program ini? Sebenarnya program ini memiliki alur yang cukup simple, yaitu baca-kondisi-ulangi.
Pada bagian baca, ESP-32 akan membaca input yang ada pada suatu sensor dan menyimpannya pada sebuah variable yang dapat berubah-ubah/tidak konstan. Pada sensor sentuhan, kita dapat melihatnya di “touchValue” sementara pada sensor medang magnet kita dapat melihatnya di “val”.
Setelah membaca nilai tersebut, maka program akan masuk pada bagian kondisi. Pada bagian kondisi, program akan meminta ESP-32 melakukan hal spesifik tergantung nilai dari variable pembacaan sensor tersebut. Apabila variable tersebut dapat melebihi threshold yang ada, maka program akan masuk ke bagian “if”, dimana pada setiap bagian “if” terdapat “digitalWrite(HIGH,ledPin)”yang fungsinya mengirimkan tegangan 3.3V ke lampu, oleh karena itu lampu LED menyala.
Sementara apabila threshold yang ditetapkan tidak dapat dipenuhi, maka program akan masuk ke bagian else, dimana setiap bagian else terdapat “digitalWrite(LOW,ledPin)” yang mengirimkan tegangan 0V ke lampu sehingga lampu tersebut tidak akan menyala.
Jika diperhatikan kembali dengan seksama, maka pada program sensor sentuhan dan sensor medan magnet memiliki threshold yang berbeda. Hal ini disebabkan oleh keadaan normal dari masing-masing sensor yang berbeda sehingga diciptakan suatu nilai yang mungkin dicapai oleh sensor tersebut.
Pada bagian sensor sentuhan, threshold yang diberikan adalah 20. Nilai tersebut diambil karena nilai normal dari pembacaan sensor sentuhan berada pada kisaran 10–12 dan dapat mencapai nilai 34 apabila terdapat pembacaan dengan nilai positif. Agar lampu dapat menyala dengan stabil, maka diambil nilai tengah antara kedua nilai tersebut dan dari situlah nilai 20 muncul.
Sementara pada bagian sensor medan magnet, threshold yang diberikan adalah 50. Nilai tersebut diambil karena nilai normal dari pembacaan sensor medan magnet berada pada kisaran 24–36 dan dapat mencapai nilai 80 apabila terdapat pembacaan yang positif. Agar lampu dapat menyala dengan stabil, maka diambil nilai 50 yang berada pada range nilai tersebut.
Setelah melewati bagian kondisi, maka program akan memasuki bagian ulangi. Karena program sudah selesai mengeksekusi perintah sesuai nilai variable input sensor, maka program tersebut akan diulangi kembali ke awal void loop sehingga sensor dapat melakukan pembacaan ulang. Proses ini akan dilakukan secara terus menerus dan oleh karena itulah program kita dapat melakukan pembacaan yang tidak berhenti dan menghasilkan output yang berbeda-beda.
Penutup
Modul kali ini merupakan modul yang “adventureous” bagi saya. Hal ini dikarenakan saya bisa mencoba berbagai hal baru demi mengimprovisasi hasil program yang sudah ada. Semoga semangat mengembangkan serta mengimprovisasi saya terus berkembang, sehingga dapat menghasilkan rangkaian serta program program unik lainnya.