#3 Kenalan dengan ESP32 : Internal Sensor
Hai guys! Kali kita mau ngapain ya? Nah kita bakal nerusin bahas ESP32, yaitu internal sensor. Sebelum kalian bertanya, akan aku jelaskan apa itu sensor. Singkatnya, sensor itu sebuah elemen yang mengubah sinyal fisik menjadi sinyal elektronik yang dibutuhkan komputer. Mungkin dari kalian ada yang bertanya “Sepertinya alatnya mahal, bagaimana cara mendapatkannya?” Eits, tenang saja karena di ESP32 yang kita punya sudah tersedia sensor internal. Keren bukan? Internal sensor yang ada di ESP32, yaitu touch sensor (sentuhan), hall effect sensor (sensor magnet), dan temperature sensor (sensor suhu). Disclaimer!!! gak semua ESP32 punya fitur temperature sensor dan juga temperature di sini bukan untuk mengukur suhu tubuh atau ruangan ya. Temperature sensor di ESP32 berfungsi untuk mengukur suhu internal di ESP32 itu sendiri. So, jangan kalian pake buat gantiin termo gun atau termometer ya wkwk.
Butuh apa aja nih?
Kali ini, komponen yang kita perlukan gak sebanyak tutorial sebelumnya. Apa aja itu?
- ESP32
- Jumper wire male to male
- Resistor 330 ohm
- LED (terserah mau warna apa aja)
- Breadboard (opsional)
- Laptop/komputer yang ter-install Arduino IDE
- Micro USB cable
Rangkaiannya gimana?
Rangkaian kali ini so simple banget guys. Kira-kira begini deh rangkaiannya.
Bingung?
- Hubungkan pin GND ke kutub negatif (ditandai dengan garis biru vertikal)
- Hubungkan pin RX2 (GPIO16) ke kaki panjang LED dan resistor 330 ohm dari kutub negatif ke kaki pendek LED. Kalau kalian masih bingung, bisa cek postingan aku sebelumnya di sini : #1 Kenalan dengan ESP32 : LED Blink dan #2 Kenalan dengan ESP32 : I/O Digital.
- Pasang jumper wire cable male to male dan biarkan mengambang atau tidak dihubungkan kemana pun
Kodenya dong!!
// Inisiasi nomor pin
const int touchPin = 4; // touch sensor pada GPIO 4
const int ledPin = 16; // LED pada GPIO 16// Nilai toleransi sentuh
const int threshold = 20;
int touchValue; // variabel yang menyimpan nilai dari sentuhan kitavoid setup(){
Serial.begin(115200);
delay(1000); // memberikan jeda untuk proses
pinMode (ledPin, OUTPUT); // inisialisasi LED sebagai output
}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 Nyala"); // mencetak - LED on pada serial monitor
}else{
digitalWrite(ledPin, LOW); // lampu mati bila nilai 'sentuhan' kita melampaui nilai threshold
Serial.println(" - LED Mati"); // mencetak - LED off pada serial monitor
}
delay(500);
}
Di tutorial kali ini, ada beberapa kode baru yang akan kita pelajari. touchPin
sebagai input touch sensor, touchValue
sebagai nilai sentuhan, touchRead
sebagai fungsi pembaca nilai sentuhan, dan treshold
nilai toleransi sentuhan.
Kode ini dimulai dari menginisiasi pin dan variabel yang akan digunakan. Kemudian, pada fungsi void loop()
kita membaca nilai sentuhan yang akan dicatat. Selanjutnya, membuat kondisional fungsi yang berisi jika kita sentuh akan menyalakan LED dan menampilkan tulisan “LED — Nyala” dan apabila tidak disentuh LED akan mati dan tulisan “LED — Mati” ke serial monitor.
Apa itu serial monitor?
Singkatnya, serial monitor itu sebuah fitur untuk memonitor program yang sedang berjalan pada mainboard melalui display komputer. Cara memakai fitur ini sebagai berikut:
Penasaran, gimana hasilnya?
Kurang menantang?
Kali ini aku nyediain lagi project buat kalian eksplorasi lebih dalem lagi.
Kodenya mana ?
// 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 ledPin2 = 17; // LED pada GPIO 17
const int ledPin3 = 1; // LED pada GPIO 1
const int ledPin4 = 22; // LED pada GPIO 22
const int threshold = 20; // sebagai pembatas
int touchValue; // mencatat nilai 'sentuhan' kitavoid setup(){
Serial.begin(115200);
delay(1000); // memberikan jeda untuk proses// inisialisasi LED sebagai output
pinMode (ledPin, OUTPUT);
pinMode (ledPin2, OUTPUT);
pinMode (ledPin3, OUTPUT);
pinMode (ledPin4, OUTPUT);
}void loop(){
touchValue = touchRead(touchPin); // membaca nilai 'sentuhan' kita
Serial.print(touchValue); // mencatat nilai 'sentuhan' kita// membandingkan nilai 'sentuhan' kita dengan nilai pembatasif(touchValue < threshold){ // disentuh
//LED 1 dan 3 menyala, led 2 dan 4 mati digitalWrite(ledPin, HIGH);
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin4, LOW);
Serial.println("Touched"); // mencetak "Touched" pada serial monitor
}else{ // tidak disentuh
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin4, HIGH);
digitalWrite(ledPin, LOW);
digitalWrite(ledPin3, LOW);
Serial.println("Untouched"); // mencetak "Untouched" pada serial monitor
}
}
Kesimpulan dan penutup
Di project kita kali ini, kita bisa menyalakan LED menggunakan sensor sentuh sebagai inputnya dengan cara menyentuh jumper wire cable. Oke guys, gitu aja tutorial kali ini, semoga bisa bermanfaat dan see you.