ESP RainMaker® って何?

 「ESPのデバイスを組み込んだ機器を管理・制御するためのシステム」を構築しようとする際に、Espressif社が提供する開発・運用に特化したサービスのこと?
 これを利用すればスマホで家庭内のESPデバイスを制御したり、Alexa、Google Assistant、Apple Homekit でESPデバイスを制御するためのファームウェアを開発したり、AWSのIoTを利用して独自のクラウドを構築したりができるようだが、こんな理解で合ってるのだろうか?
 取りあえず今回は、
 1.ESP RainMaker用のファームウェアをビルド。
 2.M5Core2へアップロード。
 3.スマホにインストールしたESP RainMakerクライアントアプリにM5Core2をデバイスとして認識させる。
 4.M5Core2に内蔵のFan、LED、温度計の制御や表示を行う。
 ここまで。

PlatformIO でプロジェクトを開く

 PlatformIOロゴをクリック。 [Open Project] を選択し、GitHubのクローンである「Core2-for-AWS-IoT-EduKit/Getting-Started」フォルダに移動、Openする。
 このGetting-StartedフォルダがRainMaker Agentファームウェアのプロジェクトフォルダ。

コンパイルとアップロード

 M5Core2用「RainMaker Agent ファームウェア」をコンパイルし、M5Core2のフラッシュメモリにアップロードする。

手順1 コンパイル

 PIO HomeのQUICK ACCESSからMiscellaneousのNew Terminalを選び、次のPlathomeIOのコマンドを入れる。

\Getting-Started>pio run --environment core2foraws

 プロジェクトのルートディレクトリには「platformio.ini」という名の設定ファイルがあり、環境はそこに記載のcore2forawsに従えということらしい。

platformio.ini抜粋
[env:core2foraws]
platform = espressif32@3.2.0
framework = espidf
board = m5stack-core2
monitor_speed = 115200
upload_speed = 2000000
board_build.f_flash = 80000000L
board_build.flash_mode = dio
build_unflags = -mfix-esp32-psram-cache-issue
コマンドの実行結果
Archiving .pio\build\core2foraws\bootloader\esp-idf\soc\soc\esp32\libsoc_esp32.a
Linking .pio\build\core2foraws\bootloader.elf
Building .pio\build\core2foraws\bootloader.bin
esptool.py v3.0
Linking .pio\build\core2foraws\firmware.elf
Retrieving maximum program size .pio\build\core2foraws\firmware.elf
Building .pio\build\core2foraws\firmware.bin
esptool.py v3.0
========================  [SUCCESS]  Took 191.23 seconds ==========
手順2 アップロード

 Buildが成功し.pio\build\core2foraws\firmware.binが出来たので、このファームウエアをM5StackCore2に書き込むコマンドがこちら。

\Getting-Started>pio run --environment core2foraws --target upload
コマンドの実行結果

 Wifi用のMACアドレスを知りたかったのだが、ちゃんと表示があった。

CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/m5stack-core2.html
PLATFORM: Espressif 32 (3.2.0) > M5Stack Core2
HARDWARE: ESP32 240MHz, 6.25MB RAM, 16MB Flash
Reading CMake configuration...
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
Auto-detected: COM3
Uploading .pio\build\core2foraws\firmware.bin
esptool.py v3.0
Serial port COM3
Connecting........_
Chip is ESP32-D0WDQ6-V3 (revision 3)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 00:11:22:33:44:55
Auto-detected Flash size: 16MB
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
======================== [SUCCESS] Took 50.26 seconds =============

アップロード後にリセットボタンを押して、しばらくすると画面が変わる。

手順3 シリアル接続のモニター
\Getting-Started> pio run --environment core2foraws --target monitor
コマンドの実行結果
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/m5stack-core2.html
PLATFORM: Espressif 32 (3.2.0) > M5Stack Core2
HARDWARE: ESP32 240MHz, 6.25MB RAM, 16MB Flash
Reading CMake configuration...
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 0 compatible libraries
Scanning dependencies...
No dependencies
Building in release mode
Retrieving maximum program size .pio\build\core2foraws\firmware.elf
Checking size .pio\build\core2foraws\firmware.elf
======================  [SUCCESS]  Took 21.21 seconds =========================
--- More details at https://bit.ly/pio-monitor-filters
--- Miniterm on COM3  115200,8,N,1 ---
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
PlatformIO でファームウェアの削除

 ちなみに他のファームウエアへ書き換える前に、今のファームウエアを削除するにはシリアルモニターから次のコマンド

\Getting-Started> pio run --environment core2foraws --target erase

 ファームウエアを削除すると、M5StackCore2の画面には何も表示されず、スピーカーから「カチカチ」音が、これで正常。

スマホ向けアプリ「esp rainmaker」の入手

 iphoneはAppleStoreから、androidはPlayストアから、それぞれクライアントとなる「esp rainmaker」アプリを入手。

esp rainmakerへのデバイス登録

 bluetooth、Wifiいずれの接続も何とか繋がっただけ、QRコードの読み込みや、2.4GHz帯での接続に限定されるのも分からず苦戦。
 最終的にはWifi接続によるファンやLED Lightの制御が可能になったが、まあ書いてあるとおりにやったら出来ただけ、何をやっているのかすら分からない残念なレベル。
 次のレッスンはAWS IoTへ接続してLチカらしいが、手をだしても意味がないとよく分かった。