はじめに
Raspberry Pi Pico 2 W を買ったので、それを使って Wi-Fi を通信してみます。
上記の記事でアクセスポイント化した Raspberry Pi に接続します。
セットアップ
今回は MicroPyhton 使います。
ファームウェアのダウンロード
Raspberry Pi Pico 2 W で MicroPython を使うためには、ファームウェアを書き込んでおく必要があります。
上記のサイトから Pico 2 W を選択してダウンロードします。
ファームウェアの書き込み
次に、ファームウェアをダウンロードしたホスト PC と Raspberry Pi Pico 2 W を USB ケーブルで接続して書き込みを行います。
接続すると、下記の画像のようにホスト PC で認識されるようになるので、ダウンロードしたファームウェアを書き込みます。(この例では、ホスト PC に Mac を使っています)
確認作業
MicroPython のファームウェアを書き込むことによって、Raspberry Pi Pico 2 W がシリアルデバイスとして認識されるようになります。
Mac の場合だと /dev/tty.usbmodem* に、Linux の場合だと /dev/ttyACM0 にそれ用のファイルが作成されます。
$ ls -la /dev/tty.usbmodem*
crw-rw-rw- 1 root wheel 0x9000008 12月 20 15:26 /dev/tty.usbmodem2301
$ ls -la /dev/ttyACM0
crw-rw---- 1 root dialout 166, 0 Dec 20 15:41 /dev/ttyACM0
Raspberry Pi Pico 2 W では、MicroPython が使えるようになっています。
- Mac
$ screen /dev/tty.usbmodem2301
MicroPython v1.27.0 on 2025-12-09; Raspberry Pi Pico 2 W with RP2350
Type "help()" for more information.
>>> print("Hello, World!")
Hello, World!
- Linux
$ sudo screen /dev/ttyACM0
MicroPython v1.27.0 on 2025-12-09; Raspberry Pi Pico 2 W with RP2350
Type "help()" for more information.
>>> print("Hello, World!")
Hello, World!
Wi-Fi 通信する
前提
上記の記事で記載した通りに Raspberry Pi をアクセスポイント化しておきます。
sudo nmcli device wifi hotspot \
ifname wlan0 \
con-name con-my-ap \
ssid my-ap \
password password
設定が完了すると、以下の情報で接続可能になります。
- SSID:
my-ap - password:
password
$ nmcli device show wlan0 | grep ADDRESS
IP4.ADDRESS[1]: 10.42.0.1/24
IP6.ADDRESS[1]: fe80::2ecf:67ff:fe2e:14ea/64
アクセスポイント化した Raspberry Pi のワイヤレス通信用のネットワークインターフェースには10.42.0.1/24 が当たっているので、Raspberry Pi Pico W には、10.42.0.2/24 ~ 10.42.0.254/24 のいずれかが当たるようになるはずです。
実装
基本的には以下に書かれている通りです。
import time
import network
ssid = 'my-ap'
password = 'password'
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid, password)
# Wait for connect or fail
max_wait = 10
while max_wait > 0:
if wlan.status() < 0 or wlan.status() >= 3:
break
max_wait -= 1
print('waiting for connection...')
time.sleep(1)
# Handle connection error
if wlan.status() != 3:
raise RuntimeError('network connection failed')
else:
print('connected')
status = wlan.ifconfig()
print('ip = ' + status[0])
問題なく通信ができると、Raspberry Pi 側の DHCP の機能によって割り当てられた IP アドレスが出力されます。
