別に大したことはないが「centos7 M5Stack」と検索したらそのものずばりなものがなかったので。私みたいな俄に思いついてスターターキットで買うような人向けに。
やったこと
- インストール
- スケッチ例「display」を書き込む
実施環境
- Linux version 3.10.0-862.11.6.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) )
- CentOS Linux release 7.5.1804 (Core)
カーネルの更新を先にやっておいた方が良いのかもしれないが……。
ていうかいつの間にか7.5になってたか。
インストール
Arduino IDE
買う時に確認していると思うが、M5StackはArduino IDEで開発できる。
-
Arduino IDEのページあたりからダウンロードする。
- Linux 64bitとか32bitを選択する。
- tar.xzファイルがダウンロードされるのでこのページのようなコマンドで展開する。
- 展開したファイル(arduino-x.x.xとかのフォルダになるはず)の中のinstall.shを実行する → アプリ一覧に登録される。
(余談)インストールするときに寄付するか聞かれる。ハードの販売は利益追求してないのだろうか。まあarduinoを買ったわけじゃないしと思って寄付したが……寄付の説明ぐらい多言語にしておいてほしい。
IDEの環境設定
Arduino IDEで開発できるといってもそのまま対応しているわけではない。
まあここらへんはWindowsや他のOSと似たような感じなのでググれば似たような話は出てくる。例えば下記
ボードマネージャー / espressif
https://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide に各OSの手順がある。
ただしcentosそのものはない。fedoraを参考にする。しかし問題は次のステップ。
sudo dnf install git python3-pip python3-pyserial
dnfがちゃんと設定されればそのままできるのかもしれないが、結局私はできなかった。
git, pip, python3が入っていることを確認して続きを実行。
後になってpyserialが……みたいなことになって下記を行った。
pip install pyserial
M5Stackのライブラリ
Arduino IDEを起動する。
ツール>ボードの一覧の下の方にESP32某が並んでいて、その下の方にM5Stack-Core-ESP32があるはずなので選択。
次にスケッチ>ライブラリをインクルード>ライブラリを管理 でM5Stackと検索してM5Stackというやつをインストール。(M5Stack by M5Stackでも良いらしいが)。
試してみる
ファイル>スケッチ例>M5Stack>Basics>Displayを選択。
「→」ボタンを押して「マイコンボードに書き込む」。
ここで私は3件ほど事件が。
- 「SD.h」に対して複数のライブラリが見つかりました
- No module named serial.tools.list_ports
- /dev/ttyUSB0 permission denied
対処は下記。
- ダウンロード(インストール)したArduinoのlibrariesにSDフォルダがあるので消す(tar.gzで固めて残しておいても良いが)
- 先述のとおり、pip install pyserialする
- これが私の頭ではよくわからん。結局
chmod 666 /dev/ttyUSB0
した。OSを再起動するたびにやらないといけないらしいが……
無事書き込めると、M5Stackの電源みたいなボタンを押すたびに赤青緑みたいに色が変わったあと小さな□○△みたいになって、そのあと三角形がわーとなる画面になる。わーとなるのはうざいので試しに下記のようにfillTriangleをコメントにしてみた。
// the loop routine runs over and over again forever
void loop(){
//rand draw
//M5.Lcd.fillTriangle(random(M5.Lcd.width()-1), random(M5.Lcd.height()-1), random(M5.Lcd.width()-1), random(M5.Lcd.height()-1), random(M5.Lcd.width()-1), random(M5.Lcd.height()-1), random(0xfffe));
M5.update();
}