4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【M5Stack CoreMP135】開発環境構築する

Last updated at Posted at 2024-05-04

M5Stack CoreMP135を買ったので味見した話
記事のゴール

  • だいたい公式と同じ開発環境セットアップし、サンプルプログラムをビルドする。
    トラブルがあったため暫定対応で動作することを確認した。

初めに

公式の開発環境構築方法などは以下のリンク先に乗っています。

この通りに完了できればこの記事は不要です。

(2024.09.16 追記)
筆者環境ではwindows11以下ではいまだにすんなり行きませんが、Ubuntu上ではスムーズに進みます。VMware上にUbuntuを用意し、公式ページ(develop)に沿ってUbuntu環境で進めることをお勧めします。

検証環境

  • PC
     windows11
     有線LANに接続できるポートが必要
     gitがインストールされていること
  • 電源 USB type-C 5V3A
  • LANケーブル

この記事ではwindows11以下で確認していますが、公式ドキュメントを見るとlinuxでも行けそうです。

電源を入れるまで

OSのセットアップ

Descriptionに以下のコメントがあります。

The host comes with a MicroSD card preloaded with Debian system, ready to use upon booting. 

Debian入ったSDが付属している!素晴らしい!
記事作成時点では、発売されたばかりなのでOSを更新する必要はないでしょう(多分)
将来書き換えたい状況になったり、別の環境をいれたSDカードを作る場合のやり方は
CoreMP135 image burning
に記載されています。

電源投入

では電源をいれるだけなので早速通電します。
電源はいくつかの方法で入れることができます。

  • DCIN 12V/2A
  • RS485 9~24V (記載はないですが電流値2A以上は用意しておきたいところ)
  • USB Type-C 5V/3A

ほかにもバッテリーソケットがあったりします。
やってないですが、
M5Stack用電池モジュール
をそのまま重ねたり、バッテリーだけ外してこっちに流用できそうですね。
そのうち試します。
(回路図見るとほかにも行けそうな経路がありますが、自己責任で...)

今回の記事では、業務PCに使うためのUSB type-Cが卓上に出てたのでこれを使いました。

起動

電源を指すと勝手に起動します。

無題の動画 (1).gif
(画面が暗くてすみません)

電源を切るときは、電源ボタンを長押しするとオフになります。
電源を指しっぱなしにしているときは、電源ボタンを押すと再び起動します。

リモートログインしてみる

ネットワーク環境の設定

SDカードのOSが初期状態のままであれば、IPアドレスはDHCPで設定できます。
パソコンをDHCPサーバ機能を持つルータに接続し、同じルータにCoreMP135を接続するといいでしょう。
筆者は手元にルータがなかったので、PC上でDHCPサーバを動作させたうえで、LANアダプタとCoreMP135を直結して作業しています。
図3.png

このとき、DHCPサーバからどんなIPアドレスが割り振られているかは
起動後に表示されるデモのETHERNET TESTから確認することができます。

図1.jpg

ちなみに、DHCPサーバはRockwell AutomationのBootP DHCP EtherNet/IP Tool を使用しました。

SSHでアクセスしてみる

Windowsのコマンドプロンプトで以下のコマンドを実行します。
以下は私の環境の場合す。CoreMP135側のIPアドレスは環境ごとに異なる可能性があるため、@以降のIPアドレスは適切に読み替えてください。

SSHでアクセスしてみる例
ssh root@192.168.2.212

デフォルトのユーザ名とパスワードは両方ともrootです。

警告
インターネットに接続できる構成で利用する場合は、なるべくパスワードやユーザ名を変更しておいたほうが無難です。

(オプション) 取り急ぎパスワードを変更する方法

SSHでログインした後、以下を実行し、指示に従ってください。

rootのパスワード変更
passwd root

変更した後はCoreMP135の再起動を行ってください。以降の操作では新しいパスワードを利用します。

ビルド環境のセットアップ

ここではwindows環境について説明します。
Linuxについては公式ページ(develop)をご確認ください。
windowsもそのページみたらいいじゃん。というコメントはその通りです。

Python 3をインストールする

ここは公式ドキュメントに準拠しますが、仮想環境等で作成しても変わらないはずです。
Python.orgから最新のPython 3(DownlordにあるLatestのところから飛ぶ)をインストールします。
筆記時点ではPython 3.12.3でした。
画面下部のWindows installer (64-bit)を使ってインストールしてください。

インストール時の注意事項
インストール時にはAdd python.exe to PATHにチェックを入れてください。
スクリーンショット 2024-05-01 202129.png
なお、Use admin privileges when installing py.exe はどちらでも可です。

ビルドツール周りをセットアップする

コマンドプロンプトと記載していますが、PowerShellでも可能です。適宜読み替えてください。

はじめに以下をWindowsのコマンドプロンプトで実行します。

pipでインストールする
pip install parse windows-curses scons pexpect paramiko scp
筆者の環境の場合

個人の自由ですが、私の場合は上のコマンドの代わりに以下でインストールしました。
理由がなければ上のコマンドをそのまま実行してください。

pipでインストールする
py -m pip install parse windows-curses scons pexpect paramiko scp

ライブラリをクローンする

次に適当な作業フォルダを作成します。
経験上、フォルダ名に日本語は含めないこと、階層は深くしないことがおすすめです。
C:\project\M5くらいがいいと思います。

コマンドプロンプト上で作成した作業フォルダに移動して以下を実行。

m5stackからライブラリをクローンする
git clone https://github.com/m5stack/M5Stack_Linux_Libs

問題なければM5Stack_Linux_Libsができているはずです。

クロスコンパイル用のツールチェーンを取得する

公式ページ(開発環境構築)にある
gcc-linaro-7.5.0-2019.12-i686-mingw32_arm-linux-gnueabihf
をダウンロードし、作業フォルダの中で展開します。

サンプルプロジェクトのビルド

注意
この章については公式の手順で進められなかったので適当にやっています。
そのうち正しい方法でできるように整理されると思います。

起きたトラブル(読まなくても良い) 公式手順のとおり
scons menuconfig

を実行すると、

実行結果
scons: Reading SConscript files ...
Loaded configuration '<作業フォルダ>\M5Stack_Linux_Libs\examples\lcd_hello_world\build\config\global_config.mk'

など表示された後、設定画面に移動せずに処理が終了してしまう。
そのためツールチェーンまでの絶対パスを設定することができない状態になってしまった。

ツールチェーンまでのパスを設定する

まず、
<作業フォルダ>\M5Stack_Linux_Libs\examples\lcd_hello_world
まで移動し、以下のコマンドを実行します。

ビルドを一回実行する
scons -j4

すると、ビルドしようとして失敗しますが、
<作業フォルダ>\M5Stack_Linux_Libs\examples\lcd_hello_world\build\config\global_config.mk
が生成されているはずです。

方法は何でもいいので
<作業フォルダ>\M5Stack_Linux_Libs\examples\lcd_hello_world\build\config\global_config.mk
を開き、
CONFIG_TOOLCHAIN_PATH
\gcc-linaro-7.5.0-2019.12-i686-mingw32_arm-linux-gnueabihf\bin
までの絶対パスに置き換えます。
以下は例になります。
(解凍の仕方やフォルダ構成によって、パスの内容は変わるので注意してください。)

config/global_config.mk 内のCONFIG_TOOLCHAIN_PATHを書き換える
CONFIG_TOOLCHAIN_PATH="<作業フォルダ>\gcc-linaro-7.5.0-2019.12-i686-mingw32_arm-linux-gnueabihf\gcc-linaro-7.5.0-2019.12-i686-mingw32_arm-linux-gnueabihf\bin"

ほかの行はそのままで良いです。

ビルドする

コマンドプロンプトで
<作業フォルダ>\M5Stack_Linux_Libs\examples\lcd_hello_worldに移動した後、以下を実行します。

ビルド実行
scons -j4

errorがなければビルド完了です。

CoreMP135上にプログラムを転送して動かす

ビルドした結果をCoreMP135上に移します。
方法はなんでも良いのですが、ここでは公式ドキュメントに従いSConsを使ってビルドした結果をCoreMP135に送ります。

送信設定

<作業フォルダ>\M5Stack_Linux_Libs\examples\lcd_hello_world
の中に、setup.iniを作ります。

(<作業フォルダ>\M5Stack_Linux_Libs\examples\hello_world
の中にあるsetup.iniをコピーして持ってきても良いです。)

ファイルの中身は以下になります。
IPアドレスを実態に合わせるのはもちろんのこと、
sshに使うやユーザ名やパスワードを変更している場合は適切な内容に変更しておきましょう。

setup.iniの中身
[ssh]
local_file_path = dist
remote_file_path = /root
remote_host = 192.168.2.212
remote_port = 22
username = root
password = root

CoreMP135に送信する

次に、SConsを使ってプログラムをCoreMP135に送信します。
前述のリモートログインできる環境が構成されており、実際にSSHで接続可能な状態であることを確認してください。

コマンドプロンプトで
<作業フォルダ>\M5Stack_Linux_Libs\examples\lcd_hello_worldにいる状態で、以下を実行します。

プッシュ実行
scons push

success!と表示されたら成功です。

権限を付与して実行する

コマンドプロンプトからCoreMP135にsshでログインします。
ログインしたら、setup.iniremote_file_pathとして設定しているパスに移動します。

権限を付与して実行する
chmod +x lcd_hello_world
./lcd_hello_world

うまくいっていればサンプルプログラムが起動します。

なお、画面上部には起動時のデモプログラムの時計表示等が出てきます。
公式のドキュメントを参考に以下の手続きでデモプログラムを停止させることができます。

CoreMP135にsshでログインしている状態で、次のコマンドでプロセスを確認します。

start_uiのプロセスを探す
ps | grep "start_ui"

/usr/local/m5stack/dist/core135_start_uiに対応した番号を探します。
次に、

start_uiを止める
kill <調べた番号>

で停止します。

まとめ

  • サンプルプログラムをビルドして動かすことができた
  • scons menuconfig 周りがうまくいかなかったので力技になってしまっている

最後に

公式ページ(develop)には紹介していない便利機能(debugportとか)が乗っています。絶対に目を通すようにしましょう。

4
4
7

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
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?