2020年 12月 の投稿一覧

M5SticKCで防犯センサ

はじめに

M5SticKCに人感センサーを取り付けます。人感センサーが反応した場合にIFTTTに通知が来る構成です。

  1. 必要なもの
  2. IFTTTの設定
  3. スケッチ例
  4. 実行

 

1.必要なもの

M5StickCと人感センサーが必要です。

番号

商品名

価格

参考販売店

1

M5StickC

1980円(セット)

1650円(本体のみ)

SwitchSience

2

M5StickC PIR Hat(AS312搭載)

363円

SwitchSience

 

2.IFTTTの設定

IFTTTとは「if this then that」というシンプルなコンセプトに基づく「レシピ」を作成したり共有したりできるサービスです。URL:https://ifttt.com/

Apple、Google、Facebookのアカウントがあればサインインできます。

IFTTTにログインできたら左上の[Create]をクリックします。色々なアプリを組み合わせることができますが、今回はWebhookとIFTTTのNOtificationsを使用します。あるアプリから別のアプリにリアルタイムで情報を送るしくみのことをWebhookと呼びます。今回はM5SticCの情報をIFTTTのNotificationsに送るために使用します。IFTTTのNotificationsは受信があったときに通知をしてくれます。

「if this then that」のthisがWebhook、thatの部分がIFTTTのNotificationsとなります。

thisから作成します。[If This]をクリックします。

 

webで検索すると候補がでてきます。[Webfooks]を選択します。

真ん中の[Receive a web request]をクリックします。

 

Event Nameを入力する画面になります。Event Nameは何でもいいですが、ここではm5c1にしています。記入したら[Create trigger]をクリックします。

 

次に「if this then that」のthatを作成します。[Then That]をクリックします。

候補をしぼるために、検索にnotifiと入力します。左のベルを選択します。

 

中ほどの左の[Send a notification from the IFTTT app]を選択します。

 

次にM5StickCの人感センサーが反応したときに表示されるメッセージを[Message]に記入します。

 

不在時に侵入者があった場合のメッセージを記入します。完了したら[Create action]をクリックします。

 

thisとthatができたので[Continue]をクリックし最後に[finish]を押します。

 

ベルの横の三角の頂点がまるで囲まれた図をクリックします。

Webhooksが一つだけの画面になります。右上の[Settings]をクリックすると、URLが表示されるのでそれをコピーしておきます。

IFTTTはレシピを3つまで無料で作成できます。すでにあるレシピを共有する分にはいくつも利用できます。

 

3.スケッチ例

今回もIFTTTにアクセスするためにHTTPClient.hをインクルードします。

11行目のurlの設定は決まった形になりますので、この通りに使用します。maker_EventはIFTTTで設定したEvent Nameを記述します。make_KeyにはIFTTTのWebhooksで表示されていたURLのuse以降の文字列を記入します。(https://maker.ifttt.com/use/ここの部分

 

4.実行

スケッチを書き込んだら、実行する前にスマホにIFTTTアプリをインストールしておきます。

センサーに反応すると、スマホに表示されます。

 

今回はIFTTTを使用してM5StickCの人感センサーが反応したらスマートフォンに表示するという内容でした。IFTTTのレシピはすべて「if this then that」で構成されています。[that」の部分をlineのnotifyに変更すればlineに通知が来る構成に変更できます。

 

レシピを作成しても、IFTTTに反映されるまで時間がかかる場合があります。

IFTTTに反映されても実行に時間がかかる(レスポンスが遅い)場合もあります。IFTTTのレシピを開いて[check now]をクリックするとすぐに反映されるので、動作しているのかしないのかを確認できます。

 

webhookがそもそも動作しているのかを確認したい場合はコマンドラインで確認できます。DOSプロンプトを開いて以下を実行し[Congratulations! You’ve fired the m5c1 event]と表示されれば、OKです。

( 上記のm5c1はイベント名です。作成したレシピの[Event Name]に置き換えて実行してください。

abcdefghijklmnopqrstuvは作成したレシピのキーに置き換えて実行してください。)

line notifyなどを使用して変数を渡したい場合はスケッチに以下を追加します。

 

 

 

 

 

 

 

 

 

 

 

 

M5stickCを使用したセンサーの値をGoogleスプレッドシートに

はじめに

M5stickCに人感センサーを接続し、センサーが反応したらその時刻をGoogleのスプレッドシートに表示します。

 

  1. 必要なもの
  2. Googleスプレッドシートの編集
  3. スケッチ例
  4. 実行

 

1.必要なもの

 

M5StickCと人感センサーです。(SwitchSienceは年末セール中のようです)

番号

商品名

価格

参考販売店

1

M5StickC

1980円(セット)

1650円(本体のみ)

SwitchSience

2

M5StickC PIR Hat(AS312搭載)

363円

SwitchSience

 

2.Googleスプレッドシートの編集

 

Googleスプレッドシートを使用するにはGoogleアカウントが必要です。Googleアカウントを取得したら以下にアクセスします。 sheets.google.comまたはsheets.google.com/create で直接スプレッドシートを開きます。

 

左上の「無題のスプレッドシート」をクリックして題名を付けます。

M5stickCのデータと取得時間を表示します。A1セルとB1セルに「メッセージ」と「時刻」を記述します。

[ツール]⇒[<>スクリプトエディタ]を選択してApp Scriptを開きます。

関数を2つ記入します。

setData
M5StickCから受け取ったデータをシートに記入する関数です。
  • sheet.insertRows(2,1)
    2行目に1行挿入します。
  • sheet.getRange(2,1).setValue(val);
    2行1列目のセル(A2)にvalを書き込みます。
  • Sheet.getRange(2,2).setValue(new Date());
    2行2列目のセル(B2)に日付を書き込みます。

doPost
WebアプリにPOSTリクエストが送られた時に実行される関数です。

  • var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(‘シート1’);
    sheetにシート1を代入します。
  • var params = JSON.parse(e.postData.getDataAsString());
    送られてきたデータをJSON形式に変換してpramに代入します。
  • var val = params.check;
    valにprams.checkの値を代入します。checkはArduinoのスケッチで定義します。

関数を記述したらプロジェクト名を記入します。

最後にデプロイします。

デプロイの方法が変更されているようです。右上の[デプロイ]⇒[新しいデプロイ]を選択し、[種類の選択]の横の歯車をクリックして、[ウェブアプリ]を選びます。

[アクセスできるユーザー]を[全員]にし、デプロイをクリックします。

アクセスを承認をクリックします。Choose an accountと表示されるので自分のアカウントを選択します。

 

「Google has’nt verified this app」と表示されるので「Advanced」をクリックします。

(日本語表記ならば以下のように表示されると思います。
「このアプリは確認されてません」と表示されるので「詳細を表示」をクリックします。)

[Go to M5stickCの人感センサープロジェクト1 (unsafe)]と表示されている部分をクリックします。
(もしくはM5stickCの人感センサープロジェクト1(安全でないページ)に移動)

[Allow]をクリックします。(もしくは「許可」をクリックします)

 

(GMAILに本人確認用のメールも来ます。心当たりがあるを選択します。)

ウェブアプリのURLが表示されるので、控えておきます。

URLの確認は[デプロイ]⇒[新しいデプロイ]⇒[デプロイ]で表示されます。

 

3.スケッチ例

 

データをJSONフォーマットで扱うためにArduinojsonライブラリを追加します。[スケッチ]⇒[ライブラリをインクルード]⇒[ライブラリを管理]で、ライブラリマネージャを開きます。

「Arduinojson」で検索し、インストールします。

 

スケッチは前回の「M5StickCと人感センサーで画像表示」を使用します。WiFi接続の記述は「M5StickC WiFi接続」を使用します。

WiFiの追加とGoogleスプレッドシートにアクセスするための記述を追加します。Googleスプレッドシートにアクセスするために、HTTPClient.hをインクルードします。インストールしたArduinojsonライブラリもインクルードします。

センサーに反応した場合に、データをGoogleスプレッドシートに送る関数sendData()を追加しています。

 

4.実行

スケッチをM5StickCに書き込みます。

センサーが反応したらM5StickCのスケッチのsendData関数からデータが送られてスプレッドシートにライトされます。送付データはcheck変数の値で、checkが1の時に送付しているので、スプレッドシートには常に1が表示されます。

日付だと毎回同じなので、日時に変更します。[123]⇒[日時]で変更します。

 

変更後

M5StickC WiFi接続

はじめに

M5stickCをWiFi接続します。

  1. M5stickCのWiFi接続確認
  2. 実行

1.M5stickCのWiFi接続確認

WiFi接続確認用のスケッチ例です。WiFi接続を確認するためにWiFiライブラリを使用します。そのため、インクルードファイルにWiFi.hを追加します。D_WIFI_SSIDにSSIDを記述する必要があります。SSIDはWiFiに接続するときに使用するネットワーク名です。D_WIFI_PASSにはSSIDに接続するさいのパスワードを記入します。

 

WiFi.begin()

WiFiライブラリのネットワーク設定を初期化し、現在のステータスを提供します。

WiFi.status()

  • ネットワークに接続されている場合はWL_CONNECTEDとなります。
  • Serial.println(WiFi.status())を追加すると、どのステータスにいるのかシリアルモニタから確認できます。
  • WiFi.status()の各ステータスと値は以下のようになっています。

    ステータス名
    WL_NO_SHIELD 255
    WL_IDLE_STATUS 0
    WL_NO_SSID_AVAIL 1
    WL_SCAN_COMPILED 2
    WL_CONNECTED 3
    WL_CONNECT_FAILED 4
    WL_CONNECTION_LOST 5
    WL_DISCONNECTED 6

2.実行

WiFIの接続に成功するとシリアルモニタには以下のように表示されます。

M5stickCの液晶ディスプレイには以下のように表示されます。