Raspberry Pi Pico Wでウェブサーバーを動かす

このプロジェクトはPico Wの「Hello World!」と言えます。Wi-Fiに接続する方法、Pico W上でHTTPウェブサーバーを実行する方法、GPIOピンを制御する方法を示します。

ピコを使い始めるのに、手軽で簡単なプロジェクトをお探しなら、これはうってつけだ!

Pico WのWiFi経由でLEDを点滅させる手順

これを実現するためには、3つの包括的なテーマがあります。

MicroPythonのセットアップ

まず、MicroPythonのセットアップが必要です。 UF2ファイルのダウンロードはこちら は、Pico Wのために特別に作られたものです。

ピコWボタン

BOOTSELボタンを押しながら、Pico WをUSBで接続します。

マウントしたら、先ほどダウンロードしたUF2ファイルをPicoにコピーしてください。

Thonnyを使ってPico Wをプログラミングする

ThonnyはPico Wのプログラミングを容易にし、Raspberry Pi OSにプリインストールされています。また、以下のことも可能です。 Windows、Mac、Linux用のダウンロードはこちらから。

インタプリタがMicroPython(Raspberry Pi Pico)に設定されていることを確認してください。

Micropythonが動作するThonny IDE

ThonnyがRaspberry Pi Pico Wに接続され、シェル(Thonny IDEの一番下のセグメント)でコマンドを実行できるようになります。

ネットワークスキャンを実行し、Pico Wのワイヤレスが動作していることを確認する

Thonny IDEが無線LANスキャンを実行中

シェルでは、このコードを実行して、ワイヤレスチップが動作しているかどうかをテストすることができます。

このコードを使用すると、お住まいの地域で利用可能なすべてのワイヤレスネットワークが印刷されます。

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ページを作成する

ピコWウェブサーバー

以下のファイルは、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>

すべてを走らせる時間

ピコWウェブサーバー

Thonnyの実行ボタン(再生マークのついた緑色のボタン)をクリックします。

Pico WのIPアドレスが表示されますので、同じ無線LANに接続されているWebブラウザにコピーします。

ボタンをクリックすると、変化が確認できるはずです。

を見つけることができます。 Githubのレポはこちらです。

私たちの このプロジェクトのYouTubeビデオでは、コードの説明など、より詳細な内容にも触れている。.

さらにインスピレーションを与えてくれるプロジェクトをお探しなら、パラゴン・プロジェクト・シリーズをご覧ください。 これ.

6コメント

  1. Pablo on 7月 13, 2022 at 4:31 pm となります。

    試行錯誤の結果、エラーが発生した

    %Run -c $EDITOR_CONTENT
    Traceback (most recent call last):
    ファイル "", 行 1, in
    ImportError: 'network'という名前のモジュールがない。

  2. Charles on 10月 25, 2022 at 8:51 pm となります。

    100行目でget_html()関数を使用していますね。あなたのコードを実行すると、'get_html' isn't defined エラーが発生します。

  3. Gunther on 11月 28, 2022 at 12:51 am となります。

    また、find関数による検索は、例えばリファラーに'led=xx'という文字列が含まれていた場合にも値を返します。そのため、led_onとled_offの両方が同時に正の値を取得し、LEDがオンになるはずなのに再びオフになる。これを解決するには、if文を拡張して、小さなインデックス値(経験則として20だけ使いました)をチェックする必要があります。

    if (led_on > -1 and led_on -1 and led_off < 20):
    これで期待通りに動作するようになりました。

    • Tonton on 8月 1, 2024 at 4:09 pm となります。

      私はこの問題を解決しました:
      r = r[:50]
      アバント
      led_on = r.find('?led=on')
      led_off = r.find('?led=off')

      これは、リクエストのスーパーキーワードを削除します。

  4. Gunther on 11月 28, 2022 at 12:53 am となります。

    コメントしようとしたのですが、なぜかコメントが正しく出てきません...。

コメントを残す