Project#2 ON/OFF LED dengan ESP32 melalui GPIO (Digital Input/Output)

 


    Halo, apa kabar semuanya? Perkenalkan kembali saya Muhammad Vito Ibrahim. Pada kesempatan kali ini saya akan mencoba menyalakan LED dengan pushbutton atau saklar tombol menggunakan mikrokontroler ESP32 yang secara keseluruhan sistem saling terhubung melalui input/output digital, wahh?? apa itu??, akan saya jelaskan lebih lanjut di bawah. 
Nah , project kali ini juga merangkap sebagai rekam jejak atau laporan saya untuk mata kuliah ( II2260 Sistem Embedded ). Agar lebih detail kali ini saya akan memanfaatkan General Purpose Input Output atau dapat disingkat GPIO, jika diterjemahkan secara harfiah ke Bahasa Indonesia adalah masukan dan keluaran untuk berbagai tujuan. Sebelum memulai project, akan dijelaskan terlebih dahulu mengenai perangkat dan komponen yang akan digunakan.


GPIO ESP32

Perangkat dan komponen yang digunakan:


1. Mikrokontroler ESP32 Development Board
2. Arduino IDE
3. Laptop/Desktop dengan USB port
4. Kabel micro usb to USB A ( kabel data/charger biasanya )
5. Breadboard
6. LED 5mm (warna LED bebas)
7. Resistor 10k
8. Resistor 330k
9. Kabel Jumper ( siapkan ketiga jenis model kabel yaitu F-F, F-M, dan M-M untuk antisipasi)

Penjelasan beberapa perangkat dan komponen:


1. Mikrokontroler adalah sebuah komputer kecil yang dikemas dalam bentuk chip IC (Integrated Circuit) dan dirancang untuk melakukan tugas atau operasi tertentu.

2. ESP-32 Development Board adalah adalah mikrokontroler chip dengan rangkaian sistem hemat biaya dan rendah daya pada dilengkapi Wi-Fi yang terintegrasi dan Bluetooth.

3. Arduino IDE (Integrated Development Environment) adalah software yang di gunakan untuk memprogram di arduino, dengan kata lain Arduino IDE sebagai media untuk memprogram board Arduino. Pada kali ini bisa juga digunakan untuk memprogram mikrokontoler lainnya yaitu ESP32 dengan konfigurasi tambahan.

4. Breadboard adalah papan tempat komponen elektronik tanpa harus disolder.

5. Kabel jumper adalah kawat listrik, atau kabel, dengan konektor atau pin di setiap ujungnya, yang biasanya digunakan untuk menghubungkan komponen pada breadboard.

6. Resistor merupakan komponen elektronik yang memiliki dua pin dan didesain untuk mengatur tegangan listrik dan arus listrik atau secara ringkas merupakan penghambat arus listrik misalnya untuk mencegah kerusakan pada komponen yang dialiri arus listrik berlebih .

7. Push Button adalah saklar yang berupa tombol dan berfungsi sebagai pemutus atau penyambung arus listrik dari sumber arus ke beban listrik.

8. Lampu LED adalah lampu yang dialiri listrik yang pancarannya merupakan reaksi dioda.


Pendahuluan :


Pada bagian bawah Board ESP32 terdapat pin-pin yang menonjol cukup panjang. Pin tersebut disebut sebagai GPIO atau selengkapnya adalah General Purpose Input Output. Secara umum pin ini memiliki fungsi sebagai antarmuka ESP32 untuk berkomunikasi dengan komponen atau perangkat lainnya.GPIO dapat digunakan untuk menerima sinyal input digital atau analog, dan juga mengeluarkan sinyal output digital atau analog.

Berikut adalah contoh pin GPIO yang terdapat pada ESP32 versi 36pin

Oleh karena itu, project kali ini saya akan memanfaatkan pin yang terdapat pada board ESP32 agar dapat terhubung dengan pushbutton yang nantinya pushbutton akan menyalakan lampu LED. 

Langkah pengerjaan :

1. Menyiapkan ARDUINO IDE yang telah dikonfigurasi agar dapat terhubung dengan board ESP32.



2. Memasukkan kode program berikut pada IDE ARDUINO.

// pasang nomor pin 
const int buttonPin = 4;  // nomor pin yang terhubung ke pushbutton
const int ledPin =  5;    // nomor pin yang terhubung ke LED

// variabel untuk menyimpan status tombol pin
int buttonState = 0;

void setup() {
  Serial.begin(115200);  
  // memulai pushbutton sebagai input
  pinMode(buttonPin, INPUT);
  // memulai LED sebagai output
  pinMode(ledPin, OUTPUT);
}

void loop() {
  // membaca nilai status dari pushbutton
  buttonState = digitalRead(buttonPin);
  Serial.println(buttonState);
  // mengecek apakah pushbutton ditekan.
  // jika ditekan maka status pushbutton adalah HIGH
  if (buttonState == HIGH) {
    // maka menghidupkan LED
    digitalWrite(ledPin, HIGH);
  } else {
    // jika tidak ditekan akan mematikan LED karena status low
    digitalWrite(ledPin, LOW);
  }
}

Apa dan bagaimana konsep-konsep yang terdapat pada baris kode tersebut?

const int buttonPin = 4;
const int ledPin = 5;

Pushbuttton terhubung ke GPIO 4 dan LED terhubung ke GPIO 5. Di Arduino IDE, 4 adalah nilai untuk GPIO 4 dan 5 adalah nilai untuk GPIO 5.


int buttonState = 0;

Kode inii membuat variabel untuk menahan status tombol. Secara default nilainya adalah 0 yang berarti status tombol tidak ditekan.


pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);

Pada kode ini pushbutton diinisialisasi sebagai INPUT, sedangkan LED sebagai OUTPUT. Lalu fungsi pinMode untuk membuat status pin yang dimaksud.

Pada bagian loop () diisi bagian yang membaca status tombol dan mengatur status LED.


buttonState = digitalRead(buttonPin);

Kode ini membaca status dari pushbutton dan memasukkan status ke variabel buttonState

if (buttonState == HIGH) {
  digitalWrite(ledPin, HIGH);
}
else {
  digitalWrite(ledPin, LOW);
}

Jika status pushbutton HIGH atau 1 maka LED menyala, sedangkan LOW atau 0, LED akan mati.


3. Menyiapkan Breadboard dan memasang ESP32.

Pada kali ini saya mencoba menggunakan 2 Breadboard agar memudahkan jalannya project kali ini juga antisipasi agar ESP32 tidak rentan rusak karena diletakkan pada breadboard dan tidak dipegang langsung oleh tangan. Nanti saya akan juga menunjukkan cara atau versi saya sendiri dengan hanya menggunakan satu breadboard.










4. Menghubungkan serta memasang komponen dan kabel pada breadboard mengukuti skema berikut.



Umumnya yang harus terpasang seperti pada skema di atas. Tetapi agar lebih aman dan menggunakan 2 breadboard berikut adalah skema versi saya sendiri. Dengan memegang konsep pada bagian pinggir breadboard yang terdapat simbol plus dan minus aliran arus adalah seri atau vertikal sedangkan pada bagian tengah breadboard aliran arus mengalir paralel atau horizontal, tidak perlu terlalu mengikuti skema asalakan setiap komponen dan kabel terhubung sesuai dengan pin atau antar komponen lainnya. Oleh karena itu tidak perlu terpaku pada skema yang umum, saya dapat memvariasikan pemasangan komponen-komponen ke breadboard.






a. bagaimana jika saya hanya memiliki satu breadboard? Apakah bisa? Jawabannya adalah ya, kita bisa menghubungkan langusng pin GPIO dari ESP32 dengan menggunakan kabel jumper F-M seperti pada  contoh berikut.















Dengan bermodal rasa keingintahuan dan penasaran, konsep dan nekat ternyata dengan cara ini pun saya berhasil asalkan pemasangan antar komponen sesuai. Perhatian! dengan pemasangan versi saya ini, perlu berhati-hati ketika memegang board ESP32 karena tidak menggunakan breadboard. 











5. Upload program ke ESP32

Lalu compile dan upload! 



Pada ESP32 yang saya gunakan ketika proses uploading saya harus sambil menekan tombol reset karena ESP32 saya telah terisi program blink sebelumnya sehingga akan mereset ESP32 dan dapat dimasukkan program baru. Jika tidak, proses uploading program akan gagal.

Yay! berhasil.


6. Demo kedua versi, menggunakan satu breadboard dan dua breadboard.


2 breadboard

1 breadboard


Error dan Troubleshooting :

Pada project kali ini, dapat dibilang saya beruntung karena hampir semua berjalan cukup lancar dan tidak muncul berbagai permasalahan atau error yang rumit atau complicated, namun pada awal mencoba saya sempat tidak berhasil disebabkan kesalahan pada pemasangan kabel jumper untuk ground ke breadboard sehingga LED tidak menyala ketika pushbutton ditekan. 


Awalnya saya memasang kabel jumper ke breadboard seperti ini.


Masalah teratasi ketika memasang kabel jumper bukan pada bagian power/pinggir. Hal ini membuat saya teringat konsep arus yang mengalir pada breadboard. Pada bagian pinggir breadboad arus akan mengalir vertikal/memanjang searah sisi panjang breadboard sedangkan pada bagian tengah arus akan mengalir secara horizontal atau searah sisi lebar pada breadboard. Seperti pada contoh berikut :



Kompilasi video pengerjaan :








Kesimpulan:

Dengan menggunakan GPIO, ESP32 dapat berinteraksi dengan dunia luar atau komponen lainnya.

Referensi :

1. randomnerdtutorials.com
2. wikipedia

Terimakasih, sampai jumpa pada project berikutnya!


Posting Komentar

0 Komentar