自作電子楽器RakuChordをRasoberry Pi Picoで作ってみた

この記事ははJLCPCBの提供でお送りします。

またJLCPCBのブログとほぼ同じ内容です。

JLCPCBとは

jlcpcb.jp (↑こちらは日本語版のログインページで、お得なクーポンも配布されています。)

JLCPCBとは、プリント基板製造などで有名な香港の企業です。

日本からでもWebページでポチポチするだけでKiCADなどで作成した基板データの製造を依頼できます。

値段もかなりお手頃で、ホビー電子工作ユーザーの間では広く利用されています。

これは何?

もともとArduino UNOなどで用いられているATmega328をメインCPUとしたものでした。 しかし昨今半導体の高騰や新しい組み込み向けのCPUの登場により、ATmega328以外の選択肢も模索したいという気持ちが高まってきました。

以前、基板を乗っ取る形でRaspberry Pi Picoを接続して、動作確認をして、ある程度動きそうなことが確認できたので、今回はこれもとに専用の基板を作ってみました。

inajob.hatenablog.jp

基板の設計

前回記事では、RP2040-Zeroという開発ボードを利用しましたが、今回はRaspberry Pi Picoを使ういました。

RakuChordの28個あるスイッチの配線などは、従来のものと同じなのでかなりの部分で設計を流用できました。

オーディオアンプは従来はLM386だったのですが、NS8002を採用しました。

NS8002はグリッド楽器igetaを作った - inajob's blogでも紹介しましたが、この時は必要な周辺部品が実装されているモジュールを利用しましたが、今回は直接RakuChordの基板にNS8002とその周辺部品を実装する方式としました。

この方が、今後PCBAなどを考えたときにコストが下がると思います。

実はこのNS8002を直接実装する方式は、グリッド楽器igetaを作った - inajob's blogで作成した基板でテストしていました。igetaの基板はモジュール式のNS8002でも、直接NS8002を実装する方式でも、どちらでも動作するようになっているということです。

こういう細かい実験を基板の隙間で行うことで、小さな検証をしています。(実はigeta-picoのNS8002回路には誤りがあり、直接NS8002を実装すると期待通り動かなかったのですが、まさにこういうことが検証できる、ということです)

ボリュームや、オーディオジャック、電源スイッチ、OLED、タクトスイッチ、などは今までのRakuChordを作ってくる中で実績のあるものを採用しています。

このあたり、同じようなものを作り続けていると過去の経験が生かせて良いですね。

電源は単4電池を3本、基板に直接電池ケースをマウントできるようにしました。

基板は10cm * 10cmに収まるように設計しました。

基板上の部品の配置は、乾電池やRaspberry Pi Picoがかさばるので、自由度が低く、まぁこんなもんでしょ、という感じで、並べていきました。 配線はFreeroutingにお任せなので、あまりきれいではありません(動くからヨシ!)

また、RakuChordの基板は様々なリビジョンを作ってきているので、わかりやすいように、シルクに大きく「RakuChord-RP2040」と入れてみました。

JLCPCBに発注

今回も発注はJLCPCBです。今回の基板は青色にしてみました。

10cm×10cm以内なので、非常に安く作ることが出来ます(5枚で$2 + 送料)

jlcpcb.jp (↑こちらは日本語版のログインページで、お得なクーポンも配布されています。)

実装

さて、今回もトラブルがいくつか・・

キースイッチの配線ミス!

またやってしまいました、配線ミス。 KiCADで配線を交差させるときに、意図せず飛び越したつもりの配線とくっついてしまうという、よくある凡ミスにより、今回もキースイッチ周りの配線がおかしいです。

かなり大規模におかしくなってしまったので、いっそ基板を発注しなおそうかとも思いましたが、何とかパターンカットと配線のやり直しにより、修復しました。(大変だった・・)

Raspberry Pi Picoを直接実装していたため、追加での配線がやりやすかったのは救いでした。

Raspberry Pi Picoをピンヘッダで実装すると電池ボックスに干渉する

Raspberry Pi Picoは端面スルーホールで、ペタッと表面実装的に実装することもできますし、普通にピンヘッダで実装することもできる開発ボードです。

今回はどちらの方式でも実装できるようなフットプリントを選んだのですが、スルーホールで実装する場合に、裏面にピンの足が飛び出してしまうため、電池ボックスと干渉してしまう問題がある事がわかりました。

まぁ、電池ボックスを多少浮かせて取り付けることで、回避できますが、ちょっと不格好ですし、ぐらぐらすることで、接触不良が起きそうで心配です。

基板をこのままでいくなら、電池ボックスと基板の間に3Dプリンタなどでスペーサーを作って挟み込むなどをするとよいかなと考えています。

スピーカーが小さすぎる

これは、事前の検証でもある程度分かっていたのですが、表面実装の小さなスピーカーでは、単音ならまだしも、和音を鳴らそうとすると、音が小さすぎるか、割れてしまうか、という感じで期待した音が鳴りませんでした。

今回は3.5mmのオーディオジャックや、スピーカーを接続するためのピンヘッダを付けているので、そちらを使ってもう少し大きなスピーカーやイヤホンに接続するなどして、回避することが出来ました。

基板完成

さて、色々問題もありましたが、何とか解決して、動作するようになりました。

まぁ事前に従来のRakuChord基板+RP2040-Zeroで検証していたので、ソフトウェア面では、困ることはほとんどなかったです。

3Dプリンタによるケースの作戦

RakuChordは楽器なので、演奏しやすい形である必要があるのですが、基板むき出しでは、どうにも演奏しづらい、というか裏面のとげとげした配線が危険すぎて、演奏どころではありません。

ということで、裏面を雑に覆うような簡単なつくりのケースを3Dプリンタで作ることにしました。

今回のケース作成手法は表面実装部品版RakuChordの改良版を作った - inajob's blogと同じく、KiCADのユーザーレイヤーでケースの凸凹をデザインし、プログラムで3Dデータを作る方式です。

以前の記事ではOpenSCADを利用していましたが、今回はCadQueryを使うことにします。

CadQueryはPythonを使って3Dデータを作ることが出来るライブラリで、OpenSCADと比べるとフィレットや面取りを定義しやすいことが好きで、最近よく使っています。

個人的には、記述のシンプルさや直観性ではOpenSCAD、自由度の高さはCadQueryかなと感じています。

とはいっても、今回は凝ったことはせず、KiCADからexportしたDXFファイルを基に、押し出しや削り取りを行い、非常にシンプルなケースを作成しました。

演奏デモ

www.youtube.com

まとめ

Raspberry Pi Picoを用いて、自作電子楽器RakuChordを実装してみました。

過去の様々な取り組みのおかげで、比較的スムーズに設計することが出来ましたが、それでも細かいミスが多数あり、いきなり完璧なものを作るのは難しいなと感じています。

3Dプリンタによる簡易的なケースづくりのノウハウも安定してきて、この程度であれば、さっと作ることが出来るようになりました。

RakuChordについては、今後も試行錯誤を続けていくつもりです。今回発見した課題を解決し、持ちやすさや演奏しやすさをさらに改良していきたいと考えています。