これは何?

TouchMIDI40の特徴について紹介します。

触るだけでMIDI出力します

写真のように、円周上に配置した端子と電極を繋ぐだけで、すぐにタッチ式のMIDI楽器を作ることができます。
タッチセンサは2,3mmの厚さでも反応するので、例えばアクリル板などの内側に銅箔テープなどを貼っておけば、触れたら反応するオブジェが製作できます!

赤い円形の基板です

普通の電気製品では一般的ではない赤い円形の基板にしてみました。これだけでも、ちょっと目を引きます。
サイズは直径8cmです。また取り付け用のネジ穴が5箇所あります。

CapSenseテクノロジー搭載

Cypress社のCapSenseテクノロジーによる静電タッチセンサーを搭載しています。

USB給電なので、電源の心配は要りません

USBバスパワーで動作するので、別途電源を用意する必要はありません。
PCとUSB接続するだけで、MIDI出力します。

Arduino IDEで開発できます

TouchMIDI40 にさらに別の機能を追加したいのであれば、本ボードにArduinoのブートが書き込まれているので Arduino IDE上で、Arduino Leonardoとして開発ができます。また、出荷時に書き込まれているファームウェアも公開しています。

I2C、UART、ポートの端子付き

基板上には、J6からUARTシリアル入出力が、J7からI2Cが、そして J3, J4 はその他の余った端子が割り当てられています。ファームウェアから、これらの端子を自由に利用することが可能です。
いわば、このボードは静電タッチ機能付きの Arduino Leonardo なのです。

使い方

実際にMIDI音源を鳴らすまでの使い方について説明します。

電極を取り付ける

写真は、TouchMIDI40を使って電極を取り付けた一例です。
このように、基板周辺の電極の端子と銅箔テープを導線で繋ぐことで、銅箔テープがタッチセンサになります。
タッチ部分はこのように銅箔テープを使うのが一番簡単ですが、導通する素材であれば何でも構いません。ただし面積は約1平方cm程度、また極力薄くしてください。
なお、導線は絶縁皮膜で覆われたポリウレタン線を使うといいでしょう。なるべく細いものを使用ください。

PCとUSB接続する

micro USB端子を持つUSBケーブルを用意してください。
このケーブルでTouchMIDI40とPCを直接接続します。

PCで音源を鳴らす

TouchMIDI40をPCとUSBで繋ぐことで、PCにMIDIデータを送信できます。
この状態で、例えば Mac の GarageBand を立ち上げると、選ばれた音色を鳴らすことができます。他にも、PCでMIDI受信できるアプリなら、何でも鳴らすことができます。

基板上のLED

基板の真ん中付近に、二つのLEDが実装されています。

D2は、電源が入ると緑に光り、USB信号が出力されるたびに点滅します。
D3は、エラー表示用の赤のLEDです。通常は光りません。

ISP端子を使ったファーム書き込み

J2に2×3のピンヘッダをハンダ付けすることで、ISP端子経由でファームウェアを書き込みできます。40個のタッチセンサ、I2C端子、UART端子、その他ポートを自由自在にお使いください。

使用上の注意


静電センサについて

静電センサの効き具合は、タッチ部の大きさ、材質、指との間隔、導線の距離など、多くの要素に影響されます。
したがって、この製品に任意のタッチスイッチを取り付けても正常に動作しない可能性があります。この場合、まずはタッチ部や導線の処理について調整してみてください。

一般的には、導線が短く細いほど安定し、スイッチ部は1平方センチの面積が最適なようです。

D3のLEDが点灯するとき

D3は、I2Cに繋がっているタッチセンサ用デバイスが正常にアクセスできない場合に点灯します。基板上の回路がショートしたりしていないか確認してください。

このLEDが点灯する状況が変わらない場合、奇楽堂までお問い合わせください。

<advanced>ファーム開発について

本製品のファームウェアを公開しています。Arduino IDEでロードしてプログラム開発ができますので、使用目的に合わせて、独自に改変して利用いただいて構いません。
ここでは、公開しているファームウェアに関する情報をいくつかご紹介いたします。

GitHubのリポジトリ

本製品のファームウェアのリポジトリを公開しています。

静電センサのテーブル作成方法

ファームウェアから、静電センサであるCY8CMBR3110に設定データを書き込むことができます。この設定データは、 i2cdevice.cpp の tCY8CMBR3110_ConfigData[] に記載されています。

また、この設定データは Cypress 社が提供する EZ-Click というアプリを使ってデータ作成できます。
データの最後にはチェックサムがあるため、作成後のデータの値を勝手に変えると、書き込み時にデバイスがエラーとなるのでご注意ください。

I2Cアドレスについて

TouchMIDI40には4つの静電センサのICが搭載されています。これらのICは、出荷前に I2Cアドレスを、0x38, 0x39, 0x3a, 0x3b に設定してあります。

<advanced>ファームの書き込み

ファームウェアの書き込みのために、書き込み機をまず用意していただく必要があります。書き込み機の紹介と、Arduino IDEからの書き込み方法を紹介します。

書き込み機の用意

Pro Microと呼ばれるボードを購入します。ATmega32U4, Leonardo などのキーワードがあれば、そのボードで問題ありません。
Amazonだと例えばこんな商品です。

この基板を利用して、書き込み用のISP端子を引き出します。
写真は、私が自作した書き込み機です。

書き込み用ファームの書き込み

Arduino IDEを用いて、書き込み機を書き込み機にするためのファームウェアを書き込みます。

接続や手順については、このサイトの記事を参考にしました。

TouchMIDI40と接続

TouchMIDI40に付属の2×3ピンヘッダをハンダ付けし、書き込み機とケーブルを繋ぎます。ちなみにISPを接続するケーブルはこちらで購入できます。

TouchMIDIのファームを書き込み

Arduino IDE上で開発したファームウェアを実機に書き込みます。
接続後、ツールメニューのシリアルポートで、適切なデバイスに繋がっているか確認してください。
書き込みの際は、矢印ボタンではなく、スケッチメニューの「書込み装置を使って書き込む」を使ってファームの書き込みを行ってください。

<advanced>ボードの設計データ

各種、設計用のデータを置いておきます。

回路図

KiCadで製作した回路図はこちら。

BOM

BOM(部品リスト)はこちら

<advanced>製造覚書

ここでは、私の確認用に、また興味のある方への紹介を兼ねて、TouchMIDI40の製造、チェック方法について記載します。

基板発注と部品入手

ガーバーデータを基板製造サービスのサイトにアップロードし、基板を発注します。今回販売している基板は、SeeedのFusionPCBというサービスを利用しています。
また、必要な電子部品を入手します。

リフロー

リフローで基板に電子部品を実装します。
写真はハンダクリームを塗った後と、部品を載せている途中の様子です。

リフロー後、基板の裏側のUSBコネクタ部の4つの穴にハンダを盛って、コネクタがもげないよう補強をしておきます。(若干気持ちの問題)

ブートローダの書き込み

まずATmega32U4用のブートローダを書き込みます。
  1. Arduino IDEを立ち上げ、本体を書き込み機に接続し、書き込み機をPCとUSB接続します。
  2. ツールメニューで、ボードをArduino Leonardoに、シリアルポートを接続したボードに設定します。
  3. ツールメニューの下の方で、書込装置を「Arduino as ISP(ATmega32U4)」に設定します。
  4. ツールメニューの一番下の、「ブートローダを書き込む」を行います。

ファームの書き込み

デバッグ、動作確認用に、I2C端子(J7)にAdafruitの8*8 LED Matrixを接続します。

また最初にファームを書き込む際、configuration.h の SETUP_MODE を 1にしておきます。

上の「ファームの書き込み」の手順に従い、最新ファームを書き込みます。書き込み直後、8*8LED Matrixには「15」が表示されます。これは4つの静電センサがまだ設定されていないことを表します。

タッチセンサの設定1

Cypress CY8CMBR3110チップに対して、本製品用の設定を書き込みます。四つチップがあるので4回行います。

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

タッチセンサの設定2

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

さらに、JP3にハンダを盛り、電源を入れ直すと、8*8LED Matrixに8が表示されます。

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

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