本日発表されたRaspberry Pi Pico W(以下、Pico W)は、これまでのRaspberry Pi Pico(以下、Pico)に無線LANが追加されたバージョンです。Raspberry Pi Zeroに無線LANが搭載された時と似た流れを感じますね。
Picoで遊んでいると、ネットワーク接続が欲しくなることがよくあったため、Pico Wはある意味で待望のリリースと言えそうです。
今回もサンプルをお預かりしましたので、さっそく遊んで、もとい、色々試していきます。
外観
外観をPicoと比べてみます。左がPico W、右がPicoです。
まずは表面。Picoと比べると、四角い銀色のパーツとアンテナが増えたのが分かりやすい変化です。アンテナの配置の都合で、DEBUGのスルーホールが移動してしまったため、これがあることを前提とした基板を作成している人は要注意かも知れません。
Picoで他に惜しいポイントだった、MicroUSBと、RESETボタンがない点は変わりませんでした。(※右のPicoにはPimoroni Captain Resettiが増設されています)
つづいて裏面。Picoよりも各種認証や権利関係のロゴと文字でいっぱいになりました。EUを離脱したイギリスの適合性評価マークであるUKCAロゴが加わった点は、イギリスの製品らしい新たな特徴です。基板の余白が少ないため、今後日本で技適が取得されても、基板への直接の印字は難しそうです(他の国などもそうですが……)。
MicroPythonファームウェアの用意と書き込み
今回はかんたんな例として、HTTPサーバーを動かして、BME280のセンサーデータJSONで提供するAPIと、それを毎秒取得してデータを表示するようなHTMLを提供する、MicroPython向けのスクリプトを作成しました。スクリプトはGitHubに配置しました。
今回はPimoroniのBME280ライブラリを使用するために、ライブラリを組み込んだPico W向けMicroPythonファームウェアを自前でビルドして使用しました。ビルドの詳細は割愛しますが、MicroPythonのビルドは初めてで、少し苦労しました……。Pico Wリリース前だったため自前ビルドをしましたが、リリース後はきっとPimoroniからPico W向けのファームウェアが提供されると思われるので、今後はそちらを使えば良いでしょう。
さて、Pico Wのテストには、スイッチサイエンスさんからお借りしているいつもの電波暗箱を使用しました。ファームウェアを書き込むには、BOOTSELボタンを押しながら通電する必要があるため、洗濯バサミでボタンを挟んだ状態で暗箱に設置して、電波暗箱の外から書き込みを実行しました。書き込み後はケーブルを抜いてから電波暗箱を開き、洗濯ばさみを外しました。これで準備は完了です。
電波暗箱の無線LAN環境の構築
電波暗箱の中では当然ながら外の電波は遮断されて、部屋の無線LANが使用できません。そこで、Raspberry Piとhostapdを使用した無線LANのブリッジを作成して、それを電波暗箱の中に入れて、Pico WはRaspberry Piの無線LANブリッジに接続するようにします。
Thonnyからスクリプトを実行して、起動後にPico WのIPアドレスにアクセスします。すると、HTMLファイルが読み込まれて、毎秒センサーのデータが更新されました。
なお、電力チェッカーを使用して消費電力を確認したところ、無線LANに接続したあと何もしていない状態では0.02A、データを転送している最中では0.08A前後となりました。
転送速度の調査
Pico Wの転送速度を調べるために、/longにアクセスされたら500KBくらいの文字列を送るようにスクリプトを少し改造しました。これを無線LANブリッジのRaspberry Piからcurlでダウンロードして、平均ダウンロード速度を確認しました。
akkie@raspberrypi:~ $ curl http://192.168.2.21/long -o /dev/null
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 500k 0 500k 0 0 43708 0 --:--:-- 0:00:11 --:--:-- 44116
結果は約42.7KB/秒となりました。軽量なHTMLやJSONデータを読み込むには問題ない速度で、実用的そうです。
vs Pimoroni Pico Wireless Pack
Pimoroni Pico Wireless Packは、Pico向けの無線LAN機能拡張ボードで、ESP32を使用して無線LAN接続を使用するため実現します。Pico Wが出る以前のPicoではこのような拡張ボードが必要でした。
まず物理的な比較をすると、Picoのピンがボードで覆われるため、他のボードと同時に使うにはPimoroni Pico Omnibusのような拡張ボードが別途必要になり、作品も大きくなってしまいます。Pico Wであれば、無線のためにピンを使うことはなくなるため、見た目をスッキリさせられます。
続けて転送速度です。Pimoroniのサンプルスクリプトをベースに、先ほどと同じく文字列をたくさん転送するスクリプトを作成して、curlでダウンロードして調べます。
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 10240 100 10239 0 0 1424 0 0:00:07 0:00:07 --:--:-- 1467
結果は1.4KB/sで、Pico Wの1/40になってしまいました……。実際に別の用途で使用したときもHTMLの転送にとても時間がかかっていたため、改めて数字にしてみるとなかなか遅いです。
最消費電力です。BME280のセンサーを読み出してネットワーク通信するようなスクリプトを動かして調べたところ、何もしていない状態では0.06A、通信時は0.12A程度となりました。Pico Wと比較するといずれも消費電力は大きめですね。
まとめ
Raspberry Pi Pico Wの登場によって、拡張ボードがなくてもネットワークが扱えるようになり、IoT用途として非常に使い勝手の良いボードに進化しました。
もし、通常のRaspberry Piでセンサーを読み出してネットワークで転送するような作品を動かしているなら、Pico Wに移植することで消費電力を大きく減らせそうです。ラジコンカーやロボットなどもPico Wを使って作れそうですね。
一方で、従来のPicoもネットワークを必要としない作品では引き続き需要があると考えられるので、用途に応じて無線あり・なしどちらかのPicoを使い分けると良いでしょう。
そして、毎度残念ながら、Pico Wがいつごろ日本で使用できるようになるのかは不明ですが、日本で発売されるのが待ち遠しいアイテムがまた増えました。
(2023/3/27追記)日本での販売が開始しました。