stackchan-bluetooth-simple

日本語 | English

概要

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を見てください。

コンパイル時の注意

  • 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を指定(シリアルサーボの場合はRX)
      • y(Core1 21, Core2 32)
        Y軸のGPIOを指定(シリアルサーボの場合はTX)
    • offset
      サーボの軸が90°にしたときにズレを修正するパラメータ

      • x(0)
        X軸のオフセット値を設定
      • y(0)
        Y軸のオフセット値を設定
    • 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)
  • bluetooth

    • device_name(M5Stack_BTSPK)
      Bluetoothスピーカーのデバイス名を指定します。
    • starting_state(false)
      起動時にBluetoothモードにするかどうかを指定します。
    • start_volume(100)
      Bluetoothスピーカーの初期値を設定
  • auto_power_off_time(0)
    Core2のみ。USBの電源供給がOFFになったあと設定した時間が経過すると電源OFFになります。(0は電源OFFしない)

  • balloon
    吹き出しの設定をします。

    • font_language("JA")
      フォントの言語を指定します。"JA"か"CN"、指定しないとラテンフォントを使用します。
    • lyrics("こんにちは",”Hello”,"你好","Bonjour")
      ノーマルモード時にランダムで表示するセリフを設定します。最大10個まで。
  • led_lr
    GoBottom1/2で音量に対応してLEDが光るようになります。※ソースの書き換えとコンパイルが必要。

    • 0: ステレオ
    • 1: 左の音量のみに反応
    • 2: 右の音量のみに反応
  • takao_base
    Stack-chan_Takao_Baseを使用するかどうかの設定。(※現在対応しているのはCore2のみ)

  • servo_type
    サーボの種類を指定

    • "PWM": SG90系のPWMサーボ
    • "SCS": Feetech SCS0009 シリアルサーボ

使い方

  • BtnA
    Bluetoothモードに入ります。(bluetooth_mode = falseの時のみ有効)

  • BtnB
    音量を下げます。

  • BtnC
    音量を上げます。

Credit

LICENSE

MIT

Author

Takao Akaki