3 ポイント 投稿者 GN⁺ 2023-12-17 | 1件のコメント | WhatsAppで共有
  • USB-C MIDIシンセを12mm前後の基板に押し込んだ、CH32V003ベースのプロジェクトで、“smallest and worst” MIDIシンセサイザーシリーズの新たな実験
  • ハードウェアUSBを持たない48MHzのCH32V003に、CNLohrのrv003usbソフトウェアUSBスタックを載せてUSB-MIDIデバイスとして動作させている
  • 垂直実装のUSB-Cコネクタ、QFN MCU、SC-70レギュレータ、0603受動部品、圧電ブザーを圧電ブザーの直径内に収めることが最大の難題だった
  • 2層6/6mil基板、両面実装、パネル治具、圧電ブザーのピン干渉、USB-Cファンアウトといった機械・PCB制約を設計の反復で解決
  • 完成品はUSB-Cハブとスマートフォンでは動作したが、ノートPCへの直結では列挙されず、USB-C配線やプル抵抗値の検証がまだ残っている

CH32V003で作ったUSB-MIDIおもちゃシンセ

  • このプロジェクトは「最小で最悪な」MIDIシンセサイザーシリーズの新作で、flash synthはこの一覧には含まれない
  • 使用したマイクロコントローラはCH32V003
    • 32-bit RISC-Vマイクロコントローラ
    • 非常に安価な部品
    • ハードウェアUSBはないが、プロセッサは48MHzで動作する
  • 当初は学習と実用を兼ねて自前のビットバンギングUSBライブラリを書こうとしていたが、CNLohrがすでにrv003usbを実装していた
  • 当時はUSB-MIDIデモが完成していなかったため、まずは開発ボードをはんだ付けしてテスト用デバイスを組んだ

初期のUSB-MIDI実験

  • 最初の基板は、TSOP20ブレークアウトとMicro-USBブレークアウトを取り付け、レギュレータ・コンデンサ・抵抗を追加した構成だった
  • プログラミングヘッダは2ピン構成だったが、USB接続中はGNDをつながなくてもよいため、D1の1ピンだけでプログラミングできた
  • ボタン入力でUSB-MIDIデバイスが音を鳴らすように設定した
  • MIDIデータがチップに届くと、圧電ブザーが矩形波を出力する
    • チップのハードウェアタイマを1つ使用
    • 音量を上げるため、differential modeで出力
  • USB MIDIメッセージは4バイトで、low-speed USBエンドポイントは8バイトまで扱えるため、通常は1パケットあたり2つのMIDIメッセージを送れる
    • この単純なデモでは、各メッセージごとに次のUSB割り込みまでブロックしていた
  • ホスト側のMIDIループバックを使い、「本当にひどいおもちゃキーボード」のように動作させた

CH32V003用USB開発ボード

  • 既存のCH32V003開発ボードは、ハードウェアUSBがないためかUSBピンが接続されていないようだったので、配線の繰り返しを避けるため小型のUSB開発ボードを新たに設計した
  • ボードの特徴:
    • 必要なピンをすべてブレークアウト
    • 全ピンを両面にラベル表示
    • 1.5K抵抗はD5またはVDDにはんだ付け可能
    • USBのソフトウェア再接続が不要で、D5を別用途に使いたい場合はVDD側へ接続できる
    • 底面のUSBデータ線は必要に応じて切断し、直列抵抗を追加できる
  • 右上の3ピンは3V3、GND、D1で、プログラミングヘッダとして使う
    • USBを抜いて書き込むなら3ピンすべて接続可能
    • D1とGNDだけをつなぐか、同じマシンにUSBが挿さっていればD1だけでもよい
  • 端のピンは0.1インチピッチで、基板全体のサイズは15.2mm × 20.3mm
  • KiCad設計ファイルはGitHubgit.mitxela.comで公開されている

USB-C版へ小型化する過程

  • CH32V003は安価で周辺部品も少ないため、既存のUSB ATtinyプロジェクトを再現するアイデアにつながった
  • stylocardはダイレクトリード方式で改良するには最低22本のGPIOが必要だが、CH32V003 1個ではキーボード読み取りとUSBを同時に処理するにはピンが足りない
    • 安価なCH32V003を2個使う方式も可能だと考えた
    • 片方がキーボード半分を読み、もう片方が残りのキーボードとUSBを処理する構成
  • 次の案は、既存のsmallest USB MIDI synthUSB-C時代向けに再現することだった
  • 電気的にはUSB-C化は抵抗を数本と適切なコネクタを追加する程度だが、USB-Cプラグの中に電子回路を簡単に入れるのは難しい
  • 最終的に、ドック製作用の垂直実装USB-Cコネクタを選んだ
    • 部品番号はUSB4151
    • 類似部品は複数のサプライヤーから入手できる

USB-Cコネクタと2層基板配線

  • USB-Cコネクタはファンアウトが難しく、設計者が高密度基板やマイクロビアの使用を前提にしているように見える
  • 選んだコネクタのフットプリントだけでも、標準的な6/6milプロセス仕様を技術的に超えており、配線を追加する前から制約が大きい
  • プラスチックスタッドは、メッキ穴の近くに非メッキのスルーホールを必要とする
    • このおもちゃプロジェクトでは、より高い公差コストを払わずにDRC違反を無視した
    • 製造できなければプラスチックスタッドをナイフで切り落とすつもりだった
  • 目標は、USB-Cプラグの下に入る基板を可能な限り小さくし、一般的な圧電ブザーの直径内に収めることだった
    • ブザーのピンピッチは7.62mm、つまり0.3インチ
    • 外径は13.8mm
    • ポッティング材のくぼみの中に収めるには、最大径は約12mm
  • 圧電ブザーのピンがUSBの支持ピンと干渉しない向きがなかったため、フットプリント間隔を広げた
    • 設計を繰り返した結果、圧電ブザーのピン間隔を8mmまで縮めた
    • 必要ならピンを少し外側へ曲げるか削ることもできる
  • USB 3ピンは接続していない
    • SuperSpeedペア4組とSBUピン2本は使わない
    • CC1、CC2は接続が必要なので、合計14ピンを接続する必要がある
  • メッキ穴周辺の銅リングを最小化して、必要なすべての配線をどうにか引き出した
  • シールドピンはすべて接続されているため、基板上でGNDを全部つながない回避策も可能だったが、最終的にはGNDも配線した
  • 底面では、QFN部品を中心から押し出して十分な配線スペースを確保した
    • 未使用GPIOはGNDや他信号に接続されても問題ないため、GNDをチップ中央を通して引き回せた
  • レギュレータにはSC-70パッケージを使用
    • さらに小さいレギュレータも可能だが、空間上の問題は大きくなかった
    • 周辺の抵抗とコンデンサは0603サイズを使用
  • 表面には、電源、GND、D1(SWIO)プログラミング用のテストパッド3個を配置
    • 実際の書き込みでは、USB-Cを延長ケーブルで接続し、D1パッド1個にワイヤを当てるだけで十分だった

パネルを組み立て治具として使う

  • 非常に小さな基板は、ソルダーペーストをステンシル印刷する際に固定しにくいため、専用のパネルを自作した
  • この基板は両面実装なので、片面をはんだ付けした後でもう片面をステンシルするのが特に難しい
  • パネルには設計を2枚配置し、2枚目を反転させて全体が対称になるようにした
    • 片面をステンシルした後、基板をひっくり返して反対面をステンシルできる
  • パネルフレームはUSB-Cプラグを保持する治具としても使う
    • 中央の楕円穴はUSB-Cプラグにきつく合うよう設計した
    • FR4はリフロー炉に耐えられるため、支持材として適している
  • KiCad 3Dビューアはミス防止に役立った
    • フットプリントのソルダーマスク抜けやレイヤー出力ミスなどを減らす補助的な防御線として機能する
    • 圧電ブザーのピンとフットプリントが合わない干渉も3Dレンダリングですぐ確認できる

組み立てとはんだ付け

  • 非常に小さな基板は、メーカーが低公差・小サイズ条件で価格を補助している場合がある
  • このプロジェクトは名目上、USB 3.2 Gen 2コネクタを2層6/6mil公差基板に載せたものだったが、メーカーはフットプリントを問題視せず、製造も問題なく進んだ
  • 正しい組み立て順序は、小さい部品を先にはんだ付けし、USBコネクタを最後に取り付けること
    • USBコネクタがスルーホール実装なので、先に付けると反対面のステンシルができない
  • USBコネクタには、真空ノズルでつかめるプラスチックキャップが付属している
  • 当初は複数個をリフローするつもりだったが、小さすぎたため結局すべて熱風機ではんだ付けした
    • すでに底面にはんだ付け済みの部品があっても、表面張力で部品を保持できる
    • 必要であれば、融点の異なる2種類のはんだ合金を使うこともできる
  • はんだ付け後、パネルから慎重に切り離し、粗い端を少し削った
  • 組み立て後、コンデンサが最も背の高い単一部品であることが分かり、より小さいコンデンサも使えたが、すでに手遅れだった
  • 予想通り圧電ブザーのピンはきつかったが、十分に押し込んで基板が平らに収まるようにしてから、ピンを切って慎重にはんだ付けした
  • 追加注文した圧電ブザーは、手持ち在庫とはごくわずかに異なるデザインだった

ハブでは動作するがノートPC直結は失敗

  • 垂直実装USB-Cコネクタは、もともとスマートフォンやタブレットのドック内部に入るよう設計されているため、モールドされたプラスチックケースの外へ突き出す長さになっている
  • 回路とコネクタ下部を覆う小さな3Dプリントカバーも考えたが、見た目が良くないだろうと判断した
  • USB-C延長ケーブルは規格上認められていないが、給電しつつSWIOピンにプローブを当てて書き込むために使った
  • 4台のシンセには、DAW上で識別できるようそれぞれ異なるデバイス名を書き込んだ
    • 使用したDAWはWine上で動かした1998年版Cakewalk
  • 4ポートUSB-Cハブを別途購入してテストした
    • USB-Cだけを4口備えたハブは見つけにくかった
    • 多くはUSB-CをUSB-A、HDMI、SDカードなど別のコネクタへ変換するタイプだった
  • 完成品はUSB-Cハブやスマートフォンに接続すると動作する
  • ノートPCに直接接続すると列挙されない
    • 規格外のUSB-C延長ケーブルの先では列挙される
    • USB-Cポート配線を少し誤っているか、USB接続タイプを決めるプル抵抗値が正確でない可能性がある
  • プロジェクトのソースコードはGitHubgit.mitxela.comで公開されている

1件のコメント

 
GN⁺ 2023-12-17
Hacker Newsのコメント
  • この人はこういう制作で生計を立てているのだろうか?成果物がいつも本当に高水準で独特だ。
    会社に首根っこを押さえられているような感覚があるせいで、Jiraに十分な作業を記録したか、毎週十分なスプリントポイント分の成果を見せられているか心配になってしまう。
    ただ自由に、やりたいことを、やりたい時に、自分のペースでやりながら、これほどの時間・努力・リソースを趣味プロジェクトに注ぎ込む生活は想像しにくい。
    金銭的には大きな投資ではないかもしれない。試作品の材料はおそらく100〜200ドル程度だろうが、時間はどれくらいかかるのだろう?仕事の後に毎日または夜に数時間ずつ、何年も?

    • 何十年も働いてきたが、定期的に週40時間を超えなければならない職場は一度もなかった。
      多くても年に数回、まれな事情で数時間余分に働いた程度で、もっと良い雇用主は確かにいる。
    • 作者は2018年にこのテーマで、自分で「rant」と付けた文章を書いている。
      https://mitxela.com/rantsで「Spare Time and Hard Work」という見出しまで下へ行くとよい。
    • https://mitxela.com/support
      Patreonの初期にデジタルアーティストとして支援を受けていた人を知っているが、その前はTwitchで配信し、プロフィールにPayPalの寄付ボタンを置いていた。
      いつ見てもかなり優れたアーティストだったが、ほんの数人が購読を始めただけで請求書がどれほど早く片付くかを見て驚いた。
      まとまった資金として考えると貯金だけで暮らすのは難しそうだが、毎月入ってくる金額で生活できるようになると、計算はずっと現実的になる。ただし観客は維持し続けなければならない。
    • ハードウェア畑の人間ではないが、彼は夢のような生活を送っているように見える。
      面白いからやっているものをハックしている。多くの人にとって、時間を作り、計画を立て、実行まで持っていくのは難しい。
      皮肉っぽいコメントもいいし、1998年製のソフトウェアツールをLinuxのWineで動かしているようなところも気に入っている。
    • 経験豊富なエンジニアなら、このプロジェクトは仕事後に1日数時間ずつやって3〜5日くらいでできそうだ。
      動画編集、配送時間、合間にスマホでやる細々した調査まで含めての話だ。
      もっと速くもできるだろうが、そうすると仕事のように感じ始めるはずだ。
      すでに道具を持っている人なら、費用は50ドルに近いかもしれない。
      鉛入りソルダーペーストを使う気があるなら、さらに安く簡単になるかもしれないが、私は絶対にそうしたくない。
  • 彼のボリュメトリック・キャンドルは本当にすごい https://mitxela.com/projects/candle

  • 各ポートに10 Gigとラベルが付いたハブにこれらが挿さっている様子がなかなか笑える。

  • 指先のパッドを撮ったマクロ拡大があまりに鮮明なので、この動画は指紋セキュリティ漏えいと見なすべきかもしれない。
    人々がうっかり家の鍵が写った写真を共有するより悪い可能性もある。

    • 自分の指紋を認証に使うタイプの人にはあまり見えない。
  • 高解像度写真で指紋が見える場面は、少しぎょっとする。

  • 製作記はものすごく詳しいのに、音のデモは短すぎる。
    基本的には矩形波を出しているだけのようなので、実際の合成・変調・フィルタがないものをシンセサイザーと見るのは難しい。
    「USB-MIDI付きのグリーティングカード用サウンドチップ」と呼ぶ方が適切で、複雑度が低いとはいえPSGに分類するのも難しそうだ。

    • 単一オシレーターのシンセサイザーも、やはりシンセサイザーだ。
      矩形波しかないわけでもないし、音を開始・停止する選択肢もあるので、エンベロープがあると言える。
      ほとんど役に立たないほど基本的ではあるが[1]、おそらくそれが狙いなのだろう。
      [1]: 似た機能のStylophoneという機器は「Space Oddity」にも使われている。詳細: https://en.m.wikipedia.org/wiki/Stylophone
  • 笑えるけれど、実際にはシンセサイザーではない気がする。矩形波を再生する以外に何かできるのか?

    • それでも長さの違う、かなりまともな矩形波っぽい波形を合成しているじゃないか。それで十分だと思う。
  • 「特定の向きでしか動作しないものが1つあって、USB-Cが本来目指していたものと正反対なのでつらすぎる」
    Nokia 2780 FlipにはUSB-C充電ポートがあるが、箱にはMicro-USBと書かれているにもかかわらず、片向きでしか動作しない。

  • 両面リフロー中にああいうSMTコネクタを所定位置に固定するには、赤い熱硬化性チップグルーをおすすめする。

  • 本当に美しいデモで、8ビットマイクロコンピュータ時代の音を強く思い出させる。