
ラズベリーパイPico W(以後、ラズピコ)をアクセスポイント(APモード : SoftAP)にして、HTTPリクエストでLEDを点灯できるようにしてみます。
今回の内容はラズベリーパイPico WでHTTPリクエストでLEDを点灯できるようにしてみるのコードの書き換えになります。
先にアクセスポイントについて触れておきますと、アクセスポイントはWiFiの親機(ルータ)のような機能を指します。
ただ、今回のAPモードではラズピコ自身が外部のネットワークに繋がっていないので、ラズピコと操作用のパソコン(ラズベリーパイ等)間の小さなWiFiのネットワークを形成します。
ラズベリーパイPico Wのmain.py
import network
import socket
import machine
led = machine.Pin("LED", machine.Pin.OUT)
led.off()
# アクセスポイントの設定(ssidとpwは自由に決めていい)
ssid = 'RPiPicoW_AP'
pw = 'raspberry'
# アクセスポイント関連
def host(ssid, pw):
ap = network.WLAN(network.AP_IF)
ap.config(essid=ssid, password=pw)
ap.active(True)
while not ap.active():
pass
ip = ap.ifconfig()[0]
print(f'Hosting on {ip}')
# ソケットを開く
def open_socket(ip):
address = socket.getaddrinfo('0.0.0.0', 80)[0][-1]
connection = socket.socket()
connection.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
connection.bind(address)
connection.listen(1)
return connection
# レスポンスで送信するHTML
def build_html():
return f"""
<!DOCTYPE html>
<html>
<head>
<title>raspberry pi pico w</title>
</head>
<body>
<p>hello raspberry pi pico w!</p>
<p>
LED:
<a href="/on?">on</a>
<a href="/off?">off</a>
</p>
</body>
</html>
"""
# サーバを立ち上げる
def serve(connection):
while True:
client = connection.accept()[0]
request = client.recv(1024)
request = str(request)
try:
request = request.split()[1]
except IndexError:
pass
if request == "/on?":
led.on()
elif request == "/off?":
led.off()
client.send(build_html())
client.close()
try:
ip = host(ssid, pw)
led.on()
connection = open_socket(ip)
serve(connection)
except KeyboardInterrupt:
machine.reset()
上記コードをThonny上で実行してみると、
Connected on 192.168.4.1
のような文字列が出力されます。
※利用しているネットワークによって上記の値は異なります
APモードで起動したラズピコにWiFi経由でアクセスしてみます。

WiFiネットワークの設定を開き、コード内で指定したSSID(今回であればRPiPicoW_AP)を選択します。
パスワードの入力を求められますが、これも今回指定したパスワード(今回であればraspberry)を入力します。
ネットワークに接続した後、ブラウザを開きアドレスバーにThonnyのコンソールで出力されたされたIPアドレス(今回は192.168.4.1)を入力してアクセスしてみると、

main.pyのbuild_html関数で記述したHTMLが出力されます。
ブラウザに表示されているonとoffのリンクをクリックすろと、押した内容に従って、ラズベリーパイPico WのLEDが点灯か消灯になります。
4. ネットワークの基礎 — MicroPython latest ドキュメント