電子ペーパーカレンダー(Googleカレンダー同期)作ってみた:序
2017年にMagic Calendarというデバイスが発表されました。
※YouTube紹介動画:https://www.youtube.com/watch?v=2KDkFgOHZ5I
すごく欲しいと思ったのですが、何年経っても発売どころか続報が全く出てこない状況です。
そこで電子ペーパーもドライバーボードも、どこで買えるの?どうやって使うの?レベルの初心者ですが、自分で似たようなものを作ってみました。
本記事はその備忘録です。
長くなりそうなので記事をいくつかに分けます
序:本記事。材料の調達からサンプルプログラムの動作確認。
破:執筆中。カレンダー描画機能の作成、Googleカレンダーとの予定同期機能の作成。
(ほぼ)完成品
作り方
材料
ハードウェア
- 400x300, 4.2inch E-Ink raw display, three-color $26
- Universal e-Paper Raw Panel Driver Board, ESP32 WiFi / Bluetooth Wireless $15
合計で5000円弱でした。2020/11/28 に注文し、2020/12/21 に届きました。
国内のお店で代替品があれば、そちらで購入した方が早く入手できて良いと思います。
この他esp32はmicroUSB端子で給電、PCと通信を行いますが、それにはスマホ用などで家にあった適当なUSBケーブルを使用しました。
ソフトウェア
基本的にはESP32のWikiとDocumentを読んでいくことになります。
E-Paper ESP32 Driver Board
私の開発環境はWindows10のため、以降はそれを前提に説明していこうと思います。
-
Arduino IDE
- 下記リンクを開く
https://www.arduino.cc/en/Main/Software -
Windows Win 7 and newer
をダウンロードし、インストールする。
- 下記リンクを開く
-
Arduino-ESP32.zip
- Arduinoディレクトリ配下の、下記のパスを開く(なければディレクトリを作る)
C:\Program Files (x86)\Arduino\hardware\espressif\esp32
- そこに下記リンクから
Arduino-ESP32.zip
をダウンロードし、展開する。
https://codeload.github.com/espressif/arduino-esp32/zip/master - 下記ファイルを
管理者として実行
する。
C:\Program Files (x86)\Arduino\hardware\espressif\esp32\tools\get.exe
- Arduinoを起動し、
ツール > ボード > ESP32 Arduino > ESP32 Dev Module
を選択する。
- Arduinoディレクトリ配下の、下記のパスを開く(なければディレクトリを作る)
-
ESP32サンプルプログラム
- 下記リンクを開く
https://www.waveshare.com/wiki/File:E-Paper_ESP32_Driver_Board_Code.7z -
E-Paper_ESP32_Driver_Board_Code.7z
をダウンロードする。 - 適当なディレクトリに展開する。
- サンプルプログラムのライブラリファイルをArduinoのインクルードディレクトリにコピーする必要があります。
examples\esp32-waveshare-epd\src
フォルダをC:\Users\ユーザ名\Documents\Arduino\libraries
にコピーしておきます。
ここから ここへ - 下記リンクを開く
組み立てと動作確認
-
e-PaperとESP32を接続します。差込口の反対の黒い部分を上に引き上げるとケーブルが抜き差しできます。[1]
直接接続する場合 ケーブル接続する場合[2] -
使用しているe-Paperに合わせてスイッチ(画像赤枠)を切り替えます。
User Manual
の表によると、今回使用する4.2inch e-PaperはB
にセットすべきようです。 -
USBケーブルでPCと接続します。
接続すると、赤いライト(右下)が点灯しました。テンション上がりますね。
-
E-Paper_ESP32_Driver_Board_Code.7z
を展開して出てきたフォルダの中から、
E-Paper_ESP32_Driver_Board_Code\examples\esp32-waveshare-epd\src
を確認します。 -
サンプルプログラム[3]
epd4in2bc-demo
をArduinoで開きます。
-
選択できるシリアルポートを選択します。
-
左上の ➡ ボタンを押して、サンプルプログラムをコンパイルしてESP32に書き込みます。
しばらくすると、以下のような出力とともに、書き込みが完了します。
最大1310720バイトのフラッシュメモリのうち、スケッチが269637バイト(20%)を使っています。
最大327680バイトのRAMのうち、グローバル変数が16316バイト(4%)を使っていて、ローカル変数で311364バイト使うことができます。
esptool.py v2.6
Serial port COM3
Connecting....
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
MAC: ac:67:b2:00:98:6c
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 8192 bytes to 47...
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.0 seconds (effective 10922.6 kbit/s)...
Hash of data verified.
Compressed 17392 bytes to 11186...
Wrote 17392 bytes (11186 compressed) at 0x00001000 in 0.2 seconds (effective 818.4 kbit/s)...
Hash of data verified.
Compressed 269760 bytes to 120948...
Wrote 269760 bytes (120948 compressed) at 0x00010000 in 2.2 seconds (effective 978.7 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 128...
Wrote 3072 bytes (128 compressed) at 0x00008000 in 0.0 seconds (effective 2730.6 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
- 15秒超の激しい明滅の後に、以下のようなイメージが表示されることを確認できました。
表示1 表示2
動作確認2(WiFi)
E-Paper_ESP32_Driver_Board_Code
直下のLoader_esp32wf
がWiFi接続を行うサンプルのようです。
- こちらも同様にArduinoで開きます。
-
srvr.h
を開き、PCが接続しているWiFiのSSIDとパスワードを記入します。
- コンパイルしてESP32に書き込みます。
- ツール > シリアルモニタ を開いておきます。
- シリアルモニタの右下のセレクトボックスが
115200 bps
になっていなければ変更しておきます。
- ESP32のENボタン[4]を押すと、WiFiに接続されます。
- 最後の方に表示されているIPアドレスをウェブブラウザで開きます。
(この場合は192.168.0.8
です) - このようなページが表示されます。左下からボードのタイプ(
4.2b
)を選択しておきます。
- 左上のSelect Image Fileをクリックし、電子ペーパーに表示したい画像ファイルを選択します。
画像サイズは横400px, 縦300pxに合わせるようにしましょう。 - 以下のいずれか、好みのフィルタを適用しましょう。
- Level: mono
- Level: color
- Dithering: mono
- Dithering: color
- Upload Imageボタンを押すと、電子ペーパーに画像が表示されます。
- いえーい!
Discussion