ESP32 Tutorial Part 3 (Internal Sensor ESP32)
Yuhuu kembali lagi di tutorial ESP32 part 3!. Kali ini kita akan membahas sensor internal yang ada pada ESP32 itu sendiri. Percobaan ini terdiri 4 bagian yaitu
1. Touch Sensor
2. Hall Effect Sensor
3. Hall Effect Sensor Eksperiment LED
4. Internal Temperature Sensor
Daripada kelamaan yuk kita langsung coba aja !
BAGIAN 1. TOUCH SENSOR
Nah bagian satu ini, kita akan membahas tentang touch sensor dari ESP32 nih gais. Jadi touch sensor itu gimana sih? Jadi nanti kita mencoba untuk menyalakan lampu LED dengan menggunakan sentuhan. Disini kita akan menyentuh kabel jumpernya!. Soo daripada bingung, siapin alat-alat berikut ya!
A. Alat yang dibutuhkan
- ESP32
Ini juga bebas berapa pin, yang punyaku 30 pin versi DEVKIT V1 hehe. Yang penting ESP32 yapp!
2. Arduino IDE
Kalo belum ada arduino IDE, bisa di download di klik link ini ya! TUTORIAL ARDUINO IDE
3. Breadboard (830 titik)
Sebenernya bebas sih mau yang berapa titik. Tapi mending 830 titik aja, lebih luas, lebih puas :D
4. Jumper cable male to female
Nah sebenernya bisa aja pakai jumper wire male to male dan ESP32-nya diletakkan di breadboard. Cuman ESP32 punyaku pas dipaksa masuk ke breadboard, kaki ESP32 nya bengkok semua. Jadi buat yang ESP32 nya ngga bisa dicolok ke breadboard, pake jumper male to female aja ya biar ESP32 nya ngga rusak :)).
5. Jumper wire male to male
Nah kita perlu jumper wire male to male juga ya!
6. LED
Bebas gan warna apa aja, yang penting LED yang kecil kayak gini ya. Jangan LED lampu taman :)
7. USB CABLE
Ini buat nyolokkin ESP32 nya ke laptop/komputer temen-temen ya!
8. Resistor 330 Ohm
Nah ini juga resistor 330 ohm, biar lampunya tahan lama. Biar cahanya ngga terlalu terang juga. Bisa pake yang 220 ohm juga kok kalo ngga ada :D
9. Laptop
ini laptop penulis hehehe.
Nah kalo udah lengkap alat-alatnya apa aja, cus langsung ke skema!
B. Skema
Nah untuk skema pemasangannya, bisa dilihat pada gambar berikut ya!
Nah pada LED kaki yang panjang kita sambungkan dengan resistor, sedangkan kaki yang pendek kita sambungkan dengan ground. Lalu untuk resistor dipasang jumper male to female dengan tujuan RX2 pada ESP32. RX2 ini artinya kita memasang pada GPIO 16. Nah untuk ujung jumper yang akan kita pegang, kita pasang di D4. Nah D4 ini adalah default untuk touch0. Jadi di touch0 ini kita bisa memberikan ‘sensor’ sentuhan untuk mencoba menghidupkan LED nya.
C. Source Code
Nah untuk Arduino IDE nya, kita akan mengcompile code berikut. Maksud code nya apa nih? Nah dibawah sudah ada penjelasannya ya!. Ohiya source code-nya yang dicetak tebal ya. Nah source codenya diadaptasi dari randomnerdstutorial.com ya!
/* Mensetting untuk jumper yang akan kita sentuh pada pin nomor 4 dan pin yang tersambung ke LED bernomor 16 */
const int touchPin = 4;
const int ledPin = 16;const int threshold = 20;
/* Inisiasi nilai threshold, “t-tapi kenapa 20?” :(. Nah ini penjelasannya di bawah ya!*/int touchValue;
/* Variabel untuk menyimpan nilai touch pinvoid setup(){
Serial.begin(115200);
delay(1000);
/* Memberikan delay 1 detik untuk ditampilkan ke serial monitor *?
pinMode (ledPin, OUTPUT);
/* Menginisiasi ledPin sebagai output dari source code*/
}void loop(){
touchValue = touchRead(touchPin);
/* Membaca nilai dari touchPin*/Serial.print(touchValue);
/*Mengirimkan data ke port serial*/if(touchValue < threshold){
/* Check apakah nilai touchValue dibawah threshold */digitalWrite(ledPin, HIGH);
Serial.println(“ — LED on”);
/*Jika iya maka led di set ke HIGH */}
else{
digitalWrite(ledPin, LOW);
Serial.println(“ — LED off”);
/* Jika tidak maka ledPin di set ke LOW */}
delay(500);
/*Memberikan delay sebanyak 0.5 detik*/}
D. Analisis Percobaan
Nah dari analisis, ketika salah satu ujung dari jumper cable di sentuh. Lampu LED akan menyala. Sesuai dengan pembahasan source code, ketika jumper wire tidak disentuh. Nilai threshold akan bernilai besar, yaitu sekitar 70+ (sekitar 77). Pada code ketika nilai threshold berada diatas 20 maka LED akan mati.
Namun ketika jumper wire disentuh, nilai threshold akan mengecil (sekitar 17an). Dari source code, ketika nilai threshold dibawah 20, maka lampu akan diberi tegangan HIGH sehingga lampu akan menyala. Seperti gambar dibawah. Maka dari itu, nilai threshold di inisiasi dengan nilai 20 :D.
Jadi itulah kenapa LED bisa menyala ketika ujung jumper wire disentuh dan mati ketika sentuhannya di lepas :D.
BAGIAN 2. HALL EFFECT SENSOR
Oke, next kita bakal ke percobaan kedua. Percobaan kedua kita yaitu Hall Effect Sensor. Gass
A. Alat dan bahan
Alat-alat yang kita butuhin hanya ESP32, Micro USB cable untuk menghubungkan ESP32 ke laptop, dan magnet loh!.
B. Skema
Nah skemanya kita cuma menghubungkan ESP32 nya ke laptop kok. Lalu mencoba menempelkan magnet yang kutubnya positif maupun negatif keatas ESP32 nya!
C. Source Code
int val = 0;
/*Inisiasi nilai val = 0*/void setup() {
Serial.begin(9600);
}void loop() {
val = hallRead();
/* Membaca nilai pembacaan hall effect sensor*/Serial.println(val);
delay(1000);
}
/*Menampilkan hasilnya ke layar setiap 1000 ms atau setiap 1 detik. */
D. Analisis Percobaan
Nah dari analisis, ketika magnet belum ditempelkan. Nilai val pada source code bernilai berkisar 26. Seperti gambar dibawah ini.
Namun ketika salah satu ujung kutub magnet ditempelkan ke ESP32, pembacaan nilai dari serial monitor membesar. Nilai val berkisar 33 keatas. Seperti gambar dibawah ini.
Namun ketika kutub magnet dibalik, pembacaan val pada serial monitor mengecil. Nilai val berkisar 5 pada pembacaan di serial monitor. Seperti gambar dibawah ini.
Jadi hasil dari analisis adalah, pembacaan nilai di serial monitor akan bertambah ketika kutub magnet diletakkan diatas ESP32 dan juga pembacaan nilai pada serial monitor akan mengecil ketika kutub lainnya ditempelkan ke ESP32.
BAGIAN 3. HALL EFFECT SENSOR LED TEST
Nah kali ini kita akan melakukan experiment dengan hall effect sensor yang akan menyalakan LED pada pembacaan nilai val tertentu. Sok mulaii
A. Komponen
Komponennya sama kayak hall effect sensor, cuman ditambah resistor 330 ohm, magnet, dan jumper wire secukupnya!
B. Skema
Nah skemanya mirip sama yang touch sensor nih. Cuman bedanya, jumper untuk di sentuhnya di lepas aja ya :D.
C. Source Code
Nah codenya sama dengan sebelumnya, cuman bedanya kita menambahkan variabel ledPin untuk pembaaan ledPin dan juga conditional state. Yaitu ketika nilai val nya lebih besar dari 27, maka lampu akan diberi tegangan HIGH yang artinya lampu akan menyala. Namun ketika nilai val berada dibawah 27 maka lampu akan mati. Source codenya yang bercetak tebal ya!
int val = 0;
/* Variabel val akan sering dibahas dibawah setelah ini*/
const int ledPin = 16;void setup() {
Serial.begin(115200);
pinMode (ledPin, OUTPUT);
}void loop() {
val = hallRead();
Serial.println(val);
delay(1000);if (val > 27) {
digitalWrite(ledPin, HIGH);
}
/* Jika nilai val lebih dari 27 maka lampu diberi tegangan HIGH yang artinya lampu akan menyala */else {
digitalWrite(ledPin, LOW);
}
/* Jika kurang dari 27 maka lampu akan diberi tegangan LOW yang artinya lampu akan mati */
}
D. Analisis Percobaan
Ketika salah satu kutub magnet diletakkan diatas ESP32, nilai val akan lebih besar dari 27. Nah dari code, ketika val bernilai diatas 27, maka LED akan diberi tegangan HIGH yang artinya lampu akan menyala. Ilustrasi seperti gambar dibawah ini.
Namun ketika magnet dibalik, pembacaan nilai val pada serial monitor mengecil. Sehingga kondisi ketika val lebih kecil dari 27, LED diberi tegangan LOW yang artinya lampu akan mati. Ilustrasi seperti gambar dibawah ini.
Nah dari analisis percobaan, sesuai source code. Ketika nilai val (salah satu kutub ditempelkan ke ESP32) dan nilainya membesar (lebih dari 27) maka lampu LED akan menyala. Namun ketika nilai val lebih kecil dari 27, maka lampu akan mati.
BAGIAN 4. INTERNAL TEMPERATURE SENSOR
Nah bagian empat ini, kita akan mencoba melihat berapa suhu yang ada pada ESP32. Suhu ini bukan artinya suhu external ya, tapi ini suhu internal. Jadi kayak suhu komponen yang ada di ESP32 nya, bukan suhu ruangannya :D. Sok gasss
A. Komponen
Nah dari percobaan ini, kita hanya perlu menggunakan ESP32, Micro USB cable, dan laptop aja kok. Cuss langsung ke skema
B. Skema
Kita tinggal mencolokkan micro usb-nya ke ESP32 dan ke laptop ya!
C. Source Code
Source code kali ini kita adaptasi dari circuits4you.com ya hehehe, dan juga source code yang bercetak tebal ya!
#ifdef __cplusplus
extern “C” {
#endifuint8_t temprature_sens_read();
#ifdef __cplusplus
}
#endifuint8_t temprature_sens_read();
void setup() {
Serial.begin(115200);
}void loop() {
Serial.print(“Temperature: “)
Serial.print((temprature_sens_read() — 32) / 1.8);
Serial.println(“ C”);
delay(1000);
/* Mengubah temperatur dari fahrenheit ke celcius, lalu menampilkannya setiap 1000ms atau 1 detik*/}
D. Analisis Percobaan
Setelah kita mengcompile source code yang ada diatas. Lalu kita membuka serial monitor yang ada pada Arduino IDE. Dari percobaan, penulis mendapatkan bahwa temperatur ESP32 milik penulis bernilai 53.33 derajat celcius :D.
Untuk demo dari keempat percobaan diatas, bisa dilihat pada video dibawah ini ya!
Untuk itu, sekian tutorial ESP32 Part 3 tentang internal sensor ESP32. Mohon maaf jika ada kesalahan dari penulis yang masih belajar ini. Terima kasih telah membaca dan sampai jumpa di lain project!! :D
References:
1. www.randomnerdstutorial.com
2. www.circuits4you.com
3. www.arduino.cc
Best Regards,
Ilham Alvindo Riandova (18219063),
Sistem dan Teknologi Informasi,
Institut Teknologi Bandung.