reply先日報告したHOILogですが、飛行練習会で使ってみると幾つか問題点が見えてきました。WTW熊本の練習会で試している風景。(Tinyなので本来ログはいらないですが)一番問題なのはGoogleドライブにアップロードする時にリトライが発生した場合。自宅の無線環境だとリトライする事はほぼありませんが、スマホのテザリング経由だと(電波状況にもよると思うけど)頻繁にリトライが発生し、リトライしていてもGoogleドライブには届いている事も多く、複数回のログがアップロードされてしまいます。Googleドライブ側はこちらの仕組みを使っていますが仕組み的にリトライが発生するとそのまま全部が残ってしまいます。リトライになること自体はネットの都合なので対応が厳しく、きちんと対策するにはGoogleドライブ上のスクリプトを変更していく必要があると思います。SDカードには安定してログが残るので、当面はこっちを主に使いたいと思います。これまでSDカードには時刻ぐらいしか記録していなかったので、今回機体名や場所を残す様に変更しました。success,1あとコンフィグファイルのデータ中にスペース文字があった場合にスペースを消してしまっていたのを修正しました。MOTO」にしてみたのが以下の結果です。success,1ついでに飛行場所に日本語を使うとどうなるか実験しました。飛行場所を日本語(文字コード:UTF-8)で書いたところ、液晶画面には正常に表示できませんがSDカードとGoogleドライブ、どちらのログにも正しく記録されています。success,1なおM5Stackには液晶画面に日本語を表示させる方法もある様なので、そのうち試そうと思います。以上を修正したスケッチをここに載せました。reply最近M5Stackにハマっていました。M5Stackというのはまあ簡単に言うとESP32マイコンにLCDディスプレイやバッテリーを含んだ電源管理回路などをつけて一式をケースに入れたものです。私が購入したのはCore2という機種で外観はこんな感じ・・・M5Stackは数年前から出ていて気にはなっていたのですが、値段がちょっとお高めだったりして手を付けていませんでした。購入してみたら結構便利なんですよね。電源管理回路とかイチから作るとそれだけで何かにハマりそうですが、これなら最初から入っています。HOILogという事で何を作っていたかというと「無人航空機の飛行日誌を自動でとるシカケ」です。Core2を選んだのは内部に時計(RTC)を持っているので時刻を記録し易いのです。下の通り・・・RC受信機が信号を受けるとSBUSやCRSFプロトコルでM5Stackに伝えます。(SBUSはフタバ系、CRSFはELRS等で使われるプロトコルです。)M5Stack側では信号が来たら飛行開始と判断し、マイクロSDカードに時刻を記録します。信号が途絶えたら飛行終了ということでまた記録します。M5StackにはWiFi接続機能があります。アップロードできるので、Googoleドライブ上のスプレッドシートに記録が残っていきます。Core2の裏にピンソケットがあります。新品の状態ではここにフタを兼ねた気圧センサー基板がついていますが、今回は不要なので取り外して+5V電源、GND、UART2のRX/TXを引き出し、RC受信機に接続します。ELRS受信器には入力(RX)信号があり、現在は使っていませんが将来何かに使うかもしれないので繋いでおきます。SBUS受信機の場合は入力信号がないのでM5StackのG14(UART2-TX)端子はオープンにしておきます。ブレッドボード上に組んだセット(回路図にはないですが分かりやすい様に電源にLEDをつけています)。ソフトウェアM5StackはULFlow、ArduinoIDE、Micropython等の開発環境が選択できます。私はこの中から一番なじみのあるArduinoIDEを使用しました。ところがやり始めて気づいたんですけど、コンパイルが結構遅いんです。ググってみると皆さん同じ問題により、PlatformIOに乗り換えられている様です。入れるプラグインで、たぶん一言で言い表すと各種マイコンに対応した開発環境だと思います。確かにPlatformIOでビルドするとかなり早くなり快適です。ベースがVSCodeなので入力補完があったり、キーバインディングをEmacs風に変更したりできて便利です。(余談ですがEmacs風キーバインディングにしたとき、VSCodeの仕様によりEscキーを使用できず、代りにAltキーを使う事になるのが弱点です)。ところがPlatformIOで作ったスケッチが大体安定した動作になった頃、このブログで公開しようかなーと思い、その前に一旦ArduinoIDEに戻してビルドしたところ何だかうまく動作しません。(M5Core2ライブラリはどちらも同じバージョン(0.1.5)なのですが、もっと奥の方のライブラリのバージョン違いが原因かもしれません。)とりあえずハマったのは下記の2点。・タイマーの一旦停止後再起動する場合の動作の違い。再起動できていたのがArduinoIDEだと止まったまま。