Table of Contents
久しぶりにプログラミングをしたくなった。
センサーなどからの入力情報を処理して表示したり外部機器に反映するような、いわばIoT的な使い途を学ぶのも良いかな…と。
手元には現在特に使っていないRaspberry Piが5台(4B+×3、3B+、Zero 2 W)有るが、入出力機器(ユニット)の接続とプログラミングが容易なM5Stackシリーズを選択。
入出力機器の種類が豊富で、接続はGroveコネクタを挿すだけ、プログラムも対応ライブラリが揃っているため取っ付き易い。
ただ、手持ちのM5Stack BasicはGrove端子がPort.A(I2C)一つだけなのでセンサー系に多いPort.B(GPIO)とPort.C(UART)が使えない。
各Portの詳細や各ユニットとの対応については、マルツのサイトが大変参考になる。
⇒『「M5Stackシリーズ」×「Grove拡張ユニット」組み合わせ方超入門』
M5Stack CoreS3
それならPort.BやPort.Cにも対応したモデルを1台新調すればいい…というわけで選んだのがM5Stack CoreS3。
Port.A(I2C)/B(GPIO)/C(UART)三種のGrove端子の他に、30万画素カメラや照度・近接センサー、6軸MIU(3軸加速度計+3軸ジャイロスコープ)、3軸地磁気センサー、スピーカー、ステレオマイク、マルチタッチ対応タッチパネルが搭載されたテンコ盛りモデル。
外部給電は従来のUSB-C経由に加えて、付属のDIN BASEを使えばAC/DCアダプタ(9~24V)にも対応しているし500mAh/3.7Vのバッテリーも内蔵されている。
今回併せて幾つかのモジュール(Core2用ポート拡張モジュール、CoreS3用バッテリーボトム、Go/FIRE用チャージベース)を購入して組み合わせている。
- ポート拡張モジュール
Port.B/C/D/E ※Port.D/EはUIFlowで使用可。 - バッテリーボトム
500mAh/3.7Vバッテリー内蔵(チャージベース経由で充電可)
Port.B/C
赤外線送信用LED
プログラマブルRGB LED(左右それぞれ5個) - チャージベース
バッテリーボトムと磁力吸着し、ポゴピンで接続して給電する。
CoreS3自身に搭載されているカメラや各種センサーに加えて、モジュールによる外部I/Fの追加は非常に大きい。
DIN BASE
M5Stack Basic V.2.6
やはり手持ちのBasicでもPort.B/Cを接続出来るようにしたい…というわけで、こちらにもモジュール(HMIモジュール)を追加。
このモジュールはPort.B/Cの他にも名称(HMI…Human Machine Interface)の通りUI機能(プッシュ対応ロータリーエンコーダー、プッシュボタンスイッチ×2、LEDインジケーター×2)が装備され、併せて500mAh/3.7Vのバッテリーも内蔵されている。
Port.B/Cの追加のみならM5GO/FIREバッテリーボトムが有るがHMIモジュールの方が安かった。
バッテリーボトムはUI系が一切無いがアナログマイクが装備され、チャージベースにも対応しておりバッテリー容量は同じ。
HMIモジュールを装着したBasicのPort.Aにユニット(ENVⅣ)を接続してUIFlowで簡単なプログラムを組んで実行すると"Invalid CRC calculated"エラーが頻発。 調べてみるとHMIで使用しているI2Cの接続ピン番号/アドレスがBasicのPort.Aと同じなため干渉している模様。 一方のアドレスを変更するか、I2Cを使用せずPort.B/Cを追加するバッテリーボトムに換装するか…思案中。 HMIモジュールのロータリーエンコーダーやプッシュボタンスイッチの可能性も捨て難いので悩む。
他に、スタンディングベース(温度・湿度センサー搭載)を装着している。
※前面はmicroSDカードスロットのみなので写真は無し。
開発環境セットアップ
以前とは異なるPCのため、開発環境(Arduino IDE、Visual Code Studio/PlatformIO、UIFlow)を新規にセットアップする必要が有る。
必要なソフトウェアやセットアップ手順については先達の方々が大変詳しく解説されているので、そちらを参考に滞り無く完了。
ところが…セットアップ後に数回試した際は問題無かったが、その後Arduino IDEとVCS/PlatformIOでビルドするとPCがシャットダウンしてしまうようになり一時中断中。
シャットダウンするようになったタイミングはWindows Updateの適用後、他にはシステムはおろかアプリ関係でも特に追加や変更は行っていない。
アプリが落ちる程度ならともかく、PC自体が突然シャットダウンしてしまうのは不安過ぎる。
現在は開発環境を全て(UIFlowはWebアプリなので除く)アンインストールし、再インストールするか思案中。
UIFlowは特に問題無く使えているようなので、暫くはこちらで進めよう。
ただ、CoreS3に対応しているUIFlow2はUIFlow1に比べてユニット/モジュールの対応が今ひとつで、特にCoreS3の内蔵カメラ(センサーも?)に対応していないのが残念。
また、UIFlow2は言語設定を日本語にしても英語表記のままなので使い勝手も今ひとつ。