Raspberry Pi Pico W terintegrasi dengan modul nirkabel Infineon CYW43439, yang mendukung radio 2,4 GHz dengan standar Wi-Fi 802.11n. Tutorial ini memberikan pengantar implementasi Wi-Fi pada Raspberry Pi Pico W menggunakan MicroPython. Pembahasan mencakup konfigurasi perangkat sebagai Wi-Fi Station dan Access Point (AP), melakukan pemindaian terhadap jaringan Wi-Fi di sekitar, melakukan asosiasi perangkat dengan jaringan lokal, serta memperoleh informasi terkait alamat IP yang diberikan oleh jaringan.
Wi-Fi Station dan Titik Akses (Access Point)
Raspberry Pi Pico W dapat beroperasi dalam dua mode utama pada subsistem Wi-Fi: mode station (STA) dan mode access point (AP).
Mode Station (STA)
Dalam mode station, Raspberry Pi Pico W berperan sebagai klien jaringan yang melakukan asosiasi ke infrastruktur Wi-Fi yang sudah ada—misalnya router pada jaringan lokal Anda. Setelah proses autentikasi dan asosiasi berhasil, perangkat jaringan (router) akan memberikan alamat IP unik kepada Pico melalui mekanisme DHCP.
Pada konfigurasi ini, komunikasi dua arah antara Pico dan perangkat lain dalam jaringan dapat dilakukan dengan menggunakan alamat IP yang dialokasikan tersebut, selama kedua perangkat berada pada segmen jaringan yang sama.
Karena router memiliki konektivitas ke internet, Raspberry Pi Pico yang beroperasi dalam mode station dapat melakukan permintaan data eksternal melalui protokol HTTP/HTTPS—misalnya mengambil data dari API (seperti API cuaca), mengirim (publish) data sensor ke platform cloud, memuat aset eksternal untuk server web lokal (seperti ikon, stylesheet, atau skrip JavaScript), serta berinteraksi dengan berbagai layanan berbasis internet.
Namun, pada kondisi tertentu, akses ke router atau infrastruktur jaringan mungkin tidak tersedia. Pada skenario tersebut, Raspberry Pi Pico dapat dikonfigurasi beroperasi sebagai Access Point (AP).
Mode Access Point (AP)
Ketika Raspberry Pi Pico W dikonfigurasi sebagai Access Point, perangkat ini membangkitkan (broadcast) SSID-nya sendiri dan menyediakan jaringan Wi-Fi mandiri. Perangkat lain seperti smartphone, tablet, atau komputer dapat melakukan asosiasi langsung ke Pico tanpa memerlukan router eksternal.
Berbeda dengan router, mode AP pada Pico tidak menyediakan uplink ke jaringan kabel atau internet. Dengan demikian, perangkat yang terhubung:
- tidak dapat mengakses sumber daya eksternal,
- tidak dapat mengambil pustaka atau skrip dari internet,
- tidak dapat mengirim data sensor ke layanan cloud,
- dan tidak dapat menggunakan layanan berbasis internet seperti email atau API online.
Mode ini terutama digunakan untuk komunikasi lokal (local-only), konfigurasi perangkat, atau aplikasi yang tidak membutuhkan konektivitas internet.
Antarmuka Station dan Access Point
MicroPython menyediakan modul `network` yang berfungsi sebagai abstraksi tingkat rendah untuk konfigurasi dan manajemen seluruh fungsionalitas Wi-Fi. Modul ini mengekspos dua jenis antarmuka nirkabel terpisah—satu yang beroperasi dalam mode Station (STA) dan satu lagi dalam mode Access Point (AP).
Contoh berikut menginisialisasi kedua antarmuka tersebut menggunakan kelas `WLAN`, mengaktifkannya, dan kemudian melakukan verifikasi status operasional (active state) masing-masing antarmuka.
# Rui Santos & Sara Santos - Random Nerd Tutorials
# Complete project details at https://RandomNerdTutorials.com/raspberry-pi-pico-w-wi-fi-micropython/
import network
sta_if = network.WLAN(network.STA_IF)
print(sta_if.active())
ap_if = network.WLAN(network.AP_IF)
print(ap_if.active())
Setelah menjalankan contoh tersebut, keluaran yang dihasilkan akan menyerupai ilustrasi berikut.
Pada tahap ini, kedua antarmuka WLAN—baik Station (STA) maupun Access Point (AP), berada dalam kondisi non-aktif (`active = False`), sehingga belum ada fungsionalitas jaringan yang berjalan.
Pemindaian Jaringan Wi-Fi Terdekat
Untuk melakukan pemindaian terhadap jaringan Wi-Fi di sekitar perangkat, antarmuka Wi-Fi dalam mode Station (STA) harus diinisialisasi dan diaktifkan terlebih dahulu. Setelah antarmuka STA aktif, perangkat dapat menjalankan operasi pemindaian terhadap access point terdekat. Contohnya:
# Init Wi-Fi interface
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
Selanjutnya, metode `wlan.scan()` dapat dipanggil untuk melakukan Wi-Fi network discovery pada jaringan sekitar. Fungsi ini mengembalikan daftar tuple yang berisi informasi terstruktur mengenai setiap access point, termasuk SSID, BSSID (alamat MAC), RSSI (Received Signal Strength Indicator), channel yang digunakan, serta atribut tambahan terkait konfigurasi jaringan.
# Scan for available Wi-Fi networks
networks = wlan.scan()
Selanjutnya, seluruh entri hasil pemindaian dapat diiterasi untuk mengekstraksi dan menampilkan atribut jaringan secara terstruktur. Implementasi kode lengkap untuk prosedur ini disediakan pada contoh di bawah.
# Rui Santos & Sara Santos - Random Nerd Tutorials
# Complete project details at https://RandomNerdTutorials.com/raspberry-pi-pico-w-wi-fi-micropython/
import network
# Init Wi-Fi interface
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
# Scan for Wi-Fi networks
networks = wlan.scan()
# Print Wi-Fi networks
print("Available WiFi Networks:")
for network_info in networks:
print(network_info)
Jalankan kode yang telah disiapkan pada Raspberry Pi Pico Anda. Kode ini akan mengeksekusi pemindaian jaringan Wi-Fi dan menampilkan daftar access point terdekat beserta atributnya. Setiap entri output berupa tuple dengan elemen-elemen yang dipisahkan koma, diurutkan sebagai berikut: SSID, BSSID, RSSI, dan channel.
RSSI (Received Signal Strength Indicator) merepresentasikan kekuatan sinyal yang diterima dari access point. Nilai RSSI yang lebih negatif menunjukkan kualitas sinyal yang lebih rendah.
Mengenai dua parameter tambahan yang muncul di akhir tuple hasil pemindaian, dokumentasi resmi MicroPython saat ini belum memberikan penjelasan definitif mengenai maknanya. Nilai-nilai ini diduga terkait dengan mode autentikasi dan status hidden SSID, namun hasil pengamatan aktual tidak sesuai dengan rentang yang tercantum dalam dokumentasi. Hal ini mengindikasikan kemungkinan adanya implementasi berbeda pada driver modul Wi-Fi CYW43439, atau potensi adanya bug pada pengembalian data dari fungsi `wlan.scan()`.
Menghubungkan Raspberry Pi Pico ke Jaringan Wi-Fi
Proses asosiasi Raspberry Pi Pico W dengan jaringan Wi-Fi dapat dilakukan menggunakan modul `network` di MicroPython. Untuk melakukan koneksi, diperlukan SSID (nama jaringan) dan passphrase (kata sandi jaringan).
Setelah perangkat berhasil melakukan autentikasi dan asosiasi dengan access point, router atau DHCP server akan memberikan alamat IP unik kepada Raspberry Pi Pico dalam jaringan lokal. Setiap perangkat dalam jaringan memiliki alamat IP yang berbeda, sehingga Pico dapat diidentifikasi dan diakses secara unik oleh perangkat lain di segmen jaringan yang sama.
Contoh kode berikut mendemonstrasikan proses koneksi Pico ke jaringan Wi-Fi yang tersedia, serta menampilkan alamat IP yang dialokasikan oleh router setelah koneksi berhasil.
# Rui Santos & Sara Santos - Random Nerd Tutorials
# Complete project details at https://RandomNerdTutorials.com/raspberry-pi-pico-w-wi-fi-micropython/
import network
from time import sleep
# Wi-Fi credentials
ssid = 'REPLACE_WITH_YOUR_SSID'
password = 'REPLACE_WITH_YOUR_PASSWORD'
# Init Wi-Fi Interface
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
# Connect to your network
wlan.connect(ssid, password)
# Wait for Wi-Fi connection
connection_timeout = 10
while connection_timeout > 0:
if wlan.status() >= 3:
break
connection_timeout -= 1
print('Waiting for Wi-Fi connection...')
sleep(1)
# Check if connection is successful
if wlan.status() != 3:
raise RuntimeError('Failed to establish a network connection')
else:
print('Connection successful!')
network_info = wlan.ifconfig()
print('IP address:', network_info[0])
Cara Kerja Kode
Import Modul Network
Langkah awal adalah melakukan import modul `network`, yang menyediakan API untuk konfigurasi dan manajemen antarmuka Wi-Fi pada Raspberry Pi Pico W.
import network
Modul `network` menyediakan sekumpulan metode untuk inisialisasi, konfigurasi, dan manajemen antarmuka Wi-Fi serta pengelolaan koneksi ke jaringan nirkabel.
Konfigurasi Kredensial Wi-Fi
Untuk melakukan asosiasi ke jaringan, tentukan SSID dan passphrase jaringan pada dua variabel terpisah, yang akan digunakan selama proses autentikasi dan koneksi oleh antarmuka Wi-Fi.
# Wi-Fi credentials
ssid = 'REPLACE_WITH_YOUR_SSID'
password = 'REPLACE_WITH_YOUR_PASSWORD'
Menghubungkan ke Internet
Buat objek WLAN dalam mode Station (STA) menggunakan modul `network`, kemudian aktifkan antarmuka tersebut dengan memanggil metode `.active(True)` untuk memulai proses asosiasi ke jaringan Wi-Fi.
# Init Wi-Fi Interface
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
Selanjutnya, lakukan prosedur koneksi ke jaringan Wi-Fi target dengan memanggil metode `.connect(SSID, password)` pada objek antarmuka Station, menggunakan nilai SSID dan passphrase yang telah dikonfigurasi sebelumnya.
# Connect to your network
wlan.connect(ssid, password)
Verifikasi Status Koneksi dan Akuisisi Alamat IP
Setelah memanggil metode koneksi, periksa status asosiasi antarmuka Wi-Fi dengan memeriksa properti `.isconnected()`. Jika koneksi berhasil, ambil alamat IP yang dialokasikan oleh DHCP server melalui properti `.ifconfig()[0]` dan tampilkan nilainya.
# Wait for Wi-Fi connection
connection_timeout = 10
while connection_timeout > 0:
if wlan.status() >= 3:
break
connection_timeout -= 1
print('Waiting for Wi-Fi connection...')
sleep(1)
# Check if connection is successful
if wlan.status() != 3:
raise RuntimeError('Failed to establish a network connection')
else:
print('Connection successful!')
network_info = wlan.ifconfig()
print('IP address:', network_info[0])
Kode pertama-tama melakukan pengecekan status koneksi melalui metode `wlan.status()`. Jika nilai yang dikembalikan >= 3, yang menunjukkan bahwa perangkat telah berhasil terasosiasi ke jaringan atau koneksi gagal, loop pemantauan dihentikan. Loop ini menunggu hingga maksimal 10 detik, yang ditentukan oleh variabel `connection_timeout` (10 percobaan).
Metode `wlan.status()` mengevaluasi kondisi antarmuka Wi-Fi Raspberry Pi Pico dan mengembalikan nilai integer dengan makna berikut:
- `0`: Antarmuka WLAN tidak aktif
- `1`: WLAN sedang melakukan scan jaringan
- `2`: WLAN sedang dalam proses koneksi ke jaringan
- `3`: WLAN berhasil terhubung ke jaringan
- `4`: WLAN gagal melakukan koneksi ke jaringan
Setelah itu, sistem memeriksa apakah koneksi berhasil dengan membandingkan status dengan `3`. Jika nilai status berbeda dari `3`, dapat disimpulkan bahwa proses asosiasi gagal dan koneksi tidak terbentuk.
if wlan.status() != 3:
raise RuntimeError('Failed to establish a network connection')
Jika status koneksi menunjukkan berhasil (status = 3), perangkat telah terasosiasi ke jaringan dengan sukses. Pada tahap ini, informasi konfigurasi jaringan dapat diperoleh menggunakan metode `wlan.ifconfig()`. Metode ini mengembalikan tuple yang berisi parameter jaringan sebagai berikut:
- `network_info[0]`: Alamat IP yang dialokasikan untuk Raspberry Pi Pico pada jaringan lokal.
- `network_info[1]`: Subnet mask dari jaringan.
- `network_info[2]`: Alamat IP gateway (default route).
- `network_info[3]`: Alamat server DNS.
Dalam konteks ini, fokus utama adalah memperoleh alamat IP lokal yang diberikan ke Pico, sehingga hanya elemen pertama (`network_info[0]`) yang diakses.
else:
print('Connection successful!')
network_info = wlan.ifconfig()
print('IP address:', network_info[0])
Metode `isconnected()`
Selain menggunakan `wlan.status()`, objek WLAN menyediakan metode `isconnected()` yang mengembalikan nilai boolean: True jika Raspberry Pi Pico telah berhasil terasosiasi ke jaringan, dan False jika tidak. Metode ini dapat digunakan sebagai alternatif pengecekan status koneksi dibandingkan dengan memeriksa nilai integer dari `wlan.status()`.
Pengujian Kode
Jalankan skrip yang telah disiapkan sebelumnya. Pastikan variabel `ssid` dan `password` telah diatur sesuai dengan kredensial jaringan Wi-Fi yang digunakan.
# Wi-Fi credentials
ssid = 'REPLACE_WITH_YOUR_SSID'
password = 'REPLACE_WITH_YOUR_PASSWORD'
Setelah beberapa iterasi proses autentikasi dan asosiasi, Raspberry Pi Pico W akan berhasil terhubung ke jaringan Wi-Fi, dan antarmuka WLAN akan memperoleh alamat IP yang dialokasikan oleh DHCP server, yang kemudian dapat ditampilkan.
Pemecahan Masalah Koneksi Wi-Fi
Jika Raspberry Pi Pico W gagal melakukan asosiasi dengan jaringan Wi-Fi, pertimbangkan langkah-langkah berikut:
- Verifikasi SSID dan passphrase yang digunakan. Perhatikan sensitivitas huruf besar/kecil serta karakter spasi.
- Pastikan jaringan target termasuk dalam daftar hasil pemindaian (scan) yang dilakukan sebelumnya oleh antarmuka Station.
- Pastikan Raspberry Pi Pico berada dalam jangkauan radio yang memadai dari access point atau router, agar intensitas sinyal cukup untuk proses autentikasi dan asosiasi yang stabil.
Konfigurasi Alamat IP Statis pada Raspberry Pi Pico W
Dalam beberapa jaringan, meskipun Raspberry Pi Pico W direstart berkali-kali, router mungkin tetap mengalokasikan alamat IP yang sama melalui mekanisme DHCP. Namun, perilaku ini tidak konsisten pada semua jaringan. Untuk memastikan Pico menggunakan alamat IP yang tetap, terutama pada proyek yang tidak terhubung langsung ke komputer atau tidak menyediakan antarmuka untuk menampilkan alamat IP, disarankan untuk mengonfigurasi IP statis.
Alamat IP statis dapat ditetapkan menggunakan metode `ifconfig()` pada objek `network.WLAN`, yang memungkinkan penentuan manual dari parameter jaringan: alamat IP, subnet mask, gateway, dan server DNS.
Dengan sedikit modifikasi pada kode koneksi Wi-Fi sebelumnya, Raspberry Pi Pico dapat dikonfigurasi agar menggunakan alamat IP statis setiap kali antarmuka Station diaktifkan, sehingga memastikan konsistensi komunikasi dalam jaringan.
# Rui Santos & Sara Santos - Random Nerd Tutorials
# Complete project details at https://RandomNerdTutorials.com/raspberry-pi-pico-w-wi-fi-micropython/
import network
import time
# Wi-Fi credentials
ssid = 'REPLACE_WITH_YOUR_SSID'
password = 'REPLACE_WITH_YOUR_PASSWORD'
# Static IP configuration
static_ip = '192.168.1.100' # Replace with your desired static IP
subnet_mask = '255.255.255.0'
gateway_ip = '192.168.1.254'
dns_server = '8.8.8.8'
# Init Wi-Fi Interface
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
# Connect to your network
wlan.connect(ssid, password)
# Wait for Wi-Fi connection
connection_timeout = 10
while connection_timeout > 0:
if wlan.status() >= 3:
break
connection_timeout -= 1
print('Waiting for Wi-Fi connection...')
time.sleep(1)
# Set static IP address
wlan.ifconfig((static_ip, subnet_mask, gateway_ip, dns_server))
# Check if connection is successful
if wlan.status() != 3:
raise RuntimeError('Failed to establish a network connection')
else:
print('Connection successful!')
network_info = wlan.ifconfig()
print('IP address:', network_info[0])
Konfigurasi IP Statis
Ganti nilai dalam variabel static_ip, subnet_mask, gateway_ip, dan dns_server dengan nilai yang sesuai untuk jaringan Anda.
# Static IP configuration
static_ip = '192.168.1.100' # Replace with your desired static IP
subnet_mask = '255.255.255.0'
gateway_ip = '192.168.1.254'
dns_server = '8.8.8.8'
Bagaimana cara menemukan nilai-nilai tersebut?
Ada berbagai cara untuk mendapatkan informasi tentang subnet mask dan IP gateway. Cara termudah adalah dengan membuka jendela Terminal di komputer Anda dan menjalankan perintah berikut:
Di Windows:
Ipconfig
Di MacOS atau Linux:
Ifconfig
Langkah ini akan mengembalikan parameter jaringan yang relevan, termasuk alamat IP gateway (alamat router pada jaringan lokal) dan subnet mask, yang diperlukan untuk routing dan segmentasi jaringan.
Dalam contoh konfigurasi saya, subnet mask ditetapkan sebagai `255.255.255.0`, dan alamat IP gateway (router) adalah `192.168.1.254`. Untuk parameter DNS server, Anda dapat menggunakan alamat publik seperti `8.8.8.8` (Google Public DNS). Saat menentukan alamat IP statis untuk Raspberry Pi Pico W, pastikan alamat tersebut tidak konflik dengan perangkat lain dalam jaringan. Untuk verifikasi, Anda dapat menggunakan alat pemindai jaringan seperti Angry IP Scanner (tersedia untuk Windows dan macOS), atau memeriksa daftar perangkat yang telah terdaftar melalui dashboard router untuk memastikan alamat IP yang dipilih belum digunakan.
Konfigurasi Alamat IP Statis
Setelah menentukan parameter jaringan yang tepat (alamat IP statis, subnet mask, gateway, dan server DNS), alamat IP statis dapat diterapkan ke antarmuka Station Raspberry Pi Pico menggunakan metode `wlan.ifconfig()`. Parameter harus diteruskan sebagai tuple dalam urutan berikut:
wlan.ifconfig((ip_statis, subnet_mask, ip_gateway, server_dns))
Pengujian Kode
Setelah kredensial jaringan dan pengaturan IP statis dikonfigurasi, jalankan skrip pada Raspberry Pi Pico W. Perangkat akan mengasosiasikan antarmuka Station dengan jaringan target dan memperoleh alamat IP statis yang telah ditentukan dalam kode. Sebagai contoh, alamat IP yang diterapkan pada konfigurasi ini adalah `192.168.1.100`.
Siap Untuk Membuat Proyek Impianmu Menjadi Kenyataan?
Klik di sini untuk chat langsung via WhatsApp dan dapatkan dukungan langsung dari tim ahli kami!



0 on: "Panduan Lengkap Memulai Wi-Fi di Raspberry Pi Pico W Menggunakan MicroPython"