#3 Kenalan dengan ESP32 : Internal Sensor

Rifki Kaida
5 min readFeb 19, 2022

--

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
Komponen-komponen yang dibutuhkan

Rangkaiannya gimana?

Rangkaian kali ini so simple banget guys. Kira-kira begini deh rangkaiannya.

Skema rangkaian : Touch Sensor

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 kita
void 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:

Tools > Serial Monitor > Setting Nilai Baud
Tampilan fitur serial monitor

Penasaran, gimana hasilnya?

Rangkaian akhir project touch sensor basic
Demo : Touch Sensor Basic

Kurang menantang?

Kali ini aku nyediain lagi project buat kalian eksplorasi lebih dalem lagi.

Skema Rangkaian Touch Sensor Latihan
Rangkaian Final Latihan
Video demo Project Latihan

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' kita
void 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.

--

--

Rifki Kaida
Rifki Kaida

No responses yet