Sistem Embedded Project 3: LED with Internal Touch Sensor

Justin
4 min readFeb 12, 2023

--

Pada project kali ini dalam mengoperasikan ESP32, saya membuat LED yang diletakkan pada Breadboard menyala dan mematikan onboard LED dengan built-in touch sensor pins pada ESP32. Referensi yang saya gunakan untuk project ini dapat dilihat di website berikut. ESP32 pada umumnya memiliki 10 capacitive touch GPIOs/pins. GPIO tersebut dapat membaca nilai apapun yang menghasilkan daya listrik, seperti kulit manusia. Jadi dengan sekedar memegang pin tersebut dapat menghasilkan daya listrik. Alat-alat yang dibutuhkan untuk project ini antara lain sebagai berikut:

1. ESP32 (30 pin/38 pin, saya menggunakan yang 38 untuk project ini)
2. Breadboard
3. Laptop dengan Arduino IDE
4. Kabel USB
5. 1 buah resistor 330 ohm
7. LED
8. Kabel-kabel jumper (Male to Male)

Setelah mempersiapkan barang-barang diatas, buatlah rangkaian project ini dengan mengikuti skema berikut dengan gambar dibawahnya sebagai skema referensi pins pada ESP32 yang saya gunakan.

Rangkaian LED with Built-in Touch Sensor
Skema Referensi Pins ESP32 38 Pin

Sama seperti project sebelumnya, rangkaiannya tidak harus sama persis, LED nya dapat diubah lokasinya sesuai keinginan Anda asalkan lokasi resistor dan kabel jumper nya tetap sejajar dengan komponen tersebut. Pada gambar diatas. Ada garis-garis hijau yang menandakan arus listrik yang mengalir pada Breadboard jika menyala. GPIO yang digunakan juga dapat diubah sesuai keinginan Anda, Anda hanya perlu mengubah value pada kode yang digunakan sesuai GPIO yang digunakan. (Misal Anda menggunakan GPIO 14, maka di kodenya gunakan value 14 untuk komponen yang disambungkan.)

Setelah merangkai alat-alat yang diperlukan, saya melakukan langkah-langkah berikut agar LED dapat menyala ketika ditekan touch sensor nya dengan ESP32:

1. Sambungkan kabel USB ke ESP32.
2. Masukkan kode di bawah ini ke Arduino IDE.

// initialize the pins used
const int touchPin = 4;
const int ledPin = 5;
const int onboardLed = 2;

// initialize the threshold value
const int threshold = 50;
// initialize a variable to store the value from the touch sensor
int touchValue;

void setup(){
Serial.begin(115200);
delay(1000); // to give time to read the serial monitor
// initialize the LED pins as output
pinMode (ledPin, OUTPUT);
pinMode (onboardLed, OUTPUT);
}

void loop(){
// read the value from the touch sensor
touchValue = touchRead(touchPin);
Serial.print("touchValue = ");
Serial.println(touchValue);
// condition if value is bigger than or lower than the threshold
if (touchValue < threshold) {
// turning on the LED and turning off the onboard LED
digitalWrite(ledPin, HIGH);
digitalWrite(onboardLed, LOW);
Serial.println(" - LED on, Onboard LED off");
}
else {
// turning off the LED and turning on the onboard LED
digitalWrite(ledPin, LOW);
digitalWrite(onboardLed, HIGH);
Serial.println(" - LED off, Onboard LED on");
}
delay(500); // to read the serial monitor easier
}

Kode diatas merupakan hasil modifikasi code dari website referensi karena pada website tersebut hanya menggunakan LED yang terletak pada Breadboard, tidak menambahkan penggunaan onboard LED. Jika tidak ingin menggunakan onboard LED pada project ini, Anda dapat menghapus semua code yang mengandung “onboardLed”.

3. Pilih board dan port yang sesuai dengan ke kolom Tools Board dan Tools Port kemudian tekan Upload.
4. Bersamaan dengan proses Upload, tekan tombol BOOT pada ESP32.
5. Setelah proses Upload selesai, Onboard-LED akan menyala dan LED akan menyala serta Onboard-LED akan mati jika pin ditekan!

Tampilan Serial Monitor

Jika setelah melakukan semua langkah-langkah diatas tetapi LED-nya masih belum berkedip, maka coba tekan tombol RESET pada ESP32. Tombol tersebut terletak di seberang tombol BOOT. Jika Anda ingin mengubah seberapa sensitif touch sensor nya maka Anda dapat mengubah value “threshold” pada code sesuai keinginan Anda. Semakin tinggi value threshold nya maka semakin sensitif touch sensor nya, demikian pula sebaliknya.

Project ini dapat saya bilang cukup mudah karena dapat dilihat sebagai modifikasi sedikit dari project sebelumnya. Semestinya project ini dilakukan menggunakan aluminium foil tetapi karena saya tidak memiliki barang tersebut, saya mencari project yang dapat saya lakukan hanya menggunakan jari saya.

18221016 - Justin Yusuf Abidjoko

--

--