先日M5BurnerにアップしたファームウェアVer3.0では、Bluetoothスピーカーでの音割れ、ボタンタッチ音の音割れが確認されました。その為、ファームウェアVer3.1に更新しています。こちらの原因はESP32-A2DPライブラリが1.8.X系だとこの事象が起きてしまう可能性があり、暫定としてVer1.7.5に固定をしております。完全な検証はできていませんが、BluetoothA2DPSink_M5Speaker.hpp のビルドが上手く通らない(AudioToolsを利用する仕様に変更)という不具合に起因する可能性がありました。しばらくは
https://github.com/pschatzmann/ESP32-A2DP.git#v.1.7.5
を利用したいと思います。
また、併せてPlatformIOのライブラリ見直しも実施しました。ESP32-A2DP以外は最新版のライブラリで問題ありませんでした。(詳しくはPlatformio.iniをご確認ください)
アヲッコさんのリクエストを受け、LED 70弾に対応しました。また、その調整の過程において BluetoothA2DPSink_M5Speaker.hpp のビルドが上手く通らないという不具合を確認しました。bool is_i2s_output; を1行追加しています。久々の更新だったため、ライブラリの変更等があったのかも知れません。PlatformIOのライブラリ見直しも必要かと思います為、どこかで確認致します。
日本でM5Stack CORE2 Ver1.1が発売となり、チップセット構成が変わりました。そのため、ライブラリを最新の【M5Unified 0.1.11】に変更し、稼働対応しました。
オリジナルのエフェクトを追加しました。しかしながら…私自身プログラマではないため、洗練されたエフェクトコードは書けないっすwww
何か不具合等があれば教えてください。
起動時:RAINBOW ⇒ COMET ⇒ LARSON ⇒ CHASE ⇒ PULSE ⇒ STATIC ⇒ FILLIN ⇒ GLOW ⇒ STOROBE ⇒ SINEWAVE ⇒ RANDOM ⇒ TRIWAVE ⇒ NONE(一旦停止) ⇒ FADEINOUT ⇒ NANAIRO ⇒ MERAMERA ⇒ FIRE ⇒ BOUNCING ⇒ NONE(一旦停止) ⇒ RAINBOW…
スイッチサイエンス等で販売しているM5Stack純正部品 RGB LED STRIP (100cm/60LED) SK6812を用いて動作確認をしています。
Name | Range | AoE | Delay | Color | Looping | Direction | Description |
---|---|---|---|---|---|---|---|
FADEINOUT | N | N | N | Y | N | Y | LEDがフェードインアウトするエフェクト (色固定) |
NANAIRO | N | N | N | N | N | Y | LEDがフェードインアウトするエフェクト(七色順番に点灯) |
MERAMERA | N | N | N | N | N | N | メラメラと燃えるようなエフェクト |
FIRE | N | N | N | N | N | N | 炎が立ち上がるようなエフェクト |
BOUNCING | N | Y | N | Y | N | N | ボールが弾むようなエフェクト(ボールは3つ固定) |
※LoopingがNoであっても繰り返し動作します。
中央左側(青部)をタップすることで、LEDエフェクトを可変できるように修正しました。起動時の初期値はRAINBOWWAVEとし、タップ毎に下記順番で変化させることができます。
変更前のレイアウト | 変更後のレイアウト (LEDエフェクトボタン追加) |
---|---|
画面中央のサーボON/OFF機能、中央右側の顔(FACE)変更機能のボタンの大きさと配置を修正しました。
変更前のレイアウト | 変更後のレイアウト |
---|---|
Grove Port.BおよびPort.Cを用いてLEDユニットを増設しエフェクトさせるための記述を追加しました。必要な際にはmain.cppソース内の75~90行目(Port.B)、もしくは93~108行目(Port.C)のコメントアウトを外してご利用ください。
また、805行目のLEDの明るさ設定(FastLED.setBrightness)は細心の注意を払い数値設定してください。
※現在の設定は【30】としています。明るさ設定の行をコメントアウトしたり極端な高い値に設定しますと、利用するLEDの仕様により意図しない発熱やM5Stack本体への負荷が高くなり故障の原因となる場合がありますのでご注意ください。
稼働ハードウェアは【M5Stack Core2 for AWS】もしくは【M5Stack Core2+M5GoBottom2】を想定しています。
フォーク元となるrobo8080さんにより、音量が小さいままの問題が対策されました。そちらの修整部分を今回マージしています。
main.cppで1つ、NeoPixelEffectsで2つの警告メッセージが出ていたものを修正しました。
(関数非推奨となったところの修正、およびNULLの取扱い方を変更)
またNeoPixelEffects.h内で設定されるエフェクトを取り扱う変数名を【Effect⇒EffectType】に変更しました。
robo8080さんの『stackchan-bluetooth-simple』をフォークし、FastLEDライブラリ+NeoPixelEffectsを組み合わせました。
robo8080さんのソースは、タカオ(Takao)さんの スタックチャン Arduinoファームウェア『stackchan-bluetooth-simple』にレベルメーターやFaceチェンジ機能を追加したものです。(稼働ハードウェアはCore2、Core2 for AWSのみ)
robo8080さんが公開している現時点のソースは下記となります。
https://github.com/robo8080/stackchan-bluetooth-simple
タカオさんオリジナルソースは下記となります。
https://github.com/mongonta0716/stackchan-bluetooth-simple
どーもくん (C)NHK・TYO の画像を選択することができます。
- このソースを用いてVSCode+PlatformIO環境でビルドすると、M5Stack Core2 for AWS、またはM5Stack Core2にM5GoBottom2を追加し、Lチカ処理を直ぐに確認することができます。
(変更は下記並びにmain.cppソース内コメントをご確認ください) - Core2 for AWSやM5GoBottom2のLEDバーの使用するデータピンは【25】が用いられ、またLED球は10個搭載されています。
- Bluetoothモード時レベルメーターを表示できます。
- レベルメーター表示部にタッチすると、レベルメーター表示をON/OFFできます。
- レベルメーター表示OFFの時、画面下部にタッチするとバルーンで曲名を表示します。
- 画面右端の中央付近にタッチするとFaceを切り替えられます。
- 画面中央にタッチすると首振りを止めます。
Name | Range | AoE | Delay | Color | Looping | Direction | Description |
---|---|---|---|---|---|---|---|
COMET | Y | Y | Y | Y | Y | Y | LED光が尾をを引き設定範囲内を移動する流れ星エフェクト |
LARSON | Y | Y | Y | Y | Y | Y | LED光が設定範囲内を往復するエフェクト(ナイトライダー風) |
CHASE | Y | ? | Y | Y | N | Y | LEDを1つおきに交互に点滅させるエフェクト(工事現場風) |
PULSE | Y | N | Y | Y | Y | N | LEDがゆっくり全点灯、ゆっくり全消灯するフェードインアウトなエフェクト |
STATIC | Y | N | Y | Y | N | N | 同色がチラチラと点滅するキラキラ系エフェクト |
FADE | Y | N | Y | N | N | N | 設定範囲内でフェードアウトし、全消灯後停止 |
FILLIN | Y | N | Y | Y | N | Y | 端から1つずつ点灯し、最後は全点灯するエフェクト(繰り返し対応) |
GLOW | Y | Y | Y | Y | N | N | 設定範囲中央からぼんやりと端に向かい点灯後、中央に戻るエフェクト(ランダム) |
RAINBOWWAVE | Y | N | Y | N | N | Y | 動的レインボーグラデーションエフェクト |
STOROBE | Y | N | Y | Y | N | N | 設定範囲内でのストロボエフェクト(定期的に全LEDピカピカ) |
SINEWAVE | Y | N | Y | Y | N | Y | 設定範囲内のLED数だけ消灯しながら流れるエフェクト(COMETの逆イメージ) |
RANDOM | Y | N | Y | N | N | N | LED全部がランダムに点灯するパレード(パリピ)エフェクト |
TALKING | Y | N | Y | Y | N | N | ロボットのリップシンクのようなエフェクト |
TRIWAVE | Y | N | Y | Y | N | Y | LEDが1つずつ消灯しながら流れるエフェクト(COMETの逆イメージ) |
FADEINOUT | N | N | N | Y | N | Y | LEDがフェードインアウトするエフェクト (色固定) |
NANAIRO | N | N | N | N | N | Y | LEDがフェードインアウトするエフェクト(七色順番に点灯) |
MERAMERA | N | N | N | N | N | N | メラメラと燃えるようなエフェクト |
FIRE | N | N | N | N | N | N | 炎が立ち上がるようなエフェクト |
BOUNCING | N | Y | N | Y | N | N | ボールが弾むようなエフェクト(ボールは最大3つまで) |
NONE | N | N | N | N | N | N | エフェクトの停止 |
日本語 | English
FastLEDライブラリ+NeoPixelEffectsライブラリを搭載し、簡単にエフェクト機能を使えるようにしました。 M5Stack-AvatarをベースにシンプルにBluetoothスピーカー機能とスタックチャンのサーボコントロール機能をつけました。 M5UnifiedのexampleであるBluetooth_with_ESP32A2DPをベースに改造しています。
- VSCode
- PlatformIO
-
M5Stack Basic/Gray/M5Go
BasicはFlashメモリが16MBの機種のみです。 -
M5Stack Fire -
M5Stack Core2 / Core2 for AWSIoT
Arduino-ESP32は2.0.4(Fireのみ2.0.0)で動作確認しています。M5Stack Fireはarduino-esp32v2.0.4だと不具合があり起動しません。
詳しいバージョンについてはplatformio.iniをご覧ください。
-
NeoPixelEffects
NeoPixelEffectsに関してのcppファイル、hファイルは直接src以下に保存します。
-
M5Stack Fire V2.6/M5Stack Basic V2.6
TFカードを使用する際にSD.begin()を20MHz以上では読み込めない事象を確認しました。15MHzに下げています。 -
M5Stack Basic V2.6
VSCode+PlatformIOでコンパイルするときのenvはenv:m5stack-grey
を選択してください。
SDカードに設定用のYAMLファイルがないとデフォルト値を利用します。(PortAへサーボを接続する設定になっています。)
SDカードに/yaml/SC_Config.yaml
を配置すると自分の設定が利用できます。
2022/10/18にJSONからYAMLへ変更しました。JSONからYAMLへのコンバートはJSON から YAML コンバータにて可能です。
コメントの扱いが変わっているので注意してください。
詳しくはYAMLファイルを参照してください。
(カッコ内)は初期値
-
servo
-
pin
- x(Core1 22, Core2 33)
X軸のGPIOを指定 - y(Core1 21, Core2 32)
Y軸のGPIOを指定
- x(Core1 22, Core2 33)
-
offset
サーボの軸が90°にしたときにズレを修正するパラメータ- x(0)
X軸のオフセット値を設定 (私の場合はズレていて+9しています) - y(0)
Y軸のオフセット値を設定 (私の場合はズレていて+7しています)
- x(0)
-
speed
待機時とBluetoothスピーカーで音が出ているときの待機時間とサーボの移動時間を指定します。最小値と最大値で範囲を指定して、ランダムの値を使用します。- normal_mode
- interval_min(5000)
- interval_max(10000)
- move_min(500)
- move_max(1500)
- sing_mode
- interval_min(1000)
- interval_max(2000)
- move_min(500)
- move_max(1500)
- normal_mode
-
-
bluetooth
- device_name(M5Stack_BTSPK)
Bluetoothスピーカーのデバイス名を指定します。 - starting_state(false)
起動時にBluetoothモードにするかどうかを指定します。 - start_volume(100)
Bluetoothスピーカーの初期値を設定
- device_name(M5Stack_BTSPK)
-
auto_power_off_time(0)
Core2のみ。USBの電源供給がOFFになったあと設定した時間が経過すると電源OFFになります。(0は電源OFFしない) -
balloon
吹き出しの設定をします。- font_language("JA")
フォントの言語を指定します。"JA"か"CN"、指定しないとラテンフォントを使用します。 - lyrics("こんにちは",”Hello”,"你好","Bonjour")
ノーマルモード時にランダムで表示するセリフを設定します。最大10個まで。
- font_language("JA")
-
BtnA
Bluetoothモードに入ります。(bluetooth_mode = falseの時のみ有効) -
BtnB
音量を下げます。 -
BtnC
音量を上げます。