勉強しないとな~blog

ちゃんと勉強せねば…な電気設計エンジニアです。

M5Stamp LED制御動かす

M5Stamp続き。

やってみたこと

M5StampのLEDを動かしてみたいと思って、いくつかやってみた。

M5Stamp LEDについて

M5Stamp C3には、"programmable RGB LED (SK6812)"というのが付いている。

docs.m5stack.com

回路図を見ると、こんな感じで、電源とDOUT、DINの計4ピンだけが出ているシンプルなもの。
このDINが、ESP32-C3のGPIO2に接続されている。

SK6812を調べてみると、マイコン内蔵のRGB LEDとのこと。
NeoPixelというブランド名が付いている。

romly.com

秋月でも売られていて、データシートも確認できる。

マイコン内蔵RGBLED SK6812MINI(5個入): LED(発光ダイオード) 秋月電子通商-電子部品・ネット通販

サンプルプロジェクト

このLEDを動かせるサンプルがないか調べたが、2つ見つかった。

公式ドキュメントから

公式ドキュメントに、M5StackのGitHubリポジトリへのリンクがあった。

Arduino IDEから使うものと、ESP-IDFから使うものの2つがある。

github.com

ESP-IDF Examplesから

VSCodeでESP-IDF Examplesを見ると、前にも"blink"プロジェクトがあるのは見ていて、GPIOでHighLow制御するものだろうと思い込んでいたが、led_stripでの制御(WS2812(SK6812互換品)などが対象)を使うこともできるようだった。

プロジェクト設定のBlink LED typeで、単純なGPIOのものか、led_stripを使うタイプか、選択ができそう。

あと、ひとつ前の画像にあるが、"The led_strip is installed via component manager"と記載がある。自分でcomponent managerからのインストールが必要ということ?

ただ、このリンクからはどこにも飛べなかった。

led_stripのインストール?

"ESP-IDF Examples"ウィンドウの左上を見ると、"ID Component Registry"というリンクがあり、ここをクリックすると、同名のタブが開いた。

コンポーネントの検索ができて、とりあえずターゲットESP32-C3で検索すると、上のほうに"espressif/led_strip"というのが出てきた。

これを開いてみると、インストールできそうなボタンが見つかった。

"Install"ボタンを押してみたが、特に反応が見られない。

改めて上記ページを見ると、"To add this component to your project, "という文言があるので、コンポーネントの追加はプロジェクトごとになるよう。

ということは、サンプルプロジェクトを作ったら、そこに自動で入れてくれていそうな気がする。
ので、おそらくここでのインストールは不要と思う。

サンプルプロジェクト選択

公式ドキュメントからのサンプルのほうが、M5Stampに合わせた設定をやってくれていそうで、スムーズにいきそうな気がするが、ESP-IDF Examplesからのほうが、自分で設定が必要なので、理解が深まりそうに思う。

ので、後者のサンプルを使ってみる。

サンプルプロジェクト作成

今までと同様に進める。

作成直後はこんな感じ。

今度は、"component manager"のリンクをクリックすると、"idf_component.yml"のタブが開いて、"espressif/led_strip"の記述があった。
これをもとに自動でライブラリをダウンロードしてくれるのか?

サンプルプロジェクト設定

まず下記3点は今までと同様に設定する。

  • "ESP-IDF: Set Espressif device target"でターゲットを"esp32c3"に設定。
  • "ESP-IDF: Select port to use (COM, tty, usbserial)"でデバイス接続したCOMポートを指定。(デバイス接続しておく必要がある)
  • "ESP-IDF: Select Flash Method"で、書き込み方法を"UART"に指定。

最後のやつだけは、前回自分でコマンドを起動していなくて、書き込みの実行前にツールが出してきて設定待ち状態になった。
今回、あらかじめ設定しておいて、後のコマンド実行がスムーズになるようにする。

次、"ESP-IDF: SDK Configuration editor"コマンドで設定。
サンプルプロジェクトの設定を検索すると、LEDに関する設定が3つ出てきた。
ちなみに、設定項目の右の〇i をクリックすると、説明文が下に出てきた。

"Blink LED type"は、2通り出てきた。
デフォルトで"RMT-Addressable LED"になっていたので、そのままで。

それ以外、"Blink GPIO number"は、今回はGPIO2につながっているので、2にしておく。
"Blink period in ms"は、デフォルトの1000 (1秒周期で点滅)のままで。

これでSaveする。

ビルド、実行

"ESP-IDF: Build, Flash and start a monitor on your device"コマンドで。

ビルド成功、LEDも点滅した(^^)

コンソールにもメッセージ出てる。

以上

ちょっとずつM5Stampが分かるようになってるのでいい感じ。