見出し画像

温湿度露点ロガー(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 で)目視確認しています。

画像1


出来ればサポート頂けると、嬉しいです。 新しい基板や造形品を作る資金等に使いたいと思います。