INTRODUCING THE ESP32 SENSOR
Assalamualaikum, para pencari ilmu. Bagi yang baru membaca artikel ku perkenalkan nama ku Zachrandika Alif Syahreza dari Sistem dan Teknologi Informasi angkatan 2019. Sebelumnya aku sudah menjelaskan mengenai digital input dan analog input pada ESP32. Sekarang pada artikel ini aku akan menjelaskan mengenai sensor pada ESP32. Seperti biasa, agar mempermudah dalam melakukan penjelasan aku akan melakukan 3 buah project yang berkaitan dengan sensor pada ESP32
What is Sensor ?
Sensor merupakan sebuah perangkat yang digunakan untuk mendeteksi perubahan besaran fisik seperti tekanan, gaya, besaran listrik, cahaya, gerakan, kelembaban, suhu, kecepatan dan fenomena-fenomena lingkungan lainnya. Input yang terdeteksi kemudian dikonversikan menjadi outputyang dimengerti oleh manusia ataupun ditransmisikan secara elektronik untuk ditampilkan atau diolah menjadi informasi yang berguna.
Berdasarkan asal rangsangan yang diterima sensor dikelompokan menjadi 2:
- Proprioception : menerima rangsangan yang ditimbulkan dari dalam sistem (kapasita baterai, suhu komponen sistem)
- Exteroception : menerima rangsangan yang ditimbulkan dari lingkungan diluar sistem ( audio, sentuhan, cahaya)
Types of Sensors
Ada berbagai macam jenis sensor berdasarkan kegunaannya
- Akselerometer
Sensor Akselerometer adalah sensor yang dapat mendeteksi perubahan posisi, getaran, kemiringan, dan kecepetan - Sensor Cahaya
Sensor Cahaya adalah sensor analog yang digunakanuntuk mendeteksi jumlah cahaya yang mengenai sensor tersebut - Sensor Suara
Sensor Suara adalah sensor yang digunakan untuk merasakan tingkat suara. Sensor suara menerjemahlan amplitudo volume akustik suara menjadi tegangan listrik untuk merasakan tingkat suara - Sensor Tekanan
Sensor Tekanan atau Pressure Sensor adalah sensor yang digunakan untuk mengukur jumlah tekanan. Sensor tekanan akan menghasilkan sinyal analog yang sebanding dengan jumlah tekanan yang diberikan - Sensor Suhu
Sensor Suhu atau Temperature Sensor adalah Sensor yang digunakan untuk mengukur suhu. - Sensor Ultrasonik
Sensor Ultrasonik adalah jenis sensor non-kontak yang dapat digunakan untuk mengukur jarak serta kecepatan suatu benda. Sensor Ultrasonik bekerja berdasarkan sifat-sifat gelombang suara dengan frekuensi lebih besar daripada rentang suara manusia - Sensor Giroskop
Sensor Giroskop adalah sensor yang digunakan untuk merasakan dan menentukan orientasi dengan bantuan gravitasi bumi. Perbedaan utama antara Sensor Akselerometer dan Giroskop adalah bahwa Giroskop dapat merasakan rotasi di mana akselerometer tidak bisa - Sensor Efek Hall
Sensor Efek Hall atau Hall Effect Sensor adalah sensor yang dapat mengubah informasi magnetik menjadi sinyal listrik untuk pemrosesan rangkaian elektronik selanjutnya. Sensor Efek Hall ini sering digunakan sebagai sensor untuk mendeteksi kedekatan (proximity), mendeteksi posisi (positioning), mendeteksi kecepatan (speed), mendeteksi pergerakan arah (directional) dan mendeteksi arus listrik (current sensing) - Sensor Kelembaban
Sensor Kelembaban atau Humidity Sensor merupakan sensor yang digunakan untuk mendeteksi tingkat kelembaban suatu lokasi - Sel beban
Sel Beban atau Load Cell adalah jenis sensor yang digunakan untuk mengukur berat. Input dari Load Cell ini adalah gaya atau tekanan sedangkan outputnya adalah nilai tegangan listrik
Sensor in ESP32 Lolin32 Lite
Pada board ESP32 Lolin32 Lite terdapat 9 GPIO sensor sentuh yang menggunakan kapasitansi alami tubuh manusia sebagai sensor sentuhan. GPIO tersebut dapat merasakan rangsangan yang menahan muatan listrik, seperti kulit manusia. Sehingga apabila GPIO tersentuh dengan jadi maka GPIO dapat mendeteksinya dan merubahnya menjadi sebuah nilai
Dari gambar diatas dapat dilihat bahwa sensor sentuh 0 berada pada GPIO 4, sensor sentuh 1 berada pada GPIO 0, dan seterusnya
Untuk mengamplikasikan sensor sentuhan pada Arduino IDE hanya dengan menggunakan fungsi touchRead ( ). fungsi akan menerima argumen dari GPIO yang mendeteksi sentuhan tersebut
Project to Turn On LED with Touch Sensor
Pada project kali ini aku akan mencoba mengaplikasikan penggunaan sensor yang terdapat pada board ESP32 untuk menyalakan LED. Sensor yang digunakan pada project ini adalah sensor sentuh. Jadi ketika kita menyentuh kabel yang terhubung dengan GPIO sensor sentuh maka LED akan menyala begitupun sebaliknya
Komponen yang dibutuhkan untuk melakukan project ini adalah:
- Development Board: ESP32 (pada project ini aku menggunakan ESP32 Lolin32 Lite)
- Micro USB cable
- LED 5 mm
- resistor 330 Ohm
- Breadboard
- kabel jumper male to male dan male to female
Build the Circuit
Susun semua komponen pada breadboard sesuai skema berikut ini
- GPIO 16 dan GPIO 17 dihubukan dengan Resistor 330 Ohm untuk menyalakan LED
- GPIO 4 dipasangkan dengan kabel jumper male-to-female
- Kutub negatif LED dihubungkan dengan Ground pada breadboard
- Pin Ground pada board ESP32 dihubungkan dengan Ground pada breadboard
NB : Pastikan kabel jumper dan komponen lainnya dapat berguna dengan baik agar tidak terjadi error
Program to Turn On LED with Touch Sensor
Setelah menyusun semua komponen yang digunakan pada breadboard, masukkan kode program sebagai berikut
// set nomor pin
const int touchPin = 4;
const int ledPin1 = 16;
const int ledPin2 = 17;
const int threshold = 20;
// variabel untuk menyimpan nilai touch pin
int touchValue;
void setup(){
Serial.begin(115200);
delay(1000);
// menginisiasi ledpin1 dan ledpin2 sebagai output
pinMode (ledPin1, OUTPUT);
pinMode (ledPin2, OUTPUT);
}
void loop(){
// membaca state yang dihasilkan dari nilai touchRead
touchValue = touchRead(touchPin);
Serial.print(touchValue);
// melakukan pengecekan apakah nilai treshold lebih kecil dari nilai touchValue
// jika iya maka menyalakan LED
if(touchValue < threshold){
// menyalakan LED
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, HIGH);
Serial.println(" - LED on");
}
else{
// mematikan LED
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
Serial.println(" - LED off");
}
delay(500);
}
Untuk lebih jelasnya dapat download disini touch_sensor.ino
Program to Make LED Blinking with Touch Sensor
Setelah berhasil untuk menyalakan LED dengan sensor sentuh, sekarang aku akan mencoba membuat LED dapat berkedap-kedip dengan sensor sentuh
Untuk keseluruhan kode program hampir sama dengan project sebelumnya, yang berbeda hanya pada bagian loop saat menyalakan LED. Saat menyalakan LED kode program dibuat untuk menyalakan 2 buah LED secara bergantian sehingga LED soalah-olah berkedap-kedip. Berikut kode progamnya
// set nomor pin
const int touchPin = 4;
const int ledPin1 = 16;
const int ledPin2 = 17;
const int threshold = 20;
// variabel untuk menyimpan nilai touch pin
int touchValue;
void setup(){
Serial.begin(115200);
delay(1000);
// menginisiasi ledpin1 dan ledpin2 sebagai output
pinMode (ledPin1, OUTPUT);
pinMode (ledPin2, OUTPUT);
}
void loop(){
// membaca state yang dihasilkan dari nilai touchRead
touchValue = touchRead(touchPin);
Serial.print(touchValue);
// melakukan pengecekan apakah nilai treshold lebih kecil dari nilai touchValue
// jika iya maka menyalakan LED
if(touchValue < threshold){
// menyalakan LED secara blinking
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, LOW);
delay(250);
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, HIGH);
delay(250);
Serial.println(" - LED on");
}
else{
// mematikan LED
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
Serial.println(" - LED off");
}
delay(500);
}
Untuk lebih jelasnya dapat download disini touchblinking_sensor.ino
Project to Turn On LED with Hall Effect Sensor
Setelah berhasil melakukan project pertama menggunakan sensor sentuh internal, selanjutnya aku mencoba untuk melakukan project menggunakan sensor hall
Sensor hall adalah sensor yang digunakan untuk mengukur medan magnet. Biasanya sensor hall ini digunakan pada alarm pintu. Pintu akan berbunyi apabila belum tertutup dengan rapat
Pada project kali ini aku akan mencoba menyalakan lampu LED dengan menggunakan sensor hall. Pada dasarnya untuk menyalakan LED dengan sensor hall hanya menggunakan fungsi hallRead
Komponen yang dibutuhkan pada project ini adalah:
- Development Board: ESP32 (pada project ini aku menggunakan ESP32 Lolin32 Lite)
- Micro USB cable
- LED 5 mm
- resistor 330 Ohm
- Breadboard
- Magnet
- kabel jumper male to male dan male to female
Build the Circuit
- GPIO 16 dan GPIO 17 dihubukan dengan Resistor 330 Ohm untuk menyalakan LED
- Kutub negatif LED dihubungkan dengan Ground pada breadboard
- Pin Ground pada board ESP32 dihubungkan dengan Ground pada breadboard
NB : Pastikan kabel jumper dan komponen lainnya dapat berguna dengan baik agar tidak terjadi error
Program to Turn On LED with Hall Effect Sensor
Setelah memastikan seluruh komponen sudah terpasang dengan baik pada breadboard, masukkan kode program berikut ini pada Arduino IDE
// set nomor pin
const int ledPin1 = 16;
const int ledPin2 = 17;
const int threshold = 50;
// variabel untuk menyimpan nilai touch pin
int touchValue;
void setup(){
Serial.begin(115200);
delay(1000);
// menginisiasi ledpin1 dan ledpin2 sebagai output
pinMode (ledPin1, OUTPUT);
pinMode (ledPin2, OUTPUT);
}
void loop(){
// membaca state yang dihasilkan dari nilai hallRead
int measurement = 0;
measurement = hallRead();
Serial.print(measurement);
// melakukan pengecekan apakah nilai treshold lebih kecil dari nilai touchValue
// jika iya maka menyalakan LED
if(measurement > threshold){
// menyalakan LED
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, HIGH);
Serial.println(" - LED on");
}
else{
// mematikan LED
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
Serial.println(" - LED off");
}
delay(500);
}
Untuk lebih jelasnya dapat download disini hall_sensor.ino
Project with Temperature Sensor
Setelah berhasil mengerjakan project menggunakan sensor hall, aku melakukan project terakhir yaitu menggunakan sensor suhu internal. Project ini mengukur suhu dari sistem ESP32 yang aku miliki. Untuk mengukur suhu internal kita hanya tinggal menggunakan fungsi temprature_sens_read
Komponen yang dibutuhkan pada project ini adalah:
- Development Board: ESP32 (pada project ini aku menggunakan ESP32 Lolin32 Lite)
- Breadboard
- Micro USB cable
Build the Circuit
NB : Pastikan semua komponen sudah terpasang dengan baik agar tidak terjadi error
Program for Temperature Sensor ESP32
Setelah memasang semua komponen dengan benar masukkan kode program berikut ini
#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 nilai temperatur dari Fahrenheit ke Celcius
Serial.print((temprature_sens_read() - 32) / 1.8);
Serial.println(" C");
delay(5000);
}
Untuk lebih jelasnya dapat download disini internal_temperature_sensor.ino
Conclusion
Setelah melakukan berbagai macam project mengenai internal sensor ada beberapa hal yan dapat aku simpulkan
- Untuk project hall sensor harus dipastikan bahwa magnet yang digunakan adalah magnet yang bagus agar ESP32 dapat mendeteksi medan mgnet dengan baik. Pada kasus yang aku lakukan dikarenakan magnet yang aku gunakan tidak begitu bagus, menyebabkan ESP32 kesulitan dalam mendeteksi medan magnetnya
- Untuk project internal temperatur sensor hasil temperatur yang aku dapatkan ketika melihat serial monitor adalah 53,33. Hal itu dikarenakan fungsinya hanya mengembalikan 128 (sensor tidak ada)