3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

本家 MicroPython の M5ATOM 対応

Posted at

いつのまにか、本家 MicroPython の github に esp32 ポートのボードに M5 Atom が追加されていたので、最新ソース(2021年8月22日)をビルドして試してみました。

ビルド

ESP-IDF 環境の用意(v4.0.2を使う場合)

以下に従って ESP-IDF 環境を用意

MicroPython コードのフリーズ(コンパイル)環境ビルド

$ cd micropython  # MicroPython のソースコードのフォルダ
$ make -C mpy-cross

M5 Atom 用ファームウェアのビルド

$ cd ports/esp32
$ make submodules
$ make BOARD=M5STACK_ATOM

ファームウェアの書込み

$ make PORT=<Atomが繋がっているシリアルポート> erase
$ make PORT=<Atomが繋がっているシリアルポート> BAUD=<ボーレート> deploy

※ PORTのデフォルトは /dev/ttyUSB0 、BAUDのデフォルトは 460800

GENERIC ビルドとの違い

ビルド済みで配布されているファームウェアとの違い

以前より M5 Atom ではビルド済みで配布されているESP32用のGENERICファームウェアが使えます。M5 Atom 対応で変わったところをざっと調べてみたところ atom モジュールの追加だけのようです。

atom モジュールには GPIO ピンの定数定義、Matrix と Lite のクラスが追加されており、ボタンとLEDの利用が若干便利になっています。

モジュール atom

定数

`WS2812_PIN`
フルカラーLED(Neopixel)が繋がっているピン番号(27)
`BUTTON_PIN`
ボタンの繋がっているピン番号(39)
`IR_PIN`
IRトランスミッターの繋がっているピン番号(12)
`I2C0_SCL_PIN`
I2C の SCL に使うピン番号(21)
`I2C0_SDA_PIN`
I2C の SDA に使うピン番号(25)
`GROVE_PORT_PIN`
Grove ポートに使われているピン番号のタプル (26, 32)

クラス Matrix

コンストラクタ
引数なし。LED数が25個で設定される。
メソッド `get_button_status()`
ボタンが押されていなければ 1、押されていれば 0 を返す
メソッド `set_button_callback(cb)`
引数 `cb` に指定した関数をボタンが押されたときに呼び出されるコールバック関数として設定する
メソッド `set_pixel_color(num, r, g, b)`
`num` (0-24)番目の LED に RGB 値を設定して実際に LED の点灯に反映する
メソッド `get_pixel_color(num)`
`num` (0-24)番目の LED に設定されちる RGB 値を取得する
メソッド `set_pixels_color(r, g, b)`
すべての LED に RGB 値を設定して実際に LED の点灯に反映する

クラス Lite

LED数が1にり、LED番号として指定できるのが 0 のみになる以外は Matrix クラスと同じ。

サンプル

ボタンを押すたびに 消灯→赤→緑→青 で全LEDが切り替わるサンプル。

from atom import Matrix

atom_matrix = Matrix()

led_pat_no = 0
led_pat_num = 4
led_pat = ((0, 0, 0), (127, 0, 0), (0, 127, 0), (0, 0, 127))

def atom_led_cb(pin):
    global led_pat_no
    led_pat_no += 1
    if led_pat_no >= led_pat_num:
        led_pat_no = 0
    atom_matrix.set_pixels_color(*led_pat[led_pat_no])

atom_matrix.set_button_callback(atom_led_cb)
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?