Visual Studio Code + PlatformIO 環境で M5Stack Core2 for AWS でHello Worldしてみました
1 はじめに
IoT事業部の平内(SIN)です。
M5Stack Core2 for AWS では、初めて利用される方でも簡単にセットアップが可能な、
ワークショップのドキュメントが公開されており、簡単に試すことができます。
上記のドキュメントにしたがって Getting-Startを進めるだけで、一通りの環境のセットアップと、実施に動作するサンプルが手に入ります。
しかし、良くも悪くも、このワークショップのサンプルの完成度が高すぎて、「それじゃ、何か作ってみようか」となっても、特に、PlatformIOに触れたのも初めてという私には、ちょっとハードルが高いように感じてしまいました。
今回は、そのような私が、とりあえず、PlatformIOで、新規にプロジェクトを作成して、M5Stack Core2 for AWS でHallo Worldしてみた記録です。
なお、先でのワークショップを進めたことで、PlatformIOや、Silicon Labs USB to UART bridgeのセットアップは、完了している状態からの作業になります。
2 プロジェクト作成
PlatformIOのアイコンから、Open -> New Projectで新規にプロジェクトを作成できます。
下記のとおり、入力しFinishをクリックします。
- Name: プロジェクト名(ここでは、Sample001としました)
- Board: M5Stack Core2
- Framework: Espressif IoT Development Framework
- Location: チェック
Locationにチェックすると、~/Documents/PlatformIO/Projectsの下に、作成したプロジェクトのフォルダが生成されます。(チェックなしの場合、プロジェクトの保存場所を、設定する手順となります)
作成されるファイル構成は、以下のようになってます。
% tree ~/Documents/PlatformIO/Projects/Sample001 /Users/sin/Documents/PlatformIO/Projects/Sample001 ├── CMakeLists.txt ├── include │ └── README ├── lib │ └── README ├── platformio.ini ├── sdkconfig ├── src │ ├── CMakeLists.txt │ └── main.c └── test └── README
3 platformio.ini
プロジェクトのフォルダのルートにある、platformio.iniは、以下のようになっています。
ここで、アプリ名が分かりやすいように、[env:m5stack-core2]の部分を、[env:sample001]と書き換えました。
[env:sample001] platform = espressif32 board = m5stack-core2 framework = espidf
また、src/main.cには、エントリポイントとなる app_main()が定義されていますが、内容は空っぽです。
4 コンパイル
app_main() に何も書かれていないので、何も実行されませんが、ここで、一度、コンパイルしてみます。
QUICK ACCESSのメニューから、Miscellaneous - New Terminalと辿り、新しいターミナルを開き、下記のコマンド入力します。
% pio run -e sample001
SUCCESSが表示されれば、成功です。
5 アップロード
コンパイルしたプログラムをデバイスに書き込んみます。 M5Stack Core2 for AWSをUSBで接続し、ターミナルから下記のコマンド実行します。
% pio run -e sample001 -t upload
すると、下記のようなエラーとなります。(Macで作業している場合)
[Errno 16] could not open port /dev/cu.usbserial-0202E5A2: [Errno 16] Resource busy: '/dev/cu.usbserial-0202E5A2' *** [upload] Error 1
これは、/dev/cu.usbserial-0202E5A2に書き込もうとして失敗しています。
ポート名は、platformio.iniで定義が可能ですので、下記のよに、ポート名を追記します。
upload_port = /dev/cu.SLAB_USBtoUART
なお、認識されているポート名は、QUICK ACCESS の PIO Home -> Devicesから確認できます。
SUCCESS が表示されればアップロードは、完了していますが、プログラムが、以前のものが動作したままのはずです。
電源ボタンを長押しして、一旦、電源をOFF/ONすると、画面が真っ黒の何も実行しないプログラムが、「実行」されます。 後で、プログラムを削除してみると分かりますが、M5Stack Core2 for AWSでは、まったく、プログラムが入っていない状態で電源を入れると、「チッチッチッチッ」というような音が聞こえるのですが、これが、聞こえないので、今回作成した「何も実行しないプログラム」が動作している事になります。
6 シリアルモニター
app_main() にコードを追加して、シリアルに出力してみます。
#include "esp_log.h" static const char *TAG = "Main"; void app_main() { ESP_LOGI(TAG, "Hello World."); }
platformio.iniにシリアル通信のスピードを設定します。
monitor_speed = 115200
ターミナルから、下記のコマンドを実行すると、コンパイル+アップロード+シリアルモニターがスタートします。
% pio run -e sample001 -t monitor
途中、ポートを指定するところでは、/dev/cu.SLAB_USBtoUART(ここでは、2)を選択しています。
下記のように表示されて、モニター状態となったら、リセットボタンを押してみてください。
--- Miniterm on /dev/cu.SLAB_USBtoUART 115200,8,N,1 --- --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
初期化のログが表示された後に、プログラムした、「Hello Workd.」を確認できると思います。
モニタは、CTRL+Cで終了します。
7 プログラム削除
ターミナルから下記のコマンドを実行する事で、デバイス上のプログラムを削除できます。
% pio run -e sample001 -t erase
電源を一度OFF/ONして、「チッチッチッチッ」という音が聞こえてくれば、デバイス上のプログラムは削除されています。
8 最後に
今回は、PlatformIOで、新規にプロジェクト作成を作成して、M5Stack Core2 for AWSでHallo Worldしてみました。
Core2 for AWS IoT EduKit BSPでは、M5Stack Core2 for AWSを簡単に操作するコードが提供されていますので、色々試してみたいと思います。
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を使用しててみました