M5StackでMicroPython
M5StackをMicroPythonで使う場合
- M5Flow
- M5Stack Micropython Base Lobo MicroPython
- M5Cloud
のファームを使う方法あります。これらのファームにはデバイスのドライバーも含まれているので、特別な準備をすることなくハードウェアが使えるはずです
ただ、これらはMicroPythonのバージョンが古く、最新のMicroPythonを使いたい場合には困ってしまいます。
そこでGENERICのMicroPythonでデバイスが使えないかを試してみたいと思います。
MicroPython v1.18 on 2022-01-17; ESP32 module with ESP32
開発環境
Thonnyを使うと、ファームの書き込みもらくちんです。optionから
install or update firmware
を選択し、ファームウェアを書き込みます
LCDに表示する
こちらの記事を参考にさせていただきました
https://qiita.com/tab4moji/items/e669deeb2efb5ff2c775
M5StackのLCDは幸いにもVSPIに接続されていました
(余談ですがM5StampとかAtomLiteとかは、ハードウェアSPIがピンに割り当てられてなかったりするので不便です)
https://micropython-docs-ja.readthedocs.io/ja/latest/esp32/quickref.html#hardware-spi-bus
https://docs.m5stack.com/en/core/basic
コードの修正
ライブラリの ili9341.py
に一部修正が必要です。
SPIにwriteするときdataが0の時があって ValueError: buffer too short
が出るのを防ぎます
def _data(self, data):
self.dc.value(1)
self.cs.value(0)
if data:
self.spi.write(data)
self.cs.value(1)
import ili9342c
color565 = ili9342c.color565
from machine import Pin, SPI, SoftSPI
#spi = SoftSPI(miso=Pin(19), mosi=Pin(23, Pin.OUT), sck=Pin(18, Pin.OUT))
spi = SPI(2, baudrate=40000000)
display = ili9342c.ILI934X(spi, cs=Pin(14), dc=Pin(27), rst=Pin(33), bl=Pin(32))
c = color565(0,10,0)
#display.fill_rectangle(10,10,100,100,c)
display.fill(c)
count=0
while True:
count += 1
display.text(f"Hello,World! {count}", 16, 128)
ライブラリに渡すspiをSoftSPIにすると速度の違いを確認できると思います。
文字を表示させるぐらいなら十分使えそうです。