Loopian::QUBITとは

Loopian::QUBITは、Loopian::ORBITの小型版として構想されました。
ORBITは大型のため、専用のスタンドの上でのみ使用できますが、QUBITは直径が半分以下の30cm。より気軽にLoopianデバイスを楽しめます。
以下に、Loopian::QUBITの特徴を挙げます。

小型で持ち運びも簡単

直径30cmのリング状の楽器。持ち運びも可能ですし、持ちながらの演奏も可能です。

NeoPixel搭載でフルカラー化

今回はLEDにNeoPixelを使用したので、フルカラーでの点灯が可能になりました。

静電センサーをQTouchに変更

これまでかなり長い間、CypressのCY8CMBR3110を使用してきました。この静電センサは非常に精度も信頼性も高かったのですが、一つの接点あたりOn/Offしか取っていませんでした。アナログ値を取ろうとしたのですが、基本的にデバッグ用でしか提供されておらず、読み込み時間がかかるため断念。
今回は、AtmelのQTouchシリーズであるAT42QT1070というチップを使用します。サイプレスに比べ機能や精度は劣るものの、アナログ値がすぐに取れるため、今回このチップを試してみることにしました。

利用用途の拡大

Loopianは、これまで誰でもピアノを弾けた気分になる楽器というコンセプトで製作してきました。
Loopian::QUBITは、アナログ値を取ることができるので、このコンセプト以外にももう少し新しい表現にもトライしてみようと思っています。

部品の入手

以下の主要な電子部品、機構部品を入手します。(SMDのコンデンサ、抵抗などは省略)

30AWGのワイヤー

以下を購入
https://amzn.asia/d/eTR4jWi

AT42QT1070

7chの静電センサー用IC。16個必要です。

TCA9544A

I2Cデバイスを4分配するIC。4個必要です。

PCA9600D

I2Cのバッファ。1箇所です。

NeoPixel SK6812RGBW

こちらから購入。96個必要です。

バネ

直径5mm、長さ10mmのバネを購入。全部で32個必要です。

有機ELディスプレイ 0.95インチ for 2025

こちらから購入。

74AHCT1G125

NeoPixelへの信号を5v駆動するために使用。

Seeed XIAO RP2350

マイコンボードはSeeed XIAOを使用します。

OLEDディスプレイ for 2026

2026版は白黒にして、こちらから購入。

基板設計&製作

以下の3種類の電子基板を設計および製造、そして部品のハンダ付けします。

LED Boardの設計

図のようにKiCadにて、LED Boardを設計・製造します。6つのNeoPixelを繋げ、5Vで駆動するための端子を備えます。

LED Boardの製作

NeoPixelと0.1μのコンデンサを、リフロー炉を使ってハンダ付けします。

Sensor Boardの設計

図のようにKiCadにて、Sensor Boardを設計します。
AT42QTを使って、6つの静電センサと繋げます。電圧は3.3Vです。

Sensor Boardの製作

AT42QTと0.1μのコンデンサを手ハンダします。

Connector Boardの設計

図のようにKiCadにて、Connector Boardを設計します。I2Cを分配するTCA9544Aを使用して、4箇所のSensor BoardのI2Cと接続しています。

Connector Boardの製作

Connector Boardは、TCA9544Aが搭載されたもの(以下9544Board)と搭載しないもの(以下Non9544Board)、二種類製作します。
9544Boardは、9544と0.1μのコンデンサ、4.7kの抵抗をR1-R8に、それぞれ手ハンダした上で、JP3,5,7,9の1-2を導通、JP4,6,8,10を導通させます。
Non9544Boardは、JP3,5,7,9の2-3を導通させます。
下の「Connector Board JP接続表」も参照してみてください。

MCU Boardの設計

全体のセンサーの値を読み取り、NeoPixelを点灯させ、MIDIを送信するためにSeeed XIAOをマイコンボードとして使用します。これを搭載するためのMCU Boardを設計、製作します。
これは全体で一つのみ作ります。
回路図はこちらです。

MCU Boardの製作

MCU Boardに部品を手ハンダしていきます。
DCJack, 三端子レギュレータ、および周辺のデバイス、さらに、Seeed XIAO, OLED, tact Switch, 74AHCT1G125などを取り付けます。

MCU Board2の設計 for 2026

MCU Boardを再設計しました。
基本的にはほとんど変わりませんが、5V電源を外部に繋げ、大電流に対応できるようにしたり、表示器をI2Cのモノクロのものに変更しています。

MCI Board2の製作

写真のように各パーツをハンダ付けします。

3D Printによる部品製作


inner sensor holder

PLA白のフィラメントでこのデータをプリントします。16個必要です。

outer sensor holder

PLA白のフィラメントでこのデータをプリントします。16個必要です。

bed

PLA黒のフィラメントでこのデータをプリントします。8つ必要です。

tube

透明のPETGのフィラメントでこのデータをプリントします。8つ必要です。
PETGで印刷する際は、フィラメントをセットする際の温度を250℃にします。
印刷する際、インフィルのパターンをConcentricに設定し、サポート材を有効にします。

MCU Board Box

PLA黒のフィラメントでこのデータをプリントします。8つ必要です。

MCU Board2 Box

MCU Board2用に新しい3Dプリント用データを作りました。

first bed

MCU Board2 Box と繋げる bed です。

Sensor Unitの製作

6つの透明電極を使った静電センサと、6つのNeoPixelをひとつの部品にしたSensor Unitを製作します。本デバイスのタッチとLED光の動作を決定する重要な部品ですので、取り付ける前に動作チェックをしながら慎重に進めていきます。

Sensor Boardの取り付け

Sensor Boardをouter sensor holderにM2×6mmの皿ネジで取り付けます。
余っているリード線の先端を曲げ、そこにハンダを盛って透明電極との接点を作り、そのリード線のもう片方の端を、outer sensor holder の6箇所の小さな穴を通して、Sensor Boardにハンダ付けします。

LED Boardの取り付け

NeoPixelを取り付けたLED Boardの裏面の端子にケーブルをハンダ付けします。
J1: 5v(赤), J2: Ground(黒), J3: signal input(白), J4: signal output(緑)
signalの白と緑はAWG30の細い線を使います。
LED Boardの配線をinner sensor holderの二つの穴に通し、inner sensor holderとLED Boardを接着します。
Groundのケーブルは17mmくらいで切断し、先端の被覆を剥いておきます。

innerとouterの仮止め

innerの裏側の6つの穴に四角ナットを入れ、ケーブルを穴に通しながらouterの中に配置します。outerの両側にある穴から、M3×8mmの非金属の皿ネジで6箇所仮のネジ止めをします。

透明電極の取り付け

透明電極の切り出す線が描いてあるファイルをプリントアウトし、透明電極をプリントした紙の上に貼ります。線に合わせて、透明電極をカッターで切り出します。
その後、切り出した透明電極を真ん中で折り、innerとouterの間に挟み込みます。電極の太い方をouterの外周側に、細い方を内周側に6枚差していきます。
電極を折った場所が同じ位置になるように調整して、innerとouterを留めているネジを強く締め込み、電極を固定します。

電極のチェック

各透明センサーが正常に電極と繋がっているか、テスターを使ってチェックします。
必要に応じてリード線による接点の調整を行います。

ケーブルのはんだ付け

innerにはんだ付けしたGND(黒)を Sensor BoardのJ2端子にハンダ付けし、さらに同じJ2端子にもう一本のGNDケーブルをハンダ付けします。
また、Sensor Boardの以下の端子にケーブルをハンダ付けします。
J1: 3.3V(赤)、J4: SCL(黄)、J3: SDA(青)
30AWGの細い線を使います。
GNDと、3.3Vは近接しているので、ハックルーで絶縁しておいたほうが良いでしょう。

Sensor Unitの動作チェック

6つの接点と6つのNeoPixelが正常に動作するかをチェックします。

ケーブルを仮ベッドの穴に通す

bedの突起にバネをとりつけ、センサー側のケーブルをバネの内側にある穴に通していきます。青黄緑白をひとまとめに、赤黒をひとまとめにして穴に通します。

Tubeの取り付け

PETGで印刷したTubeを、センサーを押さえ込むようにbedに取り付け、両横のネジ穴から透明のネジ(3×10皿)で固定します。

配線して動作チェック

ケーブルをマイコンと接続して、動作チェックします。
赤: 5V
赤: 3.3V
黒: GND
白: NeoPixel
黄: I2C SCL
青: I2C SDA
動作チェック時は、constants.h の #define TEST_MODE のコメントを外してビルドし、マイコンに書き込んでおきます。

bedの組み立て

黒でプリントしたbedを連結し、図のようにConnector Boardを配線していきます。なお、この図は上から見た図であり、裏側から基板を見た場合、方向が逆になることに注意してください。

bed同士をネジ止めする

3×10mmの黒タッピングネジで、3Dプリントした部品のbed同士を両横からネジ止めしていきます。8個ねじ止めすると円になります。

四角ナットの装着

上側の両内側に窪みがあるので、そこに四角ナットを挿入していきます。
窪みにはあらかじめ接着剤を塗っておき、挿入する四角ナットが落ちないようにしておきます。

裏側にConnector Boardをネジ止めする

Connector Boardをネジ止めします。
Connector Boardは、9544BoardとNon9544Boardの2種類があります。この2種類の基板が交互になるように配置します。
導通しないワッシャーを入れて3×8mmのタッピングネジでねじ止めした後、隣り合うConnector Boardの両端にある端子をリード線でハンダ付けし、電気的に繋げます。ただし、7枚目の9544Boardと8枚目のNon9655Boardの7pin,8pin、それから8枚目と1枚目の9544Boardは、7pin,8pin は繋ぎません。

Connector Board接続方法

裏側から見て、基板の順番は右回りとなります。
  1. 4つの9544Boardのうち、右回りに(JP1,2): off,off -> on,off -> off,on -> on,on となるように配置します。
  2. 9544Board/Non9544Boardともに、JP13は基本的に繋ぎます。8枚目は繋がず、あとで端子の片方をMPUBoardと繋ぐことになります。

Connector Board JP接続表

Connector BoardのJP Swを文章で書くとややこしいので、表にまとめてみました。

Sensor Unitの取り付け

Sensor Unitと、tube、bedを組み立てます。

Sensor Unitのケーブルを通す

まずbedの突起に5×10mmのバネを挿しておきます。それから、Sensor Unitのケーブルを、bedの穴に通しながら、Sensor Unitをbedのバネの上に置いていきます。

tubeを上から被せる

センサーを真上から均等に押さえ込むように、PETGで印刷したtubeを bedに押さえ付け、両横のネジ穴から透明のネジ(3×10皿)で固定します。

ケーブルをはんだ付けする

穴から出ているSensor Unitのケーブルを、近くの端子にはんだ付けします。
まず、ストリッパーで皮膜が取れる程度に、ケーブルを2cmくらいに切断します。
それから4本のケーブルは左回りに、緑、白、黄、青の順に、3本のケーブルは左回りに5v赤、3.3v赤、黒の順にはんだ付けします。

動作チェック

最後に動作チェックします。
constants.h の MAX_KAMABOKO_NUM の値は、最終的には 16となります。
もし半周分まで作ったなら8にします。90度分なら4にして、動作チェックします。

MCU Board Boxの接続

MCU Board BoxとQUBIT本体を配線します。
2025版は写真のように分離してケーブルで繋ぐことにしましたが、2026版は、MCU Board Boxは本体と一体化します。以下では一体版について説明します。

MCU Board用カバーとBedの3Dプリント


ファームウェアについて for 2025

ファームウェアはここにあります。
以下にファームウェアの特徴などを記しておきます。

Arduino IDEで動作

Arduino-pico(Raspberry Pi Pico/RP2040/RP2350 by Earle F.Philhower,III) をインストール。ボードは"Seeed XIAO RP2350"を選択
USBはAdafruit_TinyUSBを選択

ライブラリは
Adafruit_TinyUSB
RPI_PICO_TimerInterrupt
Adafruit_SSD1331
MIDI Library

PIOでSK6812のNeoPixel制御

Whiteも含む4色分のNeoPixelのシリアル出力は、RP2350のPIO機能を使って、プログマラブルなハードウェアにて実現しており、その分、プログラム処理が軽量になっているはずです。

Core1でI2C処理


Arduino::APPと連携して動作


ファームウェアについて for 2026

新たに開発しなおしたファームウェアはこちらです。

Rust & Embassy で動作