ESP32用データロガープログラムの作成 その4
前回の「ESP32用データロガープログラムの作成 その3」の続きです。
今回は作ったプログラムがちゃんと動いているかの確認作業(検査・デバッグ行程)とになります。
下の図のように「ログ出力機器」からシリアルポートを通じてSDカードに保存するログデータを取得しています。
動作確認作業は
-
ログデータがちゃんとSDカード内のファイルに保存できているかどうか?
-
ロガーコマンドがちゃんと動いているだろうか?
-
連続でログデータ受信した場合にはちゃんと動作するだろうか?等々
を確認する作業となります。
うまく動いてないこと(いわゆる不良)が見つかった場合はその原因を調べ、考え、プログラムの問題の箇所を見つけ出しプログラムに修正を加えて再度動作確認を行うという作業を不良がなくなるまで繰り返し続ける作業なのです。
なので、同じ動作テストを何度も行うことは少なくありません。動作確認を手入力で行っていたのでは時間がかかって効率が上がりません。
時給作業であれば手入力作業の方が対価効果は確かにあがりますが。。。時間を掛けても頂ける対価は変らない個人事業者としては効率アップを図らなければなりません。
そこで、「ログ出力機器」をシミレーションするパソコンで動作するプログラムを作ることで作業効率を上げます。
今回は Processing というJava言語で開発環境が Arduino IDE に似たものを使い次のようなシミレーションプログラムを作成しました。
これを使い動作条件を変えたテストをボタンクリックするだけで何度もで行えるようにしました。
ボタン |
説明 |
|
SEND 100 INTERVAL 100ms AAAA |
: |
100msの間隔で100byteのデータをシリアルに100回出力する。SDカードの保存ファイル名は「AAAA」です。 |
SEND 100 OKorNG AAAA |
: |
100byteのデータシリアルに出力後LOGGERからの返信が “OK” の場合次の100byteのデータをシリアルに出力し “NG” の場合はその後のシリアル出力を停止する。連続100回繰り返す。SDカードの保存ファイル名は「AAAA」です。 |
DIR |
: |
SDカード内にファイル一覧(ファイル名とファイルサイズ)を表示する。 |
TYPE AAAA |
: |
SDカード内の「AAAA」ファイルの中身を表示する。 |
DEL AAAA |
: |
SDカード内の「AAAA」ファイルを削除する。 |
#DAY NOW |
: |
PCの年月日でLOGGERの年月日を設定する。 |
#TIME NOW |
: |
PCの時分秒でLOGGERの時分秒を設定する。 |
#TIME SET |
: |
ログデータの先頭に時分秒付加するように設定する。 |
#TIME CLR |
: |
ログデータの先頭に時分秒付加しなに設定する。 |
#FILE DAYTIME |
: |
LOGGERの年月日時分秒をファイル名としてログデータ保存ファイルをオープンする。 |
#FILE DAY |
: |
LOGGERの年月日をファイル名としてログデータ保存ファイルをオープンする。 |
#FILE TIME |
: |
LOGGERの時分秒をファイル名としてログデータ保存ファイルをオープンする。 |
#FILE AAAA |
: |
AAAAをファイル名としてログデータ保存ファイルをオープンする。 |
#SEND 100 |
: |
100バイトのログデータ「1234567890・・・」を出力する。 |
#CLOSE |
: |
オープン中のファイルをクローズする。 |
LOGGERの動作確認作業をしていると次のような避けることが出来ないことも判明しました。
「ログ出力機器」が連続でログデータをシリアルに出力してきた場合ちゃんと保存できない場合が発生する。 |
これはLOGGERのシリアル受信バッファサイズに制限があることやLOGGERがログデータをSDカードに書き込む時間が一定時間要するためです。
この場合はの解決方法は次の2つがあるかなぁと思います。
-
LOGGERのSDカードにちゃんと保存できる「ログ出力機器」からのログデータの出力間隔を調べ、その値の間隔をあけて「ログ出力機器」がログデータを出力するようにする。
-
「ログ出力機器」はLOGGERにログデータの出力してLOGGERがSDカードにそのログデータを保存が終了した時点で「ログ出力機器」に完了通知を返信し「ログ出力機器」はその返信を確認して次のログデータを出力するようにする。
今回はこのLOGGERとして次のような「使用条件」をざめることとしました。
「使用条件」 |
基本的には「ログ出力機器」はログデータを出力する際はLOGGERから返信される “OK” or “NG” を読み取って次のログデータを出力すること。もし、LOGGERからの返信を確認しない場合は「ログ出力機器」は100バイトのログデータを出力する場合は少なくとも100msの間隔をあけて次のログデータを出力すること。この方法の場合LOGGERが割込み処理等で別の処理に時間を要する場合もあるのでログデータがちゃんとSDカードに保存されないこともあります。ご理解の上お使いください。 |
まぁ、いくつかの不良を発見しては修正しを繰り返し、ひとまず完了しました。
以上でデータロガー(Ver 0.01)の作成はおしまい!
のはずでしたが、次の追加要望のご依頼があり今後バージョンアップの予定です。
「追加要望」 |
LOGGERをWifiアクセスポイントにし Wifi無線接続したパソコンで teraterm 等の telnetクライアントで接続し、リアルタイムにログデータを収集したい。 |