My Third Project [Sistem Embedded]: ESP32 Sensor, Internal Sensor
Hai hai hello, Welcome back again guys!! Jangan bosen ya sama openingnya karena masih banyak lagi project kedepannya xixixixi. All right, jadi hari ini aku akan menceritakan experience selama aku mengerjakan Project 3. Sesuai dengan judulnya, project 3 ini akan membahas mengenai Internal Sensor pada ESP32 . ESP32 sendiri memiliki 3 Sensor Internal, yaitu Touch Sensor, Hall Effect Sensor, dan Temperature Sensor. Namun, sayangnya tidak semua ESP me-support temperature sensor. Penasaran gak gimana hasil dari project ini? Yuk markitry, mari kita try hehe..
— Tools; —
Untuk mengerjakan project ini dibutuhkan beberapa tambahan dari Project sebelumnya. Tools yang harus disiapkan, diantaranya:
- ESP 32 DOIT DEVKIT V1
- Breadboard
- Kabel USB (bisa menggunakan kabel yang digunakan pada project sebelumnya).
- Kabel jumper Male to Male (minimum 4 buah). Karena kita akan membuat rangkaian pada breadboard, maka kita memerlukan kabel jumper tipe male to male.
- Lampu LED 5mm F5 2 buah dengan warna sesuai keinginan.
- 2 buah resistor 330 Ohm. Supaya cahaya lampu yang dihasilkan lebih terang.
- Laptop/ Komputer yang memiliki Arduino IDE. Jangan lupa install dan setting Ardunio IDE-mu sama seperti pada project sebelumnya ya guys! [My First ESP32 Project: LED Blink]
— Touch Sensor; —
Introduction;
Touch sensor (sensor tentuh) adalah salah satu sensor elektronik yang memiliki fungsi sebagai pendeteksi sentuhan, artinya dia akan mengeluarkan respon tertentu ketika kita menyentuh sensor tersebut. ESP32 telah mendukung Touch Sensor. Lhoo tau dari mana ESP32 mendukung sensor? Sini sini aku kasih tau, yuk perhatikan gambar dibawa ini!
Masih inget gambar ini kan? Nah, kalau kita lihat ESP32 ini punya pin Touch 0 — Touch 9 (yang ditandai kotak pink). Nah itu tuh merupakah Sensor Touch yang ESP32 punya guys!. Pada percobaan di Project 3 ini, kita akan menggunakan Touch Sensor untuk menyalakan lampu LED. Lampu LED berwarna hijau akan menyala ketika sensor disentuh dan akan padam apabila tidak disentuh. Berlaku sebaliknya untuk lampu berwarna Merah.
Steps;
First Steps: Installation
Installation yang perlu dilakukan sama seperti pada Project #1 dan #2, sehingga kamu tinggal melihat step-step installation pada Project #1 saja yeayyy!
Next Steps:
A. Assemble the Circuit;
Langkah berikutnya yang harus kita lakukan sebelum menjalankan program adalah merakit rangkaiannya terlebih dahulu. Berikut adalah langkah-langkah untuk merakit rangkaiannya. Check it out!
- Pastikan kamu sudah menyiapkan seluruh komponennya ya!
- Pasangkan ESP32 pada breadboard. Untuk posisinya dibebaskan, namun aku menyarankan sebaiknya diletakkan di ujung agar lebih proporsional.
- Hubungkan GROUND dengan baguan positif breadboard, pasangkan jumpre cable Male to Male pada bagian GROUND (GRND) menuju bagian positif breadboard.
- Pasangkan LED pada breadboard. LED bisa diletakkan dimana saja ya guys!
- Hubungkan RX2 dengan salah satu kaki LED1(warna Merah) dan hubungkan juga TX2 dengan salah satu kaki LED2(warna Hijau).
- Pasang Resistor 330 ohm dan hubungkan dengan kaki LED yang berlainan.
- YEAYYYY!! SELESAII!!
B. The Code;
Berikut adalah block program yang aku gunakan dalam Project 3 ini:
// Inisiasi nomor pin
const int touchPin = 15;
const int ledPin1 = 16;
const int ledPin2 = 17;
// Nilai treshold/ toleransi sentuh
const int threshold = 35;
// Variabel untuk menyimpan nilai yang dibaca sensor
int touchValue;
void setup(){
Serial.begin(115200);
delay(1000);
// Menginisiasi ledPin sebagai output
pinMode (ledPin1, OUTPUT);
pinMode (ledPin2, OUTPUT);
}
void loop(){
// Membaca nilai sensor
touchValue = touchRead(touchPin);
Serial.print(touchValue);
// Memeriksa kondisi touchValue terhadap treshold
// Apabila touchValue < treshold (sedang disentuh)
// Matikan LED Merah dan nyalakan LED Hijau
if(touchValue < threshold){
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, LOW);
Serial.println(" touch");
}
// Apabila touchValue < treshold (sedang tidak disentuh),
// Matikan LED Hijau dan nyalakan LED Merah
else{
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin1, LOW);
Serial.println(" not");
}
delay(500);
}
C. The Result;
D. Additional Component;
Nah, pada bagian ini aku akan menunjukkan hasil project setelah ditambahkan satu komponen baru yaitu menambahkan satu lampu LED.
Sama seperti kasus pada Project 2, Lampu LED baru yang aku tambahkan disini, aku hubungkan dengan D19 dan menggunakan resistor 330 ohm. Akan tetapi, karena aku tidak mempunyai resistor 330ohm lagi :((, aku meng-akalinya menggunakan kabel jumper hehe dan ternyata bisa, yeayy…!!
Untuk kode programnya ada tambahan, yaitu kita menambahkan ledPin 3 karena kita menambahkan komponen lampu. Berikut adalah kode programnya:
// Versi JEDAG JEDUG
// Inisiasi nomor pin
const int touchPin = 15;
const int ledPin1 = 16;
const int ledPin2 = 17;
const int ledPin3 = 19;
// Nilai treshold/ toleransi sentuh
const int threshold = 35;
// Variabel untuk menyimpan nilai yang dibaca sensor
int touchValue;
void setup(){
Serial.begin(115200);
delay(1000);
// Menginisiasi ledPin sebagai output
pinMode (ledPin1, OUTPUT);
pinMode (ledPin2, OUTPUT);
pinMode (ledPin3, OUTPUT);
}
void loop(){
// Membaca nilai sensor
touchValue = touchRead(touchPin);
Serial.print(touchValue);
// Memeriksa kondisi touchValue terhadap treshold
// Apabila touchValue < treshold (sedang disentuh)
// Matikan LED Merah dan nyalakan LED Hijau dan LED Biru
if(touchValue < threshold){
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
Serial.println(" touch");
delay(100);
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, HIGH);
}
// Apabila touchValue < treshold (sedang tidak disentuh),
// Matikan LED Hijau dan LED Biru dan nyalakan LED Merah
else{
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin3, LOW);
Serial.println(" not");
}
delay(500);
}
Analysis;
ESP32 memiliki beberapa sensor Touch, yaitu
- Touch0 pada GPIO4
- Touch2 pada GPIO2
- Touch3 pada GPIO15
- dsb
Pada project kali ini, awalnya aku memilih GPIO4 sebagai sensor Touch. Akan tetapi, lampu LEDnya tidak menyala. Lalu, aku pindahkan sensor Touch ke GPIO15 dan akhirnya kedua lampu menyala. Berdasarkan percobaan yang telah aku lakukan, dapat disimpulkan bahwa ESP32 ini memiliki Touch Sensor pada GPIO yang memiliki atribut Touch. Dan Touch yang tidak berfungsi itu mungkin tidak terbaca atau bacaan sensor 0 atau bahkan ada kerusakan pada Touch 4 ESP punyaku.
The Problem;
Permasalahan yang terjadi ketika pengerjaan project Touch Sensor ini boleh dikatakan tidak banyak dan sangat sepele sekali sih HEHHEHE.
- Pastikan kalian teliti dalam menyambungkan cable jumper ke pin pada ESP32, dan jangan lupa untuk menyesuaikan kode programnya dengan rangkaian kalian.
- Jika Touch Sensor tidak menyala, coba pindahkan Touch Sensor ke pin Touch yang lain. Contohnya, pada awalnya aku menggunakan D4 tapi lampu tidak menyala. Lalu, aku memindahkannya ke D15 dan akhirnya lampunya menyala. YEAYYY!!
— Hall Effect Sensor; —
Introduction;
All right, setelah menggarap Project Touch Sensor, sekarang kita akan coba lakukan percobaan terhadap sensor ESP yang lain yaitu, Hall Effect Sensor.
Apa sih Hall Effect Sensor itu? Jadi ternyata ESP32 itu bisa mendeteksi medan magnet lhoo.. Jadi, apabila sensor ESP32 mendeteksi kutub negatif, maka LED1 akan menyala. Begitu pula sebaliknya.
Penasaran gak sih? Yuk langsung aja kita buktikan. Check it out!
Steps;
Untuk step-stepnya sama seperti pada section Touch Sensor, karena kita akan memakai rangkaian yang sama. Hanya saja, cable jumper yang menjadi sensor dicabut dan kita akan mengubah kode programnya.
The Code;
// Menginisiasi variabel nilai Hall Effect
int hallValue;
// Menginisiasi nilai pin yang terhubung
const int ledPin1 = 19;
const int ledPin2 = 5;
void setup() {
Serial.begin(115200);
delay(1000);
// Menginisiasi ledPin sebagai Output
pinMode (ledPin1, OUTPUT);
pinMode (ledPin2, OUTPUT);
}
void loop(){
// Membaca state sensor
hallValue = hallRead();
// Mencetak nilai bacaan sensor ke serial monitor
Serial.print(hallValue);
// Mengecek hasil bacaan sensor, apabila < -50 berarti kutub negatif
if(hallValue < -50){
// Menyalakan LED merah dan mematikan LED Biru
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, LOW);
// Memberikan simbol - (kutub negatif)
Serial.println(" -");
}
// apabila hallvalue > 50 berarti kutub positif
else if (hallValue > 50){
// Menyalakan kedua LED
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin1, LOW);
// Memberikan simbol + (kutub positif)
Serial.println(" +");
// Apabila nilai antara -50 dan 50, maka netral
} else {
Serial.println(" netral");
// Mematikan kedua LED
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
}
delay(500);
}
The Result;
Analysis;
Pada umumnya, ketika ESP32 mendeteksi kutub negatif, serial monitor akan menunjukkan angka negatif. Sebaliknya, apabila ESP32 mendeteksi kutub positif, serial monitor akan menunjukkan angka positif yang sangat besar. Namun, yang terjadi pada ESP32 ku, saat membuka serial monitor keadaan netralnya menunjukkan angka negatif. Oleh karena itu dalam kode programnya, aku melakukan setting jika angka kurang dari -50 dan di dekatkan kutub negatif maka LED Merah akan menyala. Lalu, jika angka lebih dari 50 dan didekatkan kutub positif maka LED Biru akan menyala.
Hal ini terjadi, mungkin saja karena sensor pada ESP32 ku terlalu sensitif dan mungkin juga berkaitan dengan seberapa besar medan magnet yang digunakan.
The Problem;
- Pastikan kamu menggunakan magnet yang letak kutub positif dan negatifnya jelas. Artinya, kamu tau sisi mana yang merupakan kutub negatif dan kutub positifnya. Karena ini bisa menjadi penyebab lampu LED kamu tidak menyala.
- Pastikan kamu memeriksa serial monitornya sebelum membuat kode programnya. Karena setiap ESP memiliki keadaan netral yang berbeda beda. Lalu, sesuaikan angka saat keadaan positif, negatif, dan netralnya. Karena, pada awalnya aku berasumsi bahwa ESPku dan teman-teman sama, jadi pada awalnya aku mengasumsikan keadaan netralnya pada angka antara 0 dan 50. Ternyata, setelah mengecek serial monitor, ESPu menunjukkan angka negatif saat keadaan netral.
- Selanjutnya, jika sudah melakukan sesuai dengan arahan tapi Lampu LED masih tidak menyala. Maka, cobalah untuk Mengganti Device. Hal ini terjadi padaku, aku sudah memeriksa rangkaian, kode, mengganti lampu, resistor, maupun cable jumper tapi tetap saja Lampu LED nya tidak menyala. Lalu, aku mencoba untuk melakukan compile di laptop temanku yang lain, dan ternyata bisa. Ternyata, hal ini tidak hanya terjadi kepadaku saja banyak juga teman teman lain yang laptopnya tidak bisa.
— Temperature Sensor; —
Introduction;
Next, percobaan terkahir pada Project 3 kali ini. Nah, ternyata ESP32 ini juga bisa mendeteksi temperature, tapi sayangnya tidak semua ESP memiliki sensor tersebut. Dan ternyata ESP punyaku juga tidak punya sensor itu karena temperaturenya selalu konsisten menunjukkan suhu 53.33℃. Yuk, kita buktikan!! CHECKKK IT OUTT !!!
Steps;
Untuk percobaan kali ini, kita tidak membutuhkan rangkaian apapun. Kita hanya membutuhkan ESP saja dan dihubungkan dengan Arduino IDE. Seperti gambar dibawah ini:
The Code;
// Import library yang diperlukan
#ifdef __cplusplus
extern "C" {
#endif
uint8_t temprature_sens_read();
#ifdef __cplusplus
}
#endif
uint8_t temprature_sens_read();
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.print("Temperature: ");
// Mengubah temperature dalam Farenheit menjadi Celcius
Serial.print((temprature_sens_read() - 32) / 1.8);
Serial.println(" C");
delay(1000);
}
The Result;
Analysis;
Nah bisa terlihat pada gambar screenshoot Arduino IDE, bahwa temperatur yang terbaca itu selalu konsisten sebesar 53.33℃. Berdasarkan hasil research di Interner, disampaikan bahwa karena ESP32 tidak memiliki internal temperature sensor, maka fungsi temprature_sens_read()
akan selalu mereturn nilai 128. Maka dari itu, output akan selalu 53.33℃.
The Problem;
Sebenarnya, karena ESPku tidak support Temperature Sensor, jadi aku belum menemukan problem apapun dalam percobaan ini.
— Closing; —
Yeayy! Project ketiga sudah selesai.. Itulah beberapa percobaan mengai Internal Sensor pada ESP32. Semoga pengalaman yang aku sharing ini bisa bermanfaat bagi teman-teman yang membaca. Masih banyak lagi project-project lain yang gak kalah seru dan menarik. So staytune and see you !!