8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Raspberry Pi Pico W で e-paper に日本語を表示する

Last updated at Posted at 2024-05-11

image.png

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に転送。

CleanShot 2024-05-11 at 11.13.21@2x.png

先ほどダウンロードした 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()
    

実行すると日本語表示が出来ました。

image.png

差し替え済みのコードは以下に置いてあります。

https://gist.github.com/kenji0302/5562cb757d5ae34b102ea1da1819fc47

次は

画像表示とかフォントサイズの拡大、ネットワーク越しに取得したデータの表示などをやりたい。

もっと大きいフォントサイズでの表示はこちらに記事を作成。
Raspberry Pi Pico W で e-paper に日本語を表示する その2 #micropython - Qiita

参考文献

8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?