2021/02/11

M5Stack Core2

 

image

M5Stack Core2 IoT開発キット - スイッチサイエンス
https://www.switch-science.com/catalog/6530/

 

M5Stack Core2を購入した。

このM5Stackだが、シリーズがたくさんある。
今回も最初はM5Stack Fireというものを買うつもりだったのだが、どこかの記事で、今はCore2だ、というようなのを見かけた気がするのでこちらを選んだのだ。PSRAMが載っていれば良かったので、Core2でもよいのだ。

 

届いたCore2の電源を入れて出てきたのが写真の画面だ。
音センサが付いているようで、FFTしてるのかどうかは知らんが音を拾ってグラフがリアルタイムで動いていた。ESP32ってそのくらいの性能はあるんだねぇ。
立方体が描かれていたので、何軸か分からないけど加速度センサも載っているのだろう。

そして何より、この価格でタッチパネル式のカラー液晶画面が付いているということに驚きを隠せない。


さて、ハードウェアはともかく、ソフト屋さんとして気になるのは開発環境だ。

M5Stack Docs - The reference docs for M5Stack products.
https://docs.m5stack.com/#/en/core/core2

ここには、UIFlow, MicroPython, Arduinoとなっている。

  • UIFlow: ブラウザベースのブロック形ビジュアルプログラミング開発環境
  • MicryPython: 組み込み向けPython
  • Arduino: あのArduino

うーん、ESP8266のようにC言語でやれんのだろうか。Arduinoがあるから、そこから直接APIをたたけるようになってるのかな?

M5Stack Core2 SDK でメガドライブエミュレーターをビルドする | hiromasa.another :o)
https://another.maple4ever.net/archives/2881/

できることはできるようだ。

 

今回やろうとしているのはGitHubで公開されていたもので、どうもM5Stack FIREを想定しているようだった。esp-idfなんて文字も出てくるから、たぶんいけるだろう。まあ、センサの類は使えないかもしれないが、M5Stackは有名どころだしサポートしてくれていることを期待しよう。

 

Get Started - ESP32 - — ESP-IDF Programming Guide v4.2 documentation
https://docs.espressif.com/projects/esp-idf/en/v4.2/esp32/get-started/index.html

私はWindows使いなのだが、ここではVirtualBox上に作っているLubuntu環境を使う。
Windowsでの開発環境も用意されているのだけど、やっぱり手になじむ方が安心なのだ。

gitでv4.2を取ってくる。。。835MBもある。過去はいらないから--depth 1にすると・・・変わらん。
どうもsubmoduleで取ってきているようで、そっちには--depthが反映されないようなのだ。

--single-branchを追加すると・・・741MB。
--shallow-submodulesも追加して・・・446MB。

git clone -b v4.2 --depth 1 --single-branch --recursive --shallow-submodules https://github.com/espressif/esp-idf.git

ありがとう、この記事を書いた人!

[Git] とにかく速く特定のブランチをgit cloneしたい場合のTips - Qiita
https://qiita.com/koara-local/items/8b90162637593456433b

で、次はinstall.shを実行するのだが、pipでエラーになった。というかインストールされていなかった。。
どうも私の環境はpython 2.7がインストールされているようなので、"sudo apt install python-pip"でよかろう。

その後はかなり進んだのだが、またエラーになった。
"ERROR: Could not find a version that satisfies the requirement bidict>=0.21.0"とか言われるんだけど、

https://github.com/espressif/esp-idf/issues/6262

requirements.txtに追加すれば良いそうだが、python2がデフォルトである理由もないので、そっちを変更しよう。

$ sudo update-alternatives --config python
There is only one alternative in link group python (providing /usr/bin/python): /usr/bin/python3
Nothing to configure.
update-alternatives: warning: forcing reinstallation of alternative /usr/bin/python3 because link group python is broken

? 壊れているのか??
再設定がいるようだが、 /usr/bin/python3があって、そいつはpython3.6のシンボリックリンクらしい。

$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 1
$ sudo update-alternatives --config python
There are 2 choices for the alternative python (providing /usr/bin/python).

  Selection    Path                Priority   Status
------------------------------------------------------------
* 0            /usr/bin/python3     10        auto mode
  1            /usr/bin/python3     10        manual mode
  2            /usr/bin/python3.6   1         manual mode

急に増えやがった。。。
消そう。

$ sudo update-alternatives --remove python /usr/bin/python3.6
$ sudo update-alternatives --config python
There is only one alternative in link group python (providing /usr/bin/python): /usr/bin/python3
Nothing to configure.

$ python -V
Python 3.6.9

古いが、まあいいや。
python3にすると、終わった。

". ./export.sh"と出てくるので、環境変数の読込はexport.shを使うのだろう。
いつも思うが、なんでsourceコマンドと.が同じなんだろうね。

あとはチュートリアル通り、hello_worldをコピーして、idf.pyでesp32に設定してmenuconfigする。
make menuconfigでも画面は出たのだが、きっと何か前処理をしてから行ったりしているのだろう。

image

何を設定すればよいのかわからん・・・・。

Serial flasher config: Flash sizeを16MBにする
Component config -> ESP32-specific
  CPU frequencyを240MHzにする
  Support for external, SPI-connected RAMを有効にする
    SPI RAM configは何を選べばよいの?

Linuxのカーネルだと、targetファイルみたいなのを指定するとそのターゲットデフォルトの設定にできていたように思うのだが、そういうしくみは無いのだろうか? M5StackのGitHubを見てもArduinoライブラリが並んでいるだけのようだ。

こちらの方はCore2用のテンプレートを用意されている。
GitHubにTemplateなんて分類があるのか・・・。

M5Stack Core2 SDK でメガドライブエミュレーターをビルドする | hiromasa.another :o)
https://another.maple4ever.net/archives/2881/

これを使うかどうかは別として、Core2向けの環境を作るということについての情報が役立つ。そして読んでいくほどに、これを自分でやるのはつらいというのがわかってくる。
しかし、今回使いたいesp-idfのバージョンが指定されてて、4.2なのだ。
うーむ……


あ、これはCore2 for AWS用みたいだけど、idf.pyを使ってる。

https://github.com/m5stack/Core2-for-AWS-IoT-EduKit

こちらの紹介を読んだが、Core2にセキュアエレメントが載ったセットのようだ(あと黄色い)から、なんとかなるんじゃないだろうか。

git clone --depth 1 https://github.com/m5stack/Core2-for-AWS-IoT-EduKit.git
cd Core2-for-AWS-IoT-EduKit/Hardware-Features-Demo
idf.py menuconfig
idf.py build

esp-idf v4.2でビルドできた。
さて、焼くか。

Windowsのデバイスマネージャでは、こう見えている。
今回はVirtualBoxから焼くので、VirtualBoxのデバイス設定で指定する。

image

dmesgで見ると/dev/ttyUSB0となっていた。

idf.py -p /dev/ttyUSB0 flash

はい、Permission deniedで失敗! いつも通りですな。
sudoするとexport.shで設定したものが見えないから、アクセス権を追加した。

[小ネタ]Ubuntu でttyUSB0(USBシリアル変換)が権限関連で使えない場合の対処方法 - Qiita
https://qiita.com/chromabox/items/b3ceaab6efa6edde2bda

さて、これでPermission deniedは解消したのだが、接続に失敗する。
タイムアウトしているのだが、それが終わるとCore2本体も再起動しているから、まったく分かっていないわけでもなさそうだ。
connecting中にCore2のリセットボタンを押してみたら進んだのだが、うちのノートPCはUSBの接続が甘いので、ちょうど接続がよくなっただけかもしれん。

 

ともかく、焼けた!
そして、なんか画面に出てきた!
そしてそして、再起動を繰り返すようになった……

まあ、セキュアエレメントのチップが載っていないから、そのアクセスに失敗したからだろう。

なんとなくいけそうな気がするので、このままがんばってみよう。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。