Web Controlled LED pada Raspberry Pi Pico W: Mengontrol LED melalui Browser dengan MicroPython

Biasanya, LED pada Raspberry Pi Pico dikendalikan menggunakan program sederhana seperti LED Blink, yaitu LED dinyalakan dan dimatikan berdasarkan waktu tertentu. Namun, bagaimana jika LED tersebut bisa dikendalikan langsung melalui browser di laptop atau smartphone? Pada proyek Web Controlled LED Raspberry Pi Pico W, kita akan membuat sebuah sistem sederhana yang memungkinkan LED dikontrol melalui halaman web. Raspberry Pi Pico W akan terhubung ke jaringan Wi-Fi, kemudian menjalankan web server sederhana yang dapat diakses melalui browser.

 

Pengguna nantinya cukup membuka alamat IP Raspberry Pi Pico W melalui browser. Dari halaman tersebut, tersedia beberapa tombol untuk mengontrol LED, misalnya LED ON, LED OFF, dan BLINK. Proyek ini cocok untuk mempelajari dasar-dasar Raspberry Pi Pico W, MicroPython, Wi-Fi, web server, GPIO, dan kontrol perangkat melalui jaringan.

Apa Itu Web Controlled LED?

Web Controlled LED adalah proyek sederhana yang memungkinkan sebuah LED dikendalikan melalui halaman web menggunakan Raspberry Pi Pico W. Pada proyek ini, pengguna tidak perlu menekan tombol fisik untuk menyalakan atau mematikan LED. Perintah dapat diberikan melalui browser yang terhubung ke jaringan Wi-Fi yang sama dengan Pico W.

 

Ketika pengguna membuka halaman web dan menekan tombol ON, browser akan mengirimkan permintaan kepada Raspberry Pi Pico W. Pico W kemudian memproses permintaan tersebut dan mengatur pin GPIO yang terhubung ke LED agar menyala. Sebaliknya, ketika tombol OFF ditekan, Pico W akan mengubah kondisi GPIO sehingga LED menjadi mati.

 

Konsep ini merupakan contoh sederhana penerapan Internet of Things (IoT), karena perangkat elektronik dapat dikendalikan melalui jaringan menggunakan antarmuka web. Dari proyek sederhana ini, konsep yang sama juga dapat dikembangkan untuk mengontrol komponen lain, seperti buzzer, relay, servo, atau perangkat elektronik lainnya.

Mengapa Menggunakan Raspberry Pi Pico W?

1. Raspberry Pi Pico W Memiliki Wi-Fi

Raspberry Pi Pico W merupakan versi Raspberry Pi Pico yang dilengkapi dengan kemampuan Wi-Fi. Fitur tersebut membuat Pico W cocok digunakan untuk berbagai proyek Internet of Things atau IoT. Pada proyek ini, Wi-Fi digunakan untuk menghubungkan Pico W dengan perangkat seperti laptop, smartphone, dan tablet. Selama perangkat tersebut berada pada jaringan yang sama, halaman web yang dijalankan Pico W dapat diakses melalui browser.

2. Menggunakan MicroPython

Program akan dibuat menggunakan MicroPython. MicroPython memungkinkan kita menggunakan sintaks Python untuk mengontrol perangkat keras Raspberry Pi Pico W. Pada proyek ini, MicroPython digunakan untuk:

- Menghubungkan Pico W ke Wi-Fi.

- Menjalankan web server.

- Membuat halaman kontrol.

- Menerima perintah dari browser.

- Mengontrol GPIO.

- Menyalakan dan mematikan LED.

Komponen yang Dibutuhkan

Untuk membuat proyek Web Controlled LED Raspberry Pi Pico W, komponen yang diperlukan cukup sederhana.


Komponen

Jumlah

Fungsi

Raspberry Pi Pico W

1

Mikrokontroler dan koneksi Wi-Fi

LED

1

Output yang dikontrol

Resistor 220Ω–330Ω

1

Membatasi arus LED

Breadboard

1

Tempat merangkai komponen

Kabel jumper

Secukupnya

Menghubungkan komponen

Kabel USB

1

Menghubungkan Pico W ke komputer


Jika ingin lebih sederhana, kita juga dapat menggunakan LED bawaan Raspberry Pi Pico W, sehingga tidak perlu memasang LED eksternal. Namun, pada artikel ini kita menggunakan LED eksternal agar konsep wiring GPIO lebih mudah dipahami.

Wiring LED dengan Raspberry Pi Pico W

LED memiliki dua kaki, yaitu anoda (+) dan katoda (-). Hubungkan LED dengan Raspberry Pi Pico W menggunakan resistor. Contoh menggunakan GP15:


Komponen

Raspberry Pi Pico W

GP15

Resistor 330Ω → Anoda LED

Katoda LED

GND



Resistor harus dipasang seri dengan LED untuk membatasi arus yang melewati LED.

Bagaimana Menentukan Kaki LED?

Biasanya kaki LED dapat dibedakan dengan beberapa ciri:

- Kaki panjang → anoda (+)

- Kaki pendek → katoda (-)

- Sisi LED yang agak datar biasanya menunjukkan bagian katoda (-).

Jika menggunakan LED dengan warna tertentu, prinsip pemasangannya tetap sama.

Cara Kerja Sistem Web Controlled LED

Sebelum masuk ke program, penting untuk memahami cara kerja proyek. Ketika Raspberry Pi Pico W dinyalakan, program akan menjalankan beberapa tahap.

Tahap 1 — Pico W Menyalakan Wi-Fi

Pico W mencoba terhubung ke jaringan Wi-Fi menggunakan SSID dan password yang telah ditentukan.

Tahap 2 — Pico W Mendapatkan IP Address

Setelah berhasil terhubung, Pico W mendapatkan alamat IP dari router. Contohnya: 10.44.144.139.

Tahap 3 — Web Server Dijalankan

Pico W menjalankan web server sederhana pada port 80.

Tahap 4 — Browser Mengakses Pico W

Pengguna memasukkan IP Pico W ke browser http://192.168.1.25.

Tahap 5 — Pengguna Mengontrol LED

Halaman web akan menampilkan tombol:

 

┌─────────────────────────┐

│   Pico W LED Control    │

│                         │

│       [ LED ON ]        │

│       [ LED OFF ]       │

│       [ BLINK ]         │

└─────────────────────────┘

 

Ketika tombol ditekan, browser mengirimkan request ke Pico W. Pico W kemudian menjalankan perintah sesuai tombol yang dipilih.

Program MicroPython Web Controlled LED

Berikut kode program lengkap yang dapat digunakan.

 

import network

import socket

import time

from machine import Pin


# =========================

# KONFIGURASI WIFI

# =========================


SSID = "NAMA_WIFI"

PASSWORD = "PASSWORD_WIFI"


# =========================

# KONFIGURASI LED

# =========================


led = Pin(15, Pin.OUT)


# LED dalam kondisi mati saat awal

led.off()


# =========================

# KONEKSI WIFI

# =========================


wlan = network.WLAN(network.STA_IF)

wlan.active(True)


print("Menghubungkan ke Wi-Fi...")


wlan.connect(SSID, PASSWORD)


while not wlan.isconnected():

    time.sleep(1)

    print("Menunggu koneksi...")


ip = wlan.ifconfig()[0]


print()

print("Wi-Fi berhasil terhubung!")

print("IP Address:", ip)


# =========================

# WEB SERVER

# =========================


addr = socket.getaddrinfo("0.0.0.0", 80)[0][-1]


server = socket.socket()

server.bind(addr)

server.listen(1)


print("Web server aktif!")

print("Buka http://" + ip)


# =========================

# HALAMAN WEB

# =========================


def webpage():


    html = """

    <!DOCTYPE html>


    <html>


    <head>


        <title>Pico W LED Control</title>


        <meta name="viewport"

        content="width=device-width, initial-scale=1">


        <style>


            body {

                font-family: Arial;

                text-align: center;

                margin-top: 50px;

            }


            h1 {

                font-size: 28px;

            }


            button {

                width: 200px;

                padding: 15px;

                margin: 10px;

                font-size: 18px;

            }


        </style>


    </head>


    <body>


        <h1>Raspberry Pi Pico W</h1>


        <p>Web Controlled LED</p>


        <a href="/on">

            <button>LED ON</button>

        </a>


        <a href="/off">

            <button>LED OFF</button>

        </a>


        <a href="/blink">

            <button>BLINK</button>

        </a>


    </body>


    </html>

    """


    return html


# =========================

# LOOP WEB SERVER

# =========================


while True:


    client, address = server.accept()


    request = client.recv(1024)


    request = str(request)


    print(request)


    # LED ON

    if "/on" in request:


        led.on()


    # LED OFF

    elif "/off" in request:


        led.off()


    # LED BLINK

    elif "/blink" in request:


        for i in range(5):


            led.on()

            time.sleep(0.3)


            led.off()

            time.sleep(0.3)


    # Mengirim halaman web

    response = webpage()


    client.send("HTTP/1.1 200 OK\r\n")

    client.send("Content-Type: text/html\r\n")

    client.send("Connection: close\r\n\r\n")


    client.send(response)


    client.close()

 

Penjelasan Kode Program

1. Mengatur GPIO LED

Bagian berikut menentukan GP15 sebagai pin output led = Pin(15, Pin.OUT). Artinya, LED dihubungkan ke GPIO 15. Kemudian led.off() digunakan untuk memastikan LED berada dalam kondisi mati ketika program pertama kali dijalankan.

2. Menghubungkan Raspberry Pi Pico W ke Wi-Fi

Nama dan password Wi-Fi dimasukkan pada bagian:

 

SSID = "NAMA_WIFI"

PASSWORD = "PASSWORD_WIFI"

 

Ganti bagian tersebut dengan informasi jaringan Wi-Fi yang digunakan. Kemudian Pico W mengaktifkan interface Wi-Fi:

 

wlan = network.WLAN(network.STA_IF)

wlan.active(True)

 

Setelah itu Pico W mencoba terhubung:

 

wlan.connect(SSID, PASSWORD)

 

Program akan menunggu sampai koneksi berhasil.

Mengetahui IP Address Pico W

Setelah berhasil terhubung ke Wi-Fi, program menjalankan:

 

ip = wlan.ifconfig()[0]

 

IP address tersebut kemudian ditampilkan pada Shell Thonny.

Contohnya:

 

Wi-Fi berhasil terhubung!

IP Address: 10.44.144.139

Web server aktif!

Buka http://10.44.144.139

 

Alamat IP inilah yang digunakan untuk membuka halaman kontrol.

Membuat Web Server

Program menggunakan modul socket untuk membuat web server sederhana.

 

addr = socket.getaddrinfo("0.0.0.0", 80)[0][-1]


server = socket.socket()

server.bind(addr)

server.listen(1)

 

Port yang digunakan adalah port 80, yaitu port standar untuk HTTP. Setelah server aktif, Pico W akan menunggu koneksi dari browser.

Membuat Tombol Kontrol LED

Halaman web dibuat menggunakan HTML sederhana. Contohnya:

 

<a href="/on">

    <button>LED ON</button>

</a>

 

Ketika tombol tersebut ditekan, browser mengakses endpoint:

 

/on

 

Pico W kemudian memeriksa request tersebut:

 

if "/on" in request:

    led.on()

 

LED pun menyala.

Untuk tombol OFF:

 

elif "/off" in request:

    led.off()

 

Sedangkan tombol BLINK menjalankan LED berkedip sebanyak lima kali.

Cara Menjalankan Proyek

1. Siapkan Raspberry Pi Pico W

Hubungkan Raspberry Pi Pico W ke komputer menggunakan kabel USB. Kemudian buka Thonny IDE dan pastikan interpreter yang digunakan adalah MicroPython untuk Raspberry Pi Pico.

2. Pasang Komponen

Hubungkan LED eksternal ke GP15 melalui resistor 330Ω, kemudian hubungkan kaki LED lainnya ke GND.

3. Masukkan Informasi Wi-Fi

Pada kode program, ubah:

 

SSID = "NAMA_WIFI"

PASSWORD = "PASSWORD_WIFI"

 

sesuai jaringan yang digunakan.

4. Jalankan Program

Jalankan kode menggunakan Thonny. Jika berhasil, Shell akan menampilkan IP address Pico W. Contohnya:

 


5. Buka Browser

Gunakan smartphone atau laptop yang terhubung ke jaringan Wi-Fi yang sama. Kemudian masukkan http://10.44.144.139. Ganti alamat tersebut dengan IP address yang muncul pada Shell Thonny. 

6. Kontrol LED

Jika halaman berhasil dibuka, akan muncul beberapa tombol. Tekan:

LED ON → LED menyala.

LED OFF → LED mati.

BLINK → LED berkedip beberapa kali.

 

Apakah Harus Menggunakan Internet?

Tidak, proyek WiFi Scanner tidak harus menggunakan koneksi internet. Raspberry Pi Pico W dapat melakukan pemindaian jaringan Wi-Fi yang berada di sekitarnya tanpa harus terhubung ke internet. Proses scanning dilakukan menggunakan modul Wi-Fi bawaan Pico W untuk mendeteksi jaringan wireless yang tersedia. Program dapat dijalankan melalui Thonny IDE setelah Raspberry Pi Pico W terhubung ke komputer menggunakan kabel USB. Setelah proses scanning selesai, informasi jaringan yang berhasil ditemukan akan ditampilkan pada Thonny Shell. Jadi, proyek WiFi Scanner Ghostbusters cukup membutuhkan Raspberry Pi Pico W dan komputer untuk menjalankan program. Koneksi internet tidak diperlukan, karena tujuan utama proyek ini adalah mendeteksi jaringan Wi-Fi yang berada dalam jangkauan perangkat.

Pengembangan Proyek

1. Menambahkan Kontrol LED Lebih Banyak

Jika ingin mengembangkan proyek, beberapa LED dapat digunakan pada GPIO yang berbeda. Misalnya:

GP15 → LED 1

GP14 → LED 2

GP13 → LED 3

Kemudian halaman web dapat menyediakan tombol untuk masing-masing LED.

2. Menambahkan Mode Blink

Selain tombol ON dan OFF, dapat ditambahkan beberapa mode kedipan. Misalnya:

- Blink lambat

- Blink cepat

- Blink 3 kali

- Blink 5 kali

3. Membuat Tampilan Web Lebih Menarik

HTML dan CSS juga dapat dikembangkan agar halaman web terlihat seperti dashboard IoT. Misalnya dengan menampilkan status:

 

LED STATUS


● ON

 

atau:

 

LED STATUS


● OFF

 

Dengan begitu, proyek sederhana ini dapat dikembangkan menjadi web-based IoT controller yang lebih menarik.

Troubleshooting

1. Pico W Tidak Terhubung ke Wi-Fi

Periksa kembali:

- SSID Wi-Fi

- Password Wi-Fi

- Jarak Pico W dengan router.

- Pastikan jaringan yang digunakan sesuai dengan kemampuan Wi-Fi Pico W.

2. IP Address Tidak Muncul

Jika program terus menampilkan:

 

Menunggu koneksi...

 

berarti Pico W belum berhasil terhubung ke Wi-Fi.

Periksa SSID dan password yang dimasukkan ke program.

3. Website Tidak Bisa Dibuka

Pastikan smartphone atau laptop berada pada jaringan Wi-Fi yang sama dengan Pico W. Kemudian masukkan IP address yang ditampilkan pada Shell Thonny. Jangan mengetik IP contoh jika IP Pico W yang sebenarnya berbeda.

4. LED Tidak Menyala

Periksa kembali:

- Posisi anoda dan katoda LED.

- Resistor.

- Kabel dari GP15.

- Kabel GND.

- Nomor GPIO pada program.

Pastikan wiring sesuai dengan kode:

 

led = Pin(15, Pin.OUT)

 

Jika LED dipasang pada GPIO berbeda, nomor pin pada program juga harus disesuaikan.

 

Baca juga: WiFi Scanner Ghostbusters pada Raspberry Pi Pico W: Cara Scan Jaringan Wi-Fi dengan MicroPython

 

 

 

Dalam praktik, hasil dan kendala yang ditemui bisa berbeda tergantung perangkat, konfigurasi, versi library, dan sistem yang digunakan.

Posting Komentar

0 Komentar