【2021年4月版】『M5Stack Core2 for AWS - ESP32 IoT開発キット』 入門 前編 〜開封の儀〜

Zennにも投稿してます→[『M5Stack Core2 for AWS - ESP32 IoT開発キット』入門 前編 〜開封の儀〜](https://zenn.dev/koinori/articles/aae154e2aa9252a4899f)
# M5Stack Core2 for AWS が到着いたしました。

「M5Stack Core2 for AWS」がやっと？入手できましたので環境準備と言いますか、Getting Start を動かしてどんな風に動いているのか、確かめてみたレポートをお届けしたいと思います。

まずは パッケージ、ですがスイッチサイエンスのサイトでは8000円以上で送料無料なので本体以外にも追いセンサしてしまい。。。

![IMG_0449.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335150/8fd79abd-6a41-814d-af71-60862d6812d0.png)
どーーーん！！

・・・はい、M5Stack初心者ですがどっさり購入してしまいました。

しかし改めて感じるのは非常に小さい、ということですね。カタログのスペック考えたら色々てんこ盛りなのにこのコンパクトさ。
分かりにくいですが、以下のようなサイズ感です。

![P_20210429_220321_1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335150/98198cb5-e49f-9cec-2615-b01c6890ec8d.jpeg)

下に敷いてあるPCはMacBookの13インチ、右側のiPhoneはSEなので小さいやつです。
で、M5Stack Core2と追いセンサ達です。
非常にコンパクトでパワフル、といった感じでございます。

これらのスペックというかセンサーは以下のようなものでございます。

1. M5Stack Core2 for AWS

https://www.switch-science.com/catalog/6784/

  - ESP32-D0WDQ6-V3。最大240 MHzのXtensa32ビットLX6デュアルコア
  - 2.4 GHz Wi-Fi
  - Bluetooth 4.2 BR/EDR、BLE
  - 16 MB フラッシュ、8 MB PSRAM
  - ATECC608Aハードウェア暗号化チップ内蔵
  - 2.0インチの静電容量性タッチスクリーン
  - SPM1423デジタルマイク
  - 内蔵スピーカー
  - プログラム可能な10個のSK6812 RGB LED
  - 6軸IMU（慣性計測ユニット）兼温度センサ
  - 振動モーター
  - microSDカードスロット（最大16GB対応）
  - 500 mAhリチウムバッテリ
  - 電源ボタン、RSTボタン
  - 画面前面にはプログラム可能な仮想タッチボタン3個
  - USB Type-C x 1
  - GROVE PORT-A, HY2.0-4P PORT-B,C
  - 底面の充電用POGO PINでI2C可能

２.環境センサユニット ver.2(ENV II)

https://www.switch-science.com/catalog/6344/

  - SHT30 高精度デジタル温湿度センサ
  - BMP280 絶対大気圧センサ

3.赤外線送受信ユニット

https://www.switch-science.com/catalog/5699/

  - 赤外線発信器 
  - 赤外線受信器 

4.PIRセンサユニット

https://www.switch-science.com/catalog/5697/

  - パッシブ型赤外線センサ

5.回転角ユニット

https://www.switch-science.com/catalog/6551/

  - 10kΩポテンショメーター搭載つまみ

・・・です。
特に Core2 の全部盛り感がハンパないです。てんこ盛りです。
また追いセンサについてもぼちぼちご紹介できればと思います。

# 環境構築

手元の環境は以下の通りです。

- macOS Big Sur 11.3
- Core i5 1.4GHz
- 8G DDR3
- VS Code

で、Androidに ESP RainMakerアプリを入れています。

Macでの始め方は AWS サイトの公式ガイドに従えばそのままちゃんと動きました。

https://edukit.workshop.aws/jp/getting-started/prerequisites/macos.html

さらっと流れをご紹介いたしますと、

1. macOS 用のSilicon Labs CP210x driverを[こちら](https://www.silabs.com/documents/public/software/Mac_OSX_VCP_Driver.zip)ダウンロードしてインストール。
1. セキュリティの警告＆確認でますが、許可
1. PC再起動(しなくても認識してたけど念の為)
1. VSCode のExtensionsから 'PlatformIO'を検索してインストール
1. VSCode 再起動
1. https://github.com/m5stack/Core2-for-AWS-IoT-EduKit.git をクローン
1. USB-C ケーブルでCore2とMacを接続
1. PlatformIOの'Devices'リストからCore2が接続されているUSBポートのIDをメモっておく
1. スマホでアプリストアから 'ESP RainMaker' を検索してインストール
1. ESP RainMaker でアカウント作るかGithubアカウントなどでログインして、使えるようにしておく


でOKです。
Core2に付属のケーブルはType-C=Type-A変換ケーブルでMacには刺さらないので、Macに付属のType-Cだけのケーブルで接続しています。
良好です。

いや、準備も簡単ですね〜。。。

# Getting Start を動かしてみる。

さて、準備が整ったところで早速、"Getting Start"プロジェクトを動かしてみましょう。

https://edukit.workshop.aws/jp/getting-started/run-rainmaker.html

1. クローンしたリポジトリのGetting-Startedプロジェクトを開く
1. PlatformIOからターミナルを開き`pio run --environment core2foraws`を叩く
1. `pio run --environment core2foraws --target upload`を叩く
1. `pio run --environment core2foraws --target monitor` を叩く
1. 先ほどメモったUSBポートのIDを入力

でしばらく待ちます。
ただし、`upload`してからCore２の画面に灯が灯る前に`monitor`しないとQRコードのログが流れてしまうので要注意です。`upload`したらさっさと`monitor`しておきましょう。

![スクリーンショット 2021-04-29 22.30.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335150/cf877916-d2dc-4fcd-4fd6-1ee32b94d090.png)

後はスマホでBluetoothとWiFiをオンにし、ESP RainMakerアプリから "Add Device" でQRコードを読ませると Core2 と通信してゴニョゴニョとセットアップをやってくれます。

通信時のログでは AWSのMQTTに接続していることが読み取れます。

```bash
[0;32mI (178777) app_wifi: Provisioning successful␛[0m
␛[0;32mI (178807) esp_rmaker_mqtt: Initialising MQTT␛[0m
␛[0;32mI (178807) esp_rmaker_mqtt: Connecting to xxxxxxxxxxxxx-ats.iot.us-east-1.amazonaws.com␛[0m
␛[0;32mI (178807) esp_rmaker_mqtt: Waiting for MQTT connection. This may take time.␛[0m
␛[0;32mI (181317) esp_rmaker_mqtt: MQTT Connected␛[0m
```

なるほど、Core2からAWS IoT Core の MQTT経由している、ということが確認できました。
MQTTについては以下の公式ドキュメントも後で読んでおこう・・・

https://docs.aws.amazon.com/iot/latest/developerguide/mqtt.html

というか今更ですがこれ、**WiFi 環境必須です**ね。まぁ、無ければPCにUSBのWiFi挿してそっちを親機にする、とかでなんとかなりますか。

さて、しばらくするとCore2側で以下のような画面に変わります。

![IMG_0451.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335150/8b131bd7-8708-51a2-f58b-dde1e738cbc2.png)

そして、スマホのRainMakerアプリでは、

![Screenshot_20210429-223203762.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335150/5d8e7315-79b6-485d-d62f-02873c5d2cd0.jpeg)

のように３つの"機器"が追加されました。
どうやらこの３つの"機器"を**スマホからリモートでコントロールできる**ようなイメージなんですね。なるほど！

これらの"機器"をタップすると詳細が表示されます。
まず、'Light'から見てみましょう。

![Screenshot_20210429-223306337.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335150/c4d3887e-a556-55a9-d4f3-813e1db5ff90.jpeg)

機器の名称とオンオフ、そして[HSVでの調光](https://ja.wikipedia.org/wiki/HSV%E8%89%B2%E7%A9%BA%E9%96%93)が可能な模様です。

試しにLightをオンにしてゲージを以下のようにいじってみると

![Display_House_Light_Control.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335150/8ac4cdc0-3cd3-0ae1-be14-c53480970d6c.png)

画面に表示されているのお家の窓の色が変わります。Core2 本体に付いている LED の色も変わります。

![Display_House_Light.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335150/92928a4f-680b-4c50-f484-bdbcce1f73c0.png)

芸が細かい！ただしLEDを直接カメラで撮ると白く飛んでしまうので反射光で感じてください。。。
多少のタイムラグは当然ありますが(MQTTでus-east-1まで飛んで帰ってきてるんで)、スマホの操作で機器がリモート操作、双方向通信できてるのが確認できます。

続いて `Fan` の機器を見てみましょう。

![Screenshot_20210429-223322256.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335150/d113e609-23c1-c14f-66ea-c7fc630ce019.jpeg)

こちらは換気扇をエミュレート？しておりまして、PowerをONにすると振動モーターが回ります。
スピードも５段階調整できます。
ちなみにこれはCore2の前面のタッチパネルからも操作できます。
振動モーターが起動するとFanが回っているアニメーションに変わります。

![Display_Fan_Roll.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335150/b07b218d-9bdf-9830-ab0c-4a0229dc3327.png)

スピードに合わせてFanのアニメーションも回転速度が変わります。こちらも芸が細かい。
振動モーターがブリブリ回っているのをお伝えできないのが誠に残念です。。。

最後に `Temperature Sensor` です。

![Screenshot_20210429-223315818.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335150/90cbe498-4989-9711-358e-173a7844b2dd.jpeg)

これはそのまま温度計、ですね。ただしCore2内部の温度ですので、画面では摂氏(C)表記ですが室温とはズレがあります。
画面の温度計も温度に連動してバーが上下しています。
![Display_Thermometer.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335150/59370401-3292-2446-19bf-3ef98e88be4a.png)
先程のLEDを点灯させている時の画像と比べると微妙に温度計の目盛りが変わっているのがわかると思います。細いのでわかりにくいですが・・・

Getting Started プロジェクトの動作確認は以上です。ざっくりですが、機器とスマホがそれぞれどのような動きをするかのイメージは掴んでいただけたかと思います。

それでは後編として、"Getting Started" プロジェクトの中身について探っていきたいと思います。