LoginSignup
5
3

More than 1 year has passed since last update.

パトライトの点灯状況による工場の生産ラインのIoTを再現してみた

Last updated at Posted at 2022-09-11

1. はじめに

こちらのYouTubeの最初の5分間にインスパイアされて、
https://youtu.be/AanyOK3_yQU
工場の生産ラインで稼働状況を知らせるパトライトを使ったIoTを再現してみました。

私は製造業の人でもエンジニアでもないので、変なところがあればご指導願います。

スクリーンショット 2022-09-11 21.09.05.png

完成イメージ

以下の画像のように、
パトライトの状況をスマホ(LINE)やデータベース(GoogleSpreadSheet)に 送ります。

スクリーンショット 2022-09-11 21.17.11.png

環境・使用ツールなど

動作確認OS

macOS Monterey

ハードウェア

開発ツール

  • LINE Notify
  • IFTTT
  • Google Speadsheet
  • UIFlow (ビジュアルプログラミングツール)

2.開発

2-1. 工場側 

M5StickC plus というマイコンボードを使います。

M5StickC plus と UIFlow の設定

まず、
最初の設定はこちら参照
https://qiita.com/tatsuya1970/items/c0a2a317c9d10942cbcb

M5StickC Plus の電源をオンにする
※ 電源ボタンは2秒長押しで ON, 6秒長押しで OFF

API KEY が表示されたらOK
(あとで使う)

UIFlow

UIFlowにアクセス
https://flow.m5stack.com/

初期画面
Image from Gyazo

左下の「APIキー」の表示をクリック
Image from Gyazo

以下の画像のようにセッティングする
(1)Apiキー 先ほどののAPIキーを入力、 Language:日本語
(2)濃いオレンジのM5Stickのアイコンをクリック
(3)「OK」をクリック

Image from Gyazo

こんな画面になる
Image from Gyazo

マイコンボードにセンサーをつける

UIFlowでの開発

UIFlowの左サイドの「Label」アイコンをM5Stickの画像にドラッグ&ドロップ

M5Stick画像に「label0」という字が表示される

 左下の「Units」をクリックし、
「+」をクリック

使用するセンサー(LIGHTセンサー)を選んで、「OK」
Image from Gyazo

左下にセンサーのアイコンが追加される

UIFlow でのビジュアルプログラミング

プログラミング
スクリーンショット 2022-05-19 6.29.46.png

Run
Image from Gyazo

光センサの値が表示されました。

2-2. データを受ける側 (LINE)

(参考にした記事)
https://qiita.com/twtjudy1128/items/e4980be7ffd1b465144a

LINE Notify と IFTTT を使います。

  • LINE Notify(ラインノティファイ)とは、LINEと外部のWebサービスやアプリを連携し、ユーザーがカスタマイズされた好みの情報を受け取ることができる機能です(無料)
    今回は、外部のセンサーのデータを受領するために使います。

  • IFTTT(イフト) とは異なるソーシャルメディアやプラットフォームを連携させるWebサービスです。(一定数まで無料)
    今回は、センサーのデータをマイコンを通じて通信したものを、LINEへつなぐ役目を担います

LINE Notify

LINE Notify にアクセス

ログイン

ログイン画面

ログインできたら右上に自分のLINE名が表示される
「IFTTT」をクリック

「Create」(「GET Start」)をクリック

「If This」 をクリック

「webhook」を検索し、webhookをクリック

「Recieve a web request」と書かれたブロックをクリック

「EventName」を入力して、「Create Trigger」

次は、LINEに通知がいく設定をします。
「Then That」をクリック

「LINE」を検索し、クリック

「Send message」をクリック

もし、「connect + LINEと連携しますか?」
というメッセージがでる人は、「YES」

こんな画面になる

  • Recipient : 通知が来てほしいLINEグループを選択
  • Message : 送られてくるメッセージ グレースケールのValue1とかは変数になってて、M5Stickからテキストを代入できます。
  • Photo URL :テキストだけじゃなく、写真も送ってほしいときは、ここにイメージURLか変数を入れます。

今回は以下のように設定し、「Create action]

Image from Gyazo

「continue 」をクリック
 

「Finish」をクリック
 

設定完了
 

Webhookマークをクリック
 

Documentation をクリック
 

key を取得できる
Image from Gyazo

以下のURLをどこかに控えておく

https://maker.ifttt.com/trigger/LightTest/with/key/[Your key]

センサーのしきい値の設定

パトライトにセンサーを養生テープでくっつける

スクリーンショット 2022-05-19 6.46.54.png

パトライトがついてる時 (機械が正常稼働)
スクリーンショット 2022-05-19 7.01.26.png

パトライトが消えてる時(機械が停止)
スクリーンショット 2022-05-19 7.01.49.png

パトライトが点灯しているときと消えてるときのセンサーの値を調べて、しきい値を決めます。

私の部屋は、パトライトが点灯しているときは、おおむねセンサーの値が900以上でしたので、しきい値を900とします。


UIFlowに戻り、 以下のプログラムを作成します。 しきい値とさきほどIFTTTで控えたURLを入力します。 パトライトが消えたらLINEに「STOP」アラート、パトライト稼働中は「RUN」というアラートがいきます。

Image from Gyazo

プログラムを作成したら、下方の「Run」で実行してください。

10秒ごとにLINEに光センサーの情報が投稿されます。

このままでは、パトライトの点灯・消灯に関わらず、一定間隔でLINEに通知が行きます。
点灯→消灯、消灯→点灯 といった状況が変更になったときだけLINEに通知するようにするには、
以下の画像のように
パトライトの状況を表す変数 state と
状況が変わった時にフラグ1がたつ変数 changeを作ります。
change変数が1のときだけ、LINEに送信するようにしました。
※ほかにいい方法があるかもしれませんが。

Image from Gyazo
Image from Gyazo
RUNすると、

このように、状況が変わったときだけLINEに通知してくれます。
 

(参考)複数のLINEに送る場合

スクリーンショット 2022-09-12 0.36.21.png

配列とループを使います。
なぜか、ループ内では3秒以上間隔を開けないと送信できませんでした。

プログラム
Image from Gyazo
Image from Gyazo


2-3. データを受ける側 (GoogleSpreadSheet)

(参考にしたブログ)
https://qiita.com/chocomo/items/e5506d00cc82790d2b4d

GoogleSpreadシートを新規作成
シート名を「data」にして、
以下のようにセルに入力する。

Image from Gyazo

拡張機能>AppScript を開く
Image from Gyazo

こんな画面になる
Image from Gyazo

以下のコードをコピペ

function doPost(e) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('data');  //”data”シートをアクティブにする。  
  var jsonString = e.postData.getDataAsString();
  var params = JSON.parse(jsonString);

  // データをシートに追加
  sheet.insertRows(2,1);  // 2行目に行を追加
  sheet.getRange(2, 1).setValue(new Date());       // 受信日時を記録
  sheet.getRange(2, 2).setValue(params.Value);     // センサー値
  sheet.getRange(2, 3).setValue(params.State);     // 稼働状況  
}

デプロイ > 新しいデプロイ
Image from Gyazo

ウェブアプリ
 

次のユーザーとして実行:自分
アクセスできるユーザー:全員

デプロイ
Image from Gyazo

アクセスを承認
 

自分のGoogleアカウントをクリック
Image from Gyazo

最初なので認証が済んでませんよというアラートが出る。
Advanced をクリック
Image from Gyazo

先ほど作成したスクリプトのファイル名が現れるので、クリックする。
Image from Gyazo

「Allow」をクリック

Image from Gyazo

あらためて、デプロイをクリックすると、

デプロイが成功

以下のURLをどこかに控えておく。

Image from Gyazo


UIFlow に戻り、 以下のプログラムの中に、さきほどのURLを入力する。

Image from Gyazo

PLAYすると、
GoogleSpreadSheet に光センサーのデータがいくはず。
スクリーンショット 2022-09-11 23.22.13.png

以上です。


5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3