TouchMIDI30key

Created Date: 2021-02-06/ updated date: 2021-05-09
Owner & Collaborators
License
Summary
TouchMIDI30keyは、鍵盤と同じ配列に並べられた30個の静電タッチセンサを操作することで、MIDI Note On/Off情報をUSB MIDIを通して出力できる電子基板です。PCと接続することで、この基板一枚で超小型のUSB MIDI keyboardとして機能します。音楽製作時のDAWへの打ち込みに、ソフトシンセの簡単な発音チェック用に最適な基板です!

Materials

    Tools

      Blueprints

        Making

        • TouchMIDI30keyの特徴について紹介します。
          • 一枚の基板の中に、ATmegaマイコンと三つの静電センサーのICを搭載。MIDI Controllerとして必要な機能を詰め込みました。
            基板のサイズは 165mm × 26mm です。
          • TouchMIDI30key にさらに別の機能を追加したいのであれば、本ボードにArduinoのブートが書き込まれているので Arduino IDE上で、Arduino Leonardoとして開発ができます。また、出荷時に書き込まれているファームウェアも公開しています。
          • 基板上には、J6からUARTシリアル入出力が、J7からI2Cが割り当てられています。ファームウェアから、これらの端子を自由に利用することが可能です。
            このボードは、いわば静電タッチ機能付きの Arduino Leonardo です。
        • 商品には、右の写真の部品が同梱されています。
          まず、同梱されているLEDと専用スタンドを取り付けます。その後、USBケーブルでPCと接続すれば使用出来ます。
          • 同梱されている3つのLEDを基板にハンダ付けします。

            D1が赤、D2/D3が緑です。LEDの長い方の足(アノード側)を丸い穴に、短い方(カソード)を四角い穴に挿してください。逆に挿すと点灯しないのでご注意ください

          • 写真のように3Dプリントによるスタンドを、左右それぞれ同梱したタッピングネジで留めます。
          • micro USB端子を持つUSBケーブルを用意してください。
            このケーブルでTouchMIDI30keyとPCを直接接続します。

            なお、赤いLEDの点灯は、TouchMIDI30keyに電源が入っていることを表しています。またUSB MIDIのメッセージを発したときに赤LEDが一瞬点滅するので、メッセージが送られているかどうかの判断ができます。
          • TouchMIDI30keyをPCとUSBで繋ぐことで、PCにMIDIデータを送信できます。
            この状態で、例えば Mac の GarageBand を立ち上げると、選ばれた音色を鳴らすことができます。他にも、PCでMIDI受信できるアプリなら、何でも鳴らすことができます。
          • タッチセンサは、キーボード風に配置された25鍵分と、その上段に5つの合計30個あります。

            25鍵のタッチセンサはそのまま、キーボードの鍵盤として機能します。
            上段の真ん中の3つのスイッチはベロシティが3段階に切り替わります。(ベロシティ値は60/100/127に固定)
            また、上段左右のスイッチは、オクターブの設定が出来ます。上下2オクターブ変化させることができます。LEDの点滅スピードでオクターブの設定状況が把握できます。
          • 基板むき出しの製品ですので、導通するものに触れるとショートする可能性があります。使用の際は、ショートさせないように注意してください。
            なお、回路にはヒューズを搭載していますので、過電流が流れても多少の保護となるような配慮はしております。
          • 開発中に使っている範囲では静電センサの動作に特に問題は発生しておりませんが、もともと静電センサは非常に繊細で感度の設定が難しいデバイスですので、正常に動作しない可能性があります。

            その際は、いくつかの方法(指以外の導電体など)で動作を試していただいた上で、全く反応しないようなことがあれば、私まで連絡いただければと思います。
        • 本製品のファームウェアを公開しています。Arduino IDEでロードしてプログラム開発ができますので、使用目的に合わせて、独自に改変して利用いただいて構いません。
          ここでは、公開しているファームウェアに関する情報をいくつかご紹介いたします。
        • ファームウェアの書き込みのために、書き込み機をまず用意していただく必要があります。書き込み機の紹介と、Arduino IDEからの書き込み方法を紹介します。
          • Pro Microと呼ばれるボードを購入します。ATmega32U4, Leonardo などのキーワードがあれば、そのボードで問題ありません。

            この基板を利用して、書き込み用のISP端子を引き出します。
            写真は、私が自作した書き込み機です。
          • Arduino IDE上で開発したファームウェアを実機に書き込みます。
            接続後、ツールメニューのシリアルポートで、適切なデバイスに繋がっているか確認してください。
            書き込みの際は、矢印ボタンではなく、スケッチメニューの「書込み装置を使って書き込む」を使ってファームの書き込みを行ってください。
        • ここでは、私の確認用に、また興味のある方への紹介を兼ねて、TouchMIDI30keyの製造、チェック方法について記載します。
          • ガーバーデータを基板製造サービスのサイトにアップロードし、基板を発注します。今回販売している基板は、SeeedのFusionPCBというサービスを利用しています。
            また、必要な電子部品を入手します。
          • リフローで基板に電子部品を実装します。
            ハンダクリームを塗って部品を載せた後、リフロー炉でハンダ付けをおこないます。

          • まずATmega32U4用のブートローダを書き込みます。
            1. Arduino IDEを立ち上げ、本体を書き込み機に接続し、書き込み機をPCとUSB接続します。
            2. ボードを「Arduino Leonardo」に、シリアルポートも書き込み機を指定します。
            3. ツールメニューの下の方で、書込装置を「Arduino as ISP(ATmega32U4)」に設定します。
            4. ツールメニューの一番下の、「ブートローダを書き込む」を行います。
          • デバッグ、動作確認用に、I2C端子(J7)にAdafruitの8*8 LED Matrixを接続します。
            次に、J2端子にピンを立てて、書き込み確認用のLEDを、ピン側がアノードになるように接続します。

            また最初にファームを書き込む際、configuration.h のSETUP_MODE を 1にしておきます。
            上の「ファームの書き込み」の手順に従い、最新ファームを書き込みます。書き込み直後、8*8LED Matrixには「7」が表示されます。これは3つの静電センサがまだ設定されていないことを表します。
          • Cypress CY8CMBR3110チップに対して、本製品用の設定を書き込みます。三つチップがあるので3回行います。

            まず、JP1にハンダを盛って導通させます。
            ここでUSBを接続し電源を入れると、U2への設定書き込みが行われます。他の2つのICはエラーになるので、エラーLEDがしばらく点灯した後、3回点滅します。
            その時、8*8LED Matrixには、「6」が表示されるはずです。(2+4)

          • 次に、JP2にハンダを盛って再度電源を投入。
            同様にエラーLEDがしばらく点灯した後、3回点滅し8*8LED Matrixには「4」が表示されます。

            最後に、JP3にハンダを盛り、電源を入れ直します。
            この時点でエラーは無くなるので、書き込み後、エラーLEDは3回点滅し、8*8LED Matrixの表示は「0」になります。

            ここまで正常に終了したら、configuration.h の SETUP_MODE を 0にして、再びファームを書き込みます。

            JP2に立てたピンを外したら基板完成。
          • 後で忘れそうなので、こちらに記録。

            上の通りJP0を導通させて電源投入し、電源切ってJP1を導通させて電源投入、また電源切ってJP2を導通させ電源投入、と3回同じことを繰り返します。

            プログラムをじっくり読めば分かりますが、CY8CMBR3110のI2Cアドレスは最初に 0x37 に設定されています。最初にJP0を導通して立ち上げた時に、静電センサの設定と同時にI2Cアドレスを 0x38 に設定します。

            次に立ち上げると、0x37 と 0x38 の二つのデバイスがあるので、0x37 のデバイスを認識したら、0x39 になる静電センサの設定を書き込みます。この繰り返しで三つのデバイスを設定します。
          • STLデータを3Dプリンタ用のアプリでプリント用のデータに変換し、3Dプリントします。
        Add Card Order

        References

          Usages

            Project comments