これは何?

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

2オクターブのUSB MIDI Keyboard

銀色のタッチセンサーの電極が2オクターブ分配置された、タッチ式USB MIDI Keyboardです。

基板一枚の超小型・超薄型サイズ

一枚の基板の中に、ATmegaマイコンと三つの静電センサーのICを搭載。MIDI Controllerとして必要な機能を詰め込みました。
基板のサイズは 165mm × 26mm です。

3Dプリントによる専用スタンド付き

卓上に設置してすぐに使えるように、3Dプリントによる専用スタンドを同梱しました。

CapSenseテクノロジー搭載

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

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

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

Arduino IDEで開発できます

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

I2C、UARTの端子付き

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

作り方・使い方

商品には、右の写真の部品が同梱されています。
まず、同梱されているLEDと専用スタンドを取り付けます。その後、USBケーブルでPCと接続すれば使用出来ます。

LEDのハンダ付け

同梱されている3つのLEDを基板にハンダ付けします。

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

専用スタンドの装着

写真のように3Dプリントによるスタンドを、左右それぞれ同梱したタッピングネジで留めます。

PCとUSB接続する

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

なお、赤いLEDの点灯は、TouchMIDI30keyに電源が入っていることを表しています。またUSB MIDIのメッセージを発したときに赤LEDが一瞬点滅するので、メッセージが送られているかどうかの判断ができます。

PCで音源を鳴らす

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

各タッチセンサの機能

タッチセンサは、キーボード風に配置された25鍵分と、その上段に5つの合計30個あります。

25鍵のタッチセンサはそのまま、キーボードの鍵盤として機能します。
上段の真ん中の3つのスイッチはベロシティが3段階に切り替わります。(ベロシティ値は60/100/127に固定)
また、上段左右のスイッチは、オクターブの設定が出来ます。上下2オクターブ変化させることができます。LEDの点滅スピードでオクターブの設定状況が把握できます。

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

J5端子経由でファームウェアを書き込みできます。30個のタッチセンサ、I2C端子、UART端子を自由自在にお使いください。

使用上の注意


ショートしないように注意

基板むき出しの製品ですので、導通するものに触れるとショートする可能性があります。使用の際は、ショートさせないように注意してください。
なお、回路にはヒューズを搭載していますので、過電流が流れても多少の保護となるような配慮はしております。

静電センサの感度について

開発中に使っている範囲では静電センサの動作に特に問題は発生しておりませんが、もともと静電センサは非常に繊細で感度の設定が難しいデバイスですので、正常に動作しない可能性があります。

その際は、いくつかの方法(指以外の導電体など)で動作を試していただいた上で、全く反応しないようなことがあれば、私まで連絡いただければと思います。

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

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

GitHubのリポジトリ

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

I2Cアドレスについて

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

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

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

書き込み機の用意

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

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

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

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

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

TouchMIDI30keyと接続

ISPの各端子をJ5に接続します。

TouchMIDIのファームを書き込み

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

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

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

回路図

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

スタンドの3Dプリンタ用データ

 スタンドを3Dプリントで印刷するためのSTLデータはこちら。

<advanced>製造覚書

ここでは、私の確認用に、また興味のある方への紹介を兼ねて、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つの静電センサがまだ設定されていないことを表します。

タッチセンサの設定1

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

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

タッチセンサの設定2

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

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

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

JP2に立てたピンを外したら基板完成。

JP0-2を一つずつ導通させる理由

後で忘れそうなので、こちらに記録。

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

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

次に立ち上げると、0x37 と 0x38 の二つのデバイスがあるので、0x37 のデバイスを認識したら、0x39 になる静電センサの設定を書き込みます。この繰り返しで三つのデバイスを設定します。

スタンドの3Dプリント

STLデータを3Dプリンタ用のアプリでプリント用のデータに変換し、3Dプリントします。

USBケーブル接続による動作チェック

実際にUSB mini-B端子とPCをUSB接続し、MIDIが送信されることを確かめます。