Waveshare社の2.13inch電子ペーパーHATは、お手ごろな値段で電子ペーパーが楽しめるHATです。
電子ペーパーは、電源を切っても表示を保持するデバイスです。
ラズパイでちょっとしたメモを表示させ、シャットダウンしてから外して持ち歩く、なんて使い方もできそうです。
(キーホルダーケースとかあるといいですね)
Waveshare社の2.13inch電子ペーパーHATはRapberry Pi Zeroサイズですが、もちろんRaspberry Pi3などでも使えます。
Waveshare社にデモプログラムが用意されているので、試しに使ってみましょう。
(1)デモプログラムのダウンロード先
2.13inch電子ペーパーHATの技術Wikiページは
http://www.waveshare.com/wiki/2.13inch_e-Paper_HAT
です。
このページには色々技術解説が載っていますが、手っ取り早くデモプログラムを動かしたい場合には、
How to use の
Working with Raspberry Pi の
Demo code (clock to download) からプログラム一式(2.13inch_e-Paper_HAT-code.7z)を入手します。
(2)Raspberry Piの設定
電子ペーパーHATは、SPIインタフェースで通信するので、raspi-configでSPIをONにしておきます。
sudo raspi-config
で立ち上げ、9 Advanced Optionsを選択、さらにA6 SPIを選択すると、Yes/Noを聞かれるのでYesを選択します。
これだけで、Waveshareが用意しているPythonのデモプログラムは動きます。
(3) 7zipファイルを展開するには
でも、WaveshareのWikiページから落としてきたプログラムは、7zという拡張子が付いており、7zip形式で圧縮されています。
Windows PC上にダウンロードしてWindows PCの7zipアプリケーションで解凍してからTinker Boardに転送するのが手っ取り早いですが、
これをLinuxで解凍したい場合には、ツールをソースコードからmakeするしか方法が見当たりませんでした。
手順は
https://www.raspberrypi.org/forums/viewtopic.php?f=30&t=41198#p348505
に書いてあるとおりです。
書いてある通り実行すれば作成できますが、念のため手順を述べます。
まず、
http://sourceforge.net/projects/p7zip/files/latest/download
からp7zipのソースコードをダウンロードします。
p7zip_*_src_all.tar.bz2
*のところはバージョン番号が入りますのでダウンロードする時々で変わります。
tar jxvf p7zip_*_src_all.tar.bz2
で展開後、
cd p7zip_*/
で作成されたディレクトリに移り、
make
を実行するだけです。
このmakeが意外と時間がかかりましたが、難なく終わります。
あとは、作成したツールをインストールするだけです。
sudo ./install.sh
これで、7zaという7zip形式を扱うコマンドがインストールされました。
(4) 電子ペーパーHATのデモを実行する
さていよいよ、電子ペーパーHATのデモプログラムを展開しましょう。
Waveshare社のWikiページからダウンロードしたデモプログラム一式のアーカイブを
7za x 2.13inch_e-Paper_HAT-code.7z
で展開します。
2.13inch_e-Paper_HAT-codeというディレクトリが出来ており、その中にRaspberryPiというディレクトリがありますので、ここまでcd します。
cd 2.13inch_e-Paper_HAT-code/RaspberryPi/
Raspberry Piには、GPIOを動かすための手段が色々提供されており、このディレクトリ下にあるのは、代表的な3つの手段をそれぞれ使ってe-paperを制御するプログラムです。
bcm2835というCライブラリを使いたい場合はbcm2835というディレクトリにcdし、makeを実行して、作成されたmainというバイナリを実行します。
wiringpiを使いたい場合には、wiringpiというディレクトにcdして同様にmakeする、といった感じです。
ここでは、pythonを使いたいので、pythonというディレクトリにcdします。
cd python
この下には、電子ペーパーをpythonで操作するための関数群が定義されたモジュールEPD_driver.pyと、デモプログラム本体main.pyが格納されています。
python main.py
でデモプログラムが動きます。
デモは、時刻表示の画面になると、ひと通り終わりです。
(5) 応用
デモをひと通り見終わった後、ctrl-Cで止めて、main.pyの中味をのぞいてみましょう。
何となく、やっていることと使っている関数の対応が分かると思います。
使えそうな関数は、
egrep “def Dis” EPD_driver.py
で拾い出せる次の関数
def Dis_Clear_full(self):
def Dis_Clear_part(self):
def Dis_full_pic(self,DisBuffer):
def Dis_part_pic(self,xStart,xEnd,yStart,yEnd,DisBuffer):
def Dis_Char(self,acsii,size,mode,next):
def Dis_String(self,x,y,pString,Size):
def Dis_Drawing(self,xStart,yStart,DisBuffer,xSize,ySize):
def Dis_Progress(self,progress_len):
def Dis_showtime(self,hour,minute,sec):
の辺りのようです。
みなさん、お楽しみください!