Tutorial ESP32 : Sensor
Hello readers!! kali ini aku bakal jelasin tutorial merangkai ESP32 : Sensor. Apasih itu sensor? Sensor adalah perangkat yang digunakan untuk mendeteksi perubahan besaran fisik seperti tekanan, gaya, besaran listrik, cahaya, gerakan, kelembaban, suhu, kecepatan dan fenomena-fenomena lingkungan lainnya. Nah kalian ga perlu bingung dari mana bisa dapetin sensornya karena ESP32 sendiri sudah dilengkapi dengan sensor internal WOW! Jadi ESP32 sudah memiliki touch sensor (berinteraksi dengan sentuhan), hall effect sensor (berinteraksi dengan medan magnet) dan temperature sensor (berinteraksi dengan suhu). Tapi ingat, ga semua ESP32 punya temperature sensor. FYI temperature sensor ini untuk mencatat suhu internal ESP32 ya, bukan untuk mengukur suhu badan kalian :D Sekarang kita akan mencoba membuat rangkaian yang menggunakan touch sensor.
Lesgow merangkai!!
Kamu harus menyiapkan beberapa komponen, ga banyak kok. Apa saja ya?
- ESP32
- Breadboard
- Jumper cable male-to-male (2 buah)
- LED (warna apa saja)
- resistor 330ohm
- laptop
Susah ga buatnya?
Rangkaian kali ini simpel banget (bahkan lebih simpel dari tutorial sebelumnya hihi). Simak skema dibawah ini ya!
Pertama tama, pasang ESP32 di breaboard kalian. Jangan sampai ngambang ya ESP32 nya, nanti arusnya tidak bisa mengalir. Hubungkan pin GND (ground) pada ESP32 ke kutub negatif di breadboard kalian. Kemudian kalian hubungkan pin RX2 (GPIO 16) ke breadboard, terus pasang LED di breadboard, kutub positifnya (kaki panjang) nyambung ke jumper cable dari pin RX2 tadi.
Lalu seperti tutorial sebelumnya, lengkapi dengan memasang resistor 330ohm pada kutub negatif (kaki pendek) LED dan kutub negatif pada breadboard. Last, kita pasang jumper kabel di pin D4 (GPIO 4). Nah jumper cable ini biarin mengambang karena nanti cable ini jadi input device kita.
Kodenya gimana??
Kali ini kita juga akan mempelajari beberapa fungsi bawaan dari software Arduino IDE. Perhatikan kode dibawah ini ya!
// mengatur pin mana saja yang akan kita pakai
const int touchPin = 4; // touch sensor pada GPIO 4
const int ledPin = 16; // LED pada GPIO 16
const int threshold = 20; // threshold akan jadi patokan kita
int touchValue; // touchValue akan jadi nilai 'sentuhan' kita
const int ____ dan int ____merupakan deklarasi untuk variabel variabel yang akan kita gunakan. Nah disini kita punya 4 variabel yaitu,
touchPin sebagai input kita (touch sensor)
ledPin sebagai output kita (LED)
threshold sebagai nilai pembatas kita
touchValue sebagai nilai ‘sentuhan’ kita
void setup(){
Serial.begin(115200);
delay(1000); // memberikan jeda untuk proses
pinMode (ledPin, OUTPUT); // inisialisasi LED sebagai output
}
Pada void setup(), Serial.begin(115200); adalah semacam kode untuk menjalankan program kita.
Lalu kita menambahkan pinMode(<nama pin>,<INPUT/OUTPUT>) untuk mendaftarkan apa saja alat input dan alat output kita.
void loop(){
touchValue = touchRead(touchPin); // membaca nilai 'sentuhan' kita
Serial.print(touchValue); // mencatat nilai 'sentuhan' kitaif(touchValue < threshold){ // membandingkan nilai 'sentuhan' kita dengan patokan tadi
digitalWrite(ledPin, HIGH); // lampu menyala bila nilai 'sentuhan' kita dibawah nilai threshold
Serial.println(" - LED on"); // mencetak - LED on pada serial monitor
}else{
digitalWrite(ledPin, LOW); // lampu mati bila nilai 'sentuhan' kita melampaui nilai threshold
Serial.println(" - LED off"); // mencetak - LED off pada serial monitor
}
delay(500);
}
Pada void loop(), kita akan menuliskan program utamanya. Dimulai dari membaca nilai ‘sentuhan’ kita menggunakan function touchRead, lalu nilai ‘sentuhan’ kita akan dicatat. Kemudian kita akan membuat if conditional yang berisi apa yang akan dilakukan jika sistem mendapatkan rangsangan sentuhan. Nah kali ini kita akan membuat lampu menyala ketika sensor mendapat rangsangan dengan membandingan nilai ‘sentuhan’ yang sudah dicatat dengan nilai pembatas ‘threshold’ yang sudah kita buat diawal tadi. Jika nilai ‘sentuhan’ lebih kecil dari nilai ‘threshold’ maka lampu akan menyala dan pada serial monitor akan muncul tulisan ‘- LED ON’, begitu pula sebaliknya.
Serial monitor itu apa sih?
Nah dari tadi udah ngomongin serial monitor. Jadi apa itu serial monitor? Serial Monitor pada IDE Arduino adalah sebuah fasilitas yang dapat digunakan untuk mengontrol ataupun memonitor yang sedang terjadi pada mainboard arduino melalui komputer. Sebagai contoh untuk memonitor suhu yang dideteksi sensor suhu di serial monitor. Nah kalian bisa mengakses serial monitor dengan cara ini:
Nah ini adalah gambar serial monitor pada program kita. Jangan lupa untuk memehatikan baud yang ada dikanan bawah. Baud yang ada di kanan bawah harus disamakan dengan Serial.begin(115200);
Hasilnya??
Nah kira kira gini deh hasilnya
Kesimpulannya??
Jadi dari tutorial kita hari ini, kita mendapatkan hasil bisa menyalakan lampu me nggunakan touch sensor milik ESP32 dengan cara menyentuh jumper cable.
Pengen lebih kreatif dong!
Tentu aja aku udah nyiapin kreasi aku sendiri, kira kira ini kreasi aku
Buat skema dan kodenya, cekidot dibawah ini ya!!
// mengatur pin mana saja yang akan kita pakai
const int touchPin = 15; // touch sensor pada GPIO 15
const int touchPin2 = 4; // touch sensor pada GPIO 4
const int ledPin = 5; // LED pada GPIO 5
const int ledPin2 = 19; // LED pada GPIO 19
const int ledPin3 = 3; // LED pada GPIO 3
const int ledPin4 = 23; // LED pada GPIO 23
const int threshold = 20; // sebagai pembatas
int touchValue; // mencatat nilai 'sentuhan' kita
int touchValue2; // mencatat nilai 'sentuhan' kitavoid setup(){
Serial.begin(115200);
delay(1000); // memberikan jeda untuk proses
pinMode (ledPin, OUTPUT); // inisialisasi LED sebagai output
pinMode (ledPin2, OUTPUT); // inisialisasi LED sebagai output
pinMode (ledPin3, OUTPUT); // inisialisasi LED sebagai output
pinMode (ledPin4, OUTPUT); // inisialisasi LED sebagai output
}void loop(){
touchValue = touchRead(touchPin); // membaca nilai 'sentuhan' kita
touchValue2 = touchRead(touchPin2); // membaca nilai 'sentuhan' kita
Serial.print(touchValue); // mencatat nilai 'sentuhan' kita
Serial.print(touchValue2); // mencatat nilai 'sentuhan' kita
if(touchValue < threshold){ // membandingkan nilai 'sentuhan' kita dengan nilai pembatas
digitalWrite(ledPin, HIGH); // LED menyala bila nilai 'sentuhan' lebih kecil dari nilai pembatas
digitalWrite(ledPin4, HIGH); // LED menyala bila nilai 'sentuhan' lebih kecil dari nilai pembatas
Serial.println("red-yellow ON"); // mencetak red-yellow ON pada serial monitor
}else{
digitalWrite(ledPin, LOW); // LED menyala bila nilai 'sentuhan' lebih kecil dari nilai pembatas
digitalWrite(ledPin4, LOW); // LED menyala bila nilai 'sentuhan' lebih kecil dari nilai pembatas
Serial.println("red-yellow OFF"); // mencetak red-yellow OFF pada serial monitor
}
if(touchValue2 < threshold){ // membandingkan nilai 'sentuhan' kita dengan nilai pembatas
digitalWrite(ledPin2, HIGH); // LED menyala bila nilai 'sentuhan' lebih kecil dari nilai pembatas
digitalWrite(ledPin3, HIGH); // LED menyala bila nilai 'sentuhan' lebih kecil dari nilai pembatas
Serial.println("blue-green ON"); // mencetak blue-green ON pada serial monitor
}else{
digitalWrite(ledPin2, LOW); // LED menyala bila nilai 'sentuhan' lebih kecil dari nilai pembatas
digitalWrite(ledPin3, LOW); // LED menyala bila nilai 'sentuhan' lebih kecil dari nilai pembatas
Serial.println("blue-green OFF"); // mencetak blue-green OFF pada serial monitor
}
delay(500);
}
Karena println isinya berbeda, maka yang tampil di serial monitor juga berbeda, seperti ini hasilnya,
Sensor lain ada?
Nah selain touch sensor, ESP32 juga punya built-in sensor yaitu Hall Effect sensor. Jadi Hall Effect sensor itu berhubungan dengan medan magnet disekitar ESP32. Nah sesimpel itu kok, cuma butuh ESP32. Kaya gini hasilnya.
Nah disini aku pake magnet yang biasa dijual penjual mainan keliling sih. hasil nya nanti keliatan di serial monitor seperti ini.
Kodenya juga simpel banget
int val = 0;
void setup() {
Serial.begin(9600);
}void loop() {
val = hallRead();
Serial.println(val); // mencatat hasil pada serial monitor
delay(1000);
}