6 min read 30 - 45 min practice

ESP32 Project 3 - Internal Sensor

Hallo semuanya, jumpa lagii, pada project ke tiga ini kita akan melakukan eksperimen pada sensor bawaan ESP32 loh, yaitu:

  1. Sensor Sentuh, menyalakan satu lampu LED dengan sentuhan jari kita
  2. 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:

Datasheet board ESP32
Gambar Datasheet board ESP32

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.

Hasil pada tab serial monitor
Gambar Hasil 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

Hasil pada tab serial plotter
Gambar Hasil 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:

  1. Board ESP32
  2. Breadboard
  3. Lampu LED 5mm 1 buah
  4. Resistor 200Ohm 1 buah
  5. Kabel jumper male to male 4 biji

Rangkaian

Rangkaian yang digunakan adalah sebagai berikut:

Rangkaian sensor sentuh
Gambar rangkaian sensor sentuh

Berikut adalah hasil rangkaian yang telah dilakukan:

Hasil rangkaian sensor sentuh
Gambar hasil rangkaian sensor sentuh

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.

IMG-20260305-WA0026IMG-20260305-WA0025IMG-20260305-WA0024IMG-20260305-WA0023IMG-20260305-WA0022

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:

  1. Board ESP32
  2. Breadboard
  3. Lampu LED 5mm 1 buah
  4. Resistor 200Ohm 1 buah
  5. Kabel jumper male to male 3 biji
  6. Magnet

Rangkaian

Rangkaian yang digunakan adalah sebagai berikut:

Rangkaian sensor magnet
Gambar rangkaian sensor magnet

Berikut adalah hasil rangkaian yang telah dilakukan:

Hasil rangkaian sensor magnet
Gambar hasil rangkaian sensor magnet

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!

Bagaimana tanggapan Anda tentang tulisan ini?

Kembali ke daftar tulisan