きっかけ
目次
電子ペーパーを使ってみようと思ったのは、このtweetに出会ったからでした。
ラズパイで #stablediffusion 動かせたから3時間に1回適当に画像を生成して7色電子ペーパーで表示させるフォトスタンド作ったけどいいなこれ pic.twitter.com/Ih5MKYRPmc
— だいち (@daichi000daichi) December 30, 2022
これめっちゃよくないですか。AIで自動生成する画像の代わりに、自分のジェネラティブアートを定期的に実行して表示できたらとてもいいのでは??と思いました。
さっそくInky Impression 4″ (https://www.switch-science.com/products/8135)
を購入し、試してみました。試したくてたまらなかったのだー。
サイズはカセットテープの箱ぐらい。
- 97 x 69 mm
- ディスプレイ:86 x 54 mm
とのことです。RaspberryPi本体より一回り大きいな、くらいでしょうか。
今回買ったこの電子ペーパーの説明、あまり記事がなかったので、自分の画像を表示できるようになるまでと、ハマったところなどを記録しておきます。
必要なもの
- Inky impression 4” https://www.switch-science.com/products/8135
- Raspberry pi 3~ (Raspberry pi zero でもよさそう!でもzeroだとはんだ付けが必要そう!)
- Raspberry pi のセットアップに、HDMI接続のディスプレイ、USB接続のマウスとキーボードが必要。後電源。
下準備
この電子ペーパーディスプレイは、ラズベリーパイにつなげて使います。
ラズベリーパイの初期設定をしておきます。
SSH接続する
SSH接続すると、ディスプレイやマウス、キーボードなどをラズパイにささなくても操作できてめっちゃ快適。わたしは今回始めて知りました。
もちろん、SSH接続せず、ディスプレイをさして、ディスプレイに表示させて操作してもできます。
ディスプレイをつないでいる状態でターミナルからconfig画面を開きます。
SSH接続をenableにする
sudo raspi-config
↓こんな画面が開きます。
「3. Interface Options」を選んでEnter →「I2 SSH」を選んでENTER、
Enableにするのか聞かれるので<はい>を選択します。
※ターミナルからでなくても、スタート画面からでも設定できる
設定→Raspberry Piの設定 でも設定画面開く。インターフェイスのタブを選択、SSHの項目を有効にする。
SSH接続のためのアドレスを確認
RaspberryPiの画面右上のネットワークマークの上にマウスを重ねると表示が出てきます。
そこにIPアドレスが書いてるので、覚えておきます。あとユーザー名を設定した人はそれを思い出しておきます。
接続したいパソコンのターミナルから、次の文を打ち込みます。
ssh pi@000.000.0.00
pi の部分はさっき思い出したユーザー名、
そして000.000.0.00 の部分はさっき覚えておいたIPアドレスです。
パスワードを聞かれるので、打ちます。RaspberryPiを初期設定したときに、ユーザー名とともに設定したパスワードです。
うまくいきましたか?このコンソールからRaspberryPiを操作できるようになりました。やったね。
組み立て
Inky impression 4”内容物
- 4.01インチ EPDディスプレイ(640 x 400 ピクセル)
- 40ピンメスヘッダ
- スタンドオフ – 支柱
組み立て
支柱をネジで固定するため、ネジ回しが必要です。
/ 組み立ては、ほぼさすだけ! \
ディスプレイにあまり圧力がかからないように、ちょっと慎重にさしていきます。
Inky impressionを使えるようにする
確認
- Pythonは3?
→python3より下のバージョンの場合、3に変更します。
[参考]: ラズパイ(Raspberry Pi)のpythonバージョン確認、python3への変更方法。
https://python-academia.com/raspberry-pi-python-version/
- 以前にRaspberry Pi にLDCモニタなどをつないで使っていた?
→ ある場合、Raspberry Pi を初期化したほうがいいかも
[参考]:【たった10秒】ラズベリーパイを初期化する方法(SDカードOS再インストール)https://sozorablog.com/reinstall/
ライブラリインストール
製造元の販売ページ(https://shop.pimoroni.com/products/inky-impression-4?variant=39599238807635) にある、
curl https://get.pimoroni.com/inky | bash
をターミナルにコピペし、ライブラリをインストールする。
Do you width to continue?[y/N]が出たら、y押してエンター。(2回ぐらい聞かれる)
動作確認
ターミナルで、
ls
と打つと、その階層にどんなものが有るか確認できます。「Pimoroni」というフォルダがあると思います。この中に入っていきましょう。
※ あと「cd」で階層を移動できます。「cd ..」でいっこ前の階層に戻ります。
cd ~/Pimoroni/inky/examples/7color
Pimoroni フォルダの中にある、inkyフォルダの中に、examplesフォルダがあります。その中にさらにいろいろはいっているのですが、そのうちの 「7color」がこのinky impression用のexampleとのこと。
examples を試して、動作確認をしてみます。
ここでさっきの「ls」を打ってみると、いくつか.pyという拡張子のファイルが入っています。
advanced clear.py cycle.py html images
buttons.py colour-palette.py graph.py image.py stripes.py
例えばまず、stripes.pyを試してみましょう。python3 と頭に打ってからファイル名を打ち込みます。
python3 stripes.py
と打ってみます。ターミナルで見るとこんなかんじ。
ディスプレイが何度も瞬いて、しばらくして画が完成します。この7色がこのディスプレイの使える色です。わーい。
いろいろ試して動作不良がないか確認してください!わたしのはありました(後記)!
自分の絵を表示する
さっきのexamples/7colors のなかに、image.py というファイルがあります。これを使います!
しかしその前に、表示させたい絵を用意しましょう。
640x400pixelのサイズの絵を用意します。
createCanvas(640,400)で絵を作って保存したら完璧です。なるべくさっきのstripes.pyで出した7色に近い色で描かれていると、きれいに出力されるなあ、という印象です。
どうやってRaspberryPiの方に画像を送るの?
scpコマンドというのを使います!
それを使ってパソコンから、RaspberryPiの「image.py」があるのと同じ場所に画像をコピーします。scpコマンドの使い方はこんな感じです。
scp 画像ファイル名 RaspberryPiのユーザー名@IPアドレス:/home/ユーザー名/コピーを送りたい場所
ターミナルのウィンドウをもう一つ開きます。こちらはラズベリーパイにつながっていません。
送りたい画像を、デスクトップに作った適当な…「paper」フォルダにおいてあるとします。
cd Desktop/paper
「paper」フォルダの中に移動してから、さっきのscpコマンドを打ちます。
scp img02.png pi@000.000.0.00:/home/pi/Pimoroni/inky/examples/7color/
こんなかんじで!これで画像がコピーされたと思います。
ラズベリーパイの方のターミナルで確認してみてください。
pi/Pimoroni/inky/examples/7color/
で、「ls」 で確認です!ピンク色のところが、送った画像です。わーい、できた!(いっぱい送った)
そしたら「image.py」を実行して見ましょう。python3 image.py のあとに、表示させたい画像ファイルを指定します。
python3 image.py 任意の画像.拡張子 //(img01.pngとか)
じゃーん、できたあー!
これでとりあえず、自分の画像を表示することに成功しました。
ハマったところ
わたしが最初に手にとった個体は、ディスプレイの右端5mmくらい範囲が、一向に更新できず、デフォルトで表示されていた画像が残ってしまっていました。
このディスプレイの解像度は640*400なのですが、600*448とプログラムでは表示されていました。直し方わからず…。
端的に言うと、おそらく初期不良でした。
購入したお店で交換していただき、新しいものをつなぎ直したところ、超スムーズに、快適に全画面うつりました。解決!
まとめ
定期的に画像を勝手に交換するとか、4つついているボタンの活用方法とかはまだわかりません!
とりいそぎ画像をうつすところまでやりました。
最初に電子ペーパーを見たtweetのように、写真用のフレームに入れても素敵ですよね。
3Dプリンターでケースを作っても良さそうです。夢は広がります。
参考:
7色対応電子ペーパーモジュールInky Impressionを買った
https://akkiesoft.hatenablog.jp/entry/20201123/1606122658
ラズベリーパイと電子ペーパーでカレンダーを作る feat Pimoroni Inky Impression
https://www.youtube.com/watch?v=Ai0bTBmrN50
Set Up a 7 Colour E-Ink Display For Raspberry Pi | Inky Impression 5.7″ HAT
https://www.youtube.com/watch?v=daO46JaVHOs