Raspberry Pi Pico Wでウェブサーバーを動かす
このプロジェクトはPico Wの「Hello World!」と言えます。Wi-Fiに接続する方法、Pico W上でHTTPウェブサーバーを実行する方法、GPIOピンを制御する方法を示します。
ピコを使い始めるのに、手軽で簡単なプロジェクトをお探しなら、これはうってつけだ!
Pico WのWiFi経由でLEDを点滅させる手順
これを実現するためには、3つの包括的なテーマがあります。
MicroPythonのセットアップ
まず、MicroPythonのセットアップが必要です。 UF2ファイルのダウンロードはこちら は、Pico Wのために特別に作られたものです。
BOOTSELボタンを押しながら、Pico WをUSBで接続します。
マウントしたら、先ほどダウンロードしたUF2ファイルをPicoにコピーしてください。
Thonnyを使ってPico Wをプログラミングする
ThonnyはPico Wのプログラミングを容易にし、Raspberry Pi OSにプリインストールされています。また、以下のことも可能です。 Windows、Mac、Linux用のダウンロードはこちらから。
インタプリタがMicroPython(Raspberry Pi Pico)に設定されていることを確認してください。
ThonnyがRaspberry Pi Pico Wに接続され、シェル(Thonny IDEの一番下のセグメント)でコマンドを実行できるようになります。
ネットワークスキャンを実行し、Pico Wのワイヤレスが動作していることを確認する
シェルでは、このコードを実行して、ワイヤレスチップが動作しているかどうかをテストすることができます。
このコードを使用すると、お住まいの地域で利用可能なすべてのワイヤレスネットワークが印刷されます。
import network
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
print(wlan.scan())
Webサーバーのプログラム
という辞書を作成します。 秘密.py で、ssidとpwの値をお使いのネットワークに置き換えて、以下の内容でお使いください。
secrets = {
'ssid': 'Replace-this-with-your-Wi-Fi-Name',
'pw': 'Replace-this-with-your-Wi-Fi-Password'
}
次に、作成する main.py は、あなたのメインコードをホストします。.コードが何行にもわたるため Githubにあります。.
配信されるHTMLページを作成する
以下のファイルは、Pico W の IP アドレスを読み込んだときに提供される HTML ファイルになります。として保存します。 索引.html
Pico WのLEDを点灯・消灯するためのボタンが2つあるだけのシンプルなページです。
<!DOCTYPE html>
<html>
<head>
<title>Pico W</title>
</head>
<body>
<h1>Pico W</h1>
<p>Control the onboard LED</p>
<a href=\"?led=on\"><button>ON</button></a>
<a href=\"?led=off\"><button>OFF</button></a>
</body>
</html>
すべてを走らせる時間
Thonnyの実行ボタン(再生マークのついた緑色のボタン)をクリックします。
Pico WのIPアドレスが表示されますので、同じ無線LANに接続されているWebブラウザにコピーします。
ボタンをクリックすると、変化が確認できるはずです。
を見つけることができます。 Githubのレポはこちらです。
私たちの このプロジェクトのYouTubeビデオでは、コードの説明など、より詳細な内容にも触れている。.
さらにインスピレーションを与えてくれるプロジェクトをお探しなら、パラゴン・プロジェクト・シリーズをご覧ください。 これ.
試行錯誤の結果、エラーが発生した
%Run -c $EDITOR_CONTENT
Traceback (most recent call last):
ファイル "", 行 1, in
ImportError: 'network'という名前のモジュールがない。
Pabloさん、こんにちは - Pico W用の最新のUF2ファイル(Picoだけでなく)を使用しているかどうか確認してください。 https://www.raspberrypi.com/documentation/microcontrollers/micropython.html
ネットワークモジュールが標準装備されています
100行目でget_html()関数を使用していますね。あなたのコードを実行すると、'get_html' isn't defined エラーが発生します。
また、find関数による検索は、例えばリファラーに'led=xx'という文字列が含まれていた場合にも値を返します。そのため、led_onとled_offの両方が同時に正の値を取得し、LEDがオンになるはずなのに再びオフになる。これを解決するには、if文を拡張して、小さなインデックス値(経験則として20だけ使いました)をチェックする必要があります。
if (led_on > -1 and led_on -1 and led_off < 20):
これで期待通りに動作するようになりました。
私はこの問題を解決しました:
r = r[:50]
アバント
led_on = r.find('?led=on')
led_off = r.find('?led=off')
これは、リクエストのスーパーキーワードを削除します。
コメントしようとしたのですが、なぜかコメントが正しく出てきません...。