Menyalakan Lampu LED dengan Tombol (Digital Input/Output ESP32)
Halo-haloo, kenalin lagi aku Kevin Kencana, mahasiswa jurusan Sistem dan Teknologi Informasi ITB 2019, mau ajarin lagi kalian tentang ESP32. Terakhir kali, kita baru saja mulai dengan mengedipkan lampu LED internal ESP32. Untuk post ini, kita akan buat lampu LED eksternal untuk menyala/mati tergantung tombol pencet.
Pertama-tama, siapin dulu komponennya.
- ESP32 Development Board
2. Jumper Wire Cable (Male to Male, Female to Female, Male to Female)
Male itu yang ada pin besi di ujungnya, Female yang tidak ada.
3. Resistor (10.000 atau 10K Ohm dan juga 330 Ohm)
4. Push Button (Tombol Pencet)
5. Breadboard (Disarankan yang 800 titik)
6. Lampu LED (terserah warnanya apa hehe)
7. Laptop/Komputer
Oke deh, sudah siap semua komponennya, kita akan lanjut ke beberapa konsep dasar yang perlu kita tau tentang komponennya.
- Breadboard
Breadboard adalah komponen yang tidak perlu solder dan bisa dipakai untuk membuat prototipe sementara untuk membuat rangkaian sirkit dengan komponen listrik lainnya. Breadboard yang kita pakai bisa dibagi menjadi 4 bagian, ada 2 bagian di pinggir yang lebarnya 2 titik, ada 2 bagian di tengah yang lebarnya 5 titik. Tidak kelihatan kalau lihat sekilas doang, tapi sebenarnya titik-titik ini tersambung. Bisa dilihat gambar di bawah ini.
Untuk bagian A dan D, kabel tersambung secara horizontal. untuk bagian B dan C, kabel tersambung secara vertikal, tetapi B tidak terhubung ke C.
2. Resistor
Resistor adalah komponen listrik yang digunakan untuk mengurangi arus listrik, membagi tegangan, dan kegunaan lainnya. Khususnya untuk eksperimen ini, kita butuh resistor tersambung ke lampu LED karena kalau tidak, arus listrik yang mengalir ke lampu LED akan terlalu besar yang akan membuat lampu LED panas dan bisa pecah.
Kalau dilihat resistor, ada sekitar 4/5 garis yang berwarna-warni. Garis-garis itu menunjukkan besarnya resistansi resistor itu. Cara bacanya bisa dilihat di gambar bawah ini.
Buat contoh, kita pakai resistor 10K ohm yang akan kita pakai, kalau dilihat itu warna dari garis-garisnya adalah coklat, hitam, orange, dan emas. coklat menunjukkan angka 1 sebagai digit pertama, hitam menunjuk 0 sebagai digit kedua, lalu orange akan memberi pengali 1000 dan emas itu menunjukkan selang toleransi kurang lebih 5%. Maka kalau digabungin, jadinya 10*1000 = 10000 ohm 5%.
3. ESP32 GPIOs
GPIO adalah singkatan dari General Purpose Input Output. Di ESP32 DEVKIT V1 — DOIT yang kita pakai ada yang 30 GPIOs, ada juga yang 36 GPIOs, bisa dlihat diagram pinnya di gambar bawah ini.
Masing-masing pin memiliki fungsinya sendiri, tapi untuk eksperimen ini kita pakai GPIO5, GPIO4, dan GND (Ground).
4. Lampu LED
LED (Light-Emitting Diode) adalah semikonduktor sumber cahaya yang memancarkan cahaya ketika ada arus yang mengalir. Arus ini harus mengalir dari kutub positif ke negatif, jadi tidak boleh salah pasangnya. Kutub positif biasa disebut pin anoda dan kutub negatif biasa disebut pin katoda. Pin positif adalah kaki yang panjang sedangkan pin negatif adalah kaki yang lebih pendek
Oke deh buat teori dasar kita sudah bahas, langsung saja kita lanjut ke eksperimennya.
- Pasang Komponen pada breadboard
Rangkaian komponen dirangkai sesuai skema di bawah ini.
Pasti gak perlu persis banget sama skema ini, tapi ada hal-hal yang penting di sini:
- Pin 3.3V sambung ke salah satu kaki push button
- Kaki push button yang sebelah terhubung ke GPIO 4 dan juga ke resistor 10K ohm
- Resistor 10K ohm terhubung ke pin GND (Ground, yang warna hitam di skema)
- Kaki negatif (yang pendek) dari LED terhubung ke GND
- Kaki Positif (yang panjang) dari LED terhubung ke resistor 330 Ohm(Range dari resistonya sekitar 100–600 Ohm, kalau < 100 Ohm itu bikin arus yang lewatin LED terlalu besar dan bisa jadi pecah LEDnya)
- Resistor 330 Ohm terhubung ke pin 5.
Kalau aku sendiri, rangkaiannya bisa dilihat di video bawah ini:
2. Siapkan program di Arduine IDE
Untuk penjelasan sudah aku kasih di komentar programnya. Tetapi aku jelasin lagi saja di sini. Di paling awal itu kita set variabel buttonPin dan ledPin ke GPIO 4 dan 5, jadi kalau kita mau ganti status tombol itu lewat pin 4 dan kalau mau ganti status LED lewat pin 5. Setelah itu, kita juga set status awal tombol dengan 0, yang berarti itu kita set awalnya tombol itu belum ditekan. Habis itu, kita masuk ke setup. Kita set supaya tombol kita menjadi input dan lampu LED sebagai output. Lalu, masuk ke loop program, program itu akan ngebaca terus kondisi tombol. Dicek apakah sudah ditekan atau belum. Kalau masih belum ditekan, berarti program masuk ke percabangan else, yang berarti lampu LED gak nyala. Nah, kalau dicek tiba-tiba buttonState ditekan, berarti nilai buttonState berubah menjadi HIGH dan terus masuk ke percabangan if yang pertama, yang bikin lampu LED jadi HIGH, berarti ada arus yang ngalir yang bikin lampu LED jadi nyala. Nah kalau dari situ berubah lagi buttonState jadi LOW karena ditekan, berarti balik ke percabangan else yang kedua, lampu jadi mati.
Nah itu hasil eksperimen aku. Di video itu kan ada aku tunjukin layar laptopku yang ada angka 0 dan 1 itu. Kalau kamu perhatiin itu adalah bagian kode “Serial.print(buttonState)”. Pas aku gak pencet tombolnya, diprint angka 0 (LOW) dan pas aku pencet, diprint angka 1 (HIGH). Nah ini lumayan penting kalau kamu mau cek input kamu sudah benar atau belum. Caranya itu bisa dipencet opsi “Serial Monitor” yang ada di pojok kanan atas layar.
Pas kamu coba, mungkin awalnya bakal munculnya bukan 0 dan 1, tapi kayak tulisan aneh-aneh gitu. Nah itu karena frekuensinya masih belum sama kayak yang di “Serial.begin()”. Kalau kamu sudah samain, nanti jadi sefrekuensi dan baru bisa dilihat.
Nah mantap banget sudah bisa pakai breadboard dan pakai push button & LED sebagai digital input/output. Nah tapi, walaupun kita sudah bisa gitu, kita harus lebih banyak explore lagi, bereksprimen lagi supaya lebih paham lagi. Karena itu, aku ada bikin eksperimen lanjutan dari yang tadi. Tadi itu kan cuman kalau pencet tombol, lampu nyala. Sekarang aku mau ada 2 lampu LED yang kalau aku pencet tombolnya, akan menyala bergantian.
Buat komponen tetap sama ya, cuman butuh tambahan 1 lampu LED, 1 resistor 330 Ohm, dan tambahan kabel. Jadi prinsipnya sama kayak tadi, kaki negatif LED sambung ke Ground, kaki positif sambung ke resistor, resistor sambung ke pin. Jadinya rangkaiannya bisa dilihat di gambar bawah ini.
Terus untuk kode Arduino IDE tinggal tambahin sedikit dari yang tadi, jadinya kode di bawah ini.
Bisa dilihat, aku pakai pin GPIO 2 untuk lampu LED 2 sebagai output, terus di loop itu adalah kode program untuk bikin lampu LED bergantian nyala mati secara berulang-ulang sampai aku stop tekan tombolnya. Untuk video eksperimennya ada di bawah ini:
Nah kalian nyadar gak nih. Pas lampu LED 2 nyala, lampu biru dari ESP32nya juga ikut nyala. Nah ini easter egg yang kalian bisa coba. Kalau kamu hubungin lampunya ke GPIO 2, lampu built-in ESP32 juga ikut termasuk sebagai output.
Yayy, sudah selesai. Mantap banget kalau kalian berhasil buat bikin ini. Dari eksperimen ini aku juga sadar beberapa hal. Stay tune buat post-post buat eksperimen ESP32 aku. Makasihh.