【M5Stack】ATOM Matrixでの原因不明トラブルとは?
基礎・基本を学ぶ

No.175 長谷川正の「言ったモン勝ち」


データを取得するタイミング

以前のブログにて、データの取得とデータをWi-Fi 経由でスプレッドシートに書き込むことができました。さあ、これから自動でデータを蓄積できるぞ!と思っていましたが、肝心なことを決めていません。それは、どの頻度でデータを取得するのか?という問題です。今回は温度推移ですのでそれほど頻繁にデータ取得する必要はありませんので、例えば1分毎の計測とすると1時間で60行、1日では1,440行がスプレッドシートに追加されます。シートの最大行が65,536行(xls形式)ですので、逆算すると45日でMAXとなってしまいますが、じゃあ、5分毎にするとその5倍だから225日で十分、とも思いました。ですが、よくよく考えてみると機械が稼働しているのは就業している8時間(8:30~17:30)だけなので、機械が止まっている16時間(67%)のデータは全く意味がないし、土日も動いていないので、更に使えるデータは少なくなる。もっと、必要な時だけデータを取得することは出来ないだろうか?と考えたところ、以下の方法を挙げてみました。

1.毎回、機械の始動時にスイッチオン、終了時にスイッチオフ。
2.加速度センサーを使って、金型が動いている時だけデータを取得。
3.温度が一定以上になったらデータ取得スタート、下がったらストップ。

1は理想的なのですが、自動的にデータ蓄積という主旨でIoT導入を検討しているのに、手動でスイッチをオンオフするのはアウトでしょう。もし、アンドンみたいな表示灯があれば、そこから照度センサーで機械のオンオフを自動的に感知できそうですが、今さらアンドン設置にはコストがかかるし、それ以外の方法を思いつかないので却下しました。また、3は一見良さそうですが、データが取得されていない原因が設定温度よりも低いからなのか、それともM5Stackがフリーズしているのか区別が難しいし、季節による外気温の変化がどの様に影響するかが不明というデメリットもあります。ということで、取り急ぎ2を試してみることにしました。幸いM5Stack シリーズのM5ATOM Matrixには加速度センサー(IMU6886)が組み込まれているので、これを使って金型が動いている時だけデータ取得することができるかを試してみました。ただし、金型の構造上、加速度センサーが有効なのは金型の可動側(コア側)に限定されます。

スケッチ

スケッチは前回を参考にして以下の通り作成しました。大きな違いはM5Stack Matrixが正常作動しているかどうかの判断基準として、5×5RGBマトリックスLEDが順番に点灯するようプログラムしています。また、下記の入力項目に関しては自分の環境に合わせて変更してください。

・WiFi接続に必要なSSIDとパスワード(スケッチ上の「X」と「Y」)
・スプレッドシートのウェブアプリURL(スケッチ上の「*」)

※下記スケッチは2分割にて表示していますので、それぞれコピーが必要です。

金型に貼り付けされた加速度センサーを使って機械が稼働していることを検知するために、1秒毎に加速度値を計測し、直近2つの値の差が閾値(基準値)以上だった場合に温度データを飛ばすようにしています。計測間隔は1秒毎?それとも0.5秒毎?、閾値はどうする?などの調整に苦労しました。

GAS(Google Apps Script)

念のために、GASのスクリプトを載せておきます。前回のコードと比較して変わっているのはシート名(シート1)だけです。

ちなみに、スプレッドシートには以下のように書き込みされます。

6個のデータが取得されたので、LEDも6個点灯しています。

トラブル続きにお手上げ状態

これでオッケー!と意気揚々と試しましたが、実際の金型のストロークと加速度センサーから算出された数値を掛け合わせて、温度データの検出タイミングを導き出すのが結構難しい。それも、固定側のM5ATOM Liteは順調に作動しているのに、なぜ可動側のMatrixだけ原因不明のトラブルが多いんだ?と、いろいろと試行錯誤するも、思うようなデータが取得できません。しかしながら冷静に考えると、金型の可動側は常時振動に晒され、更には機械から出ている電磁波の影響を受けやすいのかもしれません。工場内の環境は同じだけどね。結局のところ、約2週間ほど稼働させましたが、突然Matrixが誤動作を起こし、リセットボタンを押しても起動しなくなったため、これといった原因もわからぬままMatrixを諦めることになりました。くやしいぜ!

不具合の原因は?

もしかしたら、スケッチを見れば分かりますが、各軸(X軸、Y軸、Z軸)の加速度値をある程度揃えて、1つの閾値を活かすようにしたのが間違いかもしれません。考えてみると、金型の動きは常に一定ストロークのピストン運動ですから、Matrix取付の方向をその動きに合わせるようにして、一つの軸の値だけをピックアップして閾値との比較をすれば良かったのかも。

本当に、原因が分かっている人がいたら教えてくれ~!

参考)【M5Stack】センサで金型の温度測定とは?
参考)【M5Stack】I2C接続ケーブルの長さの限界とは?
参考)【M5Stack】WiFi経由でスプレッドシートへのデータ書込方法とは?
参考)長谷川製作所の得意技術(防水照明器具製造)


*工事不要、誰でも手軽に提灯を飾ろう!
提灯コードのイメージ
*提灯コード動画始めました。
提灯コードの動画
*国内唯一のプラスチックを膨らませる技術
「アクリルグローブ」
テラリウム

関連記事

TOP