M5StickC で MicroPython を使う

最終更新日

RPi Pico や micro:bit で Micropythonが動いたので、M5StickCでも試す。

micro:bit で python が使えるようになった

micro:bit で python が使えるようになった

2019.12.15


Raspberry Pi Pico が来た

Raspberry Pi Pico が来た

2021.04.14

firmware の書き換え

公式の UIFlow もいいけど、なるべき他の機種とバージョンを揃えたいので、ESP32のfirmware を利用する

MicroPython用firmware

2021.05.14 時点では、 以下が最新だったので利用する。

  • esp32-20210429-unstable-v1.15-22-ga708848b0.bin

なお、今回のM5StickCのserialコンソールは、 /dev/tty.usbserial-C55295C045

firmware の書き込み

M5Stick本体は、いつものように、 G0GND をショートして書き込みモードにする。

esptool.py を利用する。

まずは削除

$ esptool.py --chip esp32 --port /dev/tty.usbserial-C55295C045 erase_flash
esptool.py v3.0
Serial port /dev/tty.usbserial-C55295C045
Connecting.....
Chip is ESP32-PICO-D4 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, Embedded Flash, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: d8:a0:1d:51:01:24
Uploading stub...
Running stub...
Stub running...
Erasing flash (this may take a while)...
Chip erase completed successfully in 6.7s
Hard resetting via RTS pin...

書き込む

$ esptool.py --chip esp32 --port /dev/tty.usbserial-C55295C045  write_flash -z 0x1000 Downloads/esp32-20210429-unstable-v1.15-22-ga708848b0.bin 
esptool.py v3.0
Serial port /dev/tty.usbserial-C55295C045
Connecting........_
Chip is ESP32-PICO-D4 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, Embedded Flash, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: d8:a0:1d:51:01:24
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Compressed 1469200 bytes to 953181...
Wrote 1469200 bytes (953181 compressed) at 0x00001000 in 85.6 seconds (effective 137.2 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

確認

M5StickC を手動で電源ON/OFFしてからampy で、内容を確認

$ ampy  -p /dev/tty.usbserial-C55295C045 ls
/boot.py

対話モードで確認

$ screen /dev/tty.usbserial-C55295C045 115200
MicroPython v1.15 on 2021-04-29; ESP32 module with ESP32
Type "help()" for more information.
>>> print("ok")
ok
>>>

LCD のドライバ

ドライバファイル ST7735.py をM5StickC 上にPUTする。

$ ampy -p /dev/tty.usbserial-C55295C045 put ST7735.py 

font

$ ampy -p /dev/tty.usbserial-C55295C045 put sysfont.py

fontファイル sysfont.py をM5StickC 上にPUTする。

電源管理

$ ampy -p /dev/tty.usbserial-C55295C045 put axp192.py 

sample プログラム

m5stickc.py

from machine import Pin, I2C, SPI
from axp192 import AXP192
from ST7735 import TFT
from sysfont import sysfont

i2c0 = I2C(0, scl=Pin(22), sda=Pin(21), freq=400000)
axp = AXP192(i2c0)
axp.setup()
lcd = TFT(SPI(1, baudrate=27000000,
              polarity=0, phase=0, bits=8, firstbit=SPI.MSB,
              sck=Pin(13), mosi=Pin(15), miso=Pin(36)), 23, 18, 5)
lcd.initg()
lcd._size = (80, 160)
lcd._offset = bytearray([26, 1])
lcd.invertcolor(True)
lcd.rgb(False)
lcd.rotation(2)
lcd.fill(TFT.BLACK)
lcd.rect((1, 1), (78, 158), TFT.BLUE)
lcd.line((1, 124), (78, 124), TFT.CYAN)
lcd.fillrect((2, 140), (77, 28), TFT.CYAN)
lcd.text((8, 42), 'MicroPython', TFT.WHITE, sysfont)
lcd.text((8, 62), 'M5StickC', TFT.WHITE, sysfont)

実行

$ ampy -p /dev/tty.usbserial-C55295C045 run m5stickc.py

Arduinoのに比較するとドライバが少ないし、機能も十分とはいえないけど、 G0GND をショートさせなくてもプログラムが気軽に実行できるのはよい。

地道にドライバを探そう。

シェアする