Belajar ESP32: Internal Sensor

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:

  1. Touch Sensor (Capacitive Touch)
  2. Hall Effect Sensor

1. Touch Sensor ESP32

image
https://lastminuteengineers.com/esp32-pinout-reference/#esp32-touch-pins

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 PinGPIO
T0GPIO4
T3GPIO15
T4GPIO13
T5GPIO12
T6GPIO14
T7GPIO27
T8GPIO33
T9GPIO32

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:

demo touch sensor

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

image
https://randomnerdtutorials.com/esp32-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.

image

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:

image

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:

  1. Touch sensor cukup sensitif terhadap noise listrik.
  2. Gunakan threshold yang sesuai dengan hasil pembacaan sensor.
  3. 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.

Referensi

1 komentar untuk “Belajar ESP32: Internal Sensor”

  1. Pingback: Belajar ESP32: External Sensor - SMSRV

Tinggalkan Komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Scroll to Top