LoginSignup
11
17

More than 5 years have passed since last update.

RaspberryPi上のPythonから電子ペーパー(e-Paper)を制御する

Last updated at Posted at 2018-07-09

概略

通常、液晶ディスプレイは電気を流し続けないと表示を維持できませんが、
電子ペーパーは、画面を書き換えするときにのみ電気を必要とし、電気が流れない場合は最後の表示が残るデバイスのことです。
今回、有識者ならば躓かないところと思う場所で、大変時間がかかってしまいました。
サンプルプログラムを実行するまでの道筋を残します。
興味のある方のお役に立てればと思います。

準備

今回用意した材料は以下の通りです。
・RaspberryPi Zero W ※GPIOを半田付けしたくない方は、WHがおすすめです。
・e-Paper Module 1.52 inch
・Raspbian(strtch) 4.14.xxの入ったSDカード(8GB)
・USB Keyboard & Mouse
・HDMI Display
Raspberry Pi ZeroにKeyboradとMouse、Displayを直接接続し、穴あけを実施しました。

手順

結線手順

e-Paper MoudleとRaspberry Piを接続します。

参照) https://www.waveshare.com/wiki/1.54inch_e-Paper_Module

Hardware connection
Here is the connection between Raspberry Pi 3B and E-paper.

e-Paper Raspberry Pi 3B GPIO Port Number
3.3V 3.3V -
GND GND -
DIN MOSI GPIO10
CLK SCLK GPIO11
CS CE01 GPIO08
DC Pin22 GPIO25
RST Pin11 GPIO17
BUSY Pin28 GPIO24

GPIO配置参照
https://elinux.org/RPi_Low-level_peripherals#Model_A.2B.2C_B.2B_and_B2

接続例
rpi_zero_2.jpg

OS準備

・SDカードにRaspbian OSを入れ、Raspberry Piに指しこみ、電源を入れます。
・起動後、WiFiネットワークの設定を行います。
・キーボードを日本語に変更します。
(Preferences -> Mouse and Keyboard Settings -> Keyboardタブ -> Keyboard Layoutボタン -> Country = Japan / Variant = Japanese)
・アップデートを行います。

$ sudo apt-get update

パッケージインストール

Python用のライブラリと、ビルドツール、解凍ツールをインストールします。

$ sudo apt-get install python-dev
$ sudo apt-get install python-smbus
$ sudo apt-get install python-imaging
$ sudo apt-get install build-essential
$ sudo apt-get install p7zip-full

環境準備

インタフェースの有効化

・Raspberry Pi 上から、SPIインタフェースを有効にします。
(Preferences -> Raspberry Pi Configuration -> Interfacesタブ -> SPI = Enabled)
設定変更後、再起動を行います。

$ reboot

サンプルアプリケーションのダウンロード

以下から最新のファイルをダウンロードします。
https://www.waveshare.com/wiki/File:1.54inch_e-Paper_Module_code.7z

例)


$ wget https://www.waveshare.com/w/upload/7/73/1.54inch_e-Paper_Module_code.7z

ダウンロードしたファイルを解凍

$ cd
$ mkdir e-Paper
$ mv 1.54inch_e-Paper_Module_code.7z e-Paper
$ cd e-Paper
$ 7z x 1.54inch_e-Paper_Module_code.7z

フォルダを確認すると、以下のフォルダが作成されています。


$ ls
1.54inch_e-Paper_Module_code.7z
arduino
raspberrypi
stm32

今回は、RaspberryPiでe-Paperを扱うため、arduinoとstm32は気にしません。

サンプルの実行


$ cd raspberrypi

$ ls
bcm2835
python
wiringpi

上記、3タイプありますが、全て同じデモンストレーションとなります。
bcm2835を使用する場合は、別途BCM2835のライブラリをインストールしてする必要があります。
今回はpython版を使用します。
raspberrpiフォルダ配下のmain.pyを実行します。

$ cd python
$ python main.py

これを実行すると以下のような表示になりました。

ePaper_Broke.jpg

真ん中の表示部分に、四角が縦に2個表示されています。
液晶が壊れたか?と思い、BCM2835版やWiringio版を実行すると、正常に表示されました。
これは、Pythonのコード上に何か問題があるのでは?と考えました。

Drawした画像の回転系でおかしくなっているのではないか?と、色々パラメータを変更し確認して行くと、回転後の画像サイズが正しく伝わっていないようです。
rotateを調べると、画像回転後のサイズを変更する素敵なパラメータを発見し、以下の追加で動くことが確認できました。

main.py
 L:82 epd.set_frame_memory(time_image.rotate(90),80,80) 

                    

 L:82 epd.set_frame_memory(time_image.rotate(90,expand=True),80,80) 

ePaper_Normal.jpg

この修正を行わない場合でも、動く環境がありました。
ライブラリのバージョンが影響している可能性があります。
まずはmain.pyを実行し、問題があれば上記の修正を行なってみてください。

<それでも上記の表示にならない場合>
Python上で使用しているImage,ImageDraw,ImageFontのライブラリをPillowに変更します。

①Pillowのインストール
$ pip install Pillow

②main.pyの編集
import行を以下の通り変更します
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont

Python以外の実行方法

BCM2835版

BCM2835フォルダ配下でmakeを実行する前に、BCM2835をインストールします。
http://www.airspayce.com/mikem/bcm2835/

BCM2835インストール手順

上記サイトのinstallation から抜粋
( 2018/07/08時点の最新バージョンは、1.56でした。1.xxを置き換えてください。 )

$ sudo wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.xx.tar.gz
$ tar zxvf bcm2835-1.xx.tar.gz
$ cd bcm2835-1.xx
$ ./configure
$ make
$ sudo make check
$ sudo make install

BCM2835フォルダ配下でのmake

$ cd ~/e-Paper/raspberrypi/bcm2835
$ sudo make
$ ls
epd
(etc..)

epdが作成されていることを確認します。

実行

$ sudo ./epd

上記にて、e-Paperの画面が更新されます。

Wiringpiでの実行方法

Wiringpiのビルド


$ cd ~/e-Paper/raspberrypi/wiringpi
$ sudo make
$ ls
epd
(etc..)

epdが作成されていることを確認します。

実行

$ sudo ./epd

上記にて、e-Paperの画面が更新されます。

最後に

今回、電子ペーパーの導入から、サンプルを実行し、画面表示までを記載しました。
ここまでくれば、ソースコードを少し見直すだけで、なんでも表示できます!
お値段も、RaspberryPiZeroWHとe-Paper1.52インチを合わせても五千円程度です。
すごい時代が来たなぁ。。と実感しております。
こういう工作を子供の頃から学ばせたら、すごい時代がやってくると思います。

参考にさせていただいたサイト

https://www.waveshare.com/wiki/1.54inch_e-Paper_Module
https://macsbug.wordpress.com/2017/09/07/e-paper-with-esp32/
https://tomosoft.jp/design/?p=5252
https://www.waveshare.com/wiki/Pioneer600#Libraries_Installation_for_RPi
http://www.airspayce.com/mikem/bcm2835/
https://tool-lab.com/2013/12/raspi-gpio-controlling-command-2/
穴あけの際、記事を参考にさせていただきました。本当に勉強になります。ありがとうございます。

更新

2018/07/15 <それでも上記の表示にならない場合>を追記しました

11
17
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
11
17