[M5Stack Core2 for AWS] PlatformIO を使用して、ArduinoでHello Worldしてみました
1 はじめに
IoT事業部の平内(SIN)です。
先日まで、M5Stack Core2 for AWSがどのような構成になているかを確認するため、Core2 for AWS IoT EduKit BSPの動作確認を進めました。
Visual Studio Code + PlatformIO 環境で M5Stack Core2 for AWS でHello Worldしてみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用してLEDを光らせてみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用してディスプレイに表示してみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用して仮想ボタンの動作を確認してみました
[M5Stack Core2 for AWS] LVCLを使用してディスプレイ上のボタンの動作を確認してみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用して電源を操作してみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用してスピーカーを操作してみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用して静電容量式タッチパネルを操作してみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用してジャイロセンサーを操作してみました
かなり薄いですが、少しイメージできたので、今回からは、ArduinoでM5Stack Core2 for AWSを操作してみたいと思います。 引き続き、開発環境は、Visual Studio Code + PlatformIOです。
2 New Project
PlatformIOのアイコンから、「Home」- 「New Project」と辿り、プロジェクトを新規に作成します。
Name:(プロジェクト名)を適当につけ(ここでは、Sample002としました)、Board: は、「MSStack Core2」、Framework: を「Arduino」とし、Finishで進めます。
Location:にチェックが入っている場合、~/Documents/PlatformIO/Projectsの下に、作成したプロジェクトのフォルダが生成されます。(チェックなしの場合、プロジェクトの保存場所を、設定する手順となります)
作成されるファイル構成は、以下のようになってます。
% tree ~/Documents/PlatformIO/Projects/Sample002 -a /Users/sin/Documents/PlatformIO/Projects/Sample002 ├── .gitignore ├── .pio │ └── build │ ├── project.checksum │ └── sample002 ├── .vscode │ ├── c_cpp_properties.json │ ├── extensions.json │ └── launch.json ├── include │ └── README ├── lib │ └── README ├── platformio.ini ├── src │ └── main.cpp └── test └── README
3 platformio.ini
プロジェクトのルートに作成されるplatformio.iniを以下のように編集します。編集したのは、env名と、シリアル関連の設定の追記です。
[env:sample002] platform = espressif32 board = m5stack-core2 framework = arduino monitor_speed = 115200 upload_port = /dev/cu.SLAB_USBtoUART
4 コンパイル+アッップロード
新規プロジェクトのmain.appは、以下のように空っぽですが、このまま、コンパイル+アップロードしてみます。
src/main.cpp
#include <Arduino.h> void setup() { // put your setup code here, to run once: } void loop() { // put your main code here, to run repeatedly: }
PlatformIOのアイコンから、「Miscellaneous」- 「New Terminal」と辿り、ターミナルを開き、下記のコマンドを実行します。
% pio run -e sample002
[Success]が表示されれば、コンパイル完了です。
M5Stack Core2 for AWSをUSBで接続し、ターミナルから、下記のコマンドでアップロードします。 こちらも、[Success]が表示されれば、アップロード完了です。
% pio run -e sample002 -t upload
プログラムが空っぽなので、電源をOFF/OFしても、残念ながら何も起こりません。
5 ライブラリ(M5Core)追加
PlatformIOのメニューから「Libraries」を辿り、「M5Core2」を検索して選択します。
Add Projectで表示されるウインドウで、プロジェクト(ここでは、Sample002)を選択することで、このライブラリを取り込むことができます。
プロジェクトに追加したライブラリは、.pio/libdepsの下に配置されます。
% tree ~/Documents/PlatformIO/Projects/Sample002 -a /Users/sin/Documents/PlatformIO/Projects/Sample002 ├── .gitignore ├── .pio │ ├── build │ │ ├── project.checksum │ │ └── sample002 │ └── libdeps │ └── sample002 │ └── M5Core2 │ ├── .clang-format │ ├── .gitignore │ ├── .piopm │ ├── LICENSE │ ├── README.md │ ├── README_cn.md │ ├── examples │ │ ├── Basics │ │ │ ├── mpu6886 │ │ │ │ └── mpu6886.ino │ │ │ ├── record │ │ │ │ └── record.ino │ │ │ ├── rtc_wakeup
6 シリアル通信でHello World
シリアル通信で、Hello Worldを表示するため、main.cppを下記のように書き換えます。
main.cpp
#include <M5Core2.h> void setup() { Serial.begin(9600); M5.begin(true, true, true, true); } void loop() { int counter = 0; for(;;){ Serial.printf("Hello World. [%d]\n", counter); counter++; delay(500); } }
uploadでコンパイル及び、アップロードが始まります。
% pio run -e sample002 -t upload
monitorで、シリアルポートをモニターします。
% pio run -e sample002 -t monitor
M5Stack Core2をリセットすることで、初期化のメッセージの後、プログラムした、Hello Worlsを確認できます。
7 ディスプレイでHello World
ディスプレイで、Hello Worldを表示するため、main.cppを下記のように書き換えます。
main.cpp
#include <M5Core2.h> void setup() { M5.begin(true, true, true, true); M5.Lcd.setTextSize(3); M5.Lcd.print("Hello World"); } void loop() { int counter = 0; for(;;){ M5.Lcd.printf("Hello World. [%d]\n", counter); counter++; delay(500); } }
プログラムをコンパイルしてアップロードすると、今度は、画面で、Hello Worldを確認できます。
8 最後に
今回は、Arduinoで、Hello Worldしてみました。久々に、FreeRTOSから離れて・・・Arduinoのライブラリでcppして、やっぱこんなに楽か!!ってなりましたw。
9 参考リンク
Visual Studio Code + PlatformIO 環境で M5Stack Core2 for AWS でHello Worldしてみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用してLEDを光らせてみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用してディスプレイに表示してみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用して仮想ボタンの動作を確認してみました
[M5Stack Core2 for AWS] LVCLを使用してディスプレイ上のボタンの動作を確認してみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用して電源を操作してみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用してスピーカーを操作してみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用して静電容量式タッチパネルを操作してみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用してジャイロセンサーを操作してみました
[M5Stack Core2 for AWS] PlatformIO を使用して、ArduinoでHello Worldしてみました
[M5Stack Core2 for AWS] ArduinoでLED (Adafruit NeoPixel フルカラーLED) を点灯してみました
[M5Stack Core2 for AWS] Arduinoで仮想ボタンを作成してみました
[M5Stack Core2 for AWS] ArduinoでMQTT接続してみました
[M5Stack Core2 for AWS] Arduinoでオーディオファイルを再生してみました
[M5Stack Core2 for AWS] Arduinoでマイクの利用方法を確認してみました
[M5Stack Core2 for AWS] ArduinoでGroveポートのGPIOを使用しててみました