この記事ははJLCPCBの提供でお送りします。
JLCPCBとは
jlcpcb.com (↑こちらは日本語版のログインページで、お得なクーポンも配布されています。)
JLCPCBとは、プリント基板製造などで有名な香港の企業です。
日本からでもWebページでポチポチするだけでKiCADなどで作成した基板データの製造を依頼できます。
値段もかなりお手頃で、ホビー電子工作ユーザーの間では広く利用されています。
この記事の作例もJLCPCBに基板を発注して実現しました。
表面実装版RakuChordとは?
RakuChordというのはinajobが開発している電子楽器です。
ワンタッチで和音を演奏できるボタンがあり、だれでも比較的簡単に演奏ができるという電子楽器で、少しずつバージョンアップをさせながら、電子工作キットとしての販売をしています。
今まではキットという性質上、リード部品のみを使った構成だったのですが、今回は実験も兼ねて表面実装部品を利用するものを作ってみることにしました。
表面実装版RakuChordの仕様と設計
せっかく作るので、少しは新しい機能を搭載することにします。
- 単4電池ホルダx2を基板に搭載
- これによりケースに電池ホルダをマウントする必要がなくなり、小型化がやりやすくなります
- 5V昇圧機能
- 上記の電池ホルダは3Vしか作れないので、5V昇圧機能を搭載します
- 8個のフルカラーLED搭載
- 何かと便利そうなフルカラーLEDを搭載してみます
もともとのRakuChordはArduino Nanoをそのまま貼り付けていたのですが、今回はそれに近い構成をRakuChordのメイン基板に実装する必要があるので以下の機能も自分で設計する必要があります。
- USB-Serial
- ICSP書き込み端子
- 何かあった時用のシリアル書き込み端子(Arduino Mini互換)
ということで回路図を・・・描きました。
PCBの設計
一部の家にリード部品がたくさん余っている部品はリード部品とし、大半の部品を表面実装部品で設計しました。 基板サイズも今までのRakuChordより一回り小さくなるようにしました。
今回は実装する部品が多いので、機能ごとに枠線を書くという工夫もしてみました。
いつものように定数を基板上に表示しておくのも実施しています。
JLCPCBに発注
そして、今回もJLCPCBに発注です。サイズは100mmx100mm以下なのでとてもお安く作ることが出来ます。
今回はなんとなく白色の基板にしてみました。
これに送料がかかりますが、$2って!安い!(元々$4なのですが、今は割引中のようです)
実装
1~2週間で基板が届いたので、実装します。
(写真は従来のRakuChordの基板との比較です)
一気に全部実装すると設計ミスがあった時にデバッグがしづらくなるので順番に実装します。
まずはメインプロセッサ周り。実装後ICSP端子からArduinoのブートローダーを書き込みます。
ここで、気づいたのですが、ICSP端子にはいつもピンの役割を明記するようにしていたのですが、これを忘れていることに気付きました。 これはうっかり。まぁ見た目だけの問題なので、特に困ることはありませんでした。
USB-Serial周り
MicroUSB端子のはんだ付けが難しい
その後USB-Serial周りを実装しますが、どうもここがうまく動かない。原因はいくつかあるのですが、まずMicroUSB端子のはんだ付けが難しく、雑につけるとコネクタを差し込んだ時にすぐ外れてしまうという問題がありました。 これはホットエアーガンではんだを多めに流すことで解消しました。
回路の間違い
USB-Serial周りの実装をしようと、改めて回路図を見ていて、間違いに気づきました。 なんとUSB信号線のD+と、USB-Serial変換ICの3V端子が意図せず接続してしまっています。
これはKiCADで操作するときに、配線がICの端子の上を横切ってしまい、意図せず接続してしまったことによるものです。 このままではうまくUSBの信号をICに届けることが出来ないので、対策が必要です。
恐る恐る配線図を見てみたところ、きれいにD+と3Vの配線だけが通っている箇所があったので、ここをアクリルカッターで「エイヤ」とパターンカットすることで、この間違いを修正することが出来ました。
このまま部品を実装すると、謎の挙動をして、頭を悩ませるところでした。
Arudinoの書き込みができない1
USB-Serial周りの部品を実装したのですが、どうもArduinoとしての書き込みが出来ません。
切り分けをするためにArduino Mini互換の書き込み端子に外からUSB-Serialモジュールをつなげて、書き込みをテスト・・しようとして、問題に気付きました。 この端子のTX,RXが逆になっています! UART接続のTX, RXはマイコン側と書き込み側でクロスに接続する必要があるのですが、これを間違えていました。 とりあえず、ブレッドボードを介してTX, RXピンを入れ替えて接続することで、書き込みできることを確認しました。
Arudinoの書き込みができない2
書き込みはできるということで、ブートローダーは正常であることが確認でき、問題は基板上のUSB-Serial変換ICのようでした。
今回利用したCH330N(同じピン配置のCH340Nも)というUSB-Serial変換ICは、外部に水晶発振子が不要で部品点数が少なくなって便利かなと思い採用したのですが、どうもArduinoが利用する57600baudの通信がうまくできません。
あまり詳しく詰めていませんが、9600baudなら通信できたので、Arduinoのブートローダーをビルドしなおして、通信速度を変更したものを用意して、書き込むことで一応解決しました。 Arduino書き込みの速度を変更したので、Arduino IDEから書き込むためにも少し工夫が必要となってしまいました。 次回設計するときは素直に王道のCH340Gと水晶発振子を使うのが良いかなと思っています。
(CH330N/CH340N で似たような現象をご存じの方いたら教えてください・・)
5V昇圧部分・オーディオアンプ部分・スイッチ
その後は5V昇圧部分を実装します。ここは全く問題なし、乾電池2本=3Vから5Vが出力できました。 さらにオーディオアンプ部分、電解コンデンサのはんだ付けが甘く、一度音が出ないトラブルがありましたが、すぐに修正しました。
そしてたくさんのスイッチとダイオードをどを並べて・・RakuChordの完成です。
ピン配置は今までのRakuChordと同じにしたので、ファームウェアはそのままで動作しました。
OLED
フットプリントを間違えて、意図した場所とは違う位置に逆向きに実装する必要がある作りになってしまっています。 まぁほかの部品と干渉しない位置ですし、画面表示の反転はプログラムの修正で治すことが出来るので致命傷ではないですが・・
フルカラーLED
おまけでフルカラーLEDを並べて動作確認します。まずは1つ配置、ライブラリはAdafruitのものを利用しました。 説明通りに実装すれば問題なく制御できましたが、ここでデータシートをよく見ると、!!!。どうもこのフルカラーLEDは1つずつにバイパスコンデンサを1つ配置する必要があったようで、この基板は仕様に沿っていないことがわかりました・・
まぁ、一旦仕様のことは無視して、8個のLEDを実装してみたところ、一応動作するものの、稀に点灯しなかったり、意図しない色に光ったりすることがわかりました。これがパスコンの有無による問題なのかはまだ分かっていないですが、次回設計するときは、1つずつにバイパスコンデンサを実装してみます。
改良中の小型のRakuChord
— ina_ani@3歳児のパパ (@ina_ani) 2023年1月6日
和音の構成音が光るようにしてみた! pic.twitter.com/gdMrsMQcuN
演奏テスト
スピーカーは既製品を使って、演奏テストをしてみました。
新しいRakuChordの演奏テスト
— ina_ani@3歳児のパパ (@ina_ani) 2023年1月14日
普通に今までと同じ感じ pic.twitter.com/6FCSKB1u92
使っているスピーカーはこちら
まとめ
ということで、色々なトラブルはあったものの表面実装部品版のRakuChordが一応動作するところまで組み立てられました。
RakuChordとしては何度も設計している構成なのですが、新しく設計を変更した部分はどうしても、このように問題があり、一発ではうまくいかないものですね。
次はこれにケースをつけたりして、演奏しやすくできればと考えています。 今後の展開をお楽しみに!
(例によってこの基板、3枚ほど余っています、腕に覚えのある方でほしい方は http://twitter.com/ina_ani まで連絡ください。ボツ基板交換のお相手も募集しています。)