Embedded System Project — Utilizes the GPIO on the ESP32 board as I/O

Rakha Wiratama
6 min readFeb 13, 2022

--

Halo semua !!! Pada kesempatan kali ini, saya akan membahas pengalaman saya saat mengerjakan projek embedded system, yaitu “Pemanfaatan GPIO pada board ESP-32 sebagai I/O”

Pada projek kali ini, seperti biasa saya mengerjakannya bersama teman saya, Afkar Dhiya Ulhaq dan Ammardito Shafaat. Tentunya pengerjaan bersama teman-teman akan sangat membantu, dan kalian juga dapat lebih mudah memahami proses yang harus dilakukan karena sering terjadinya diskusi.

Projek ini akan terdiri dari 2 bagian, yaitu

  1. Simple I/O — Menyalakan LED menggunakan saklar. LED dan saklar masing-masing terhubung dengan GPIO ESP32
  2. More Advance I/O — Menginteragasikan 2 buah switch (pushbutton) dengan 3 buah LED

PART 1 — SIMPLE I/O

Tahapan yang diperlukan :

1.Setup Environment, kalian bisa membaca artikel ini terlebih dahulu:
https://rakhawiratama10.medium.com/embedded-system-project-blinking-led-26403665b8fb

2.Menyiapkan komponen-komponen yang dibutuhkan

  • ESP-32
  • Micro-USB cable Type-B
  • 1 Lampu LED eksternal
  • BreadBoard
    “rekomendasi: gunakan 2 breadboard yang kecil atau gunakan 1 breadboard ukuran besar, karena akan ada banyak komponen yang digunakan”
  • Resistor (330 Ω dan 10.000 Ω)
  • Male-to-male cables
  • 1 Switch (Pushbutton) dengan 4 kaki

3.Merangkai rangkaian litrik

Tahapan setup rangkaian:

  • Hubungkan GPIO ground dengan sisi (-) dari power rail breadboard menggunakan male-to-male jumper.
    fungsinya = Untuk menghasilkan arus listrik
  • Hubungkan kaki dengan salah satu GPIO ESP-32 dan hubungkan kaki yang lain dengan resistor 330 Ω (resistor terhubung ke kaki LED dan sisi (-) dari power rail breadboard.
  • Hubungkan salah satu kaki switch (pushbutton) dengan salah satu GPIO ESP-32 , lalu hubungkan resistor 10.000 Ω (seri — dengan male-to-male jumper yang menghubungkan GPIO ESP-32 dengan switch) dengan (-) dari power rail breadboard. Lalu hubungkan kaki sampingnya dengan (+) dari power rail breadboard.

4.Membuat Kode Program

Penjelasan Kode Program:

<DEKLARASI VARIABEL>

  • buttonPin — variabel untuk input pushbutton pada GPIO ESP-32
  • ledPin — variabel untuk output LED pada GPIO ESP-32
  • buttonState — variabel untuk medeklarasikan mode pushbutton
    “buttonState = 0”,
    artinya button sedang dalam keadaan LOW

<PROSEDUR SETUP>

  • Serial.begin() — menentukan kecepatan pengiriman dan penerimaan data melalui port serial
  • pinMode() — konfigurasi pin tertentu untuk dijadikan sebagai input atau output

<PROSEDUR LOOP>

  • digitalRead() — Membaca state dari pushbutton
  • Serial.println(buttonState) — Mencetak buttonState dengan newline
  • digitalWrite() — Memberika nilai 1 (HIGH) atau 0 (LOW) pada pin
  • Dalam void loop(), terdapat conditional statement untuk mengintegrasikan I/O (button dan LED).
    KONDISI 1 — Saat button ditekan maka LED akan menyala
    KONDISI 2 — Saat button tidak ditekan maka LED tidak akan menyala

HASIL AKHIR:

PART 2 — ADVANCE I/O

Tahapan yang diperlukan :

1.Setup Environment, kalian bisa membaca artikel ini terlebih dahulu:
https://rakhawiratama10.medium.com/embedded-system-project-blinking-led-26403665b8fb

2.Menyiapkan komponen-komponen yang dibutuhkan

  • ESP-32
  • Micro-USB cable Type-B
  • 3 Lampu LED eksternal
  • BreadBoard
    “rekomendasi: gunakan 2 breadboard yang kecil atau gunakan 1 breadboard ukuran besar, karena akan ada banyak komponen yang digunakan”
  • Resistor (330 Ω dan 10.000 Ω)
  • Male-to-male cables
  • 2 Switch (Pushbutton) dengan 4 kaki

3.Merangkai rangkaian litrik

Tahapan setup rangkaian:

  • Hubungkan GPIO ground dengan sisi (-) dari power rail breadboard menggunakan male-to-male jumper.
    fungsinya = Untuk menghasilkan arus listrik
  • Hubungkan kaki dengan salah satu GPIO ESP-32 dan hubungkan kaki yang lain dengan resistor 330 Ω (resistor terhubung ke kaki LED dan sisi (-) dari power rail breadboard.
  • Hubungkan salah satu kaki switch (pushbutton) dengan salah satu GPIO ESP-32 , lalu hubungkan resistor 10.000 Ω (seri — dengan male-to-male jumper yang menghubungkan GPIO ESP-32 dengan switch) dengan (-) dari power rail breadboard. Lalu hubungkan kaki sampingnya dengan (+) dari power rail breadboard.

“Tahapan setup rangkaian kurang lebih sama seperti pada part 1, yang membedakan hanya jumlah LED dan pushButton”

4.Membuat Kode Program

Penjelasan Kode Program:

<DEKLARASI VARIABEL>

  • buttonPin — variabel untuk input pushbutton pada GPIO ESP-32
  • led<warna> — variabel untuk output LED pada GPIO ESP-32
  • buttonState — variabel untuk medeklarasikan mode pushbutton
    “buttonState = 0”,
    artinya button sedang dalam keadaan LOW

<PROSEDUR SETUP>

  • Serial.begin() — menentukan kecepatan pengiriman dan penerimaan data melalui port serial
  • pinMode() — konfigurasi pin tertentu untuk dijadikan sebagai input atau output

<PROSEDUR LOOP>

  • digitalRead() — Membaca state dari pushbutton
  • Serial.println(buttonState) — Mencetak buttonState dengan newline
  • digitalWrite() — Memberika nilai 1 (HIGH) atau 0 (LOW) pada pin
  • Dalam void loop(), terdapat conditional statement untuk mengintegrasikan I/O (button dan LED).
    KONDISI 1 — Saat button 1 dan 2 ditekan, maka semua LED akan menyala
    KONDISI 2 — Saat button 1 ditekan dan button 2 tidak ditekan, maka hanya LED Merah2 yang mati
    KONDISI 3 — Saat button 1 tidak ditekan dan button 2 ditekan, maka hanya LED Merah2 yang menyala
    KONDISI 4 — Saat button 1 dan 2 tidak ditekan, maka semua LED akan mati

HASIL AKHIR:

KENDALA YANG DIHADAPI:

  • Adanya error dengan UART bridge pada laptop saya sehingga saya tidak bisa menjalankan kode program ke ESP-32.
    Kendala ini pernah dihadapi pada projek sebelumnya dan berhasil terselesaikan, akan tetapi saat saya menggunakan penyelesaian yang sama masalah ini tidak dapat terselesaikan. Akhirnya saya meminjam laptop teman saya untuk mencoba kode program yang telah dibuat.
  • LED Built-in pada ESP-32 ikut menyala (padahal tidak dijadikan output).
    Setelah mencoba mencaritau kenapa hal tersebut dapat terjadi….teman saya Ammardito Shafaat menemukan bahwa saat kita menggunakan GPIO 2 (pin 2 pada ESP-32), maka secara tidak langsung akan menyalakan LED Built-in pada ESP-32.
    (Hal belum bisa dikonfirmasikan sebagai sesuatu yang benar, karena intuisi di dapat setelah memindahkan kabel pin ke tempat yang berbeda)
  • Kendala merangkai rangkaian listrik.
    Pada saat merangkai rangkaian listrik yang part 2, saya sedikit pusing karena banyaknya komponen yang digunakan sehingga terkadang sering terjadi kesalahan penampatan kabel jumper (misal: saat ingin menghubungkan GPIO dengan button, saya tidak menghubungkannya sejajar dengan kaki button sehingga saat dilakukan testing button tidak menyala)
  • Kendala mencoba kode program “Lampu sepeda”
    Kode program yang dibuat ada beberapa error, dan karena saya ada masalah dengan UART Bridge maka saya tidak dapat leluasa untuk debugging program dan tidak mendapatkan hasil yang diinginkan (karena waktu pengerjaan bersama teman yang terbatas, jadi tidak bisa terus meminjam laptopnya)
    Berikut kode program “Lampu Sepeda” :

Terima kasih telah membaca artikel ini……. Semoga artikel ini sangat membantu bagi kalian semua :)

Muhammad Rakha Wiratama
18220070

--

--

No responses yet