簡易IoTシステム(type02)の開発 4

簡易IoTシステムの第2弾(type02)として、製造装置で作った製品の個数をカウントして、Webページで確認するシステムを作ります。

スイッチ(磁気センサー)のON/OFF、または光センサーの明るさ情報を、アナログ値としてESPr Developerに取り込みます。その情報を、別途設定しているしきい値に基づいてON/OFFに置き換え、その変化回数をカウントし、Webサーバに送信します。
Webサーバに送信されたデータを、生産数などを表示するためのPHPプログラム群で観測します。

スイッチや光センサーを装置の動作部分に取り付けることで、その装置での生産個数をカウントしたいと考えています。

これまでに、ESPr Developerのスケッチや、PHPプログラム群は開発を完了し、データを採取、確認できるようになっています。

ところで、自宅の冷蔵庫の扉に磁気センサーと光センサーを取り付け、2種類の方法で、冷蔵庫の扉の開閉回数を採取し続けてきましたが、蓄積したデータを調べたところ、磁気センサーでは、それなりに確からしい値が採取できているのですが、光センサーでは全くデタラメな結果になっていました。
原因を調査したところ、光センサーの取り付け位置が適切ではなかったため、明/暗の違いが分かりにくかったことと、違いを判別するためのしきい値が適切ではなかったことが原因でした。
光センサーを庫内灯の近くに貼り付け、しきい値も調整し直す事で、確からしい値が採取できるようになりました。

これで、対策自体は完了したのですが、この対策を行なっている途中で、あらたな問題点に気づきました。

ESPr Developerに取り込むのは、光センサーのアナログ値ですが、そこからWebサーバに送信するのは明/暗の変化回数です。どのようなアナログ値が、どのようなしきい値に基づいて判定されたのかは、採取したデータを見てもさっぱり分かりません。
今回の対策では、一旦スケッチ(ESPr Developerのプログラム)を書き換え、アナログ値を直接観測してから、しきい値を調整しました。
このような方法は、本運用では適用できないため、しきい値を調整する際に手がかりになるような情報を、Webサーバに送信しておかなければなりません。

色々と考えた結果、観測したアナログ値の分布を、Webサーバに送信し、グラフで表示できるようにしました。

ESPr Developerでは50msec毎にアナログ値を採取、変化回数をカウントし、約4分毎にデータをWebサーバに送信します。つまり、1回のデータ送信につき、約5000回アナログ値を採取しています。この採取した値をグラフ化します。
暗い時と明るい時のふたつの山ができるはずなので、そのふたつの山の間あたりにしきい値を設定すれば良いことになります。

作成した仕組みでグラフ表示した結果は以下のとおりです。ふたつの山が確認でき、その間にしきい値を設定すれば良いことが分かります。

いずれにしても、この調整はなかなか面倒そうです。type02の使い方としては、あくまでもスイッチ(磁気センサー)で観測することを基本とし、どうしても難しい場合に光センサーも検討する、という方針にした方がよさそうです。