Raspberry Piで4.2inchのe-Paper(Eインクディスプレイ)を使ってみよう

今回はWaveShare製の4.2inch e-Paper(Eインクディスプレイ)をRaspberry Piから動かしてみたいと思います。

EインクディスプレイはOLEDなどの発光ディスプレイと比較して消費電力が小さく、一方でコントラスがはっきりしていて視野角も広いため、屋外でも使える点がメリットです。

屋外利用を想定した温度計の表示などで力を発揮してくれそうです。

それでは本編いってみましょう。

目次

WaveShare製の4.2inch e-Paper

WaveShare製の4.2inch e-Paperは、400×300の解像度を持ったEインクディスプレイです。
接続はSPIとGPIOを使用して制御を行います。

今回使用するものはグレイスケールの4階調まで表現できます。
サンプルも用意されており、こんな画像も表示できます。

接続

e-PaperRaspberry Pi
VCC1番ピン(3.3V)
GND 6番ピン(GND)
DIN 19番ピン(MOSI)
CLK 23番ピン(SCLK)
CS24番ピン(CE0)
DC22番ピン(GPIO)
RST11番ピン(GPIO)
BUSY18番ピン(GPIO)
ピンアサイン

ピンアサインは上記の通りです。
SPIとGPIO両方を駆使して制御するので少し配線数が多いですね。

Raspberry Piの設定

SPIを有効にします。

$ sudo raspi-config

configでSPIドライバが有効にできたら再起動します。

$ sudo reboot

ライブラリのインストール

ライブラリが提供されていますのでインストールしていきます。

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

WiingPiもインストールします

$ sudo apt-get install wiringpi
$ wget https://project-downloads.drogon.net/wiringpi-latest.deb
$ sudo dpkg -i wiringpi-latest.deb
$ gpio -v

実機動作

サンプルコードが提供されていますので、githubからクローンします。

$ git clone https://github.com/waveshare/e-Paper

ディレクトリを移動しておきます。

$ cd ~/e-Paper/RaspberryPi_JetsonNano/c

main.cのEPD_4in2_test()のコメントを解除します。

#include <stdlib.h>     //exit()
#include <signal.h>     //signal()
#include "EPD_Test.h"   //Examples

void  Handler(int signo)
{
    //System Exit
    printf("\r\nHandler:exit\r\n");
    DEV_Module_Exit();

    exit(0);
}

int main(void)
{
    // Exception handling:ctrl + c
    signal(SIGINT, Handler);
	
	// EPD_1in54_DES_test();
	// EPD_2in13_DES_test();
	// EPD_2in9_DES_test();

    // EPD_1in02d_test();

    // EPD_1in54_test();
    // EPD_1in54_V2_test();
    // EPD_1in54b_test();
	// EPD_1in54b_V2_test();
    // EPD_1in54c_test();

	// EPD_2in66_test();
	// EPD_2in66b_test();

    // EPD_2in7_test();
	// EPD_2in7_V2_test();
    // EPD_2in7b_test();
	// EPD_2in7b_V2_test();

    // EPD_2in9_test();
	// EPD_2in9_V2_test();
    // EPD_2in9bc_test();
    // EPD_2in9b_V3_test();
    // EPD_2in9d_test();

    // EPD_2in13_test();
    // EPD_2in13_V2_test();
	// EPD_2in13_V3_test();
    // EPD_2in13bc_test();
    // EPD_2in13b_V3_test();
    // EPD_2in13d_test();

    // EPD_3in7_test();

	// EPD_4in01f_test();

    EPD_4in2_test();
	// EPD_4in2_V2_test();
    // EPD_4in2bc_test();
    // EPD_4in2b_V2_test();

	// EPD_4in37b_test();

	// EPD_5in65f_test();

    // EPD_5in83_test();
	// EPD_5in83_V2_test();
    // EPD_5in83bc_test();
    // EPD_5in83b_V2_test();

	// EPD_5in84_test();
	
    // EPD_7in5_test();
	// EPD_7in5_V2_test();

    // EPD_7in5bc_test();
    // EPD_7in5b_V2_test();
    
    // EPD_7in5_HD_test();
    // EPD_7in5b_HD_test();
    
	// EPD_10in2b_test();
	
	// EPD_13in3_test();
	
	
	// 	For Test
    // if(DEV_Module_Init()!=0){
        // return -1;
    // }
	// while(1) {
	    // EPD_7in5b_V2_test(); 
		// DEV_Delay_ms(10000);
	// }
	// DEV_Module_Exit();
	// 
    return 0;
}

ビルドして実行するとサンプルのシーケンスが開始されます。

$ sudo make clean
$ sudo make
$ sudo ./epd

表示する画像を変更してみる

サンプルコードではbmpファイルを読み込んで画像を表示していますので、そこに乗っかる形で画像を変更してみたいと思います。

用意するbmpは、ビット深度4bitのbmpになります。

Windowsのペイントソフトで適当に400×300の画像を用意します。

保存する際に、16色ビットマップを指定します。(重要)

保存した画像はe-Paper/RaspberryPi_JetsonNano/c/picに入れておきます。

後はEPD_4in2_test.cのEPD_4in2_test関数の中で、下記のコードを追加してあげれば画像を表示できます。

GUI_ReadBmp_4Gray("./pic/<表示したい画像>.bmp",0 , 0);
EPD_4IN2_4GrayDisplay(BlackImage);
DEV_Delay_ms(2000);

最後に

いかがでしたでしょうか。

ライブラリが用意されているので手軽に画像を表示することができましたね。

いろいろと応用が効きそうなので、別の機会に何か作ってみようと思います。

それでは。

参考サイト

https://www.waveshare.com/wiki/4.2inch_e-Paper_Module

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次