M5Stackを買ってみた

明日から2週間くらい東海村に出張です。

都会っ子(自称)だけど大丈夫だろうか・・・


スイッチサイエンスのGW直前セールで10%オフになっていた
M5Stack Grayを買いました。シンプルなM5 Stackに9軸のセンサーがついてるようです。

f:id:Tmegane:20190511183618j:plain:w400
大吉。

開発言語

M5StackはArduino IDEを用いたArduino言語での開発と
組込み用のpython言語であるMicro pythonを使った開発が行えます。
Arduino IDEがそのまま使えるのはいいなーって思っていたのですが
考えてみたらmicro pythonはまだ使ったことがなかったので、そっちで試してみることに。

ドライバのダウンロード

M5stackの公式HPからドライバをインストールします。

www.m5stack.com

僕はmacユーザーなので、CP210X Drivermac版を選択してダウンロード。 無事に入ったらM5stackをPCに接続してターミナルで
ls /dev/tty.SLAB*と打ち、M5stackが認識しているかを確認します。
認識してなかったらUSBの向きを逆にして再びチャレンジ。こいつ、Type-Cなのに向きがある・・・

f:id:Tmegane:20190511183251p:plain tty.SLAB_USBtoUARTがいたら、ちゃんと認識できています。

ファームウェアの書き込み

Micropythonのファームウェアをインストールします。
ファームウェアはこちらのサイトからダウンロードできます。

github.com

とりあえず一番新しそうなm5cloud-20180516-v0.4.0.binってやつをダウンロードしました。
psramっていうのがついてるシリーズは、M5stack fireのようなメモリが増強されているやつ用だそうです。

続いてファームウェアを書き込むのに必要なモジュールをインストールしていきます。
pip3 install esptool
これを使ってM5stackへファームウェアを書き込みます。

インストールが無事におわったら、M5stackをPCと接続し
esptool.py --chip esp32 --port /dev/tty.SLAB_USBtoUART erase_flashと入力
これで今、M5Stackに書き込んであるファームウェアが消去されます。続いて
esptool.py --chip esp32 --port /dev/tty.SLAB_USBtoUART write_flash --flash_mode dio -z 0x1000 ~Path/m5cloud-20180516-v0.4.0.bin
と入力。~Path/の部分はこのbinファイルの入っているファイルパスを入力してください。

これでファームウェアの書き込みは完了。M5Stackが自動で再起動されます。

プログラムを書き込む

これでM5Stackをmicropythonで使う準備は完了です。
早速いろんなプログラムをM5Stackで動かしてみることにしましょう。

from m5stack import lcd
lcd.clear()
lcd.print("Hello World")

作ったプログラムはmain.pyという名前で保存し、adafruit-ampyというモジュールを使って
M5Stackへと転送します。adafruit-ampyが入っていない人はpipから
pip3 install adafruit-ampyをいれておきます。
M5Stackへのmain.pyの転送は、同じくmacのターミナル上で
ampy -p /dev/tty.SLAB_USBtoUART put main.py /flash/main.py
で転送できます。転送したらM5Stackを再起動させると、main.pyが自動起動します。

f:id:Tmegane:20190511184854j:plain:w400 まずは世界へと挨拶。
lcd制御関係の関数は、公式のreadmeを参考にしました。 github.com

続いて、適当な円を画面上に表示してみます

from m5stack import lcd
lcd.clear()

lcd.setColor(0xFFFFFF)

x=100
y=100
r=50

lcd.circle(x, y, r, 0xFFFFFF,0x00FF00)

x,yの位置が100,100のところに、半径50ピクセルの円を書きました。

f:id:Tmegane:20190511185225j:plain:w400

続いて、画像の表示をしてみます。mackeynote
640×480ptの適当な画像ファイルをつくり、img1.jpgという名前で保存します。 f:id:Tmegane:20190511185701p:plain

作ったらmain.pyを次のように書き換え。

from m5stack import lcd
image="img1.jpg"
led.clear()

lcd.image(lcd.CENTER,lcd.CENTER,image,1,lcd.JPG)

画像を表示したい時は、main.pyだけでなく表示したい画像もM5Stack側に転送しておきます。 jpgファイルとbmpファイルに対応しているようです。pngはだめだった。

##プログラムの転送
ampy -p /dev/tty.SLAB_USBtoUART put main.py /flash/main.py
##画像ファイルの転送
ampy -p /dev/tty.SLAB_USBtoUART put img1.jpg /flash/img1.py

M5Stackを再起動してみるとこんな感じに。

f:id:Tmegane:20190511190156j:plain:w400

フルカラーで画像が表示されるのは気持ちいいですね。

とりあえず今日はココらへんまで。
出張がおわったら、もうちょい色々と遊んでみることにします。