あっきぃです。本日リリースされたRaspberry Pi Picoのサンプルを太田さんからお借りしているので、レポートしていきます。
外観
外観の紹介。サンプルのため、製品版とは一部異なる場合があります。また、製品はピンヘッダーが未実装の状態で販売されます。
Raspberry Pi PicoにMicroPythonを入れて使う
Raspberry Pi Pico上でMicroPythonを使うことができます。何かを簡単に動かしてみるならこれが一番手軽でしょう。
セットアップの方法はRaspberry Pi Picoのサイトで解説されているため、そちらを参照してください。
https://pico.raspberrypi.org/getting-started
また、プログラミングにはRaspberry Pi OSにバンドルされているThonnyを使うことができます。こちらも上記サイトのMicroPython documentation(PDF)の4章で説明されているので、これを参照してセットアップすると良いでしょう。MicroPythonの場合ファイルの送受信にはampyなどを利用しますが、Thonnyでもファイル保存ダイアログを通じてファイルの送り込みや取得ができるようになるため、用意しておくと便利です。
……本当はドキュメント見ろではなくてステップごとの解説ができると良いのですが、今回はひとまず簡易レポートということで端折らせてください……!
PCD8544 LCDを動かしてみる
手持ちのそれっぽいデバイスでMicroPythonで動かせそうなものを漁ってみたところ、大昔に買ったNokia 5110ことPCD8544 LCDが出てきたので、これを動かしてみることにしました。
まずは配線。Raspberry Pi PicoのSPI0ポートを使用しつつ、これ以外は適当なGPIOピンに差し込みました。
[pcd8544:pico(physical pin)]
Gnd: Pico GND (38)
BL : Pico GP28(34)
Vcc: Pico 3V3 (36)
Clk: Pico GP6 ( 9)
Din: Pico GP7 (10)
DC : Pico GP4 ( 6)
CE : Pico GP5 ( 7)
RST: Pico GP8 (11)
PCD8544用のMicroPython向けライブラリはGithubにあり、そのまま使う事ができました。
https://github.com/mcauser/micropython-pcd8544
pcd8544とpcd8544_fbの2つライブラリがあり、後者のほうが文字を書いたり図を描いたりしやすいので、これをインストールしますが、ThonnyのManage Packagesではインストールできません。pcd8544_fb.pyをRaspberry Pi上に用意して一旦Thonnyで開き、Raspberry Pico上に/lib/pcd8544_fb.pyとして保存することでファイルを転送して、インストールします。
テストプログラムは、リポジトリのexample/framebuf.pyを元にピン番号を書き換えるだけで動きます。ピン番号の書き換えは以下の通り。SPI0番を使うのでSPI(0)で初期化します。Pinの番号はGPの方の数字を指定します。
spi = SPI(0)
spi.init(baudrate=2000000, polarity=0, phase=0)
print(spi)
cs = Pin(5)
dc = Pin(4)
rst = Pin(8)
# if your pcd8544 has BL pin, uncomment this line.
bl = Pin(28, Pin.OUT, value=1)
lcd = pcd8544_fb.PCD8544_FB(spi, cs, dc, rst)
その後の描画テストは、処理の度にframebuf.fill(0)が挟まれており、ほとんどのテストが見えずに終わってしまうため、framebuf.fill(0)を削りつつ、順に描画している様子がわかるようにちょっと書き換えたものを用意しました。
実行結果はこの通りです。
ソースコードは以下のURLで公開しています。
https://gist.github.com/Akkiesoft/c72034f89b9aa6a3bedd4994bd51676a
まとめ
新しいRaspberry Pi Picoをさわってみる記事でした。
4ドル(日本では500円前後になるようです。スイッチサイエンスさんでは550円とのアナウンスがありました)と安価なので、気軽に買って遊んでよし、積みボードにしても罪悪感薄しな感じで良いですね(こら)。
また、MicroPythonの豊富なライブラリが利用できるのはわりと強いのかなと思いました。ESPと比べると無線周りがない点が弱みのような気もしますが、無線はいらない場合も多々なので、これはこれでありなのではないかと思います。