余震が続いているのもあり、Vivaldiのウェブパネルに強震モニタを表示しているが、常時表示しておくのが面倒なのでM5Stack core2にやらせたい。
全国版の強震モニタについてはM5Stack(core2ではない)で作成された方がいらっしゃる↓ため、これをcore2に移植しつつ、能登地方バージョンに改変する。
以下、移植時の改変点などを記載する。
ボード情報やライブラリの変更
ボード情報やライブラリ名をcore2用に書き換える必要がある。書き換え後は以下の通り。
main.cpp
(<M5Stack.h>
を<M5Core2.h>
に置換)
#include <AnimatedGIF.h> #include <Arduino.h> #include <HTTPClient.h> #include <M5Core2.h> #include <WiFi.h> #include <WiFiMulti.h> (後略)
platformio.ini
[env:m5stack-core2] platform = espressif32 board = m5stack-core2 framework = arduino monitor_speed = 115200 lib_deps = bitbank2/AnimatedGIF@^1.3.2 paulstoffregen/Time@^1.6 mbed-kazushi2008/HTTPClient@0.0.0+sha.cf5d7427a9ec m5stack/M5Core2@^0.1.8
※なお、monitor_speed
についてはシリアルモニタの文字化け防止*1に記載したもので、必須ではない。
音声をバイブに変更
core2では音の鳴らし方が変更されたようで、移植にあたり対応が必要となる。 しかし対応が難しいと感じたため、バイブレーションで代用することにした。
具体的には、main.cpp
に次のような関数
void vibrate(unsigned int vibLength = 500) { M5.Axp.SetLDOEnable(3, true); delay(vibLength); M5.Axp.SetLDOEnable(3, false); }
を定義して、M5.Speaker
の関数が使われている部分をすべてvibrate()
で置換した。
能登地方を表示する
強震モニタの画像のURLに_noto
を付け加えることで、能登地方のマップを表示させることができる*2。
具体的にはmain.cpp
内のURLを以下のように変更すればよい。
http://www.kmoni.bosai.go.jp/data/map_img/CommonImg/ -> http://www.kmoni.bosai.go.jp/data/map_img/CommonImg_noto/ http://www.kmoni.bosai.go.jp/data/map_img/EstShindoImg/ -> http://www.kmoni.bosai.go.jp/data/map_img/EstShindoImg_noto/ http://www.kmoni.bosai.go.jp/data/map_img/PSWaveImg/ -> http://www.kmoni.bosai.go.jp/data/map_img/PSWaveImg_noto/ http://www.kmoni.bosai.go.jp/data/map_img/RealTimeImg/ -> http://www.kmoni.bosai.go.jp/data/map_img/RealTimeImg_noto/
しかし、強震モニタ背景に表示される日本地図の画像CommonImg/base_map_w.gif
が16.4kBなのに対し、能登地方の地図画像を指すCommonImg_noto/base_map_w.gif
は50.9kBと非常に大きい。そのため次のように画像ダウンロード用のバッファ容量を増やしておく必要がある点に注意。
main.cpp
(前略) unsigned long file_buffer_size; // ダウンロードしたサイズ unsigned char file_buffer[51000]; // ダウンロード用のバッファ (後略)
(2024/11/30追記) 結局圧縮した画像を自分のリポジトリでホストすることにした。これなら30kBほどで十分足りる。