Pada artikel sebelumnya kita telah belajar menggunakan push button sebagai input dan LED sebagai output yang bisa Anda lihat pada postingan berjudul Belajar ESP32: Input Output. Disamping itu, ternyata ESP32 juga memiliki beberapa sensor internal yang bisa langsung digunakan tanpa komponen tambahan.
Sensor ini sudah tertanam di dalam chip sehingga sangat praktis untuk eksperimen ataupun membuat proyek IoT yang lebih sederhana.
Pada artikel ini kita akan belajar dua sensor internal yang paling sering digunakan pada ESP32 DevKit V1 (30 pin) yaitu:
- Touch Sensor (Capacitive Touch)
- Hall Effect Sensor
1. Touch Sensor ESP32

ESP32 memiliki sensor sentuh kapasitif yang dapat mendeteksi sentuhan jari manusia tanpa tombol fisik. Sensor ini bekerja dengan cara mengukur perubahan kapasitansi listrik ketika jari menyentuh pin.
Pada ESP32 DevKit V1 30 pin, beberapa pin yang mendukung touch sensor antara lain:
| Touch Pin | GPIO |
|---|---|
| T0 | GPIO4 |
| T3 | GPIO15 |
| T4 | GPIO13 |
| T5 | GPIO12 |
| T6 | GPIO14 |
| T7 | GPIO27 |
| T8 | GPIO33 |
| T9 | GPIO32 |
Ketika pin tersebut disentuh, nilai yang dibaca ESP32 akan menurun secara signifikan.
Program Touch Sensor
Berikut contoh program sederhana untuk membaca nilai touch sensor menggunakan Arduino IDE.
#define TOUCH_PIN T0 // GPIO4
void setup() {
Serial.begin(115200);
}
void loop() {
int touchValue = touchRead(TOUCH_PIN);
Serial.print("Touch value: ");
Serial.print(touchValue);
if (touchValue < 500) {
Serial.println(" (DISENTUH)");
} else {
Serial.println(" (TIDAK DISENTUH)");
}
delay(500);
}
Penjelasan:
touchRead()digunakan untuk membaca nilai dari pin touch.- Ketika tidak disentuh, nilainya biasanya cukup besar.
- Ketika disentuh, nilainya akan turun.
Contoh output pada serial monitor:

Touch Sensor Sebagai Tombol
Touch sensor juga bisa digunakan seperti tombol digital.
#define TOUCH_PIN T0
#define LED 2 // INTERNAL LED ESP32
void setup() {
Serial.begin(115200);
pinMode(LED, OUTPUT);
}
void loop() {
int value = touchRead(TOUCH_PIN);
if(value < 500){
digitalWrite(LED, HIGH);
} else {
digitalWrite(LED, LOW);
}
delay(100);
}
Jika nilai touch lebih kecil dari threshold (misal 500) maka internal LED ESP32 akan menyala.
Nilai threshold bisa berbeda tergantung kondisi lingkungan.
2. Hall Effect Sensor

Selain touch sensor, ESP32 juga memiliki Hall Effect Sensor internal.
Sensor ini digunakan untuk mendeteksi medan magnet. Jika ada magnet yang mendekati ESP32, maka nilai yang dibaca akan berubah.
Fungsi ini bisa dimanfaatkan untuk berbagai proyek seperti:
- Deteksi pintu terbuka / tertutup
- Speed sensor
- Magnetic detection
- Sistem keamanan sederhana
Downgrade Versi 2.0.17
Pada ESP32 Arduino Core versi terbaru (3.x), fungsi pembacaan Hall Effect Sensor sudah tidak tersedia secara langsung seperti pada versi sebelumnya. Oleh karena itu, agar contoh program pada artikel ini dapat berjalan dengan baik, disarankan menggunakan ESP32 Arduino Core versi 2.0.17. Versi ini masih menyediakan fungsi hallRead() sehingga implementasi sensor magnet dapat dilakukan dengan lebih mudah.

Program Hall Sensor
void setup() {
Serial.begin(115200);
}
void loop() {
int hallValue = hallRead();
Serial.print("Hall sensor value: ");
Serial.println(hallValue);
delay(500);
}Penjelasan:
hallRead()digunakan untuk membaca nilai sensor magnet internal.- Jika tidak ada magnet, nilai biasanya kurang dari 100.
- Jika ada magnet didekatkan, nilai akan berubah menjadi positif atau negatif.
Contoh output serial monitor:

Demo Hall Sensor
Modifikasi program hall sensor diatas untuk mendemonstrasikan pendeteksian magnet menjadi seperti ini:
#define LED 2 // INTERNAL LED ESP32
void setup() {
Serial.begin(115200);
pinMode(LED, OUTPUT);
}
void loop() {
int hallValue = hallRead();
Serial.print("Hall sensor value: ");
Serial.print(hallValue);
if(hallValue > 100){
digitalWrite(LED, HIGH);
Serial.print(" (MAGNET TERDETEKSI)");
} else {
digitalWrite(LED, LOW);
}
Serial.println();
delay(500);
}Berdasarkan program diatas, ESP32 membaca nilai dari Hall Effect Sensor internal menggunakan fungsi hallRead(). Nilai yang diperoleh kemudian ditampilkan pada Serial Monitor setiap 500 milidetik. Nilai tersebut merepresentasikan perubahan medan magnet yang terdeteksi di sekitar chip ESP32.
Ketika tidak ada magnet di sekitar perangkat, nilai sensor yang terbaca biasanya relatif kecil dan LED internal tetap dalam keadaan mati. Namun ketika magnet didekatkan ke chip ESP32, nilai sensor akan meningkat. Jika nilai tersebut melebihi batas yang ditentukan (lebih dari 100), maka ESP32 akan menyalakan LED internal sebagai indikator bahwa magnet telah terdeteksi, sekaligus menampilkan keterangan “(MAGNET TERDETEKSI)” pada Serial Monitor.
Dengan demikian, program ini menunjukkan bahwa Hall Effect Sensor internal ESP32 dapat digunakan untuk mendeteksi keberadaan medan magnet, dan hasil deteksinya dapat dimanfaatkan untuk mengaktifkan indikator atau perangkat lain sesuai kebutuhan aplikasi.
Hal yang Perlu Diperhatikan
Beberapa hal penting saat menggunakan sensor internal ESP32:
- Touch sensor cukup sensitif terhadap noise listrik.
- Gunakan threshold yang sesuai dengan hasil pembacaan sensor.
- Hall sensor bekerja lebih baik jika magnet didekatkan langsung ke chip ESP32, bukan ke pin.
Kesimpulan
ESP32 tidak hanya berfungsi sebagai mikrokontroler WiFi/Bluetooth, tetapi juga memiliki beberapa sensor internal yang cukup berguna.
Dua sensor yang paling sering digunakan adalah:
- Touch Sensor → mendeteksi sentuhan tanpa tombol
- Hall Effect Sensor → mendeteksi medan magnet
Dengan memanfaatkan sensor internal ini, kita bisa membuat berbagai proyek menarik tanpa perlu komponen tambahan.


Pingback: Belajar ESP32: External Sensor - SMSRV