RaspberryPiによる電子ペーパーの制御

製品

今回はwaveshareの電子ペーパーを使用します。 サイズは何種類もありますが、今回は2.9インチで赤白カラーのこちらを使用します。 https://www.waveshare.com/2.9inch-e-paper-module.htm

動作

公式サイトのサンプルコードを動かします。 https://www.waveshare.com/wiki/2.9inch_e-Paper_Module_(B) ちなみにこれは同じサイズで白黒と赤白黒の三色カラーの二種類があり、それぞれドライバが違うので注意してください。(今回は三色カラーのBタイプを動かします)   まずWikiの下の方にあるDemo Codeからデモコードをダウンロード。 中にはarduino、raspberyPi、stm32と各種マイコンごとのコードがありますが、今回使用するのはraspberrypi/pythonです。 まずraspberryPiの側の用意です。
$ sudo raspi-config
“5 Interfacing Options”  から、SPIを有効にします。 次に必要パッケージのインストール。
$ sudo apt-get install python-rpi.gpio python-pil
  次に結線。 Wikiにもありますが、以下のように接続します。
- BUSY - GPIO24 (Pin18)
- RST - GPIO17 (Pin11)
- DC - GPIO25 (Pin22)
- CS - GPIO8 (Pin24)
- CLK - GPIO11 (Pin23)
- DIN - GPIO10 (Pin19)
- GND - Pin6など
- 3.3v - Pin1
これでOK。   では、動かしてみましょう。以下のようなコマンドを打ちます。 (sipとgpIOを使用するのでsudoが必要です) [cc lang=”bash”] $ sudo python main.py [/cc]
pi@raspberrypi:~/2.9inch_e-paper_module_b_code/raspberrypi/python $ sudo python main.py
Traceback (most recent call last):
File "main.py", line 27, in
import epd2in9b
File "/home/pi/2.9inch_e-paper_module_b_code/raspberrypi/python/epd2in9b.py", line 28, in
import Image
ImportError: No module named Image
どうやらコードのインポートの記述に誤りがあるようです。 以下に示すように2つのファイルの修正をします。
  1. main.py
  2. epd2in9b.py
import Image    →    from PIL import Image
import ImageFont    →    from PIL import ImageFont
import ImageDraw    →    from PIL import ImageDraw
もう一度トライ。
pi@raspberrypi:~/2.9inch_e-paper_module_b_code/raspberrypi/python $ sudo python main.py
Traceback (most recent call last):
File "main.py", line 69, in
main()
File "main.py", line 54, in main
font = ImageFont.truetype('/usr/share/fonts/truetype/freefont/FreeMono.ttf', 16)
File "/usr/lib/python2.7/dist-packages/PIL/ImageFont.py", line 238, in truetype
return FreeTypeFont(font, size, index, encoding)
File "/usr/lib/python2.7/dist-packages/PIL/ImageFont.py", line 127, in init
self.font = core.getfont(font, size, index, encoding)
IOError: cannot open resource
今度は内部で参照しているフォントが見つからないと言われました。 存在しているフォントを探してそれに修正しましょう。
$ find / -name '*.ttf'  2> /dev/null | head -n 1
  この環境では /opt/vc/src/hello_pi/hello_font/Vera.ttf というのがあったのでこれを使用します。 main.py
""" このように書き換える """
""" font = ImageFont.truetype('/usr/share/fonts/truetype/freefont/FreeMono.ttf', 16) """
font = ImageFont.truetype('/opt/vc/src/hello_pi/hello_font/Vera.ttf', 16)
  そしてもう一回動かす。
$ sudo python3 main.py
できました。 main.pyのデモではドライバにできる一通りの動作を行っています。 つまり、以下のものです。
  1. フォントによる文字出力
  2. 図形の描写(線、四角、丸)
  3. 画像の出力
これら応用すれば比較的簡単に制御できるんじゃないかと思います。 今回は比較的導入が簡単なPythonを使用しましたが、サンプルの中にはC言語のものもありますので、 こちらもトライしてみると面白いかもしれません。   XSHELLでは社内開発の一環として音声方向の測位や、LEDマトリックスモジュールなど、あらゆる題材に積極的に取り組んでいます。ぜひIsaax Campの他の記事を覗いてみて下さい。]]>

上部へスクロール