Raspberry Pi Pico W で無線Lチカ

無線機能が追加されたラズベリーパイPicoWで内蔵のLEDを無線Lチカさせます。

Raspberry Pi Pico W で無線Lチカ
技適について

2022/09/01現在において、日本国内で Pico W を利用される場合は技適未取得機器を用いた実験等の特例制度申請を行う必要がありますのでご注意ください。

ハードウェア

今回は Raspberry Pico W と白黒電子ペーパーの Pico Inky Pack を使います。

電子ペーパー持ってないけど?

電子ペーパーが無くても、単体のPico Wのみでも動作します。

https://shop.pimoroni.com/products/pico-inky-pack?variant=40044626051155
MEMO

白黒表示の電子ペーパーです。記事執筆時点では2,000円ほどで販売されています。

はんだ付け

Raspberry Pico W はピンがついていないため、電子ペーパーで使うためにはピンをはんだ付けしてあげる必要があります。

Raspberry Pi Pico W

Raspberry Pi Pico WH というすでに足がはんだ付けされているものもあります。(現時点では未発売)

はんだ付けされてるタイプは面倒が無くて良いですね。

Picoに足をはんだ付け

そして後はUSB端子の方向に注意してPicoを差し込みます。

ソフトウェア

今回はMicroPythonを使っていきますが、PIMORONI製品を利用する際は少し改造されたちょっと便利なMicroPythonがあるので以下のリンクからダウンロードします。

ちょっと便利なところ
一部のPIMORONI製品を利用する際に特にライブラリが必要なくなったりと、若干便利になっています。しかし、純粋なMicroPythonを使いたい方にとっては少し余計な物を・・と感じる場面があるかもしれません。

MicroPythonをPicoへ書き込む

Releases · pimoroni/pimoroni-pico
Libraries and examples to support Pimoroni Pico add-ons in C++ and MicroPython. - pimoroni/pimoroni-pico

リンク先にかなり沢山ファイルが置いてあるので少し戸惑うかもしれませんが、これは異なるハードウェア毎にリリースされているためこのようになっています。今回はRaspberry Pi Pico W を利用するので、対応したものを選ぶ必要があります。

スクロールしていくと以下のようなリストがありますので、そこから picow と書かれているものをダウンロードします。記事執筆時点ではv1.19.6です。

picow と記載があるものをダウンロードします

PicoをPCとUSBで接続するとRPI-RP2 というストレージが出てきますので、そこにダウンロードした pimoroni-picow-1.19.7-micropython.uf2 を書き込みます。

MEMO

Raspberry Pi Pico W 単体では直接 Python を実行することは出来ないため、Python実行環境のひとつであるMicroPythonを利用します。他にもCircutPython等の似たようなものがいくつかあります。

開発ツールThonny

次はPicoをPCから利用するためにThonnyという開発ツールを利用するので、そちらもダウンロードします。記事執筆時点で最新バージョンは4.0です。

画面右上からご利用中のOSにマウスオーバーします - https://thonny.org/

ダウンロードしたファイルをダブルクリックしてインストールします。インストールは次へどんどんすすめていけば完了しますので、割愛します。

プログラムの書き込み

では早速On/Offプログラムを〜といきたい所ですが、まずは無線LANへ接続するためのコードから用意していきます。

無線LAN利用のためのファイル

無線LANの利用にはnetwork_manager.pyWIFI_CONFIG.pyが必要です。ファイルは以下のリンクからダウンロードすることができます。

pimoroni-pico/micropython/examples/common at main · pimoroni/pimoroni-pico
Libraries and examples to support Pimoroni Pico add-ons in C++ and MicroPython. - pimoroni-pico/micropython/examples/common at main · pimoroni/pimoroni-pico
https://github.com/pimoroni/pimoroni-pico/tree/main/micropython/examples/common

network_manager.py は変更する必要はありませんが、 WIFI_CONFIG.pyは現在利用しているご家庭の無線LANの設定を入力してください。

SSID = "無線LAN名"
PSK = "パスワード"
COUNTRY = "JP"
WIFI_CONFIG.py
MEMO

WIFI_CONFIG.py は設定ファイルの役割です。Pico W は残念ながら 5GHz帯の無線LANには対応していないので 2.4GHzを設定してください(最後に5Gとついていないもの)

開発ツールを起動

では先程インストールしたThonnyを起動します。起動するとShell というタブの部分がこのような表示になっているハズですが、もし何らかのエラーが起きている場合は赤色の文字が表示されます。

その場合は画面上の停止アイコン(赤い丸の中央に白い□)を押します。

ファイルをPicoへアップロード

利用している PC 上のプログラムを直接 Raspberry Pi Pico W で実行することはできないため、プログラムはいったんPicoにアップロードする必要があります。

MEMO

Thonnyではアップロードとなっているので、この記事ではアップロードと記しましたが、単にPicoへファイルをコピーするだけです。

現在Pico上にあるファイルは画面から確認できます。

もしこのファイル一覧画面が表示されていない場合はメニューの View > Files を選択すると表示することが出来ます。

ファイル一覧が表示されていない場合

ライブラリのインストール

以下のリンクから urequest.mpyをダウンロードし、Pico に lib フォルダを作成しアップロードします。

MEMO

mpyファイルはプリコンパイル済みファイルという形式で、ファイルサイズが小さく通常のPythonコードより高速で動作します。Picoの場合はただでさえ少ない容量を少しでも節約することが可能なので、出来る限りmpy形式の利用が好ましいと言えます。

pimoroni-pico/micropython/examples/common/lib/urllib at main · pimoroni/pimoroni-pico
Libraries and examples to support Pimoroni Pico add-ons in C++ and MicroPython. - pimoroni-pico/micropython/examples/common/lib/urllib at main · pimoroni/pimoroni-pico
別の方法も

この方法はいわゆる手動インストールですが、Thonny メニューの Tools > Manage Packages.. から micropython-urllib.urequest と検索することでインストールすることも出来ます。

メインプログラム

それでは最後にメインのプログラムです。show_ip_address というファイルを以下のリンクからダウンロードして main.py という名前で pico に保存(アップロード)します。

pimoroni-pico/show_ip_address at main · pimoroni/pimoroni-pico
Libraries and examples to support Pimoroni Pico add-ons in C++ and MicroPython. - pimoroni-pico/show_ip_address at main · pimoroni/pimoroni-pico
最終的なファイル構成

実行してみる

ではファイルがすべて揃ったので実行していきます。ちなみに電子ペーパーが無くてもそのまま動作します。

緑色の再生ボタンを押すと、プログラムが起動し、ShellタブにIPアドレスが表示されます。これが Raspberry Pi Pico W のIPアドレスになります。

電子ペーパー上にもIPアドレスが表示される
(例) IPアドレスは 10.10.22.186 となっている

ではChromeやFirefox等のブラウザからこのIPアドレスへアクセスします。

PicoでWebサーバーが動いてるんです。この記事では固定メッセージだけだけどすごいっす。

MEMO

IPアドレスとは各機器ごとに割り振られる番号です。この番号はご利用になっているルーターからDHCPという仕組みによって割り振られます。

http://10.10.22.186

ページが表示されました。

無線Lチカ

アドレスの末尾に /light/on と入力しエンターを押します。

/light/on をIPアドレスの末尾に追加しアクセス

Pico本体のLEDが光りましたね!

LEDをオフにするには /light/off へアクセスするとオフになります。

MEMO

main.py というファイル名をつけておくと電源ON時に自動的に実行されるので、次回以降はPCに接続しなくてもUSB充電器などに接続しても動作します。

雑な解説

このコード、PIMORONIのGitHubからダウンロードを行いましたが、ラズベリーパイ公式資料に記載されているものに電子ペーパー用のコードが追加されているだけのものです。

仕組みとしては非常に簡単で、リクエストされたURLに/light/on が含まれている場合はLEDをON、/light/off の場合はLEDをOFFにするという仕組みになっています。

コード101, 102 行目で判定し後続処理でLEDが制御されている
ご注意
この方法はあくまでも動作するというだけで、セキュリティ等は考慮されていません。あくまでも実験レベルです。

記事の内容は間違いが無いように気をつけていますが、私の認識違いや、ミスなどにより間違っている可能性もあります。もし発見された場合はお問い合わせフォームよりご連絡頂けると幸いです。