スポンサーリンク
Translate

電子ペーパーとGPSを使って綺麗なフォントのGPS時計ができました

スポンサーリンク

綺麗なフォントで表示する電子ペーパーのGPS時計ができました。

スポンサーリンク

ESP32-WROVER電子ペーパー制御基板

これまで、ESP32-WROVER-BとCPLDを載せた電子ペーパーの制御基板を作ってきました。

GPS搭載

この基板には、GPSレシーバーも載っていて、時刻や位置情報を使った応用ができたらいいなと思っていて、今回は時刻を使って時計を作りました。

GPSから時刻を受信するために、電源を初めて入れた時(コールドスタート)だと時刻が得られるようになるまで10分程度かかってしまいます。これはどうしても短くなりません。

ただ、このGPSには0.07Fのスーパーキャパシタをバックアップバッテリーの代わりに搭載しています。写真のGPSモジュールの左上のコイン電池みたいな物です。このおかげで、一度GPSが受信できれば、電源が切れてもキャパシタに電力が残っている間(数時間持ちそうです)、衛星の起動データを保持することができ、再び電源が入れば1分程度で時刻が取得できるようになります。

GPS時計なので、同じくGPSを使っているニキシー管時計と、時刻がぴったり合っています。

書き換えが速い

Intel MAX V CPLD 5M160を使って、SPI信号から電子ペーパーのパラレル制御信号にプロトコル変換をしていいます。ESP32のSPIから電子ペーパーへ、画像データを高速に転送できるようになったため、瞬間的な画像の更新ができるようになりました。

以前ESP8266とシフトレジスタで作った回路では、数秒かかってしまいましたが、今回は0.5秒程度で更新できます。

何十秒もかけて更新すると、電源を切った時に、画像全体がグレーっぽくなってコントラストが低下する現象が発生してしまいます。更新時間が短ければ短い程、電源を切った時の画像のコントラストの低下が防げます。

電子ペーパーの解像度が高い

今回の電子ペーパーは5インチのED050SC3という800ピクセル x 600ピクセルの解像度の物を利用しています。SVGAなので解像度が高く、最近入手しやすくなった電子ペーパーによりも結構綺麗に表示されます。

時計の文字盤のフォントは、各数字の画像をBMPファイルにして内蔵のフラッシュに保存しました。ESP32-WRORVERシリーズは、フラッシュが16MBの物のあるので、その広大なフラッシュメモリのうち12MBを利用して画像データを入れています。

ただ初期の設定の場合、数MBしか保存できないので、ちょっと工夫が必要です。

上記の設定をすることで、12MBまでフラッシュを利用できるようになります。

また、この制御基板にはSDカードも付いているので、SDにデータがなかったら、内蔵フラッシュ(SPIFFS)を探すという仕組みにしました。

これにより、オリジナルのフォントをSDに保存しておけば、自動でオリジナルのフォントの文字盤に切り替わるということができます。

スポンサーリンク

ライブラリにはTinyGPS++を使用

Arduinoでプログラムを作っています。GPSの受信にはTinyGPS++ライブラリを使用しました。

このライブラリは、GPSレシーバからシリアルで取得した文字列を、どんどん読み込ませることで、時刻や位置情報を抽出して利用しやすくしてくれるよういう仕組みです。

0.5秒毎にGPSレシーバからシリアルでデータがどんどんやってくるので、受信の部分はタスクにして、メインのプログラムとは非同期で勝手に受信する仕組みとしました。ESP32は、タスク作ったり、またそのタスクを別コアで動かせたりできるので、とても便利ですね。

スポンサーリンク

DCDCコンバータがたまに起動しない問題

今回の制御基板は、電子ペーパー専用の電源生成IC TPS65185を使用しています。電子ペーパーには、3.3Vの他に、約±20V、±15V、約-2Vと、6種類の電圧が必要な上に、それぞれONやOFFする順番やタイミングが決められています。そこで、5Vからこれら全ての電圧を生成し、タイミングの制御までしてくれる電子ペーパー専用の電源ICを搭載しています。

この電源ICが、1日に1回程度、なぜか正常に起動せず、電源が生成されないという問題が発生しています。一度正常に起動しないと、二度と起動しないため、回路とプログラム的に起動しない時のリカバリ機能を追加しました。この機能が安定動作するか、観察を続けているところです。1日に1回程度しか発生しないので、なかなか確認できません。

2020.12.10 追加

問題が解決しました。TPS65185はSleep、Standby、Activeという3つの状態を持っていて、StandbyからActiveに状態遷移することでDCDCが起動します。しかしまれにDCDCが起動しない場合があり、その場合はいったんSleepに遷移して30ms以上待ってから、再びStandby、Activeと遷移するようリトライすると、DCDCが正常に起動できることがわかりました。

基板の修正が必要になったので、修正した基板をPCBWayに注文することにしました。

追加終わり

スポンサーリンク

綺麗なフォントのGPS時計ができました

電子ペーパーの画像の更新の瞬間がかっこ良くて、ボーッと眺めてしまいます。

過去の画像の残像をなるべく無くすためにと、コントララストを上げるため、過去画像の白黒反転→白→次の画像の白黒反転→次の画像を6回描画という順番で画像を更新しています。なので、一瞬黒が挟まるような更新となっています。

壁に、そのまま貼り付けてみました。

今度ケースを作ろうと思います。早くレーザーカッター届かないかな。

つづきはこちらです。

この記事の回路を利用したキットを販売中です。
GPS搭載電子ペーパー時計