内容
- Pico Wで簡単なWebサーバーを構築
→ 自分のパソコンやスマホからアクセスできる小さなWebページを表示 - ブラウザからLED制御
→ Webページ上のボタンを押すと、Pico W の LED を ON/OFF できる - HTMLとMicroPythonの連携
→ Pico W でWebページ(HTML)を返し、その内容に応じてGPIOを操作する
ポイント
- WebとIoTの融合
Pico W を使えば、IoT機器を「Webブラウザ」から操作できる。
→ 専用アプリ不要、スマホやPCからアクセス可能。 - HTTP GET/POST の基本理解
GET
: URLのパラメータを利用して命令を送る(例:...?led=on
)POST
: フォームデータを送る方法(より安全で実用的)
サンプルコード(MicroPython)
Pico W にアップロードして実行すると、Webサーバーが起動します。
import network
import socket
import machine
import time
import secrets # Wi-Fi情報を保存したファイル
# LED ピン(Pico W の内蔵 LED)
led = machine.Pin("LED", machine.Pin.OUT)
# Wi-Fi 接続
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(secrets.SSID, secrets.PASSWORD)
print("Wi-Fi 接続中...")
while not wlan.isconnected():
time.sleep(1)
print("接続成功:", wlan.ifconfig())
# HTML ページ
html = """<!DOCTYPE html>
<html>
<head><title>Pico LED Control</title></head>
<body>
<h1>Pico W Web Server</h1>
<p><a href="/?led=on"><button>LED ON</button></a></p>
<p><a href="/?led=off"><button>LED OFF</button></a></p>
</body>
</html>
"""
# ソケットサーバー開始
addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1]
s = socket.socket()
s.bind(addr)
s.listen(1)
print('Web server running...')
while True:
cl, addr = s.accept()
print('Client connected from', addr)
request = cl.recv(1024).decode()
print("Request:", request)
# LED 制御
if '/?led=on' in request:
led.on()
if '/?led=off' in request:
led.off()
# HTML を返す
cl.send('HTTP/1.0 200 OK\r\nContent-type: text/html\r\n\r\n')
cl.send(html)
cl.close()
# secrets.py
SSID = "your_wifi_name"
PASSWORD = "your_wifi_password"
学びのステップ
- Webサーバー起動確認
- シリアルモニタに出る IP アドレスをブラウザで開く
- Pico が返すWebページが表示されれば成功
- LED制御
- 「ON」「OFF」ボタンを押して LED の状態が変わるか確認
- HTTP理解
- URLの
...?led=on
が GETパラメータになっている - 実際のIoTではセンサー値送信に
POST
がよく使われる
- URLの
コメント