M5Stack CoreMP135(以降は、CoreMP135と書きます)がスイッチサイエンスで販売され、日本でも入手しやすくなったので、試してみました。
CoreMP135は、他のM5Stackシリーズと異なりDebian(Linux)が動作する分類的には、マイコンではなくコンピュータに分類されるデバイスです。
CPUは、Arm Cortex-A7コアですが、マルチコアではないので、たくさんのアプリケーションを動かすというよりは、数個のアプリケーションを動作させてシンプルな機能を実現するのに良いと思います。Raspberry PiでいうとRaspberry Pi Zeroに近いです。(Cortex-A7で、ARMV7-AなのでCPUアーキテクチャはRaspberry Pi Zeroより新しいですが。)
Wi-Fiは付いていませんがギガビットのLANが2chあり、CANやRS-485ポートがあるので産業向けとなります。
M5Stachシリーズなので、Grove互換のPortAやPortC、M5BUSも搭載されています。
マルチタッチ付きの2インチ 320x240液晶とスピーカー、USBがあるので、とりあえず動かすのは手軽にできそうです。
【追記】スイッチサイエンスの商品ページでは、RAMが512MBとなっているがM5Stack公式では、4GBって書いてある?
M5Stack公式の開発ツールや設定は、他にも説明があると思うので、今回は、enebularのエージェント実行環境をインストールして、Node-REDでの開発環境を整えます。素のNode-REDでも良いですが、enebularであれば簡単にクラウド側との相互通信もできますし、DBも用意されているので、便利です。
Debian OSのイメージ作成
エージェント実行環境は、Debianしか対応していないため、SDカードにDebianのイメージをインストールします。
SDカードへのインストール手順は以下のページに書いてあります。
イメージファイルは、M5_CoreMP135_debian12_20240507
を選びました。
電源を投入
電源は、USB Type-Cか、DCジャックにACアダプターからの給電が使用できますが、Debianのイメージでは、素の状態で、CoreMP135の画面で操作ができないです。そのため、USB Type-CでPCに接続し、ターミナルから操作する様にして、電源はDCジャックから給電しました。
もろもろインターネット経由でインストールするため、インターネットルータの有線LANにも繋いでいます。
電源を投入し、しばらくしたあとに起動音が鳴り、PCからは、仮想シリアルデバイスとして見えるようになりました。TeraTermで起動メッセージが確認できます。
ログインユーザーとパスワードの初期状態は、両方ともroot
です。
ログインするとDebianのコマンドが使用できる状態になります。
パーティションの拡張
イメージャで作られたパーティションが1GB分しか確保されていなかったため、パーティションを拡張します。
fdisk
コマンドでもできると思いますが、parted
をインストールしました。
コマンドは以下の流れです。イメージャで作ったものであれば、パーティション名も同じだと思います。
# apt install parted
# parted -l
(parted) parted /dev/mmcblk0
(parted) resizepart 5 100%
(parted) quit
# resize2fs /dev/mmcblk0p5
# reboot
最後に一応リブートし、df -h
で、/dev/root
のSize
が30G
となっていればOKです。
Filesystem Size Used Avail Use% Mounted on
/dev/root 30G 1.4G 27G 5% /
devtmpfs 157M 0 157M 0% /dev
tmpfs 221M 0 221M 0% /dev/shm
tmpfs 89M 712K 88M 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 45M 0 45M 0% /run/user/0
エージェント実行環境をインストールするための準備
ほぼ、素のDebian Linux状態なので、以下のコマンドでエージェント実行環境に必要なものをインストールします。
apt install gcc
apt install sudo
apt install wget
apt install python3
エージェント実行環境をインストール
enebularにサインインし、適当なプロジェクトを作って、エージェント実行環境を作成します。
(enebularのサインアップ方法やプロジェクトの作り方は、公式のチュートリアルを参照ください)
設定画面からインストールコマンドをコピーします。(とりあえずインストールユーザーはrootに変更しています。)
インストールコマンドをCoreMP135のターミナルに貼り付けて実行しますが、直接、CoreMP135上のNode-REDフローをいじれるように--dev-mode
のオプションを付けます。
インストールコマンド例
$ wget -qO- https://enebular.com/agent-install | sudo -E bash -s -- --user=root --install-key={この部分は毎回異なる} --dev-mode
完了したら次のように表示されます。
================================================================================
enebular-agent has been successfully installed ?
- Version: 2.18.1
- Location: /home/root/enebular-runtime-agent
- User: root
- Service name: enebular-agent-root
enebular-agent is running as a system service.
To check the status of agent, run the following command on the target device:
sudo journalctl -ex -u enebular-agent-root.service
================================================================================
しばらく立ってからenebularの画面を更新し、エージェント実行環境の概要ページのエージェントステータスでバリ3(古い)のアイコンが出ていれば、正常に動作しています。
enebular editorからエージェント実行環境のNode-REDにリモート接続する
エージェント実行環境が動作していれば、遠隔でフローをデプロイしたり、ログを見たり、SSH接続ができるようになります。
また、デスクトップアプリのenebular editorをPCにインストールすれば、エージェント実行環境上で動作しているフローを直接、編集できるようにもなります。
(enebular editorの取得、インストール方法はドキュメントを参照ください)
enebular editorのダッシュボードで、新規もしくは既存のフローで、以下のボタンをクリックして対象のエージェント実行環境を選べば接続できます。
暫く経つとNode-REDのフローエディタが起動します。
適当なフローを動かしてみる
とりあえず、Node-REDのファーストステップ的なフローは動きました。(画面はPCから見ていますが、フローが動作しているのはCoreMP135上です)
とりあえずここまで
一旦、CoreMP135で、enebularを使ったNode-REDフローが動作することは確認できました。後日、センサーを繋いだり、enebularのデータストアとの接続などを試したいと思います。
今回は、暫定で環境を作りましたが、本来は初期ユーザーのパスワードの変更等が必要だと思います。