Halo gaes, aku Vebby balik lagi nih. Dari post sebelumnya kita sudah belajar soal cara pakai ESP32 dan juga digital Input/Output dari ESP32. Nah, di post ini kita bakal bereksperimen yang menarik banget. Kita akan pakai sensor internal ESP32. Sebelum lanjut ke pembahasan kali ini, kalian dapat terlebih dahulu mengunjungi blog-ku sebelumnya dengan klik link ini yaa! https://vebbyebih.wixsite.com/projectesp32/post/2nd-project-input-output-esp32
Nah... Blog kali ini akan membahas project ke-3, yaitu aku akan memanfaatkan sensor yang terdapat secara built-in pada ESP32, yaitu sensor sentuh (touch sensor), sensor magnet (hall-effect sensor), dan sensor suhu (temperature sensor). Mau tau bagaimana caranya? let’s get started!
Komponen APA saja yang mesti kita persiapkan?
1. ESP32
2. Breadboard
3. Male to Male Jumper Cable
4. Micro-USB Cable
5. 5mm LED Light
6. Resistor
7. Laptop / PC yang telah terinstal Arduino IDE
8. Magnet bebas apa saja (untuk Project Hall Effect saja).
Touch sensor ESP32
Pertama-tama kita akan mencoba memanfaatkan sensor sentuh pada ESP32 terlebih dahulu.
1. Connect ESP32 ke PC / Laptop
2. Setup board seperti gambar di bawah ini
3. Buka Arduino IDE untuk menulis dan mengunggah program ke ESP32
4. Konfigurasikan Arduino IDE dengan memilih menu Board on board “DOIT ESP32 DEVKIT V1” (Tools > Board > ESP32 Arduino > DOIT ESP32 DEVKIT V1) dan Pilih menu Port dan pilih port yang sesuai
5. Letakkan Kode di Arduino IDE (Source Code : https://randomnerdtutorials.com/esp32-touch-pins-arduino-ide/)
// Inisiasi nomor pin const int touchPin = 15; const int ledPin = 5; // Nilai treshold/ toleransi sentuh const int threshold = 35; // Variabel untuk menyimpan nilai yang dibaca sensor int touchValue; void setup(){ delay (1000); // Menginisiasi ledPin sebagai output pinMode (ledPin, OUTPUT); } void loop(){ // Membaca nilai sensor touchValue = touchRead (touchPin); if(touchValue < threshold) { digitalWrite(ledPin, LOW); } // Apabila touchValue < treshold (sedang tidak disentuh), else{ digitalWrite(ledPin, HIGH); } delay (500); |
Dan tangkapan pada layar saya seperti ini..
6. click tombol “Verify” (Checklist)
7. click tombol “Upload” (Right Arrow) sampai “Done Uploading”
8. Wait for loading and the result is!
9. Troubleshooting
Saat pertama kali mencoba lampu LED saya sempat tidak menyala padahal dilihat dari serial monitor program sudah benar. Ternyata kesalahan berada di setup boardnya. Awalnya saya mencolokkan jumper wire merah yang terhubung ke ground di titik yang jauh dari colokkan jumper wire bitu. Setelah saya pindah bersebelahan eksperimen menjadi berhasil. (Note: jika ingin menyambung sirkuit melalui power bus disarankan colok berdekatan, itu saran dari saya)
Hall Effect sensor ESP32
Tidak berbeda dengan percobaan touch sensor yang saya lakukan, pada percobaan hall effect ini pun LED saya berhasil menyala. Komponen yang dibutuhkan serta skema yang perlu dirangkai pada percobaan ini hampir mirip dengan percobaan sebelumnya. Hanya saja ada tambahan komponen yaitu magnet karena percobaan hall effect ini akan mendeteksi medan magnet. Selain itu kabel jumper yang dibutuhkan berkurang satu karena kita tidak akan memberi sentuhan melalui kabel jumper melainkan menggunakan magnet yang akan didekatkan ke bagian besi pada komponen ESP32. Lalu langkah apa saya yang mesti kita lakukan, mari kita lihat tutorialnya kembali.
1. Connect ESP32 ke PC / Laptop
2. Buka Arduino IDE untuk menulis dan mengunggah program ke ESP32
3. Konfigurasikan Arduino IDE dengan memilih menu Board on board “DOIT ESP32 DEVKIT V1” (Tools > Board > ESP32 Arduino > DOIT ESP32 DEVKIT V1) dan Pilih menu Port dan pilih port yang sesuai
4. Letakkan Kode di Arduino IDE (Source Code : https://randomnerdtutorials.com/esp32-hall-effect-sensor/)
// Simple sketch to access the internal hall effect detector on the esp32. // values can be quite low. // Brian Degger / @sctv int val = 0; void setup() { Serial.begin(9600); } // put your main code here, to run repeatedly void loop() { // read hall effect sensor value val = hallRead(); // print the results to the serial monitor Serial.println(val); delay(1000); } |
Dan tangkapan pada layar saya seperti ini..
5. Click tombol “Verify” (Checklist)
6. Click tombol “Upload” (Right Arrow) sampai “Done Uploading”
7. Buka serial monitor (icon mirip gambar mata di sudut kanan atas), set baud rate sesuai dengan program (9600)
8. Akan muncul angka secara terus menerus dengan perbedaan nilai yang tidak signifikan
9. Kemudian tempelkan magnet ke ESP32 (bagian kotak besi di tengah ESP32 Development Board) untuk mendekatkan magnet ke dimana Hall Sensor berada
10. Perhatikan perubahan nilai pada serial monitor
Saya juga mencoba mendekatkan dengan kutub magnet negatif lho gaes cuma lupa di dokumentasiin, hasilnya nilai pada serial monitor juga ikutan negatif.
11. Sedikit Mengenai Kode Program
Yang menarik utk dibahas dari kode program adalah fungsi hallRead(). Peran hallRead() membaca nilai output dari sensor hall dan mengembalikan hasilnya dalam variabel yang dideklarasikan yaitu ‘val’ pada kode program diatas.
Temperature sensor ESP32
1. Connect ESP32 ke PC / Laptop
2. Buka Arduino IDE untuk menulis dan mengunggah program ke ESP32
3. Konfigurasikan Arduino IDE dengan memilih menu Board on board “DOIT ESP32 DEVKIT V1” (Tools > Board > ESP32 Arduino > DOIT ESP32 DEVKIT V1) dan Pilih menu Port dan pilih port yang sesuai
4. Letakkan Kode di Arduino IDE (Source Code : https://circuits4you.com)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | /* * ESP32 Internal Temperature Sensor Example */ #ifdef __cplusplus extern "C" { uint8_t temprature_sens_read(); #ifdef __cplusplus } uint8_t temprature_sens_read(); //==================================================== // Setup //==================================================== void setup() { Serial.begin(115200); } //==================================================== // Loop //==================================================== void loop() { Serial.print("Temperature: ");
// Convert raw temperature in F to Celsius degrees Serial.print((temprature_sens_read() - 32) / 1.8); Serial.println(" C"); delay(1000); } |
Dan tangkapan pada layar saya seperti ini..
5. Click tombol “Verify” (Checklist)
6. Click tombol “Upload” (Right Arrow) sampai “Done Uploading”
7. Buka serial monitor di baud rate 115200
8. Serial monitor akan menampilkan suhu inti ESP32 dalam satuan derajat celcius
9. Sedikit Mengenai Kode Program
uint8_t adalah jenis bilangan bulat unsigned dengan panjang 8 bit
temperature_sens_read() adalah fungsi untuk membaca nilai yang diterima dari sensor temperature.
Pada line kode 31 kita lihat bahwa nilai yang dibaca dari sensor temperatur dikurangi dengan 32 kemudian dibagi dengan 1.8. Hal ini dilakukan untuk mengubah suhu dari Farenheit ke Celcius. Nilai yang dibaca dari sensor temperatur ESP32 awalnya dalam Farenheit.
Comments