![見出し画像](https://assets.st-note.com/production/uploads/images/36940985/rectangle_large_type_2_bf9505a14751c170f571e97e921ce1f0.jpg?width=800)
温湿度露点ロガー(S0100-0) 8
製作中の温湿度露点ロガーは、前回でほぼ完成して動作確認を続け、積み残しや修正案を出している状況でした。
前回記事公開後にも課題を書き足し、先程プログラム修正を終えたところです。
以下、課題及び修正内容について紹介します。
1.動作中を示す青色LEDの点滅が割込み処理
この割込み処理はメインレベルがエラー停止しても動き続ける為、目視では不具合を見落とす可能性がある。
割込み処理は点滅だけでなく、LCD表示更新や測定を行っていて、専用のカウンターで2.5秒周期のスケジュールに従って順次実行する仕組みです。
処理が一巡した時のカウンター更新処理を、メインレベルに変更して対策しました。
2.自機のIDを表示していない
作業漏れです。当初予定通り表示するようにします。
作業完了し、LCD表示を確認しました。
3.ID番号01の記録が欠落することがある
ID=00 は問題なく記録を続けますが、ID=01 の記録が欠落 Null のレコードがある。UPDATEのタイミングにID=00によるINSERTが間に合わないのではないか?
ID毎の遅延時間(修正前)2秒を、4秒に変更してIDの範囲を00~14とする。これによって改善するなら原因推定が正しいと思う。
(今のところ、連続15レコードですが問題無しです。)
一方で、長期間使っても大丈夫なのか疑問が残る。継続して観察する。
推定原因が正しいなら、各 Raspberry Pi Zero の時刻を同期させることで対策が可能そうだが、本アプリケーションの外側で対策することになると思う。
完全な対策ではないが、ID=00によるINSERTを現在時刻だけでなく、次の記録予定時刻の分もINSERTするようにすれば、さらに時刻ズレに対する耐性が増すと思う。
4.ボタン操作による終了動作が不安定
SW1, SW3 を同時に押すことでアプリを終了する予定であるが、動作が不安定で数回試してやっと終了する。原因調査と対策を行う。
スイッチ押下の検出がエッジ検出になっていた。
High/Low レベル検出に修正して、期待した動作を確認した。
今後の予定
3番目の記録欠落と推定原因の時刻同期が気がかりである。
例えば SQLite 簡易サーバーを基準に、全てのロガーの時刻同期を行うなど、本アプリの外で対策することに成りそうだが、観察を続けながら対策方法についても調べてみます。
以上、何等かお役に立てれば幸いです。
お気づきの点などございましたら、気軽にコメントいただけると幸いです。
追伸
2台のロガー(ID=00, 01)による SQLite 記録確認
10/18日 9:45 記録開始
10/18日 18:30 (8.75hr) 36レコード正常記録
10/18日 22:00 (12.25hr) 50レコード正常記録
10/19日 7:11 (21.25hr) 86レコード正常記録
10/19日 18:30 (32.75hr) 132レコード正常記録
10/20日 18:15 (56.50hr) 227レコード正常記録
この時、VNC接続しているSQLite 簡易サーバーのレスポンスが遅い。
DB Browser for SQLite を立ち上げっぱなしにしていたのが原因なのか?
とりあえず、電源OFF/ONしたところ、直後は遅かったが暫くして応答速度が回復した。この間の記録に欠落が生じている。
18:30 ID=01 のデータが欠落
18:45 正常記録
DB Browser for SQLite を閉じて暫く様子を見ることにした。
10/20日 18:45 再開
10/21日 18:30 (23.75hr) 96レコード正常記録
10/22日 19:00 (48.25hr) 194レコード正常記録
10/23日 18:45 (72.00hr) 289レコード正常記録
10/24日 17:00 (94.25hr) 378レコード正常記録
この後はプログラムを修正して「温湿度露点ロガー(S0100-0) 9」に記録
正常記録とは
Null カラムの無いレコードが、1時間当たり4つ(毎正時+0.00, 0.25, 0.50, 0.75 [時間])記録されていることを(DB Browser for SQLite で)目視確認しています。
出来ればサポート頂けると、嬉しいです。 新しい基板や造形品を作る資金等に使いたいと思います。