スポンサーリンク

電子ペーパーでアニメーションが表示できるようになりました

スポンサーリンク

電子ペーパーとESP32マイコンとの間にCPLDを使って、高速シリアルパラレル変換をすることで、画像データを高速に電子ペーパーに転送できるようになりました。

また、ESP32-WROVER-Bを使うことで、多くの画像データをメモリ上に保持することができるようになったので、CPLDによる高速転送と合わせてアニメーションができるようになりました。

スポンサーリンク

まずは映像をご覧ください

スポンサーリンク

仕組み

今回の実験回路は、

  • 電子ペーパー ED050SC3
  • マイコン ESP32-WROVER-B
  • CPLD MAX V 5M160
  • 電子ペーパー用電源 TPS65185

のブロックからできています。

ブロック図

それぞれのブロックは、図のようの接続されています。マイコンから各モジュールとはSPIとI2Cで接続されていて、少ないIOピンの数で電子ペーパーを制御が可能になっています。

CPLDによるシリアルパラレル変換

電子ペーパーは、画像データの転送用に8本、水平垂直同期のようなモジュールの制御に最低7本の信号線が必要です。

これら15本の信号をESP32から直接接続してしまうと、GPIOピンをほとんど使い切ってしまいます。また、ESP32のGPIOはとても遅く、ピン毎に1MHz程度でしかON,OFFできません。データ用に8本使うと100kB/s程度の転送スピードになってしまいます。1画面分のデータ量は120kBあるため、1画面描画するのに1秒以上かかる計算です。さらに電子ペーパーの特性として、1回の描画だけではインクの移動が不完全で、表示される画像のコントラストが低く、くっきりした画像を表示するためには、同じ画像を5回くらいは描画する必要があります。このため、ESP32から電子ペーパーへ高速にデータを転送する仕組みが必要でした。

そこで、SPIから電子ペーパーの制御信号や、画像データのバス信号に変換するための、シリアルパラレル変換の専用回路をCPLDに作り込みました。これにより、ESP32からは画像データをSPIで送信するだけで良くなります。SPIのクロックは40MHzで動作するので、約4MB/sでデータを送信できるようになります。GPIOでパラレル通信するのに比べ約40倍高速に、描画することができます。

CPLDにはIntel MAX V 5M160を使っています。MAX Vの評価ボードは、以前作ったこれを使っています。

これに、IOの状態を可視化するLEDボードが上に載っているので、動画ではLEDがピカピカしています。

スポンサーリンク

ESP32-WROVER-Bで大量の画像をメモリに保持可能

ESP32-DevKitC-VB

SDカードからのデータの読み込みは非常に遅いので、一旦メモリに読み込んで置く必要があります。白黒の画像データは60kBあるため、普通のESP32の場合、何枚もメモリに保持することができません。そこでESP32-WROVER-Bを使うことにしました。

ESP32-WROVER-Bは、ESP32に8MBの擬似SRAMが追加されたモデルです。

Arduinoでは8MBのうち4MBのみ利用可能です。このメモリに、SDカードから予めアニメーションの画像データを読み込んでおくことで、高速に画面を切り替えられるようになります。

ただ、擬似SRAMは、ESP32のCPUとはバスで接続されているわけではなく、80MHzのクロックのSPIで接続されています。ESP32のメモリよりはアクセスに時間がかかるようです。体感で4倍くらい遅い感じがします。

スポンサーリンク

電子ペーパーの電源制御

電子ペーパーは、弱い電気を帯びた粒子を、高い電圧を使ってスクリーンの表面に引き寄せて画像を表示しています。このため、3.3Vの単一電源では動作せず、-22V,+20V,+15V,-15V,VCOM,3.3Vと6種類の電源電圧が必要です。しかも、電源の投入時と、遮断時で決まった順番にONとOFFをしないといけません。そこで、専用の電源ICを使って電源を生成することにしました。

この専用ICはI2Cで制御できるので、少ないIOピンで制御できとても便利です。

スポンサーリンク

電子ペーパーでアニメーションは難しい

これらの仕組みを使って、電子ペーパーの画像を高速に切り替えられるようになりました。しかしながら、1秒に3コマくらいが限界でした。また、コマの切り替え時に黒が一瞬入ります。

黒から白に変化しにくい

ED050SC3のモデル固有なのか、電子ペーパー全般に言えることなのかわかりませんが、白から黒には変化しやすいのですが、黒から白には変化がしにくいです。そのため、同じ画像を何度も上書きして、黒い色を白く薄めていく必要があります。

残像が残りやすい

同じ理由で、黒い模様が消えきれずに残りやすいです。黒い模様を消すために、コマの最初に黒のベタ塗りを描画し全体を黒くしてし、その後画像データを描画しています。そのため、コマの切り替わりで一瞬暗くなってしまっています。

スポンサーリンク

これまで以上に高速描画が可能になった

アニメーションはパネルの特性上、これ以上フレームレートを上げることは難しいですが、CPLDを使うことで画像の高速な描画が可能になりました。

ちなみにこれまでの表示速度の違いを見てみましょう。

LPC1114 mbed

最初のモデルです。LPC1114のmbedマイコンでSDカード内のBMP画像を電子ペーパーに描画しています。SDカードから読み込みながら表示しているので結構遅いですね。

これを元に商品化した物が6インチの電子ペーパーで遊ぼう実験キットでした。

所在プレートとして利用できました。

ESP8266 Arduino

マイコンをESP8266に変更し、インターネットにつながる電子ペーパーに改良しました。マイコンが高速になったので、描画も少し速くなりました。

これを元に製品化した物が、5インチの電子ペーパーとWiFiマイコンで天気予報実験セットです。

画像をSDカードから一旦メモリに読み込んでから、電子ペーパーに描画するように改良したので、描画自体は速くなりました。ただ、SDカードから読み出す時間は結構かかっています。

ESP8266はインターネットにつながることから、天気予報を表示したり、NTP時計としても利用できるようになりました。

ESP32-WROVER-B + CPLD

今回のバージョンです。これを見るとかなり進歩しましたね。商品化に向けてまだまだ詰めないといけない部分もあるので、早く商品化できるよう頑張ります。

コメント