Pada project kali ini, kita akan mencoba memanfaatkan sensor yang terdapat secara built-in pada ESP32, yaitu sensor sentuh (touch sensor) dan sensor magnet (hall-effect sensor).
Persiapan
Untuk instalasi dan konfigurasi Arduino IDE bisa di baca pada project-01 : Led Blink yang perlu diketahui bersama, bahwa pada ESP32 Devkit V1, memiliki 3 sensor built-in yang bisa di gunakan yaitu :
- Touch Sensor
- Hall Effect Sensor
- Temperature Sensor
Requirement
- Arduino IDE yang sudah di konfigurasi
- ESP 32 Development Board, dalam hal ini saya masih menggunakan Jenis ESP32 Devkit V1
- Kabel Data USB
- Jumper
- LED
Knowlegde
Terdapat 10 GPIO berfungsi sentuh pada ESP32, GPIO ini dapat mendeteksi atau merasakan segala sesuatu yang bermuatan listrik pada manusia, seperti sentuhan kulit manusia.
Pada gambar dibawah ini, ke 10 Pin Sentuh tersebut dapat kita lihat yang berlabel warna merah jambu.
Pada Arduino IDE, kita bisa menggunakan Fungsi TouchRead() sebagai pembaca sensor.
TouchRead(GPIO)
Experiment
Sketch Sampel Touch
Sebagai percobaan sensor sentuh (Touch), kita hanya perlu menyentuh Pin GPIO4 (T0), untuk itu kita bisa hubungkan jumper male to female ke kaki GPIO4 pada ESP32
Setelah itu kita upload Code sampel TouchRead yang ada pada Arduino IDE
File --> Examples --> ESP32 --> Touch --> TouchRead
Codenya sebagai berikut :
// ESP32 Touch Test
// Just test touch pin - Touch0 is T0 which is on GPIO 4.
void setup()
{
Serial.begin(115200);
delay(1000); // give me time to bring up serial monitor
Serial.println("ESP32 Touch Test");
}
void loop()
{
Serial.println(touchRead(T0)); // get value using T0 or 4
delay(1000);
}
Berdasarkan kode program diatas, dapat kita lihat bahwasanya program membaca pin Touch 0 (T0) dan menampilkanya ke Serial Monitor.
Seperti yang dijelaskan sebelumnya bahwa Pin T0 sama juga dengan pin GPIO 4.
Serial.begin(115200); // Mempersiapkan serial dengan bautrate 115200
Serial.println(touchRead(4)); // kode ini untuk menampilkan hasil sentuh ke serial monitor
hasil percobaan dapat dilihat pada video berikut :
Touch Sensitive LED
Lebih lanjut kita lakukan percobaan lagi dengan memanfaatkan sensor sentuh untuk menyalakan sebuah LED External.
Skema Rangkaian
Pertama-tama kita rangkai komponen komponen sperti yang ditunjukkan pada gambar berikut :
Code Program
Selanjutnya kita membuat sketch baru pada Arduino IDE, dan kita tuliskan kode programnya,
// set pin numbers
const int touchPin = 4;
const int ledPin = 16;
// change with your threshold value
const int threshold = 20;
// variable for storing the touch pin value
int touchValue;
void setup(){
Serial.begin(115200);
delay(1000); // give me time to bring up serial monitor
// initialize the LED pin as an output:
pinMode (ledPin, OUTPUT);
}
void loop(){
// read the state of the pushbutton value:
touchValue = touchRead(touchPin);
Serial.print(touchValue);
// check if the touchValue is below the threshold
// if it is, set ledPin to HIGH
if(touchValue < threshold){
// turn LED on
digitalWrite(ledPin, HIGH);
Serial.println(" - LED on");
}
else{
// turn LED off
digitalWrite(ledPin, LOW);
Serial.println(" - LED off");
}
delay(500);
}
Tonton Video ini, dari merangkai komponen pada breadboard, sampai menyalakan LED dengan melakukan sentuhan pada pin GPIO 4 yang disambungkan melalui Jumper.
Troubleshooting
Untuk ESP32 Keluaran terbaru tidak perlu menekan tombol boot saat melakukan uploading sketch (kode program)