LoginSignup
7
11

More than 3 years have passed since last update.

M5Stack Core2 for AWS

Posted at

はじめに

昨年M5Stackで FreeRTOSを動かしてみた記事 をQiitaに投稿した後、M5StackでFreeRTOSを動かしてみる人が増えた気がします。AWSのIoT/FreeRTOSワークショップでもM5Stackが使われることもありました。M5Stackは安価に上手にパッケージングされていて、誰でも気軽に使うことができる本当に便利なデバイスです。

そして先日、M5Stack Core2 for AWS - ESP32 IoT開発キット が発売されました。M5Stack BASICはIoTやFreeRTOSの勉強用には便利なものでしたが、メモリが512Kだったり、使いこなすにはちょっと不足を感じる点がありましたが、M5Stack Core2 for AWS - ESP32 IoT開発キット はいくつかの面でパワーアップされています。

初日、M5Stack Core2 for AWS - ESP32 IoT開発キット は30分くらいで売り切れてしまいましたが、幸い購入できましたので簡単にレポートさせて頂きます。

M5Stack Core2 for AWS - ESP32 IoT開発キット

シンプルなパッケージで送られてきました。本体、USB-Cケーブル、レンチが入っています。スイッチを入れるとロゴが表示されて起動音が鳴ります。その後AWS IoT EdukitページのQRコードが表示されて、本体の横に配置されたLEDが点灯します。

出荷時のファームウェアは こちら のようです。

接続には SiLabs CP210x drivers が必要ですが、以前M5Stackを使用していればすでにインストールされています。Tera Termでシリアル接続してみると、次のようなメッセージが表示されます。

ets Jul 29 2019 12:21:46

rst:0x1 (POWERON_RESET),boot:0x17 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:4
load:0x3fff0034,len:7600
ho 0 tail 12 room 4
load:0x40078000,len:15348
load:0x40080400,len:4888
entry 0x400806a4
I (31) boot: ESP-IDF v4.2-beta1-227-gf0e87c933a 2nd stage bootloader
I (31) boot: compile time 10:30:21
I (31) boot: chip revision: 3
I (36) boot_comm: chip revision: 3, min. bootloader chip revision: 0
I (43) qio_mode: Enabling default flash chip QIO
I (48) boot.esp32: SPI Speed      : 80MHz
I (53) boot.esp32: SPI Mode       : QIO
I (57) boot.esp32: SPI Flash Size : 16MB
I (62) boot: Enabling RNG early entropy source...
I (67) boot: Partition Table:
I (71) boot: ## Label            Usage          Type ST Offset   Length
I (78) boot:  0 nvs              WiFi data        01 02 00011000 00006000
I (86) boot:  1 phy_init         RF data          01 01 00017000 00001000
I (93) boot:  2 factory          factory app      00 00 00020000 00100000
I (101) boot: End of partition table
I (105) boot_comm: chip revision: 3, min. application chip revision: 0
I (112) esp_image: segment 0: paddr=0x00020020 vaddr=0x3f400020 size=0x5eb6c (387948) map
I (255) esp_image: segment 1: paddr=0x0007eb94 vaddr=0x3ffb0000 size=0x01484 (  5252) load
I (258) esp_image: segment 2: paddr=0x00080020 vaddr=0x400d0020 size=0x41e70 (269936) map
I (356) esp_image: segment 3: paddr=0x000c1e98 vaddr=0x3ffb1484 size=0x00ff4 (  4084) load
I (357) esp_image: segment 4: paddr=0x000c2e94 vaddr=0x40080000 size=0x00404 (  1028) load
I (363) esp_image: segment 5: paddr=0x000c32a0 vaddr=0x40080404 size=0x11b30 ( 72496) load
I (410) boot: Loaded app from partition at offset 0x20000
I (410) boot: Disabling RNG early entropy source...
I (411) psram: This chip is ESP32-D0WD
I (416) spiram: Found 64MBit SPI RAM device
I (420) spiram: SPI RAM mode: flash 80m sram 80m
I (425) spiram: PSRAM initialized, cache is in low/high (2-core) mode.
I (433) cpu_start: Pro cpu up.
I (436) cpu_start: Application information:
I (441) cpu_start: Project name:     core2forAWS-default-firmware
I (448) cpu_start: App version:      2b790e5-dirty
I (453) cpu_start: Compile time:     Nov 17 2020 10:30:15
I (459) cpu_start: ELF file SHA256:  cb6c82cca7492871...
I (465) cpu_start: ESP-IDF:          v4.2-beta1-227-gf0e87c933a
I (472) cpu_start: Starting app cpu, entry point is 0x40081dac
I (0) cpu_start: App cpu up.
I (975) spiram: SPI SRAM memory test OK
I (975) heap_init: Initializing. RAM available for dynamic allocation:
I (976) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (982) heap_init: At 3FFC7730 len 000188D0 (98 KiB): DRAM
I (988) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (994) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (1001) heap_init: At 40091F34 len 0000E0CC (56 KiB): IRAM
I (1007) cpu_start: Pro cpu start user code
I (1012) spiram: Adding pool of 4096K of external SPI memory to heap allocator
I (1032) spi_flash: detected chip: generic
I (1032) spi_flash: flash io: qio
I (1032) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
I (1045) spiram: Reserving pool of 32K of internal memory for DMA/internal allocations
I (1063) atecc608a:  Seeding the random number generator...
I (1064) atecc608a:  ok
I (1086) atecc608a: Initializing ATECC608a secure element
I (1086) atecc608a: ok
I (1086) atecc608a: Checking data zone lock status...
I (1108) atecc608a: ok: locked
I (1108) atecc608a: Get the device info (type)...
I (1126) atecc608a: ok: 60 02
I (1126) core2forAWS: Firmware Version: 1.0.0
I (2740) I2S: DMA Malloc info, datalen=blocksize=256, dma_buf_count=2
I (2740) I2S: PLL_D2: Req RATE: 44100, real rate: 44642.000, BITS: 16, CLKM: 14, BCK: 8, MCLK: 11289966.924, SCLK: 1428544.000000, diva: 64, divb: 11
I (2750) I2S: PLL_D2: Req RATE: 44100, real rate: 44642.000, BITS: 16, CLKM: 14, BCK: 8, MCLK: 11289966.924, SCLK: 1428544.000000, diva: 64, divb: 11
I (2769) main: **************************************

I (2770) main: Device Serial: 0123xxxxxxxxxxxxxx

I (2776) main: **************************************


ワークショップ

AWSから ワークショップのドキュメント が公開されています。内容は次のようなものです。IoTの自習ができるようになっています。

  1. Getting Started - 動作確認とWiFiのプロビジョニング
  2. Blinky Hello World - 開発環境(ESP-IDF)とAWS IoT Coreのセットアップ
  3. Smart Thermostat - AWS IoT Coreの基礎知識
  4. Smart Spaces - AWS IoTと機械学習の基礎知識
  5. Intro to Alexa for IoT - Alexa for IoTデモ

残念ながら、FreeRTOSは登場しません。

Getting Started

起動の確認ができたので、ワークショップのドキュメント を参考に開発環境を準備します。

  • SiLabs CP210x drivers

M5StackをPCにシリアル接続するためにドライバーをインストールします。このドライバーはM5Stack BASICなどと同じなので、すでにM5Stackを使用している人は改めてインストールする必要はありません。

  • Visual Studio Code + PlatformIO

Visual Studio Codeに加えてさまざまな開発ボートをサポートするPlatformIOを使用します

  • ESP RainMaker

スマホからデバイスを設定するためのESP RainMakerをAndroid/iOSのアプリストアからインストールします

  • ソースコードのクローン

M5Stack Core2 for AWS IoT EduKit 用に提供されている学習用のソースコードをGitHubからクローンします。

git clone https://github.com/m5stack/Core2-for-AWS-IoT-EduKit.git

Windows PCの場合、PlatformIOのデフォルトのプロジェクトのフォルダー C:\Users<ユーザー>\Documents\PlatformIO\Projects 下だとパス名が長すぎるというエラーでクローンできませんでした。その場合は C:\ の直下にフォルダーを作成するなどしてください。

  • USBケーブル接続、電源投入

  • PlatformIOでGetting-Startedプロジェクトを開く

image.png

  • シリアルポートの調整

platformio.iniに記載されたシリアルポートをPCのOSに合わせて調整します。Windowsであればデフォルトで指定されたupload_portを消すか、; でコメントにします。

platformio.ini
; PlatformIO Project Configuration File
;
;   Build options: build flags, source filter, extra scripting
;   Upload options: custom port, speed and extra flags
;   Library options: dependencies, extra library storages
;
; Please visit documentation for the other options and examples
; http://docs.platformio.org/page/projectconf.html

[env:core2foraws]
platform = espressif32@2.1.0
framework = espidf
board = esp32dev
;upload_port = /dev/cu.SLAB_USBtoUART

monitor_speed = 115200
board_build.partitions = partitions_4MB_sec.csv

board_build.embed_txtfiles = 
  components/esp_rainmaker/server_certs/mqtt_server.crt
  components/esp_rainmaker/server_certs/claim_service_server.crt
  components/esp_rainmaker/server_certs/ota_server.crt
  • ビルド

PlatformIOでビルドします。

image.png

  • ファームウェアの書き込み

作成されたファームウェアをM5Stack Core2に書き込みます

image.png

MonitorにQRコードが表示されます。スマホにインストールしたRainMakerアプリから、Add Deviceをクリックして、QRコードを読み取ります。

image.png

接続できました!

image.png

image.png

参考

  1. M5StackでAmazon FreeRTOSを使用する 1
  2. M5StackでAmazon FreeRTOSを使用する 2
  3. M5StackでAmazon FreeRTOSを使用する 3
  4. M5StackでAmazon FreeRTOSを使用する4(SDカード編)
  5. M5StackでAmazon FreeRTOSを使用する5(shadow編)
  6. M5StackでAmazon FreeRTOSを使用する6(OTA編)
  7. M5StackでAmazon FreeRTOSを使用する7(Greengrass編)
7
11
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
7
11