Raspberry Pi Pico WでWiFi経由でセンサデータをストリーミング配信

Raspberry Pi Pico Wの最も良い使い方の1つは、Webページを提供する機能を含むことです。
つまり、WiFiの範囲内であれば、スマホのセンサーデータをモニタリングするために使用することができます。
このプロジェクトでは、加速度データをモニターする方法の簡単な基礎と、ADXL343センサーを叩くと作動するデジタルサイコロを作成します。
ビデオ
必要な部品
- ブレッドボード
- ジャンパー線
ADXL343とは?
アナログ・デバイセズのADXL343は、先代のADXL345に続く製品です。
センサーは3軸の測定が可能で、感度は+-2g、+-4g、+-8g、+-16gの4段階で設定できます。低域は低速の動きに対して分解能が高く、高域は高速のトラッキングに適しています。
ADXL343にはCircuitPythonのライブラリもあり、MicroPythonで使えるので、かなり簡単に始められるようになりました。
このプロジェクトを行うには、Pico Wと同様にADXL343にヘッダをハンダ付けする必要があります。
ADXL343とPico Wの接続
Raspberry Piに接続するピンは4本です。
を接続します。 VIN にピンを刺す。 3.3V出力 をRaspberry Pi Pico Wにインストールします。
を接続します。 GND をPico Wのグランドピンに接続してください。
を接続します。 エスディーエー 宛がう GPIO0;
を接続します。 SCL 宛がう GPIO1.
Raspberry Pi Pico WのMicroPythonファームウェアをフラッシュする。

まず、MicroPythonのファームウェアをPico Wにフラッシュする必要があります(まだフラッシュしていない場合)。
次に、BOOTSELボタンを押しながら、Picoをコンピュータに接続します。新しいドライブが表示されるはずです。ダウンロードした.UF2ファイルをそのドライブにコピーしてください。
Raspberry Pi Pico WにThonnyをセットアップする。
Thonnyを開いてください。ダウンロードしてない人は ここで入手する
インタプリタに設定する MicroPython (Raspberry Pi Pico) をクリックすると、Thonny IDEのウィンドウの左下に表示されます。
Pico Wにライブラリーをコピーする

ライブラリやファイルは、こちらのGithubリポジトリからダウンロードしてください。
ZIPファイルをダウンロードするには、そのリンク先に行き、緑色の""をクリックします。コード" ボタンをクリックし ZIPダウンロード.
ダウンロードしたら、どこか覚えのある場所で解凍してください。
次に、Thonny IDE で、次のようにクリックします。 表示 > ファイル をクリックすると、あなたのファイルシステムとPico Wのファイルシステムが表示されます。
解凍したファイルを移動し、フォルダに入る MicroPython > II Pico W センサーサーバー。 各項目を右クリックし、"Upload to /" をクリックして、すべてをPico Wにコピーします。
コードの修正
Raspberry Pi PicoをWiFiネットワークに接続させるためには、まず 秘密.py を変更し sid そして pwの値を入力します。前者にはネットワークのSSID(名前)、後者にはパスワードを入力します。ファイルを保存します。
のです。 索引.html は、配信されるウェブページです。行の"<p>X AccX|Y AccY|Z AccZ</p>" と <p>結果 DiceVal</p> は、プロジェクト実行時にセンサーデータに置き換わります。
Raspberry Pi PicoをWiFiに接続する。
のです。 main.py は、アクションが起こる場所です。
これらの線は、あなたのWiFiに接続します。の文字列を変更するのを忘れないでください。 RP2.カントリー あなたの国がドイツ(DE)でない場合。
# エラーの可能性を避けるために国を設定する
rp2.country('DE')
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
# 節電モードを無効にする必要がある場合
# wlan.config(pm = 0xa11140)
# 無線チップのOTPでMACアドレスを見てみる
mac = ubinascii.hexlify(network.WLAN().config('mac'),':').decode()
print('mac = ' + mac)
# その他のクエリ
# print(wlan.config('チャンネル'))
# print(wlan.config('essid'))です。
# print(wlan.config('txpower'))です。
# 安全のために別のファイルからログインデータをロードする
ssid = secrets['ssid'] (秘密)
pw = secrets['pw'] (秘密)
wlan.connect(ssid, pw)
このコードのおかげで、WiFi接続が成功すると、オンボードのLEDが3回点滅します。また、メッセージとThonnyで見ることのできるIPアドレスが表示されます。 このIPアドレスは、後でサーバーにアクセスするのに便利です。
led = machine.Pin('LED',machine.Pin.OUT))です。
for i in range(wlan.status()):
led.on()
時間.sleep(0.2)
led.off()
time.sleep(0.2)
print('Connected')
status = wlan.ifconfig()
print('ip = ' + status[0])
エラーが発生した場合は、エラーコードの値に基づいてLEDが点滅します。
エラーの意味
- 0 = リンクダウン
- 1 = リンクジョイン
- 2 = Link NoIp
- 3 = リンクアップ
- -1 = リンクフェイル
- -2 = Link NoNet
- -3 = Link BadAuth
Pico WとADXL343の接続
I2Cオブジェクトを初期化します。
# I2Cの初期化
# busio.I2C(SCL, SDA)
i2c = busio.I2C(board.GP1, board.GP0)
そして、この2本の線は加速度センサーを作成し、タップ検出(サイコロ読み用)を可能にします。
# 加速度センサオブジェクトの作成
加速度センサ = adafruit_adxl34x.ADXL343(i2c)
accelerometer.enable_tap_detection()
コードの実行時間
コードを実行するには、Thonnyの実行ボタン(上部のツールバーの緑色のボタンの中に再生アイコンがあるボタン)を押します。
そして、Raspberry Pi Pico WのIPアドレスに接続し、Thonnyのシェルを開いていれば、そこで見ることができます。さもなければ、ルータにログインして、Pico WのIPアドレスを調べます。
Pico W はソケット接続で HTTP サーバを動作させており,ここで定義された接続を待ち受けます.
addr = socket.getaddrinfo('0.0.0', 80)[0][-1]を実行します。
s = socket.socket()
s.bind(addr)
s.listen(1)
Pico WのIPアドレスに接続すると、このコードが起動し、index.htmlが1秒ごとに最新のデータで更新されます。
cl, addr = s.accept()
print('クライアント接続元', addr)
cl_file = cl.makefile('rwb', 0)
while True:
line = cl_file.readline()
if not line or line == b'\n':
break
response = get_html('index.html')
data = 加速度計.加速度
tapped = accelerometer.events['tap'] (タップ)
response = response.replace('AccX', str(データ[0]))
response = response.replace('AccY', str(データ[1]))
レスポンス = レスポンス.replace('AccZ', str(data[2]))
if tapped:
dice_val = str(random.randint(1,6))
response = response.replace('DiceVal', dice_val)
cl.send('HTTP/1.0 200 OKrnContent-type: text/htmlrn╱')
cl.send(レスポンス)
cl.close()

ご覧のように、AccX、AccY、AccZをセンサーのデータに置き換えています。
センサーがタップされたら、1〜6のランダムな整数をHTMLページの "DiceVal "文字列に出力します。
次はどうする?
このチュートリアルは、センサーデータをウェブページにストリーミングする簡単な方法の一つです。
実はこれ、他のセンサーにも使えるコードなんです。
方法論は変わりません。センサーのための正しいライブラリを見つけて、main.py と index.html を修正し、センサーデータを取得して正しい値をウェブページにプッシュできるようにする必要があります。
DHT22やBME688を使った温湿度センサーのプロジェクトや、光抵抗器を使った明るさセンサーのプロジェクトなど、他にもいろいろなプロジェクトに着手することができます。
HTML5の機能を使うことで、HTML5がどのように作られているかを知ることができるのは良いことだ。