Pythonが動くマイコンで遊んでみようと思いM5Stackを買いました。
M5StackはEspressif ESP32マイコン、ディスプレイ、SDカードスロット、ボタン、ブザーが搭載されており、かわいいプラスチックの筐体にパッケージされています。基板をむき身で持つよりずっと安心できますね。
製品ラインナップはマイコンが搭載される コア とセンサ機器を搭載する モジュール に分かれています。 モジュールにはコアの下側にスタックして接続するものとGroveコネクタにより接続するものがあります。
買ったもの
- M5Stack Fire (失敗!)
- M5Stack Gray
- M5Stack GPS Module
M5Stack Fire
M5Stack Fireはコアの一つで、標準のコアに9軸センサとPSRAMが追加されています。
メモリも多いし、9軸センサも載ってるし、バッテリ付きモジュールも同梱してるし、これは便利だと思ったわけですが罠がありました。同時に購入したGPSモジュールが動きません。
MicroPythonからGPSモジュールのUARTにアクセスするとリブートしてしまい、何故だろうと調べまくった結果、以下のことがわかりました。
- M5Stack FireのPSRAMは16番、17番ピンを使用 (回路図)
- GPSモジュールのUARTは16番、17番ピンを使用
おい嘘だろ…。
Yes port c is conflict with psram, so , because there are not enough serial to use. The psram doesn’t suggested a long wire extension, so if run not well, u can try to cut the pin of the bottom’s g16/17 pin, it will be okay
— M5Stack (@M5Stack) 2018年8月5日
カッとなったわたしはPSRAM未搭載の別のグレードであれば動くだろうと考え千石通商へ走り、M5Stack Grayを手に入れました。こちらは正常に動作。
開発環境の構築
MicroPythonを動かすには以下のツールが必要です。
UART VCPドライバのインストール
Macの人はbrewでインストールすると簡単です。
brew cask install silicon-labs-vcp-driver
esptoolのインストール
Macの人はbrewでインストールすると簡単です。
brew install esptool
adafruit ampyのインストール
brewで提供されていないのでpipでインストールします。
(Python2じゃないと動かなかったような気がする)
pip install adafruit-ampy
ファームウェアのインストール
esptoolがインストールされていれば以下の手順でインストールできます。 firmware.bin
はダウンロードしたファイルを指定しましょう。
esptool.py --chip esp32 --port /dev/cu.SLAB_USBtoUART erase_flash
esptool.py --chip esp32 --port /dev/cu.SLAB_USBtoUART write_flash --flash_mode dio -z 0x1000 firmware.bin
GPSモジュールを駆動するサンプルコード
Ambientさんのサイトで書かれていた M5StackでGPS衛星の現在位置を表示する をSDカードにGPSログを取得するよう改造して動かしました。 main.py
と micropyGPS.py
を同じディレクトリに置いたら次のようにファイルを転送します。
ampy -p /dev/cu.SLAB_USBtoUART put main.py
ampy -p /dev/cu.SLAB_USBtoUART put micropyGPS.py
M5Stackの側面についているボタンを短押しするとリセットされ、プログラムが実行されます。
改造後のコードはgithubに上げました。