時計に気象衛星の画像を表示させたいと考えるMakerは少なくないかもしれない。しかし、実装するにはいくつかの課題がある。衛星画像の取得、適切な更新間隔の設定、限られたストレージ容量での運用などだ。香港在住のMakerである陳亮氏はこれらの課題に対して、ESP32-S3とMicroSDカードを組み合わせた解決策を提示した。
このプロジェクトは中国の静止気象衛星「風雲4号B」(FY-4B)のライブ画像を使用する。FY-4Bは2021年6月3日に打ち上げられた中国第2世代の静止気象衛星で、赤道上空の同じ地点にとどまっているため、定点観測画像を提供できる。
動作の仕組みはシンプルだ。ESP32のWiFi機能を使い、まずNTP(ネットワークタイムプロトコル)サーバーから現在時刻を取得する。気象衛星は画像処理と地上への転送に時間を要するため、約45分の遅延が発生する。FY-4Bは15分間隔で画像を公開しているため、このパターンに合わせて15分ごとに最新画像をダウンロードする。
ダウンロードした画像はMicroSDカードに「/fy4b/yyyy/mm/dd/HHMM.jpg」というフォルダ構造で保存される。ダウンロード待機中は、保存済みの画像を数秒おきに順次表示することで、地球のタイムラプスアニメーションを作成する。起動直後は1枚の静止画のみだが、6時間後には6時間分のタイムラプスを再生できる。
使用するハードウェアはPSRAM、ディスプレイ、MicroSDカードスロットを備えたESP32開発ボードであれば動作する。製作者はWaveshare ESP32-S3 TOUCH LCD 3.49を使用している。このデバイスは640×172ピクセルのタッチスクリーンディスプレイを搭載する。
ダウンロードされる画像サイズは860×540ピクセルだが、ディスプレイは640×172ピクセルのため、表示する領域を選択できる。サンプルコードでは華南地域と香港周辺をトリミングして表示している。
ソフトウェアはArduino IDEで開発されており、Arduino_GFX、Dev Device Pins、JPEGDECライブラリを使用する。HTTPS通信で画像をダウンロードするため、証明書の設定が必要だ。サンプルコードではnmc.cnのルートCA証明書が設定されている。他のウェブサイトを使用する場合は、適切な証明書をインポートする必要がある。
FY-4Bはアジア地域上空に位置するため、他の地域を表示したい場合は別の気象衛星画像ソースを使用できる。製作者は欧州、インド、日本、NASAなど複数の気象衛星画像ソースを紹介している。画像ソースのURL設定を変更するだけで切り替えられる。
ストレージ管理については注意が必要だ。画像ファイルは1日あたり約10MBを使用し、サンプルプログラムでは古いファイルを削除しない。128MBのMicroSDカードでは約2週間、4GBのカードでは約1年で容量がいっぱいになる。画像が表示されなくなった場合は、カードをFAT32形式で再フォーマットすれば機能が復旧する。
使用したWaveshare製デバイスはRTC(リアルタイムクロック)を搭載し、バッテリー駆動が可能なため、キーホルダーやバッグチャームとして使用できる可能性もある。タッチスクリーンを活用すれば、トリミング領域の調整や赤外線画像への切り替えなど、さらなる機能拡張も可能だろう。
詳細な製作手順とソースコードはGitHubで公開されている。