LoginSignup
10
5

More than 1 year has passed since last update.

M5Stack core2(無印)をAmazon Alexaにする

Last updated at Posted at 2021-08-15

はじめに

  • 今流行りのM5Stack。
  • 最近はAWSと簡単に連携できるセキュアチップ付きの「M5Stack Core2 for AWS - ESP32 IoT開発キット」なるものが発売され、これにAlexaを入れて家庭内をIoT化出来ちゃったりと非常に気になるところ。
  • そんな中、ふと手持ちの無印core2でもAlexa出来ないかと思って試したところ、起動に成功しちゃったのでやり方をメモしておく。

IMG_3737D.jpeg

制約

  • ここに書いてるやり方については、公式ドキュメント化されていないため、いろいろ制約があると思われる。
  • AWS連携してじっくり学習したい場合は時間を無駄にしないためにも「M5Stack Core2 for AWS - ESP32 IoT開発キット」を購入した方が良い。

M5Stack core2 for AWSと無印core2との違い

無印core2との違いはこんな感じ。

  • 「M5Stack core2 for AWS」専用カスタマイズのM5GO Bottom2(M5Stack Core2専用バッテリーボトム)が付いている。
    • Microchip社製 ATECC608A Trust&GO セキュアエレメントを内蔵。
    • 10個のNeopixel LED
    • MPU6886(6軸のIMU):core2と同じ
    • SPM1423デジタルマイク:core2も同じ
  • 本体の色が素敵な黄色。

気になるATECC608Aの説明だが、

the onboard Microchip ATECC608 Trust&GO crypto-authentication chip is pre-provisioned with secure keys to simplify connectivity to AWS and accelerate cryptographic computation.

となっている。

セキュアチップには予めAWSと暗号化通信するための証明書とか、秘密鍵が組み込まれているので、
証明書をインストールしたり、秘密鍵が漏洩しないように管理したりする手間が省けるよ、ってワケらしい。

simplify connectivity to AWSなので、実はCPUで処理することも可能みたい。

用意するもの

Item URL 価格
M5Stack Core2 IoT開発キット https://www.switch-science.com/catalog/6530/ ¥6,589
NeoPixel https://www.amazon.co.jp/Rasbee-WS2812-パネルモジュール-レインボー-Arduinoに対応/dp/B085N27QYK ¥160
groveケーブル https://www.switch-science.com/catalog/5214/ ¥440
ピンヘッダ https://akizukidenshi.com/catalog/g/gC-00167/ ¥35
ジャンパケーブル https://akizukidenshi.com/catalog/g/gC-08933/ ¥220

IMG_3740D.jpeg

Neopixelの接続

  • NeoPixelはAlexaのステータス表示に使用する。

    • 取り敢えずM5Stack単体でもAlexaとして使えるが、発言中なのか、聞き取り中なのか分からなくて何度も「アレクサ!」って言うのが疲れちゃうのであった方が良い。
    • Amazonで安価で入手できるneopoxel基板にピンヘッダをはんだ付けし、groveケーブルから接続する。
    • この辺の工作がめんどくさい人は、素直に「M5Stack Core2 for AWS - ESP32 IoT開発キット」を購入した方が良い。
  • M5Stack core2側はGrove Port Aを使う。

    • (購入したGroveケーブルの色の順序とcore2背面にプリントされてるG32の色が違うので注意)
M5Stack core2 Neopixel ボード
GND GND
5V 4-7VDC
G32 DIN

IMG_3741D.jpeg

M5Stack Core2 for AWS IoT EduKit

スクリーンショット 2021-08-15 13.14.30.png

  • ここから任意の場所にコードをgit cloneして、サブフォルダAlexa_for_IoT-IntroをVsCodeで開く。
    • 自分の場合、/Volumes/Thunderbolt3_SSD/workspace/M5StackAlexa/に格納した。
    • cloneできたら、VsCodeで/Volumes/Thunderbolt3_SSD/workspace/M5StackAlexa/Core2-for-AWS-IoT-EduKit/Alexa_for_IoT-Introを開く。
    • VsCodeで開くと、PlatformIOのプロジェクトとして使える。

AWS IoT証明書の設定

の説明によると、Alexaを使用するにはAWS IoTの証明書が必要で、2通りの入手方法があるらしい。

  • a) EspressifのAWS-IoT評価用アカウントのテンポラリな証明書
  • b) ユーザ自身のAWSアカウントの証明書

今回は評価用として、a) のやり方でやってみる。

スクリーンショット 2021-08-15 13.26.48.png

Espressifの評価用アカウント証明書の作成

ここにアクセスし、以下の画面でEmailアドレスを入力してGenerateボタンを押すと、証明書ファイル一式を添付ファイルで送信してくれる。

スクリーンショット 2021-08-15 13.35.59.png

ファイルの配置

しばらくすると、以下のメールが送られてくるので、cloneした場所の近くに配置。
(自分は、/Volumes/Thunderbolt3_SSD/workspace/M5StackAlexa/Core2-for-AWS-IoT-EduKit/Alexa_for_IoT-Intro/___AWSCertに配置した。)

スクリーンショット 2021-08-15 13.39.43.png

mfg_config.csvの書き換え

  • メールで送られてきたパーティション作成用のファイルを使るための出力場所のパスを書き換える。
    • 自分の場合、/Volumes/Thunderbolt3_SSD/workspace/M5StackAlexa/Core2-for-AWS-IoT-EduKit/Alexa_for_IoT-Intro/___AWSCertに全部集約したいので、./に統一。

スクリーンショット 2021-08-15 13.44.36.png

証明書ファイルの書き込み

  • まず最初にESP32のFlash領域をクリアする。
    • ESP32のFlash領域に古いデータが残ってるとAWSの認証が通らない事があるので、Erase Flashしておく。
    • コードがAWSの認証が通らないケースを想定していないため、認証情報が全部揃わない状態でそのまま変な領域にアクセスしてcore 0 panic!になったりする。
    • (筆者はこのせいで数時間デバッグに時間を持って行かれた。。。)

スクリーンショット 2021-08-15 13.54.47.png

  • M5Stackのflash領域にAWSの証明書を書き込む。
    • IDF_PATH, ESPPORTは各人の環境に合わせて変更する必要がある。
    • シリアルモニタを開いてると書き込めなかったりするので、クリーンな状態で書き込む。
cd /Volumes/Thunderbolt3_SSD/workspace/M5StackAlexa/Core2-for-AWS-IoT-EduKit/Alexa_for_IoT-Intro/___AWSCert
export IDF_PATH=/Volumes/Thunderbolt3_SSD/workspace/esp/esp-idf/
export ESPPORT=/dev/tty.usbserial-020418A9
python $IDF_PATH/components/nvs_flash/nvs_partition_generator/nvs_partition_gen.py generate ./mfg_config.csv mfg.bin 0x6000
python $IDF_PATH/components/esptool_py/esptool/esptool.py --chip esp32 --port $ESPPORT write_flash 0x10000 mfg.bin

コードの編集

  • Neopixel制御用のGPIO番号の書き換え
    • /Volumes/Thunderbolt3_SSD/workspace/M5StackAlexa2/Core2-for-AWS-IoT-EduKit/Alexa_for_IoT-Intro/components/core2forAWS/core2forAWS.c の以下の行をGroveポートの番号32に書き換える。
    • これで、Alexaの各種ステータスを外付けのNeopixelに表示できるようになる。

スクリーンショット 2021-08-15 14.06.35.png

ボードの設定

無印core2には専用チップが載ってないので、

  • ① PlatformIOのメニューからRun Menuconfigを開く
  • ② 表示されるTERMINALのメニューからComponent configを開く
    • 一番最後の項目付近にあるCore2 for AWS hardware enableを開く

スクリーンショット 2021-08-15 14.12.48.png

  • Encryption chip-ATECC608のチェックを外す。
    • 無印core2にはこのチップが実装されていないので、無効化。
    • これを無効化すると、暗号化はソフトウェアで処理するようになるみたいだけど、詳細は不明。
    • 普段使ってるAmazonアカウントに紐づけるのは怖いので、使う場合は開発用の専用アカウントを作って使う方が安全かもしれない。
  • qでSaveして終了。

スクリーンショット 2021-08-15 14.17.42.png

ビルド&アップロード

あとは普通にビルドしてアップロードする。

スクリーンショット 2021-08-15 14.31.44.png

正常に起動すると、こんな画面が表示される。

(厳密にはPush to Talk, Mute の文字は後段の手順によってAWSにログイン出来たら表示される。)

IMG_3739D.jpeg

コンパニオンアプリによるデバイス認証の紐付け

ここまででM5Stack core2にはAlexaのプログラムは書き込まれたが、WiFi接続、AWSアカウントの情報が全く入ってない状態。
(上記ビルド手順が完了すると、M5Stackからコンパニオンアプリ経由で設定してね、って言う英語の音声案内が流れる)

これらの設定には、専用のスマホアプリを使ってM5Stack内のFlash領域に記録してやる必要がある。

スクリーンショット 2021-08-15 14.35.09.png

上記リンクから、スマホアプリをインストールし、説明ページの案内通りに

  • Alexaデバイス(M5Stack core2)の検出
  • WiFiアクセスポイントの設定
  • Amazonへのログイン

を行うと、Alexaが使えるようになる。

まとめ

  • 手持ちの無印M5Stack core2でもAlexaを起動させる事ができた。
  • 会話のステータスが分からないので、Neopixelがあった方が良い。
10
5
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
10
5