top of page

3rd Project: ESP32 Internal Sensor

Halo gaes, aku Vebby balik lagi nih. Dari post sebelumnya kita sudah belajar soal cara pakai ESP32 dan juga digital Input/Output dari ESP32. Nah, di post ini kita bakal bereksperimen yang menarik banget. Kita akan pakai sensor internal ESP32. Sebelum lanjut ke pembahasan kali ini, kalian dapat terlebih dahulu mengunjungi blog-ku sebelumnya dengan klik link ini yaa! https://vebbyebih.wixsite.com/projectesp32/post/2nd-project-input-output-esp32


Nah... Blog kali ini akan membahas project ke-3, yaitu aku akan memanfaatkan sensor yang terdapat secara built-in pada ESP32, yaitu sensor sentuh (touch sensor), sensor magnet (hall-effect sensor), dan sensor suhu (temperature sensor). Mau tau bagaimana caranya? let’s get started!


Komponen APA saja yang mesti kita persiapkan?


1. ESP32


2. Breadboard


3. Male to Male Jumper Cable

4. Micro-USB Cable

5. 5mm LED Light



6. Resistor



7. Laptop / PC yang telah terinstal Arduino IDE



8. Magnet bebas apa saja (untuk Project Hall Effect saja).


  • Touch sensor ESP32

Pertama-tama kita akan mencoba memanfaatkan sensor sentuh pada ESP32 terlebih dahulu.


1. Connect ESP32 ke PC / Laptop



2. Setup board seperti gambar di bawah ini



3. Buka Arduino IDE untuk menulis dan mengunggah program ke ESP32



4. Konfigurasikan Arduino IDE dengan memilih menu Board on board “DOIT ESP32 DEVKIT V1” (Tools > Board > ESP32 Arduino > DOIT ESP32 DEVKIT V1) dan Pilih menu Port dan pilih port yang sesuai

5. Letakkan Kode di Arduino IDE (Source Code : https://randomnerdtutorials.com/esp32-touch-pins-arduino-ide/)

// Inisiasi nomor pin

const int touchPin = 15;

const int ledPin = 5;

// Nilai treshold/ toleransi sentuh

const int threshold = 35;

// Variabel untuk menyimpan nilai yang dibaca sensor

int touchValue;

void setup(){

delay (1000);

// Menginisiasi ledPin sebagai output

pinMode (ledPin, OUTPUT);

}

void loop(){

// Membaca nilai sensor

touchValue = touchRead (touchPin);

if(touchValue < threshold) {

digitalWrite(ledPin, LOW);

} // Apabila touchValue < treshold (sedang tidak disentuh),

else{

digitalWrite(ledPin, HIGH);

}

delay (500);

Dan tangkapan pada layar saya seperti ini..


6. click tombol “Verify” (Checklist)



7. click tombol “Upload” (Right Arrow) sampai “Done Uploading”



8. Wait for loading and the result is!



9. Troubleshooting

Saat pertama kali mencoba lampu LED saya sempat tidak menyala padahal dilihat dari serial monitor program sudah benar. Ternyata kesalahan berada di setup boardnya. Awalnya saya mencolokkan jumper wire merah yang terhubung ke ground di titik yang jauh dari colokkan jumper wire bitu. Setelah saya pindah bersebelahan eksperimen menjadi berhasil. (Note: jika ingin menyambung sirkuit melalui power bus disarankan colok berdekatan, itu saran dari saya)


  • Hall Effect sensor ESP32

Tidak berbeda dengan percobaan touch sensor yang saya lakukan, pada percobaan hall effect ini pun LED saya berhasil menyala. Komponen yang dibutuhkan serta skema yang perlu dirangkai pada percobaan ini hampir mirip dengan percobaan sebelumnya. Hanya saja ada tambahan komponen yaitu magnet karena percobaan hall effect ini akan mendeteksi medan magnet. Selain itu kabel jumper yang dibutuhkan berkurang satu karena kita tidak akan memberi sentuhan melalui kabel jumper melainkan menggunakan magnet yang akan didekatkan ke bagian besi pada komponen ESP32. Lalu langkah apa saya yang mesti kita lakukan, mari kita lihat tutorialnya kembali.


1. Connect ESP32 ke PC / Laptop



2. Buka Arduino IDE untuk menulis dan mengunggah program ke ESP32



3. Konfigurasikan Arduino IDE dengan memilih menu Board on board “DOIT ESP32 DEVKIT V1” (Tools > Board > ESP32 Arduino > DOIT ESP32 DEVKIT V1) dan Pilih menu Port dan pilih port yang sesuai

4. Letakkan Kode di Arduino IDE (Source Code : https://randomnerdtutorials.com/esp32-hall-effect-sensor/)

// Simple sketch to access the internal hall effect detector on the esp32.

// values can be quite low.

// Brian Degger / @sctv

int val = 0;

void setup() {

Serial.begin(9600);

}

// put your main code here, to run repeatedly

void loop() {

// read hall effect sensor value

val = hallRead();

// print the results to the serial monitor

Serial.println(val);

delay(1000);

}

Dan tangkapan pada layar saya seperti ini..


5. Click tombol “Verify” (Checklist)



6. Click tombol “Upload” (Right Arrow) sampai “Done Uploading”



7. Buka serial monitor (icon mirip gambar mata di sudut kanan atas), set baud rate sesuai dengan program (9600)


8. Akan muncul angka secara terus menerus dengan perbedaan nilai yang tidak signifikan


9. Kemudian tempelkan magnet ke ESP32 (bagian kotak besi di tengah ESP32 Development Board) untuk mendekatkan magnet ke dimana Hall Sensor berada


10. Perhatikan perubahan nilai pada serial monitor

Saya juga mencoba mendekatkan dengan kutub magnet negatif lho gaes cuma lupa di dokumentasiin, hasilnya nilai pada serial monitor juga ikutan negatif.


11. Sedikit Mengenai Kode Program


Yang menarik utk dibahas dari kode program adalah fungsi hallRead(). Peran hallRead() membaca nilai output dari sensor hall dan mengembalikan hasilnya dalam variabel yang dideklarasikan yaitu ‘val’ pada kode program diatas.


  • Temperature sensor ESP32

1. Connect ESP32 ke PC / Laptop



2. Buka Arduino IDE untuk menulis dan mengunggah program ke ESP32



3. Konfigurasikan Arduino IDE dengan memilih menu Board on board “DOIT ESP32 DEVKIT V1” (Tools > Board > ESP32 Arduino > DOIT ESP32 DEVKIT V1) dan Pilih menu Port dan pilih port yang sesuai

4. Letakkan Kode di Arduino IDE (Source Code : https://circuits4you.com)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

/*

 * https://circuits4you.com

 * ESP32 Internal Temperature Sensor Example

 */


 #ifdef __cplusplus

  extern "C" {

 #endif


  uint8_t temprature_sens_read();


#ifdef __cplusplus

}

#endif


uint8_t temprature_sens_read();

//====================================================

// Setup

//====================================================

void setup() {

  Serial.begin(115200);

}


//====================================================

// Loop

//====================================================

void loop() {

  Serial.print("Temperature: ");

  

  // Convert raw temperature in F to Celsius degrees

  Serial.print((temprature_sens_read() - 32) / 1.8);

  Serial.println(" C");

  delay(1000);

}

Dan tangkapan pada layar saya seperti ini..


5. Click tombol “Verify” (Checklist)



6. Click tombol “Upload” (Right Arrow) sampai “Done Uploading”



7. Buka serial monitor di baud rate 115200


8. Serial monitor akan menampilkan suhu inti ESP32 dalam satuan derajat celcius



9. Sedikit Mengenai Kode Program


  • uint8_t adalah jenis bilangan bulat unsigned dengan panjang 8 bit

  • temperature_sens_read() adalah fungsi untuk membaca nilai yang diterima dari sensor temperature.

  • Pada line kode 31 kita lihat bahwa nilai yang dibaca dari sensor temperatur dikurangi dengan 32 kemudian dibagi dengan 1.8. Hal ini dilakukan untuk mengubah suhu dari Farenheit ke Celcius. Nilai yang dibaca dari sensor temperatur ESP32 awalnya dalam Farenheit.





Comments


bottom of page