PCBサービスで自分だけのArduinoを作るの良すぎ。本当に良すぎ。

この記事は基板作成サービスPCBGOGOの提供でお届けするいわゆる案件記事なのですが、それを抜きにしても初めての自作基板という体験が完全に「良」(よ)だったので皆さんにご報告する次第です。

PCBGOGOは深圳の基板作成/実装サービスです。詳しくは後述しますが、オリジナル基板を作ってくれます。
www.pcbgogo.jp

そしてこれが今回PCBGOGOで作った基板。

可愛いすぎる…

手に付いたスイッチでLEDをピコピコさせたり

逆の手にはツマミ、足にはサーボモーターのコネクタがついていて、ぎゅいんぎゅいんさせることもできます。

後述しますがこれはマイコンボード(Arduino)なので、自分でプログラムを書いて動作を書き換えることができます。プログラムの書き込み中には目がピコピコして強制的に人格が書き変えられていく様子がよくわかります。ディストピア可愛い…!

単体で愛でるだけでなく、もちろん電子工作に使うこともできます。下のGIFでは液晶にアニメーションを出力しています。

さらにマウスやキーボードをエミュレートするHIDという機能を搭載しているので、USB接続するだけで自動的にペイントソフトに絵を描くデバイスなんかもできます。


↑ツマミで描画サイズを変えられる

さらに電池ボックスをつなげるようになっていて

例えばこんな感じのちょっとした光りものを作って(電池は背中側に貼りつけ)

リュックにキーホルダーとしてぶら下げたりしても最高。

↓風や振動がなくても自動で揺れるキーホルダー

今回は部品実装(部品のはんだ付け)まで発注したのですが、手はんだできそうな部品は自分でやることにしたので……

こんなふうにカラバリも作れます。(このカラフルなピンソケットは秋月で買えます

できるだけ単体で遊べるようにいろんな機能をつけました。

というわけで「良」が溢れまくっていることはご理解いただけたと思うので、もうちょっと詳しく説明していきたいと思います。電子工作に縁のない方にも自慢したいので、初歩的なところから始めていきます。知ってるところは適宜読み飛ばしてください。

プリント基板(PCB)って何?年収は?彼氏はいるの?

まずは2つだけ前提知識の説明をさせてください。

最初にプリント基板についてですが、要は基板のことです。PCB(Printed Circuit Board)も英語にしただけで同じ意味ですが、既製品ではなく自分で発注する基板という文脈でも使われるように思います(例:PCBサービスのPCBGOGO)。

今回の基板は僕にとって初めてのPCBでした。現代の電子工作って、たいてい最初はブレッドボードというやつに配線するところから始めるんです。

こういうやつ。なんですけどこれは線が挿してあるだけですぐ抜けるので、慣れてくるとユニバーサル基板というものを使います。

こういうの。はんだづけで固定するので丈夫ですが、裏面に針金で自分で配線する必要があってめちゃくちゃ面倒です。1枚ならいいけど複数枚作るのは相当な苦行。というわけで

こういういわゆる「基板」、プリント基板(PCB)を使うようになるわけです。電気製品を分解したときに中に入っている基板もPCBです。

ちなみに基板製造サービス(PCBサービス)というと配線の詰まった板だけをつくってくれる段階を指し、部品を乗っけるのは部品実装サービスという別の概念です。PCBGOGOでは基板製造だけ/部品実装込みの注文、どっちも可能です。


↑左が部品実装済み基板、右がただのプリント基板(PCB)

プリント基板は何十枚でも作れて見た目もいいのですが、個人的にはCADでデータを作らないといけないのが難しそうでいままで敬遠していました。

でもやってみたら意外に簡単。といってもそれなりに覚えることはあるけど、思ったより難しくはないし、なによりがんばって覚えるだけの価値は絶対にある!!!というのが本稿で一番伝えたいことです。
電子工作ちょっと慣れてきたな…という人は絶対チャレンジした方が得!!

値段的にもとくにPCB作成は思ったより安くて、さっき紹介したものでPCBだけなら10枚で5ドルです(送料別)。
部品実装のほうは部品代も含め、5枚で94ドルでした。

Arduinoって誰?中の人は?顔バレしてる?

もうひとつの前提知識はArduino(アルデュイーノ)。今回作ったのがArduinoだからです。

Arduinoとはマイコンボードと呼ばれるものの一種で、要はパソコンからプログラムを書き込むことでなんでもできるようになる部品のことです。ArduinoにCO2センサーと液晶をつなげればCO2測定器ができるし、3DプリントされたロボットアームにArduinoにつないだモーターを埋め込めばロボットアームの制御装置にもなります。

さっきも載せたこの基板がArduino。

Arduinoと一口に言ってもいろんなモデルが出ていて、さらに回路図が公開されているので互換機も含めるとかなりの選択肢が存在します。
おかげで、自分で作るにもハードルが低いわけです。そう、PCBGOGOがあればね!

PCB未経験の今までは世の中にすでに有る、いわば「有るデュイーノ」を使うしかなかったですが、PCBサービスを使うことで「無いデュイーノ」をこの世に錬成することができる、というわけです。


↑裏面には「Ardui-nomolk」の銘を入れました

ちなみにArduinoを作るのはPCBの入門編としてもけっこうおすすめ。マイコンボードって(すごい雑に言うと)マイコンのピンを延長してコネクタつけたものなので、多機能なわりに回路的には意外に簡単なんですよ。なので作りやすくて実用性も高い。お客様満足度ナンバーワンの題材だと思います。

ではいよいよどうやって作ったのか、工程を紹介していこうと思います。
ちなみに、当初はPCBのみ発注する予定で、部品実装までは考えていませんでした。それが紆余曲折あり方針転換せざるを得なくなるのですが、それへんも追ってご説明します。

作りたいものを決めて参考資料を集める

そもそもは「そろそろPCB覚えたいな…」と思ったのが始まりで、何かを量産する予定もないしとりあえず習作でArduinoでも作るか……くらいのゆるいスタートでした。

ただ既存のArduinoに機能的な不満はなかったので、じゃあ見た目で差別化かなということで「自分のSNSアイコンの形のArduino」というコンセプトに決定。

Arduinoの回路は先ほど「(すごい雑に言うと)マイコンのピンを延長してコネクタつけたもの」と書きましたが、もうちょっと厳密に言うと

  1. マイコンのピンを延長してコネクタにつなぐ回路
  2. PCとUSBで通信するための回路(USBシリアル変換)
  3. 電源回路(12VとかのACアダプタから5Vや3.3Vを作る)

の3つの要素がありそうです。

それぞれについて、最もシンプルな回路図を探しました。

今回は1.については一番簡単なArduino互換機と思われるSpark FunのPro Miniの回路図を参考に、2.についてはスイッチサイエンスにあるUniversALDUINO Type-Cという互換機の回路図を参考にすることに。
3.についてはそもそもACアダプタをつなげないようにし、3.3V出力のピンもなくすことで回路ごと省略しました。

Pro Miniの回路図の一部。めちゃくちゃシンプルで勇気が出る。

回路図を引く

いよいよ設計に入っていきます。今回使ったのはKiCadというソフト。いままでずっとケーアイキャドだと思ってたのですが、キキャドなんですね……。

手順としては、まず回路図を書く→それをもとに基板のレイアウトをデザインする、という流れになるようです。くわしいやり方はこのページを参考にしました。

忙しい人のためのKiCAD使い方 | Wak-tech

詳細な手順は上記ページを見ていただくとわかるので、ここではざっくりした流れを、体験記として感想を交えつつ紹介していこうと思います。

まずはまっさらな回路図があり、ここに回路を引いていきます。

いきなり完成したところを見せますが

こんなかんじ。ほとんど参考資料を丸写ししてくっつけただけです。だけなんですけど、これがめちゃくちゃ勉強になりました……。

なんでかというと、家でヘラヘラとブレッドボードで配線してる時とは全く緊張感が違うからです。PCBの場合、いい加減にやると、あとで「せっかく注文してお金も払って作った基板が動かない」という罰を受けることになるじゃないですか。失敗できないんです。だから参考資料の隅から隅までちゃんと理解せねば…という意識が働きまして、人生で初めてレベルの真剣さで回路図を読みました。USB-TYPE Cのコネクタ仕様についてとか、ArduinoのAREFピンって使ったことないけど何なの……とかゴリゴリ調べまくりました。

また余談ですがKiCadの配線操作にやや癖があり

油断するとすぐスパゲッティコード(物理)になってしまって笑った。

ひととおり引けたら、エレクトリカルルールチェッカーというのをやるとミスがないかチェックしてくれます。自動チェックなのでもちろん完璧に動作することを確認してくれるわけではないですが、明らかな配線ミスなどはつぶしてくれるのでありがたいです。

それがおわったらフットプリントの割り当て(基板上に実装する足の形を部品ごとに決める)をして、いよいよ基板のデザインへ。

基板にレイアウトする

さてここまでで工程の前半が終了。あとは基板にレイアウトしておしまいです。(と当時は思ってました)

このへんは特に初体験ということもあって面白かったので、細かめに説明していきましょう。まずはアイコン型の輪郭を作るところからですが、これは

プリント基板で「フロッピー」のフィギュアを作る方法 - 趣味TECHオンライン | 趣味のモノづくりを応援するオンラインメディア

この記事を参考にやりました。

上の図は基板の輪郭を作って、配置すべき部品を出現させたところです。これをフィーリングで並べていきます。

こんな感じかな…?

本来はフィーリングとかじゃなくて配線ができるだけシンプルになるように部品を並べなきゃいけなのですが、初めてなので勘所がわからず「手にボタンを置いたらボタンを押したときに手をつなぐことになるからかわいい!」とか、見た目だけで決めていきました。
それはそうと部品を並べるとどうしても体中に斑点ができて病気っぽくなってしまうという問題があり、ここにキャラ系基板の本質的な難しさがあります。

で、ここから電源の配線だけ太くしたいので手で引きます。細いと動作が不安定になったり、熱くなったりするからです。

こんな感じ。細く青い線がたくさん見えると思いますが、まだ配線されていない箇所です。ここはどうするかというと、オートルーターという機能があり、自動配線してくれます。
ネットでやり方を調べると、GitHubからFreeroutingをDLして…みたいなことがよく書いてありますが、いまはKiCadのプラグインとして使う方が簡単そうです。やり方はここに書いてありました。

それでこのオートルーターがまた面白くて…

こういう感じで考えながら配線してる様子がリアルタイムで見られるんですね。いやーがんばってるなーって感じで。

それはいいんですけど…


終わらん。


オートルーターが一生終わらん。


しばらく放っておいてもダメだったので一回中断して様子を見たところ、

ふむ

ここ、やばっ。

どうも配線が多すぎて、かつ配線に使える面積が狭すぎて、もう物理的につなげるのが無理みたいです。なるほどねー。

ここで本プロジェクトの難しさが明らかになりました。

序盤に「(すごい雑に言うと)マイコンのピンを延長してコネクタつけたもの」だから簡単、というようなことを書きましたが、実はArduino、回路設計はかんたんだけど配線量が多いんですよ。たくさんあるマイコンのピンを全部コネクタまで引き回すので。しかも小さな基板に見た目よく部品を配置しよう、なんて思うと、そもそも物理的に無理ってことにもなりうる。というか今なりました。

このあと部品の配置をかえたりいろいろしてみたのですが結局無理で、回路から見直すことになりました。

ウノからレオナルドへ

こうなってくるとできることは2つ。

  1. コネクタにつなぐピン数を減らす
  2. マイコン以外の部品点数を減らす

1.はマイコンボードとしての機能を削ることになるので、できればやりたくない。
じゃあ2.か…ということになるのですが…ここで本家Arduinoの写真をご覧ください。

2台写ってますけど、これ明らかに右の方がスカスカしてるというか、部品点数少なくないですか?左はArduino Uno R3、右はArduino Leonardoという機種で、使っているマイコンが違うんですね。これまで自作Arduinoに使ってたのはUnoのほうと同じATMega328Pというマイコン。

で、さっきArduinoに3つの要素

  1. マイコンのピンを延長してコネクタにつなぐ回路
  2. PCとUSBで通信するための回路(USBシリアル変換)
  3. 電源回路(12VとかのACアダプタから5Vや3.3Vを作る)

があるって書いたんですけど、じつはLeonardoが使ってるATMega32U4というマイコン、2.の機能も内蔵してるんですよ。3.も今回省いているので、こっちを使えばマジで「マイコンのピンを延長してコネクタつけた」だけでマイコンボードを実装できます……!しかも実はこっちの方が機能が多い(冒頭で紹介した、マウスの代わりになるやつ)。というわけで……

こうだった回路図が

こうに!

部品も配線もめちゃめちゃ減りました。これならいける…!!

基板レイアウト リベンジ

久しぶりに基板エディタに戻ってきました。まずは部品並べて電源ライン引いて…

そしてオートルート!

できたっ!!!!!!!

これはこれで、一部そこそこ過密やんけ感はありますが、いやもうここまで出来たら十分。よくやったよ。次いこう。なぜなら次の課題が待っているから……。

表面実装 手はんだ問題

えっとですね、実は最初からATMega32U4の方が部品が少なく済むのはわかってたんですよ。でも避けてたんです。なぜなら

はんだづけがめちゃめちゃ細かいから。これ表面実装部品といって、手ではんだづけすることを想定してない部品なんですよね。
いやこれ基板完成したところで実装いけるんかな……と思って、あらかじめ試してみることにしました。

というわけで注文したATMega32U4と、市販の専用基板。コインは見てのとおりですが1円玉です。

手はんだのコツをYoutube等で調べつつ、はんだ付けしていきます。
細かい作業すぎて肉眼では歯が立たず、押し入れの奥にしまってあった祖父の形見のルーペ(小さいころに一緒に虫の観察とかをしたやつ)を引っ張り出してきました。おじいちゃん……。

なんとかはんだづけ完了。いったか!?!?!?!?!?!?!?

入ってはいけないところに「スッ…」と紙が入って笑った。

いやもうこれはあかん。このあとさらにがんばって一応はんだ付けを完成させることができたのですが、この状態だと基板が完成したあと動作確認に失敗した場合に、基板が悪いのかはんだ付けが悪いのか切り分けができなくなりますよね。これを自分でやるのは無理!

というわけで、PCBだけ発注する方針を変更して、今回はPCBGOGOに部品実装(=はんだづけ)まで注文することにした次第です。

回路の動作確認

さてマイコンの手はんだをしたのはもう一つ理由があります。注文前に回路の動作確認をしておきたくて、それに使うため。

正直、そうとう注意深く引いた回路図なので、かなり自信をもって完璧といえます。しかし部品実装コミでの注文となるとお値段も上がりますので、設計ミスでゴミになってしまうのは絶対に避けたい。念には念を入れて同じものをブレッドボードで組んでみました。

配線モリモリです。これがあの小さい1枚に収まっちゃうんだからPCBってすごい。

で、動作確認結果。ここだけはわかりやすく説明すると長くなるので専門用語も入れて書きますが、端的に言うと「そもそもマイコンボードとして使えない」設計になっていました。あっぶねー!!!!!

  • MISO、MOSI、SCKのピンを作ってなかったのでそもそもブートローダが焼けない!
    • ATMega328Pを使っていればデジタルピンと兼用なので別途用意する必要がない。ATMega32U4に変更時に別途専用ピンが必要になることに気づいてなかった。
  • TX、TRのLEDは5VにつながなきゃいけないのにGNDにつないでいた
    • 全く気付いてなかった…
  • あと細かい仕様変更
    • スイッチにプルアップ抵抗入れたりとか(マイコンの内蔵プルアップ抵抗使うと押したときLOWになってプログラム間違えやすいので)、単3電池使ってる時も一応ヒューズ通すようにしたとか


↑修正した回路図(青丸が修正点)

いやさすがにそこまでやんなくてもいいか~……でも一応……と面倒くささと慎重さの間でせめぎあいつつ、ぎりぎりやる側に倒れた回路検証でしたが、本当にやっておいてよかった……。

いよいよ発注!

というわけで回路図を修正し、基板エディタに戻ってきました。

配線をし直し、ベタグランドと呼ばれる「面の配線」を作る(一言で説明するのが難しい!)処理をして、

いいねー。
ちなみに基板エディタでは実装イメージを3Dでグリグリ回しながら見ることができます。

何のためにあるのかよくわからないけど基板設計中に見るとめちゃめちゃ夢の膨らむ機能です。

そしてさいごに注文用のデータ(ガーバーデータという。なんか語感がいい)を出力して完成…!!!
PCBGOGOのサイトに行きます。

自動お見積りから入って…

基板の情報を入れて…

実装もする場合は実装の情報も入れます!

そして実装データの入稿!

入稿するとまずPCB自体はめちゃめちゃすぐできました。マイページでこんな感じで作業工程まで見れるんですよ。

でも「今日はどこまで行ったかな~」って毎日チェックして楽しみにするほど時間かからなくて、2~3日くらいであっという間に終わっちゃいます。下手をすると1週間以内に手元に届くレベルかと思います。

その後、部品実装に入りますが今回は

  • 指定していた型番の部品(UCB-TYPE Cコネクタ)がなくて代替品を探してもらった→部品取り寄せにもなった
  • LEDの取り付け方向が不明で確認が入った

など何度かやりとりが発生し、少し時間がかかった印象です。注文したのが4/22、製造完了(発送)が5/9、受け取りが5/14でした。待ち遠しすぎて長く感じましたが、何度もやり取りがあったうえで3週間での納品と思うと、けっこう速いですね!


↑深圳からやってきた基板たち

基板受け取り後、今回担当してくれた方にスムーズに部品実装を進めてもらうコツをききました。

  • 資料は基本的には、ガーバーデータ、BOM、座標データ(つまり注文時に必須とされているデータ)を提供すれば問題ない
  • 部品の実装方向(LEDのアノード/カソードとか)は上記のデータに含まれないので、基板にシルクで印刷するか、実装図面や3D画像を追加で添付するとよい。(3D表示、このためにあったんだ…)

このへんの情報はこのページに詳しく書いてあります。

部品の見積をすぐに入手したいのですが?

さっさとPCBはじめるべきだった

というわけで初PCB発注体験記でした。

自分は電子工作をたぶん14年くらいやっていて本まで出しているのですが、PCBは何かむずかしそう(面倒くさそう)と思ってずっと敬遠していました。でも実際やってみると習得する苦労に対して得られる喜びがめちゃめちゃに大きいので、コスパがすごい。これは電子工作をたしなむ人ならさっさと覚えた方がいいスキルだと思いました。

また、PCBを作るとユニバーサル基板やブレッドボードでやっていたときに比べ、電子回路に対する理解が一歩深まるように思いました。やっぱ上で書いたとおり、回路設計時に失敗したくなくて本気度が違うからですかね。

あと、趣味で電子工作をやっている人にとっては、PCBを覚えることでぐっと「商品化」が近づくというのも大きな変化かと思います。みんなMaker Faireとかでオリジナル基板売ろうぜ!!!

というわけでみなさんぜひPCBGOGOで基板を作ってみてください。最近は単色シルク印刷でなくカラーイラストを印刷できるフルカラー基板も人気みたいです。

PCBGOGOはこちら!↓
www.pcbgogo.jp

メモ:バージョンアップに向けて

これは余談というか完全に自分用のメモなのですが、次回バージョンアップをするとしたら修正したい箇所をリストアップしておきます。いつか商品化したいな。

  • D13のビルトインLEDつけ忘れた
  • A5に可変抵抗つながってるのにA5ピンもあるのちょっと紛らわしい(気づかずに値が変になって悩みそう)
  • タクトスイッチは表面実装でもいい気も。特にリセット。
  • 可変抵抗のレンジ修正
  • 電源まわりで誤接続まで想定した安全化(逆流防止ダイオード入れたり)
  • 通信系のピンが位置的に股間に配線つなぐ感じになって、微妙に嫌なので動かしたい

以上です。

告知

今回、基板を作ってくれたPCBGOGOもスポンサードしてくれている、技術力の低い人限定ロボコン(通称:ヘボコン)2024を開催します。ヘボコン誕生10周年となる記念すべき大会です!

www.youtube.com

素人が作った「自称ロボット」を無理やり戦わせ、その動かなさ・おぼつかなさを慈しむイベント。技術ある者が恥じ、不器用な者が称えられる反重力空間です。
大会は6/29(土)。観覧チケット発売中!
dailyportalz.jp