スキップしてメイン コンテンツに移動

簡単にできるIoT~振動の測定①


先日(といっても随分経ってしまっていますが…)とある方から、M5StickCというデバイスをいただきました。それで、どんなことができるのかと試してみたことを紹介します。

M5StickC


このデバイスは親指(より少し小さい?)くらいのサイズですが、中にESP32-PICOというモジュールが搭載されていて、WiFiやBluetoothの通信ができます。また、MPU6886というモジュールも載っていて、加速度、ジャイロ、(デバイス内部の)温度センサーが使えます。液晶画面やボタンもついています。要するに、いくつかのセンサーと、操作や通信をする機能がコンパクトにまとまっているデバイスです。

そして、このデバイスのいいところは、デバイスを制御するためのソフトウェアを作るのも非常に簡単ということです。ネットワークにつながる部分が既に作り込まれていて、少し追加で設定するだけで、すぐにWiFi(そしてWiFiを経由してインターネット)との接続も可能です。

この手の電子工作モジュールがよく売られているSWITCH SCIENCEでも扱っています。

何を作るか

機械などに取り付けたセンサーから得られるデータを、クラウドに収集して分析して、人の行動の参考にしたり、他のシステムを動かしたり、機械のコントローラーにフィードバックして自動制御したり、というのがよくあるIoTの全体像です。M5StickCを使えば、このようなIoT的なシステムが簡単に構築できることが期待できます。

とはいえ、このデバイスでどんなデータを取得したら役に立つのか、というのは意外と難しい話です。昨今、ノーコード/ローコードで、プログラマでなくてもプログラミングができる!ということがよく言われます。しかし、システムを作る上で難しいのは、コードを書くところよりも、何を作るかを決めるところです。これはプログラマやエンジニアでも上手くできる人が少ないですし、ユーザー企業で現場の業務をよく知っている人ならできるというわけでもないです。課題をよく吟味して、業務やビジネスがどう変化すると良いのかを全体最適の視点から捉えないと、間違ったものを作ってしまいます。

本来は、課題があって、それから手段が検討されるわけですが、今回は手段が手元にあって、そこから何ができるか考えています。完全に間違いパターンです。そのため、実際に役に立つかどうかは分かりませんが、よくあるIoTの課題である、ネットワークに接続されていない設備の稼働状況を監視したい、というものを漠然と想定してみます。
設備の稼働状況を見るのには、電気の流れや使用電力の変化、計器の変化を監視するケースがありますが、今回は振動に着目してみます。設備の特徴から考えているのではなく、もちろん手元のM5StickCに加速度センサーがあるからです。

物理的に動く設備には多かれ少なかれ振動が発生します。うちにあるサーキュレーターも稼働中に触ってみると振動が感じられますし、風力の違いによって振動も変わるようです。そこで、その振動をM5StickCの加速度センサーで捉えることで、稼働状況を監視できるのではないか、という仮説を立てました。

どれくらいデータを取るのがいいか

振動データはクラウドに送って分析できるようにします。そうすると、デバイスからインターネット経由でデータを送る通信が発生しますが、あまりたくさんのデータを通信するのも、通信の回数が多くなるのも大変です。そこで、一定の時間おきに、ごく短い時間の振動データをサンプルとして取得して送ることにします。

機械の状態変化を、どのくらいの時間おきに取ればいいかは、どんな機械をどのように使っているかによります。うちのサーキュレーターの稼働状況を監視するには、10分に1回、どうなっているか見れば十分です。また、振動データは10分間ずっと取得するのではなく、ごく短い時間のデータでも、どれくらいの振動が起きているか分かるのではないでしょうか。

ただ、どれくらい細かくデータを取るのが良いかは、精緻に考えると難しそうです。ひとまず簡単に考えてみます。うちのサーキュレーターはそんなに回転しないと思いますが、もし1分間に3000回転する機械が、回転ごとに振動を起こすとしたら、50Hzになるでしょうか(正確なところは僕には分かりません…)。50Hzだと20ミリ秒に1回の振動があるので、それより細かく振動データを取らないと、振動を検知できません。今回は、5ミリ秒ごとに振動データを取ってみます。あまり細かすぎるとセンサーが対応できなくなる可能性もありますが、センサーの仕様を調べてみると低電力モードでも2ミリ秒(500Hz)に対応できるようなので余裕があります。

データの取得数は、コンピューターの世界では2のn乗が都合が良いので、256個とします。5ミリ秒ごとに256個データを取ると、時間にして約1.28秒間のデータになるはずです。1秒以上のデータが取れれば、1秒に1回動く時計のような機械でも動きが検知できる可能性が高いです。
ところで、このデータを1年間集め続けるとどうなるでしょうか。10分につき256個のデータが蓄積されるので、1日で36,864個、1月で1,105,920個、1年で13,455,360個のデータが集まることになります。世の中でビッグデータと言われるほどのものではありませんが、ちょっとしたデータ量にはなります。1年分のデータをExcelに記載すると、だいぶ動きが重くなるでしょう。

どこにデータを集めるか

さて次は、データを蓄積する場所についても考えてみます。クラウド上でデータを扱う方法はいくつもありますが、今回は簡単に実現したいので、Googleスプレッドシートに書き込んでみます。Google App Script(GAS)という仕組みでデータを受け取る口を作ることができて、そこから受け取ったデータをスプレッドシート内に自由に配置できます。

また、データを集めたあとに、どのような分析をすると、設備の状態を判断することができるのかは、データを集めて試行錯誤しながら検討することになります。取得したデータを眺めてみる際にも、スプレッドシートにはグラフを作る機能や、数式を扱う機能があるので、便利です。

ひとつ問題があるとしたら、データ量です。Googleスプレッドシートには、ひとつのファイルに500万セルまでしか保持できないという制限があります。今回、1年間で13,455,360個のデータが集まるという計算があったので、1年分の振動データはスプレッドシートに入り切りません。ただ、今回は試しに作ってみるだけなので、1年間も運用しません。まずは簡単に実現することを優先して、Googleスプレッドシートを使います。

設計メモ

ここまでのところを図にまとめてみます。
いよいよ、これから作り始めよう!というところですが、前置きが長くなってしまったので、つづきはまた次回とします。

このブログの人気の投稿

システム内製化のトレンド

  これまで多くの企業にとって、ICTと言えば外から買ってくるものでした。もしくは、業者に発注して作ってもらうものでした。それがクラウドサービスになって、借りてくるもの、みんなでシェアしながら使うもの、になりましたが、今は社内で作るものになり始めています。いわゆる「内製化」です。 かつてソフトウェアを開発する企業に所属していた身としては、市場の大きな変化につながる話なので、とても気になっているのですが、多くの企業の方にとっては、まだまだ関心の薄い話題かもしれません。なので、なぜシステム内製化というトレンドが起こりつつあるかについて、僕の認識していることを少し書いておこうと思います。 とはいえ「なぜ」というのは非常に簡単な話です。経営、ビジネスモデル、事業の強み、といったものがICTと密接に関係するようになったからです。 アウトソーシングしていい業務と、してはいけない業務は何か、という議論をするとき、ひとつ大きな論点として、強みに直結するものかどうか、ということが挙げられます。その企業独自の強みを他社に依存すると、強みを持続させることも発展させることも危うくなるというのは分かりやすいと思います。システム内製化も同じ論点から出てくる話です。自社の強みの源泉となっている業務フローを支えるシステムだったら、自分たちの手の内に入れておくべきです。 また、今の時代が、不確実性が高く、かつ、変化の激しい時代である(と言われている)ことも、内製化の追い風になっています。不確実で変化の激しい市場に対応するビジネスは、その運用を柔軟に変化させ続けなければいけません。それも高速に。そのためには、システムもビジネスに追従して高速に変化させ続ける必要があります。システム開発を外注していたら、事業変化のスピードにはどうしたって追いつけません。システムが足を引っ張るようになります。必要なスピードを出すためには、社内で、ビジネスを回している従業員のすぐそばで、一体となって、開発をしていかなければならないのです。 そんなわけで、これまで「IT企業」とは言われていなかった企業が、続々とエンジニアの中途採用を始めて、自分たちでシステム開発をやれるようになってきています。そしてすべての企業が「IT企業」になる(逆に言えば「IT企業」という枠組みが消える)時代が来ようとしています。 もちろん、全てのシステム

簡単にできるIoT~振動の計測②

  前回 は、何を作るかを考えて、設計メモにまとめました。 簡単にできるIoT~振動の測定① 先日(といっても随分経ってしまっていますが…)とある方から、M5StickCというデバイスをいただきました。それで、どんなことができるのかと試してみたことを紹介します。 M5StickC このデバイスは親指(より少し小さい?)くらいのサイズですが、中にESP32-... まだプログラミング自体には触れていませんでしたし、大まかな設計をしただけですが、ここまで意外と考えることが多かったと思われるかもしれません。ですが、どう作るかよりも、何を実現するかの方が重要です。本来はもっと何を実現するかを模索するのに時間をかけるべきだと思います(そのためにシステムを試作することも含めて)。 さて、今回はさっそくこれを作ってみます。作る方法はネットでいろいろな人が教えてくれるので、それらを参考にすれば、すぐに作れます。 データを受け取って蓄積する側を作る まずは、Googleスプレッドシートに以下の図のような表を作り、M5StickCから受け取ったデータを書き込めるようにします(図では既にデータが蓄積されています)。 A列「gasCodeVer」:一応、動かしているスクリプトのバージョンを記録 B列「receiveTime」:データを受け取った時刻(receivedでないのはご愛嬌) C列「dataNum」:いくつデータが取れているかを記録 D列「data1」以降:加速度データ そのために、以下のことをします。 Googleドライブでスプレッドシートを作る 「ツール」→「スクリプトエディタ」からスクリプトエディタを開く Apps Scriptでスクリプト(コード)を書く 「デプロイ」→「新しいデプロイ」→「種類の選択」→「ウェブアプリ」からデプロイ 基本的なやり方は下の参考ページ(前半部分)を見れば、すぐに分かります。実際に手元で出る画面と少し違うところがあるかもしれませんが、だいたい一緒かな、という緩さをもって見ていくと良いと思います。 [M5Stack] M5Stackで取得したデータを、Google スプレットシートへ書き込む M5StackはWi-Fi機能との連携が特徴の一つとなりますが、やってみたくなるのがクラウド連携だと思います。そこで、今回は、Google

無料でHPを作る

HP(ホームページ)というのは、多くの中小企業にとって最初に検討されるITツールのひとつだと思います。昔からHPを作成するための様々なサービスが提供されてきましたが、今も便利なサービスが多くあります。そして、無料で簡単にHPを作ることのできるサービスもあります。 有名なところで以下3つのサービス。 ・ WiX ・ ジンドゥー(Jimdo) ・ Googleサイト どれも(2020年夏現在)流行りの「ノーコード」でHPが作れるサービスになっています。他にも STUDIO や Webflow 、 ペライチ といったサービスもあり、選び放題です。 ここでは当事務所のHPを最初に挙げた3つの無料サービスでそれぞれ作ってみて、感じたことなどを、少し紹介しようと思います。 まずジンドゥーで作ったHPが こちら 。 URLは xxx.jimdofree.com(xxxはユーザー登録時に任意に決められる)になります。そして、一番下(フッター)にジンドゥーの広告が入ります。これは無料プランでは変更・削除ができません。 どのサービスでもそうですが、最初から用意されているテンプレートを選んで、必要な部品を残しつつ改変していくとすぐに作れます。もっと写真を強調したオシャレ雑誌みたいなテンプレートもありましたが、ここでは名刺の裏に合わせて、単色の背景にしてみました。 テンプレートの部品ごとに背景色を設定する必要があり、ページ全体を同じ色に変えるのは、少し手間がかかります。何がどこで定義されているか探すパズルみたいです。ブラウザのタブのところにも表示される、ページタイトルをどこで設定できるかも、直感的には見つけられず、いろいろ探しました(管理メニュー→パフォーマンス→SEO)。 一方で、お問合せページを作るのはとても簡単で、プライバシーポリシーを記載するページも、既にあるもの(ただしほぼ空白)を編集するだけでした。 次にWiXで作ったページが こちら 。 URLは xxx.wixsite.com/yyy(xxxはアカウント名、yyyは任意のサイト名)となります。そして、無料プランは最上部に広告が出て、スクロールしても消えません。ファビコン(ブラウザのタブのところに表示されるアイコン)も有料プランでないと独自のものを設定できません。今回の3つのサービスの中では一番広告が目立ち