Skip to main content

Internal sensor ESP32 (Hall sensor & Touch sensor)

Pada percobaan kali ini kita akan mencoba menggunakan sensor internal yang ada di dalam ESP-32. Board ESP 32 di dalamnya terdapat sensor-sensor bawaan yaitu sensor sentuh (touch sensor), sensor efek hall dan pad sebagian versi ESP 32 memiliki sensor suhu. Pada percobaan section pertama ini, kita akan membaca nilai sensor dengan menggunakan serial terminal yang ada di Arduino IDE. Kemudian pada section kedua, kita akan menggunakan sensor internal tersebut untuk membangunkan ESP 32 dari mode tidur (deep sleep).

Weekly project 03 | Sistem Penginderaan


Section pertama

Persiapan

Komponen yang perlu kita siapkan adalah seperti dalam tabel berikut.

No. Nama Komponen
1 Board ESP32 Devkit V1
2 Jumper wire
3 Breadboard

Rangkai seluruh komponen seperti gambar dibawah ini.


Kode program

Buat sketch baru di Arduino IDE dengan memilih menu File > New Sketch dan copy-paste kode berikut.

// ESP 32 touch test
// Just test touch pin 
// Proyek ke 3

void setup()
{
  Serial.begin(115200);
  delay(1000);
}

void loop()
{
  Serial.print("Touch sensor : ");
  Serial.print(touchRead(4));
  Serial.println();
  Serial.print("Hall sensor : ");
  Serial.print(hallRead());
  Serial.println();
}

Penjelasan program

Kode sketch diatas merupakan kode yang digunakan untuk menampilkan hasil pengukuran internal sensor hall effect dan touch. Fungsi yang  digunakan untuk membaca internal sensor adalah touchRead() untuk sensor sentuh dan hallRead() untuk sensor efek hal. hasil pengukuran tersebut kemudian dikirim melalui protokol serial yang dapat dilihat dengan Serial Monitor di tools Arduino IDE.


Upload program

Setelah kita memahami program diatas, let's compile. Upload sketch tersebut kedalam ESP32 dengan menekan icon upload. Detail proses upload, dapat mengikuti panduan dalam percobaan di link ini. Untuk melihat nilai pengukuran sensor internal, kita dapat menggunakan serial monitor yang ada di Arduino IDE. Adapun untuk membuka serial monitor tersebut dapat mengikuti langkah-langkah berikut:

Langkah pertama, membuka menu Tools > Serial Monitor.

menu serial monitor.png

Langkah kedua, pastikan baudrate yang kita gunakan sesuai dengan yang kita atur dalam kode sketch diatas Serial.begin(115200) disini kita menggunakan baudrate 115200.

serial monitor box.png

Hasil dari percobaan kita seperti yang ada dalam video berikut.


Section kedua

Pada percobaan section kedua ini sebenarnya konsepnya ringan saja, hanya mencoba memanfaatkan sensor touch untuk membangunkan ESP32 yang kita atur dalam mode deep sleep. Hanya saja kebetulan saya kedatangan mainan baru nih, yaitu layar Round TFT. Komponen ini terbeli karena ada kegiatan kantor yang mengharuskan saya membuat IoT underwater untuk memonitoring kapal. Nah pada saat belanja, kami kurang 100 ribu lagi untuk dapat free ongkos kirim, jadi ya terpaksa beli Round TFT karena harganya 90 ribu. Daripada teman baru kita ini nganggur (Round TFT), ada baiknya kita gunakan untuk percobaan kita.

Sebagian besar aktifitas kita di section dua ini adalah melakukan konfigurasi round TFT untuk dapat memunculkan animasi gambar berwarna (blink-eye). Animasi ini kita gunakan sebagai indikator yang menunjukan bahwa rangkaian ESP32 sedang dalam mode deep sleep atau sedang wakeup.


Persiapan

Mari kita persiapkan beberapa komponen dalam tabel berikut.

No. Komponen
1. Development-board ESP32 Devkit V1
2. Round TFT GC9A01 (240 x 240) 1.28"
4. Jumper wires
5. Breadboard

Skema rangkaian dari Round TFT ke ESP32 menggunakan protokol komunikasi SPI. Hem...., apa itu SPI? (Serial Peripheral Interface) adalah protokol komunikasi serial sinkron yang memungkinkan ESP32 untuk mengirim dan menerima data dengan layar LED. Protokol ini menggunakan 4 kabel: pin data (MOSI), pin clock (SCK), pin pilih chip (CS), dan pin ground (GND). ESP32 bertindak sebagai master SPI, sedangkan layar LED bertindak sebagai slave.

Round TFT
ESP32
Vcc 3.3V
GND GND
DIN / SDA  23  
CLK / SCK / SCL    18  
CS   15  
DC    2  
RST    4  

Skema rangkaiannya adalah seperti di bawah ini. Bagi teman-teman yang ingin membuat ilustrasi rangkaian seperti dibawah ini dapat menggunakan aplikasi Fritzing ya. Aplikasi ini gratis, dapat diunduh di laman https://fritzing.org/download/ .
rangkaian advance_bb.png

Sebelum membuat kode program, terlebih dahulu kita harus menginstall dan mengkonfigurasi driver Round TFT agar dapat kita gunakan. Pertama-tama kita pilih icon library kemudian cari tft_espi. Pilih dan install TFT_sSPI dari Bodimer, seperti gambar berikut.

 

Karena yang kita install adalah driver TFT untuk beberapa tipe sekaligus, maka kita perlu menyesuaikan konfigurasi driver agar support untuk GC9A01 (round TFT yang kita miliki). Caranya adalah dengan mengedit file dalam library yang telah kita install. Pertama kita buka folder Arduino > Library > TFT_eSPI.

Screenshot 2024-03-15 at 21.30.14.png

Langkah kedua adalah dengan mengedit dua file paling bawah yaitu User_setup.h dan User_Setup_Select.h ubah parameter didalamnya sebagai berikut:

Pada file User_Setup.h kita comment pada line 45, karena tipe ILI9341 bukan tipe yang akan kita gunakan. Namun yang akan kita gunakan adalah di line 65 yaitu GC9A01.

Pada file User_Setup_Select.h kita uncomment pada line 80, pada code #include <User_Setups/Setup46_GC9A01_ESP32.h> hasilnya akan terlihat seperti dibawah ini.

sedudah.png

Sekarang library TFT_eSPI sudah dapat kita gunakan untuk menampilkan ouptut dari ESP32.


Kode program
Penjelasan

Kode program

 yang akan kita gunakan untuk membuat animasi mata berkedip bersumber dari repository dalam tabel berikut:

Soruce codehttps://github.com/thelastoutpostworkshop/ESP32LCDRound240x240Eyes 

Kita download dalam format *.zip, kemudian kita ekstraksi file di dalamnya  ke direktori percobaan kita.

Screenshot 2024-03-15 at 22.01.16.png

Kita ubah nama foldernya menjadi weekly_project3, nama file di dalamnya ESP32LCDRound240x240Eyes.ino juga harus diubah sama persis dengan nama foldernya (weekly_project3). Karena struktur project data didalam Arduino IDE mengharuskan demikian, jika tidak maka file kita tidak akan terbuka.

Screenshot 2024-03-15 at 22.05.23.png

Setelah selesai, kemudian buka file weekly_project3.ino dan kita modifikasi isinya agar dapat kita gunakan untuk percobaan menghidupkan ESP32 dari mode deep sleep. Kita modifikasi dengan kode sebagai berikut.

 

 


Upload program

Hasil percobaan

Referensi:

  1. https://www.youtube.com/watch?v=pmCc7z_Mi8I
  2. https://www.waveshare.com/1.28inch-lcd-module.htm

jangan lupa titik-koma;