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.

enter image description here

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

enter image description here

Setelah itu kita upload Code sampel TouchRead yang ada pada Arduino IDE

File --> Examples --> ESP32 --> Touch --> TouchRead

enter image description here

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 :

enter image description here

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)