ESP32 Strikes Again

Ichsan Sholeh
ESP32 DEVKIT — AR Tech
8 min readFeb 3, 2020

Minggu, 2 Februari 2020.

Halo! Di tanggal yang bagus ini, dimana sebagian besar orang-orang mengisi harinya dengan menjadikanya sebagai tanggal penting seperti melantunkan janji suci (asek) atau ngepublish karyanya (ditunggu ya project gue yang on-going hehe), gue justru mengisi dan mengakhiri hari ini dengan menulis tugas ke-2 mata kuliah sistem embedded ini hehe.

Pada tugas kali ini, terdapat 2 tujuan utamanya yaitu untuk mengontrol lampu LED eksternal dengan menggunakan sensor sentuh dari microcontroller ESP32, serta mencoba hall sensor yang memanfaatkan kekuatan medan magnet sebagai parameternya. Dalam melakukan tugas ini, kita akan membutuhkan alat-alat sebagai berikut:
1. ESP32 DOIT DEVKIT V1 Board tentunya
2. Kabel micro USB
3. Laptop
4. 5mm LED
5. 330 Ohm resistor
6. Breadboard
7. Kabel jumper
8. Magnet
9. Alumunium foil
Penampakan:

Jadi sebelumnya, di ESP32 ini udah ada banyak banget built-in sensornya. Dan untuk akses ke sensor itu, ada beberapa pin pada ESP32 yang bisa digunain (posisi pada pin tergantung tipe ESP32nya yaa). Supaya lebih kebayang bentuk ESP32nya, berikut penampakannya:

Nah untuk ESP32 DOIT DEVKIT V1, ada perbedaan posisi pin ground. Jika pada gambar posisinya berada pada pin kedua dari bawah di sebelah kiri, maka pada board ini posisinya berada pada pin kelima dari bawah pada bagian sebelah kiri. Supaya lebih jelas soal pin ini, kalian bisa pelajari di https://randomnerdtutorials.com/esp32-pinout-reference-gpios/.

Untuk tugas pertama kali ini, kita akan menggunakan 3 pin, yaitu GPIO4 (untuk sensor sentuh), GPIO16 (untuk penghubung LED), dan Ground (untuk penghubung rangkaian). Kalo semua peralatan udah siap, yuk langsung ke pengerjaannya!

TouchRead()

Pertama, kita akan mulai dari sensor sentuh ESP32 ini dulu. Untuk itu, kita bisa mulai dari persiapkan kodenya terlebih dahulu dengan cara klik File > Examples > ESP32 > Touch dan pilih TouchRead.

Selanjutnya, akan terbuka code box dari kode TouchRead seperti ini:

Lalu, hubungkan kabel jumper male-to-female ke GPIO4 atau Touch0. Selanjutnya, buka Tools, lalu buka Serial Monitor dengan baud rate sebesar 115200 (hal ini karena pada kode bagian “Serial.begin()” diisi dengan angka 115200).

Lalu kita akan melihat box baru yang berisi nilai-nilai yang ditampilkan tiap detiknya berupa respon dari sensor sentuh tersebut. Selanjutnya, kita dapat menyentuh ujung jumper yang telah dihubungkan dengan GPIO4 dan melihat pada box bahwa nilai pada tampilan setiap detiknya akan berkurang.

sumber: https://randomnerdtutorials.com/esp32-touch-pins-arduino-ide/

Kita juga dapat menggunakan Serial Plotter untuk melihat grafik dari respon sensor sentuh tersebut dengan membuka Tools, lalu buka Serial Plotter.

sumber: https://randomnerdtutorials.com/esp32-touch-pins-arduino-ide/

Mencari Nilai Ambang

Selanjutnya, kita akan mencari nilai ambang dari nilai yang ditampilkan oleh sensor sentuh pada ESP32 ini.

Pada bagian ini, kita akan membutuhkan Alumunium Foil sebagai konduktor pada kabel jumper agar memudahkan kita untuk menyentuh sensor tersebut.

Ambil potongan alumunium foil, lalu tempelkan potongan tersebut kepada kabel jumper yang berhubungan dengan sensor tersebut seperti gambar berikut:

sumber: https://randomnerdtutorials.com/esp32-touch-pins-arduino-ide/

Selanjutnya dengan kode yang sama dengan sebelumnya, maka kita bisa buka kembali Serial Monitor dan kita akan melihat bahwa nilainya berubah kembali.

sumber: https://randomnerdtutorials.com/esp32-touch-pins-arduino-ide/

Dalam kondisi normal ketika kita gak menyentuh pin, nilai yang munculakan berada pada diatas nilai 70, sedangkan saat disentuh nilainya akan berada pada dibawah 10.

Selanjutnya, kita dapat menentukan nilai ambang dari sensor ini. Sehingga jika nantinya sensor membaca nilai dibawah nilai ambang, maka lampu LED akan menyala. Jika berdasarkan percobaan ini, maka nilai ambang yang baik adalah 20 (contohnya).

Rangkaian

Selanjutnya, kita akan mulai menggunakan BreadBoard, 5mm LED, dan 330 Ohm resistor. Pada breadboard, buatlah rangkaian yang kurang lebih seperti pada gambar:

sumber: https://randomnerdtutorials.com/esp32-touch-pins-arduino-ide/

Bentuk rangkaian yang kita buat gak harus persis sama seperti pada gambar. Contohnya kalo kita gak punya kabel jumper male-to-male yang harus digunain seperti pada gambar diatas, kita bisa ubah posisinya supaya gak perlu menggunakan kabel tersebut. Karena pada intinya, rangkaian ini cuma wajib saling terhubung aja, kayak kamu sama aku hehe (apasi). Oiya, rangkaian yang gue buat ini bentuknya akan berbeda dengan contoh gambar yang gue kasih ya, karena pada tugas ini gue akan mencoba variasi dengan 2 lampu LED HEHEHEHE (emang suka gaya anaknya).

Kode Program

Nah, karena kode program bawaan yang ada pada program Arduino IDE cuma sensor sentuh biasa tanpa melibatkan lampu LED eksternal, maka kita perlu kode baru supaya rangkaian ini bisa bekerja. Hehe. Hehe. Hehe. Akhirnya ngoding beneran ya? huehue.

Tenang aja, kali ini kalian gaperlu ribet-ribet ngoding dulu karena kodenya udah gue siapin (padahal mah gue juga dapet dari https://randomnerdtutorials.com/esp32-touch-pins-arduino-ide/ hehe). Berikut kodenya:

// set pin numbers
const int touchPin = 4;
const int ledPin = 16;

// change with your threshold value
const int threshold = 20;
// variable for storing the touch pin value
int touchValue;

void setup(){
Serial.begin(115200);
delay(1000); // give me time to bring up serial monitor
// initialize the LED pin as an output:
pinMode (ledPin, OUTPUT);
}

void loop(){
// read the state of the pushbutton value:
touchValue = touchRead(touchPin);
Serial.print(touchValue);

// check if the touchValue is below the threshold
// if it is, set ledPin to HIGH
if(touchValue < threshold){
// turn LED on
digitalWrite(ledPin, HIGH);
Serial.println(“ — LED on”);
}
else{
// turn LED off
digitalWrite(ledPin, LOW);
Serial.println(“ — LED off”);
}
delay(500);
}

Nah, kalo untuk kode yang gue gunain sendiri ada sedikit modifikasi dikarenakan pada tugas ini gua mencoba untuk menggunakan 2 lampu LED. berikut kodenya:

// set pin numbers
const int touchPin = 4;
const int ledPin = 16;
const int ledPin2 = 17;

// change with your threshold value
const int threshold = 20;
// variable for storing the touch pin value
int touchValue;

void setup(){
Serial.begin(115200);
delay(1000); // give me time to bring up serial monitor
// initialize the LED pin as an output:
pinMode (ledPin, OUTPUT);
pinMode (ledPin2, OUTPUT);
}

void loop(){
// read the state of the pushbutton value:
touchValue = touchRead(touchPin);
Serial.print(touchValue);

// check if the touchValue is below the threshold
// if it is, set ledPin to HIGH
if(touchValue < threshold){
// turn LED on
digitalWrite(ledPin, HIGH);
Serial.println(“ — LED on”);
digitalWrite(ledPin2, HIGH);
Serial.println(“ — LED on”);
}
else{
// turn LED off
digitalWrite(ledPin2, LOW);
Serial.println(“ — LED off”);
digitalWrite(ledPin, LOW);
Serial.println(“ — LED off”);
}
delay(500);
}

Pada kode ini, nantinya program akan membaca nilai yang masuk melalui sensor. Jika nilai yang diterima kurang dari nilai ambang yang sudah ditentukan di program, maka lampu LED akan menyala.

Testing

Selanjutnya, kita dapat mencoba rangkaian kita dengan melakukan upload kode program.

Setelah program terupload, kita dapat melakukan tes apakah rangkaian kita dapat bekerja dengan baik atau tidak.

Jika dapat bekerja dengan baik, Yeay! Selamat! Kita sudah dapat berhasil memprogram sensor sentuh pada ESP32 ini dengan baik!

Hall Sensor

Setelah dengan sukses kita dapat mengerjakan tugas sebelumnya, selanjutnya kita akan mengerjakan tugas kedua yang menggunakan hall sensor, yeay!

Nah, kalo pada tugas sebelumnya kita tau bahwa sensor yang ada di ESP32 itu ada banyak dan tau hall sensor adalah salah satunya, kita juga harus tau nih bahwa sensor ini posisinya bukan berada di pin seperti sensor sentuh sebelumnya, melainkan ada di belakang kotak metal yang ada di tengah ESP32.

Sumber: https://randomnerdtutorials.com/esp32-hall-effect-sensor/

Sensor ini bekerja dengan cara mendeteksi medan magnetik dari sekitarnya. Semakin kuat medan magnetnya, semakin besar nilai yang dikeluarkan pada sensor nantinya.

Beruntungnya, kode program ini udah disediain di Arduino IDE yang artinya kita gak perlu nulis-nulis kode programnya sendiri seperti sebelumnya. Cara untuk membuka kode program ini adalah dengan membuka File > Examples > ESP32 dan memilih HallSensor

Selanjutnya akan keluar code box-nya seperti ini:

Selanjutnya kita hanya perlu menghubungkan ESP32 ke laptop, dan mengupload kode programnya seperti biasa.

Setelah kode berhasil terupload, maka sensor telah dapat digunakan. Untuk melihat output nilai dari sensor, kita dapat menggunakan Serial Monitor atau Serial Plotter dari Tools seperti yang telah kita gunakan pada tugas sebelumya.

Nilai keluaran yang dihasilkan pada sensor, nantinya akan dipengaruhi oleh besar kekuatan dari medan magnet, serta kepolaran pada magnet tersebut. Jika kita melihat pada gambar diatas, nantinya nilai keluaran yang dihasilkan dapat berupa positif atau negatif bergantung dengan kepolaran magnetnya.

Kalo pada saat kalian melakukan tes ini dan kalian gak menemukan perubahan yang signifikan pada nilai keluaran di sensor, jangan khawatir! Itu bukan berarti kalian gagal dalam melakukan pemrogramannya. Namun, hal ini dapat terjadi karena magnet yang digunakan memiliki medan magnet yang tidak begitu kuat. Jadi, asalkan nilai keluarannya ada kenaikan atau penurunan, artinya percobaan kita pada tugas ini berhasil. Yeay!

Sekian tulisan untuk tugas kali ini. Semoga tulisan kali ini dapat bermanfaat, dan sampai jumpa!

Enjoy!

--

--

Ichsan Sholeh
ESP32 DEVKIT — AR Tech

Information System and Technology Student at Bandung Institute of Technology