ESP32 Project 3 - Internal Sensor
Hallo semuanya, jumpa lagii, pada project ke tiga ini kita akan melakukan eksperimen pada sensor bawaan ESP32 loh, yaitu:
- Sensor Sentuh, menyalakan satu lampu LED dengan sentuhan jari kita
- Sensor medan magnet, menyalakan satu lampu LED dengan mendeteksi medan magnet, bukan sentuhan
rujukan eksperimen ketiga ini bersumber dari ini ya: https://randomnerdtutorials.com/esp32-touch-pins-arduino-ide/
Sensor Sentuh ESP32
Ini adalah data sheet dari board esp32 yang saya miliki:

terlihat sensor sentuh 0 adalah GPIO 4, sensor sentuh 1 adalah GPIO 0, dan seterusnya, nah nantinya kita akan gunakan pin GPIO 4 tersebut sebagai saklar lampunyaa.
nah fungsi untuk menjalankan sensor sentuh esp32 adalah
touchRead(pin);
nantinya fungsi tersebut akan mengembalikan suatu nilai angka yang cukup signifikan ketika jari kita menyentuh pin tersebut.
silahkan temen2 jalankan code berikut, pada port esp32, untuk rangkaiannya cukup colokkan kabel jamper pada pin GPIO 4 itu saja, nah ini codenya:
// 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(4)); // get value of Touch 0 pin = GPIO 4
delay(1000);
}
nah, sekarang kita coba cermati perubahan nilai pada tampilan jendela Serial Monitor dengan klik Tools > Serial Monitor.

Terlihat ketika jari kita menyentuh ujung kabel jumpernya angka berkurang kan? Kita juga bisa melihat dari serial plotternya dengan klik Tools > Serial Plotter

Nah dari sini kita bisa tentukan tresshold yang tepat untuk sensor sentuh kita adalah dibawah 200, artinya sensornya telah disentuh.
Eksperimen Sensor Sentuh
Oke selanjutnya kita coba bereksperimen menjalankan lampu dengan menyentuh pinnya.
Komponen
Komponen yang akan digunakan pada eksperimen ini adalah:
- Board ESP32
- Breadboard
- Lampu LED 5mm 1 buah
- Resistor 200Ohm 1 buah
- Kabel jumper male to male 4 biji
Rangkaian
Rangkaian yang digunakan adalah sebagai berikut:

Berikut adalah hasil rangkaian yang telah dilakukan:

Code
Berikut kode yang kita gunakan untuk menjalankan lampu LED nya dengan sentuhan tangan kita
// set pin numbers
const int touchPin = 4;
const int ledPin = 16;
// change with your threshold value
const int threshold = 200;
// 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);
}
Taraa! ini dia video hasilnya
Video Menyalakan Lampu LED dengan menyentuh sensornya
Sensor Medan Magnet ESP32
Untuk menjalankan sensor medan magnet bawaan ESP32 menggunakan fungsi hallRead(), nanti akan terbaca medan magnet di dekat chip ESP32 (di bawah pelindung logam silver itu), nanti bisa terlihat hasilnya di serial monitor dan serial plot. Jadi untuk eksperimen yang kedua ini dibutuhkan alat tambahan magnet. Kebetulan saya punya pin korpri magnet, jadi saya akan gunakan itu.
silahkan temen2 jalankan code berikut, pada port esp32, untuk rangkaiannya, polos tidak ada apapun:
// ESP32 Hall Test
void setup() {
Serial.begin(115200);
delay(1000); // give me time to bring up serial monitor
Serial.println("ESP32 Hall Test");
}
void loop() {
int hallValue = hallRead(); // Read hall internal
Serial.println(hallValue); // get value of Hall internal
delay(1000);
}
Setelah menjalankan script diatas muncul pesan error: βhallReadβ was not declared in this scope . Berhubung driver board esp32 yang terinstall di Arduiono saya adalah versi 3.3.7 versi paling baru saat saya bereksperimen, ternyata fungsi tersebut telah dihapus karena ketidak akuratan sensor magnet di chip esp32nya. Solusinya adalah menurunkan ke versi 2.0.17, dan alhamdulillah setelah diturunkan versinya error tersebu hilang dan code berhasil terupload.
oke, sekarang kita coba cermati perubahan nilai pada tampilan jendela Serial Monitor dengan klik Tools > Serial Monitor dan tampilan serial plotter dengan klik Tools > Serial Plotter, berikut adalah hasilnya.





Dari beberapa hasil tersebut ada yang minus dan tinggi keatas menandakat kutub magnetnya, jika minus ia kutub selatan namun jika positif ia kutub utara. Lalu untuk board esp32 yang dipakai tersebut nilai tanpa magnetnya cukup fluktuatif ya, bisa dipatok berkisar antara 120 - 150, nah untuk medan negatif/selatan dibawah -80 dan kutub positif/utara diatas 155.
Eksperimen Sensor Magnet
Tak berbeda jauh dengan eksperimen awal, namun disini kita nyalakan lampunya menggunakan medan magnet yang mendekati chip esp 32nya ya, kali ini saya gunakan medan magnet kutub negatif/selatan ya.
Komponen
Komponen yang akan digunakan pada eksperimen ini adalah:
- Board ESP32
- Breadboard
- Lampu LED 5mm 1 buah
- Resistor 200Ohm 1 buah
- Kabel jumper male to male 3 biji
- Magnet
Rangkaian
Rangkaian yang digunakan adalah sebagai berikut:

Berikut adalah hasil rangkaian yang telah dilakukan:

Code
Berikut kode yang kita gunakan untuk menjalankan lampu LED nya dengan magnet
// set pin numbers
const int ledPin = 16;
// change with your threshold value
const int threshold = -80;
// variable for storing the touch pin value
int hallValue;
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:
int hallValue = hallRead();
Serial.print(hallValue);
// check if the hallValue is below the threshold
// if it is, set ledPin to HIGH
if(hallValue <= threshold){
// turn LED on
digitalWrite(ledPin, HIGH);
Serial.println(" - LED on");
}
else{
// turn LED off
digitalWrite(ledPin, LOW);
Serial.println(" - LED off");
}
delay(500);
}
Taraa! ini dia video hasilnya
Video Menyalakan Lampu LED dengan medan magnet yang mendekati chip esp32
Dari video tersebut tergambar jika magnet tidak pas dengan posisi chip esp32nya angka yang dikeluarkan sensor tidak sesuai dengan harapan kita, jadi perlu disesuaikan lagi posisi magnetnya baru menyala deh lampunya. Namun sekali lagi fungsi hallRead() ini sudah dihapus di driver board esp32 by espressif ya temen2.
Oke sampai sini dulu aja ya laporannya, terimakasih sudah mampir kesini!