ESP-WROOM-02、MIDI over WiFi FOOT SWITCH
ルーパーを使ってみたくなり、iPod Touchがあるので試しにLoopyを使ってみようと思いフットスイッチを探してみた。iOS用としてはIK MultimediaのBlue Boardが最適だけど、たかがフットスイッチなのにちょっと高価と思ったので作る。
実現方法として、iOSのスイッチコントロール、over USB、over BLE、over WiFiを検討、現状はWiFiが良さそうと判断。そうこうしているうちに発売になったESP-WROOM-32ならば、BLEがいけそうだ、こちらの方が理想的。ESP-WROOM-02、元旦に注文したらなんと3日に届いた。
ケース
SilkRoad FS-103 |
樹脂製のケースにモーメンタリスイッチを使えば大きさの制限とかなくて簡単だけどそれらしいのを探してSilkRoadのFP-103というのを発見、980円で購入。
分解してケーブルと基板を外す。
回路
電源部 |
本体 |
ESP-WROOM-02は起動時に結構な電流が必要なようで(500mA位必要みたいなことがどれかのデータシートにあった)、いろいろ検討してみたが電池1個では起動は難しそうなので単4電池2個とした。
当然昇圧の必要があり、500mAだとすると少々足りないかもしれないEMH-7601を使ってみた。
スイッチはフォトリフレクタITR8307を使った。IF=20mAでの条件はあるが電池動作のためにGPIOを使って周期的にスイッチオンを検出するようにしたいのでGPIOの規格12mA以下にしたいのだけど目安にするための、IFに対してのライトカレントのグラフがない。
仕方がないのでカットアンドトライで。
PCB
1段目 |
2段目 |
かなりスペースがきついので2階建て。電池の位置がちょっと狭かったのとESP-WROOM-02のプルアップ、ITR8307のフットプリントを間違えてしまったが作りなおすのが面倒なので切り貼りで対応。
KiCadのESP-WROOM-02ライブラリは、以下を利用させていただいた。
https://github.com/jdunmire/kicad-ESP8266
ファームウェア
初めての ESP-WROOM-02、最初はArduno IDEを使ったけどPlatformIOが良さそうなのでこちらに切り替え。ESP-WROOM-02はライブラリが整ってるのでかなり簡単。ESP8266開発用以外に必要なライブラリは、
https://github.com/lathoub/Arduino-AppleMidi-Library
PlatformIO(Atomエディタ)のTerminalから、
pio lib install AppleMIDI
とコマンドを入力してインストール。すごい、便利。
レイテンシを考えるとアクセスポイントにしたほうがよいけどESP-WROOM-02のことをよく解ってないのでとりあえずステーションモードで。DNSを使うとどうも接続に時間がかかるし他の機器の接続がおかしくなったりしたのでスタティックアドレスにした。
ある程度うまく行ったところでOTAアップデートが出来るようにコードを加えた。
ホスト名は、WiFiで設定してもArdinoOTAの設定時に上書きされるようなのでこちらで設定。
ESP8266の理解、ライブラリの理解が足りずサンプルコードの切り貼りがほとんどでスイッチのオンオフ検出も大雑把なので必要がない部分、適切でない部分があると思う。
0 件のコメント:
コメントを投稿