LoginSignup
9
6

More than 3 years have passed since last update.

M5StickCの加速度センサとジャイロセンサの値の変化をAWS IoTを経由して、ElasticSearchとKibanaでリアルタイムにグラフ表示してみる。

Posted at

概要

M5STICKCには6軸IMU MPU6886が搭載されており、筐体自身の加速度とジャイロの変化をセンサシングできます。M5STICKC搭載のWIFIを経由し、AWS IoTのMQTTにセンサー値をプッシュし、ElasticSearchのKibanaでリアルタイムにグラフ表示してみます。

image.png

参考資料

ESP32でAWS IoTに繋いでThing Shadowを弄る
M5Stackを利用したAWS IoTの簡単な使い方
ESP32 DeveloperでAWS IoTを動かそうとしてハマったメモ
M5Stack(ESP32マイコン)とAWS IoTで始めるIoT入門
「AWS IoTのデータをKibanaに表示する」をやってみた。2017/3版
AWS IoTのデータをKibanaに表示する

AWS IoTの設定

M5Stackを利用したAWS IoTの簡単な使い方から「3-1. ポリシーの作成」から「3-3. 証明書の作成」までの手順を実行してください
私が考える注意点を列挙します。
- 名前を付ける際には小文字と数値でつけてください。大文字が混ざるとElasticSearchとの連携がうまくいきませんでした。
- エンドポイントのURLはAWS IoTのコンソールの[設定]で見れます。

M5StickCのArduinoでの開発

ソース

ソースの利用方法

下記の変更が必要です。

変更ソース 変更内容
17 const char* ssid = "";  あなたのWIFIのSSIDを指定してください
18 const char* password = "";  あなたのWIFIのパスワードを指定してください
21 const char* awsEndpoint = "";  あなたのAWS IotのURLを入力してください。
xxxxxxxxxxxxxx.iot.ap-northeast-1.amazonaws.com
25 const char* pubTopic = "";  あなたのAWS IotのTopicを入力してください
26 const char* rootCA = "-----BEGIN CERTIFICATE-----\n" \  AWS IoTでダウンロードしたCA証明書を入れてください。
ESP32でAWS IoTに繋いでThing Shadowを弄るを参照
複数のCA証明書がありますので、全パターン試してみれば接続できるものがあります。
27 const char* certificate = "-----BEGIN CERTIFICATE-----\n" \  AWS IoTでダウンロードした証明書を入れてください。
ESP32でAWS IoTに繋いでThing Shadowを弄るを参照
28 const char* privateKey = "-----BEGIN RSA PRIVATE KEY-----\n" \  AWS IoTでダウンロードした秘密鍵を入れてください。
ESP32でAWS IoTに繋いでThing Shadowを弄るを参照
76 String clientId = "";  AWS IoTのモノで設定した名前を入れてください。

AWS IoTでMQTTの受信の確認

M5Stackを利用したAWS IoTの簡単な使い方から「3-6.AWS IoTのテスト画面で確認」の手順を実行してください。
下記が注意点。
- Arduinoのソースの「AWS IotのTopic」で指定した名前を入力してください。

Elasticの立ち上げ

ElasticSearchの作成には時間がかかります。
1. AWS IoTのトップ画面から「Elasticsearch Service」を押下する
2. 下記のように設定する。

項目 設定値
デプロイタイプ 開発およびテスト Elasticsearch エンドポイントが 1 つのみ必要な場合、1 つのアベイラビリティーゾーン
Domain name 好きな名前
Instance type t2.ssmall.elasticsearch
Instance count 1
Strage type EBS
ネットワーク構成 パブリックアクセス
ドメインアクセスポリシーの設定 ドメインへのオープンアクセスを許可

出来上がるまで気長に待ってください。

アクションの設定

AWT IoTからElasticSearchにデータを流す設定を行います。
1. AWS IoTのコンソールでACTを選択し、右上の[作成]を押下する。
2. 名前と説明を適当につける。ルールクエリステートメントに「SELECT * FROM 'm5stickc_sensor'」を設定する。m5stickc_sensorの部分はArdiunoソースのAWS IotのTopicで設定した文字列を指定してください。
3. [1つ以上のアクションを設定する]の[アクションの追加]を押下し、「Amazon Elasticsearch Service にメッセージを送信する AMAZON ELASTICSEARCH」を選択し、一番下の[アクションの設定]を押下する。
4. ドメイン名は先ほど作成したElasticSearchを選択する。IDに${newuuid()}、Indexにtimestamp、Typeにtimestampと指定し、IAMロールも追加する。アクションの追加を押下する。
5. 一番下のルールの追加を押下する。

kibanaの設定

Chromeではだめで、Firefoxでないと動きませんでした。
1. AWSのトップページからElastic Searchを選択
2. 作成されたElasticを選択
3. ページ上にKibanaがあるので押下
4. image.pngでデータが届いているのを確認します。
5. image.pngでグラフ化します。

X軸の設定は下記のように行いました。

項目 設定
Aggregation terms
Field timestamp
Order By Alpabetical
Order Descending
size 20

Y軸は下記のように設定しました。

項目 設定
Aggregation TopHit
Field accX
Aggregate With Max
Size 1
Sort On timeStamp
Order Descending

6種類あるので全部設定すると下記のように表示されます。

image.png

お疲れさまでした。

9
6
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
9
6