LoginSignup
9
7

More than 3 years have passed since last update.

Raspberry Piで電子ペーパーモジュールを動作させる

Last updated at Posted at 2019-10-13

きっかけ

・ラズパイにセンサー類付けて遊んでるけど、コンソール以外で出力させて測定値が周りの人にも分かるようにしたい
 僕 「電子ペーパーって面白そうだなぁ。書き換えるときだけしか電力いらないから消費電力抑えられる?」
  ↓いざ買うときになって
 僕 「画面の大きさに比べて割高やん」

使ったもの

・Raspberry Pi 3 model B+
・電子ペーパーモジュール (4.2inch e-Paper Module)
・スペーサー (お好みで)

電子ペーパーモジュールはこんな感じ(秋葉原の千石電商で購入)
IMG_3087.jpg
まあ大きさはこんなもんか
実際に動作させると描画にまあまあ時間がかかるみたい
動画は無理っすね
でもなんかおもしろい

手順

接続

付属のケーブルをe-Paper側のコネクタに接続


ラズパイのGPIOに接続する側はちゃんとメスになっているのでそのままラズパイと接続する
繋ぎ方は以下の通り

ラズパイ側GPIOピン 割当て ジャンパワイヤの色
1 or 17 VCC(3.3 V)
GND GND
19 DIN
23 CLK
24 CS オレンジ
22 DC
11 RST
18 BUSY

e-paper.png

ラズパイ側の設定

↓メーカー側がかなり親切にやり方を載せている
https://www.waveshare.com/wiki/4.2inch_e-Paper_Module_(B)


raspi-configでSPIを有効化する

root@raspberrypi:/home/pi# raspi-config
↓
5 Interfacing Options  Configure connections to peripherals   ←これを選択
↓ 
P4 SPI         Enable/Disable automatic loading of SPI kernel module  ←これを選択
       ・
       ・
       ・
Would you like the SPI interface to be enabled? と表示が出るので<yes>を選択



再起動する

root@raspberrypi:/home/pi# reboot



BCM2835ライブラリをインストールする

root@raspberrypi:/home/pi# wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.60.tar.gz

root@raspberrypi:/home/pi# tar zxvf bcm2835-1.60.tar.gz 

root@raspberrypi:/home/pi# cd bcm2835-1.60/

root@raspberrypi:/home/pi# ./configure

root@raspberrypi:/home/pi# make

root@raspberrypi:/home/pi# make check

root@raspberrypi:/home/pi# make install



wiringPiライブラリをインストールする

root@raspberrypi:/home/pi# apt update
root@raspberrypi:/home/pi# apt install wiringpi



その他Pythonのライブラリをインストールする

Python 2の場合
root@raspberrypi:/home/pi# apt install python-pip
root@raspberrypi:/home/pi# apt install python-pil
root@raspberrypi:/home/pi# apt install python-numpy
root@raspberrypi:/home/pi# pip install RPi.GPIO
root@raspberrypi:/home/pi# pip install spidev

Python 3の場合
root@raspberrypi:/home/pi# apt install python3-pip
root@raspberrypi:/home/pi# apt install python3-pil
root@raspberrypi:/home/pi# apt install python3-numpy
root@raspberrypi:/home/pi# pip3 install RPi.GPIO
root@raspberrypi:/home/pi# pip3 install spidev

プログラム

↓メーカーのサンプルプログラムがここに転がっている
https://www.waveshare.com/wiki/File:4.2inch-e-paper-module-b-code.7z

GitHubからも落とせる(今回はこっちの方法で)

root@raspberrypi:/home/pi# git clone https://github.com/waveshare/e-Paper

root@raspberrypi:/home/pi# cd cd e-Paper/RaspberryPi\&JetsonNano/python/examples/

root@raspberrypi:/home/pi# ls
epd_1in02_test.py     epd_2in13d_test.py    epd_5in83_test.py
epd_1in54_V2_test.py  epd_2in7_test.py      epd_5in83bc_test.py
epd_1in54_test.py     epd_2in7b_test.py     epd_7in5_V2_test.py
epd_1in54b_test.py    epd_2in9_test.py      epd_7in5_test.py
epd_1in54c_test.py    epd_2in9bc_test.py    epd_7in5b_V2_test.py
epd_2in13_V2_test.py  epd_2in9d_test.py     epd_7in5bc_test.py
epd_2in13_test.py     epd_4in2_test.py
epd_2in13bc_test.py   epd_4in2bc_test.py



e-Paper/RaspberryPi\&JetsonNano/python/examples/にあるepd_4in2bc_test.pyを修正して使う

epd_4in2bc_test.py
#!/usr/bin/python
# -*- coding:utf-8 -*-
import sys
import os
picdir = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'pic')
libdir = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'lib')
if os.path.exists(libdir):
    sys.path.append(libdir)

import logging
from waveshare_epd import epd4in2bc
import time
from PIL import Image,ImageDraw,ImageFont
import traceback

logging.basicConfig(level=logging.DEBUG)

try:
    logging.info("epd4in2bc Demo")

    epd = epd4in2bc.EPD()
    logging.info("init and Clear")
    epd.init()
    epd.Clear()
    time.sleep(1)

    # Drawing on the image

    logging.info("3.read bmp file")
    HBlackimage = Image.open(os.path.join(picdir, 'hoge.bmp')
    HRYimage = Image.open(os.path.join(picdir, 'hoge.bmp'))
    epd.display(epd.getbuffer(HBlackimage), epd.getbuffer(HRYimage))
    time.sleep(2)

    logging.info("Goto Sleep...")
    epd.sleep()

except IOError as e:
    logging.info(e)

except KeyboardInterrupt:    
    logging.info("ctrl + c:")
    epd4in2bc.epdconfig.module_exit()
    exit()



e-Paper/RaspberryPi\&JetsonNano/python/examples/pic/hoge.bmpを置いておき、プログラムを動かすと画像が表示される
※4.2inchモデルではピクセル数が400×300なので、それに合わせたbmp画像を用意してやらないと上手く表示されないようである

IMG_3094.jpg
よく近づいて見るとドットが目立つけど、遠くからならそんなに気にならないですね



各種センサーから取得したデータを表示させるとこんな感じに(ここらへんの話は気が向いたら投稿します)
ちなみにCO2の濃度センサーはこちらの記事でまとめました
https://qiita.com/_shin_/items/dfdab160a49feaf4ba66

追記:
気温・湿度・気圧のデータはBME280から取得しました
https://qiita.com/_shin_/items/03972c7ec75519e900ce

IMG_3096.jpg

他にも赤とか黄色とか出力できるモデルもあるようで
お金あったら買いたかった...

参考にしたサイト

・めちゃ親切だったメーカーのサイト
https://www.waveshare.com/wiki/4.2inch_e-Paper_Module_(B)

ありがとうございました

9
7
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
9
7