Raspberry Pi Pico W と e-paper で表示制御できると、ネットワーク越しに情報取得していろいろ表示することが出来そう。まずは日本語表示するところまでやってみることにした。
購入
スイッチサイエンスで以下を購入。ピンヘッダを自分で半田付けするのは大変なのでピンヘッダつきのものを購入。
Raspberry Pi Pico WH — スイッチサイエンス
e-paperはピンヘッダに差し込むだけで接続が簡単なものを選んだ。
Raspberry Pi Pico用 2.13インチ e-Paper ディスプレイ(白黒赤)212×104 — スイッチサイエンス
また Raspberry Pi Picoは Micro USB-Bポート。最近はType-Cのポートのみの端末が多いので、C-microBのケーブルを購入。Amaoznとかだと¥1,000前後するので一緒に買うのがお薦め。
USBケーブル(C-microBタイプ)50cm — スイッチサイエンス
セットアップ
MicroPython - Raspberry Pi Documentation を参考に MicroPythonをセットアップする。
文面を読まなくても Drag-and-Drop MicroPython のアニメーションを見ればだいたいわかるはず。
Thonny, Python IDE for beginners をインストールして起動する。
Raspberry Pi Pico W を接続する。
コードを書く
ボード上のLチカを試す
Thonny で以下のコードを実行。シェルにLEDの状況が表示され、ボード上のLEDが点滅する。
Raspberry Pi Pico のサンプルコードだと machine.Pin(25, Pin.OUT)
となっているが Pico W は machine.Pin('LED', Pin.OUT)
としないと動かないので注意
from machine import Pin
import utime
led = machine.Pin('LED', Pin.OUT)
while True:
led.value(1)
print(led.value())
utime.sleep(1)
led.value(0)
print(led.value())
utime.sleep(1)
e-paperの描画
サンプルコードがあるので購入した型番に合わせたコードを取得。
スイッチサイエンスの商品ページからリンクのあるメーカーページ
2.13inch e-Paper E-Ink Display Module (B) for Raspberry Pi Pico, 250x122 pixels, Red / Black / White, SPI Interface | Pico-ePaper-2.13-B
これを見ると Pico-ePaper-2.13-B
という型番のようだ。
Pico_ePaper_Code/python at main · waveshareteam/Pico_ePaper_Code
レポジトリ内の Pico_ePaper-2.13-B_V4.py
を Thonny に貼り付け実行。e-paperに描画出来ることを確認する。
ちなみに Pico_ePaper-2.13-B.py
は動作しなかった。
日本語の表示
このレポジトリをダウンロード。
https://github.com/Tamakichi/pico_MicroPython_misakifont
Thonny の 表示→ファイル で Raspberry Pi Pico W のファイルを閲覧、操作できるようになるので、misakifont/ を Raspberry Pi Pico Wに転送。
先ほどダウンロードした Pico_ePaper-2.13-B_V4.py の if __name__=='__main__':
から下の部分を以下のコードと差し替え。
def jpredchar(fd, epd, x, y):
for row in range(0,7):
for col in range(0,7):
if (0x80>>col) & fd[row]:
epd.imagered.pixel(col + x, row + y, 0x00)
def jpblackchar(fd, epd, x, y):
for row in range(0,7):
for col in range(0,7):
if (0x80>>col) & fd[row]:
epd.imageblack.pixel(col + x, row + y, 0x00)
def jpredtext(str, x, y, mf, epd):
for c in str:
d = mf.font(ord(c))
jpredchar(d, epd, x, y)
x = x + 9
def jpblacktext(str, x, y, mf, epd):
for c in str:
d = mf.font(ord(c))
jpblackchar(d, epd, x, y)
x = x + 9
if __name__=='__main__':
# epd = EPD_2in13_B_V4_Portrait()
epd = EPD_2in13_B_V4_Landscape()
epd.Clear(0xff, 0xff)
epd.imageblack.fill(0xff)
epd.imagered.fill(0xff)
mf = MisakiFont()
str="はろーわーるど"
jpredtext(str, 50, 50, mf, epd)
str="日本語の表示テスト"
jpblacktext(str, 50, 65, mf, epd)
epd.display()
実行すると日本語表示が出来ました。
差し替え済みのコードは以下に置いてあります。
https://gist.github.com/kenji0302/5562cb757d5ae34b102ea1da1819fc47
次は
画像表示とかフォントサイズの拡大、ネットワーク越しに取得したデータの表示などをやりたい。
もっと大きいフォントサイズでの表示はこちらに記事を作成。
Raspberry Pi Pico W で e-paper に日本語を表示する その2 #micropython - Qiita