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チカらしいが、手をだしても意味がないとよく分かった。