Project 3 : Built-In Sensor in ESP32
Haloo! 🙌🏻
Disini saya akan berbagi terkait projek 3 mata kuliah sistem embedded yang sudah saya lakukan. Projek 3 ini yaitu memanfaatkan sensor yang terdapat secara built-in pada ESP32. ESP32 memiliki 3 sensor built-in, yaitu sensor sentuh (touch sensor), sensor magnet (hall-effect sensor), dan sensor suhu (temperature sensor).
Touch Sensor
Sebelum memulai percobaannya, alat dan bahan yang harus disiapkan yaitu
Menyusun Rangkaian
ESP32 memiliki 10 GPIO yang dapat merespon sentuhan (sensor sentuhan). GPIO ini dapat merasakan apapun yang memiliki electrical charge, seperti kulit manusia.
Sambungan-sambungan yang ada pada rangkaian :
- Hubungkan ground ke bagian negatif dari breadboard(-).
- Hubungkan resistor 330 Ω ke pin positif (anoda) dari lampu LED (kaki lampu LED yang panjang) dan ke jumper wire yang terhubung ke pin ESP32 (contoh yang saya gunakan adalah pin D19).
- Hubungkan jumper wire yang terhubung ke bagian negatif dari breadboard(-) ke pin negatif (katoda) dari lampu LED (kaki lampu LED yang pendek).
- Sambungkan Jumper Wire ke salah satu pin pada ESP32 yang memiliki sensor sentuhan (contoh yang saya gunakan adalah pin D4).
Memprogram Touch Sensor pada Arduino IDE
Pada prosedur void loop(), fungsi touchRead berfungsi untuk membaca respon sentuhan yang ada pada GPIO 4.
Pada code tersebut, terdapat konstanta treshold yang artinya jika angka yang ada pada serial monitor (touchValue) >20, maka lampu akan mati.
Untuk mengetahui apakah respon sentuhan tersebut terbaca oleh ESP32, maka digunakan alat serial monitor dan serial plotter pada Arduino.
Pada serial monitor tersebut, angka yang kecil menunjukkan intensitas sentuhan yang besar dan angka yang besar menunjukkan intensitas sentuhan yang rendah. Ketika jumper wire tidak disentuh sama sekali, angka yang muncul adalah angka 70-an. Hal yang sama ditunjukkan pada serial plotter.
Hall Effect Sensor
Alat dan bahan yang harus disiapkan sama seperti touch sensor, tetapi ditambah dengan magnet.
Magnet yang saya gunakan adalah magnet kulkas.
Menyusun Rangkaian
Sambungan-sambungan yang ada pada breadboard sama dengan sambungan pada rangkaian touch sensor.
Memprogram Hall Effect Sensor pada Arduino IDE
Pada prosedur void loop(), fungsi hallRead berfungsi untuk membaca medan magnet yang ada di sekitar ESP32.
Pada code tersebut, terdapat konstanta treshold yang artinya jika angka yang ada pada serial monitor (hallValue) >100, maka lampu akan menyala.
Untuk mengetahui apakah medan magnet tersebut terbaca oleh ESP32, maka digunakan alat serial monitor pada Arduino IDE.
Ketika magnet didekatkan ke ESP32, angka yang muncul pada serial monitor sebesar di atas 100. Sebenarnya, angka yang muncul bisa bernilai negatif tergantung pada kutub magnet mana yang didekatkan ke ESP32.
Namun, selama saya melakukan percobaan ini, angka yang muncul ketika magnet didekatkan selalu sebesar di atas 100 dan tidak pernah negatif. Hal tersebut mungkin dikarenakan saya menggunakan magnet kulkas dan yang bisa didekatkan ke ESP32 hanya kutub tersebut, sedangkan kutub yang satunya tidak bisa didekatkan.
Temperature Sensor
Alat yang diperlukan hanyalah ESP32 dan USB type-b.
Memprogram Temperature Sensor pada Arduino IDE
Untuk mengetahui suhu yang terbaca oleh ESP32, maka digunakan alat serial monitor pada Arduino IDE.
Variasi yang saya lakukan hanya pada hall effect sensor dengan menambahkan 1 lampu LED.
Tampilan
Ketika magnet didekatkan ke ESP32, lampu biru akan menyala dan lampu kuning mati. Sebaliknya, lampu kuning akan menyala dan lampu biru mati ketika magnet dijauhkan dari ESP32.
Code
// set pin numbers
const int ledPinB = 5;
const int ledPinK = 23;
// change with your threshold value
const int threshold = 100;
// variable for storing the touch pin value
int hallValue;void setup() {
Serial.begin(115200);
delay(100); // give me time to bring up serial monitor
// initialize the LED pin as an output:
pinMode (ledPinB, OUTPUT);
pinMode (ledPinK, OUTPUT);
}void loop() {
// read hall effect sensor value
hallValue = hallRead();
// print the results to the serial monitor
Serial.print(hallValue);if(hallValue > threshold){
// turn LED on
digitalWrite(ledPinB, HIGH);
digitalWrite(ledPinK, LOW);
delay(500);
Serial.println(" - LED Blue on");
} else{
// turn LED off
digitalWrite(ledPinB, LOW);
digitalWrite(ledPinK, HIGH);
delay(500);
Serial.println(" - LED Yellow on");
}
delay(1000);
}
Sekian dari saya, terima kasih!
Amelia Wahyu Dewanti
18220043 / K01