AIに設計させたキーボード基板は動いたのか――部品選定の癖と回路図ミスの原因
イチケン / ICHIKEN前回の動画で、話者はAIにハードウェア設計を任せ、その基板をJLCPCBに発注した。今回は、届いた自作キーボード基板の中身を確認し、ファームウェア開発もAIに任せて実際に動かしている。AI設計の基板は一発で動作したが、一部のキーが反応しない不具合が見つかった。話者はその原因を突き止め、AIによる回路設計をどこまで信頼できるかを振り返っている。
届いた基板と費用
基板は5枚作り、部品はすべて実装済みの状態で届いた。マイコンはピン数が多く、ほかの部品も基本的に表面実装部品である。この数の部品を自宅でリフローしたり手はんだしたりするのは無理だと判断し、実装まで業者に依頼したという。
費用は、プリント基板代、部品代、実装・組み立て代、送料をすべて合わせて66ドルだった。話者は、1枚あたり2000円ほどで作れた計算になると述べている。
キーボードの仕様と設計上の反省点
基板は、一般的なキーマトリクス方式を使った60%サイズの英語配列キーボードである。話者は完成後に、全角/半角の切り替えキーを入れ忘れていたことに気づいた。普段はほとんど日本語で使うため、入れておけばよかったと振り返っている。ただし、使用頻度の低いAltキーを日本語切り替えに割り当てるなど、ソフトウェア側で対応できるとしている。
キースイッチとの対応が分かるようにシルク印刷で文字も入れたが、文字が小さすぎた。部品配置を工夫してシルクを大きくすればよかった、というのが話者の反省である。
タクトスイッチの選定に見えたAIの癖
今回は初期試作なので、キースイッチには単価の安いタクトスイッチを使うようAIに指示していた。AIは、実装費用を抑えられる表面実装タイプのタクトスイッチを選び、その単価は1個3円だった。ところが、同じ形状でも1個1円の製品が存在していた。
なぜ高いほうを選んだのかをAIに尋ねると、使用事例の多いものを選んだという答えだった。話者によれば、AIは価格を横断的に比較していなかった。EasyEDAのライブラリで部品を検索し、LCSCで在庫があることを確認した時点で探索を終えていた。同等品を価格順に並べて比較することはしていないようだったという。
結果として、AIは「実績はないが安い部品」より「実績はあるが高い部品」を選んだ。この経験から話者は、価格を抑えたい設計では、価格でソートして複数の候補を出すようAIに指示するとよいと提案する。あるいは、使いたい部品を最初から指定しておけば、よりスムーズに進むだろうとしている。
RP2040と電源・水晶振動子まわり:人間が介入した部分
マイコンはRaspberry PiのRP2040を使っている。話者の説明によれば、RP2040は3.3Vの電源が必要で、USBから供給される5Vでは動作しない。そのため電圧レギュレーターで5Vを3.3Vに降圧している。
電源まわりのパスコンについて、話者はAIのレイアウトを「動かないこともなさそう」だが若干怪しいと見た。そこで位置の調整だけ人間が手を入れた。ただし、その介入も完璧ではないと話者は付け加えている。配線には自動配線を使った。
マイコンの左下には水晶振動子がある。話者によれば、RP2040は発振回路を内蔵しているのでマイコン単体でも動作できるが、USB経由でプログラムを書き込む場合は水晶振動子が必須になる。この部分もAIのレイアウトは微妙だったため、部品の位置だけ人間が調整し、配線は自動配線に任せた。
外付けフラッシュメモリとコストの見落とし
マイコンの左側にはフラッシュメモリがある。RP2040はプログラム用のフラッシュメモリを内蔵していないため、外付けが必要になる。話者は後になって、フラッシュメモリを内蔵したラズパイ系マイコン「RP2354」があることを知った。これを使えば設計をもう少し簡単にできたのではないかと考えている。
価格でも差があった。今回の構成では、RP2040が0.99ドル、外付けフラッシュメモリが2.54ドルで、合計3.53ドルだった。一方、RP2354は1.62ドルで、フラッシュ内蔵の構成にすれば2ドル近く安くなる。5枚作ったので、合計で10ドル近く安くできる選択肢があったことになる。今回はAIが出してきた設計をそのまま作ったが、もっと安く作れないかをAIと対話して確認しておくべきだった、と話者は振り返っている。
AIがRP2040を選んだ理由と古い知識
RP2040を採用した理由をAIに尋ねると、「初回で確実に動くことを最優先した」ことと「E9エラッタへの警戒」の2点を挙げた。前者については、自作キーボードの世界ではRP2040がよく使われているので、それに倣ったという説明である。
E9エラッタについては話者も初めて知った。調べてみると、すでに解決済みの問題であることが分かった。この点をAIに問いただすと、AIの持っている情報が古く、AI自身も改めて調べて解決済みであることに気づいたという。
PCへの接続とファームウェアの自動生成
PCに接続すると、基板はマイコンとして正しく認識された。水晶振動子、パスコン、フラッシュメモリまわりのレイアウトや自動配線が「かなりしょぼかった」ため、話者は動くかどうか心配していた。それでも無事に動作したようだった。ただし、挿しただけでは電源が入っているのかマイコンが動いているのかが分からない。インジケーター用のLEDも付ければよかった、と話者は述べている。
この時点では、ファームウェアを何も書き込んでいないのでキーボードとしては動かない。そこでAIにファームウェアの作成を頼んだところ、AIがさまざまな作業を自分で進めてくれそうだったので、そのまま任せた。5分ほど待つとAIが作業を進め、キーボードとして使える状態になった。
実際に入力すると文字が打て、改行もバックスペースも正常に動いた。話者は、自分はほとんど何もしていないのに動く回路ができたと驚いている。AIがここまで自律的に動き、ファームウェアの書き込みまで自動で行うとは思っていなかったとも語っている。
規則的に動かないキーとAIとのデバッグ
使っているうちに、特定のキーだけが反応しないことが分かった。数字の列では1と2は入力できるが3と4が入らず、5から9は動く。その下の列でもQとWは動くがEとRが動かない。同様にAとSは動くがDとFが動かず、最下段もZとXは動くがCとVが動かない。
話者は、不具合に法則性があるので原因はある程度推定できたとしつつ、まずAIに理由を尋ねた。全キーを打ち込んだ結果をチャットで見せ、対話しながらデバッグを続けたが、なかなか解決しなかった。
そこで話者自身が回路図を確認したところ、カラム3とカラム4が存在しないように見えることに気づいた。この点をAIに伝えると、AIは「いい着眼点です、データで確認しましょう」と応じた。5分ほど待つと、AIは回路図のバグを見つけた。カラム3とカラム4が3.3V電源とショートしていたのである。回路図では、ラズパイマイコンの3.3V電源のネットとカラム3・4がつながっていた。
原因:部品を詰め込みすぎた回路図
話者によれば、原因はAIが回路図を作る際に部品をぎちぎちに詰めて配置したことにある。部品の配置間隔に余裕を持たせていれば防げた事故だという。予想していなかった箇所での不具合ではあったが、AIへの指示を適切に出せば防げた種類のものである。話者は、この知見を次回以降のAI設計に活かせるとしている。
AI回路設計の評価と使いどころ
話者のまとめでは、キーボードとしての基本機能は問題なく動いた。回路図のミスで一部のキーが動かなかったが、原因は特定済みで次回以降は改善できる。そのため、ラピッドプロトタイプとしては成功と言ってよいと評価している。
大きなミスなくうまくいった理由について、話者は題材を挙げる。自作キーボードはありふれたテーマで、インターネット上に回路図が数多く公開されている。ファームウェアもオープンソースで公開されており、AIもそれを参照していた。
ここまでの試作に話者が使った時間は3時間ほどだという。その経験から話者は、AIによる回路設計を過大評価すべきではないが、現状では過小評価もすべきではないと述べている。使いどころとしては、配線を正しくつなげば動くような回路ならAI設計で十分に通用すると考えている。一方、パワー系などそれ以外の領域は、まだ人間がやったほうがよいというのが話者の現時点での見方である。
この動画はJLCPCBの提供でお送りします。こんにちは。AIに設計してもらったプリント基板が届きました。
前回の動画ではAIにハードウェアの設計をしてもらって、それをJLCPCBに発注したところで終了していました。今日は実際に届いた基板、こちら自作キーボードなのですが、実際に届いたものの解説をしつつ、ソフトウェアの開発もAIにやってもらいながら進めていこうかと思います。
その前に今日のスポンサーの紹介です。どうぞ。
こちらが実際に届いた基板です。今回は5枚作りました。部品は全て実装済みです。マイコンとかもピンの数が多いですし、部品は基本的に表面実装部品を使っていますので、この数の部品を家でリフローや手はんだをしていくのは無理だということで実装してもらっています。
前回の動画でも費用については話しましたが、プリント基板代金、部品代金、実装組み立て代金、送料、全部トータルで66ドルでした。1枚2000円くらいで作れたことになります。
キーボード本体をよく見ていきます。よくあるキーマトリクスを使っているタイプのキーボードです。60%キーボードで英語配列のものとなっています。
作った後に気がついたのですが、全角半角の切り替えのキーを入れていませんでした。私の場合日本語で使うことがほとんどなので、作っておけばよかったです。ただこの部分についてはソフトの方で対応できるので、使う頻度の少ないAltキーを日本語への切り替えに割り当て、みたいな感じで対応はできます。
キースイッチの対応がわかるようにシルクで文字も入れてみたのですが、ちょっとサイズが小さすぎました。もう少し部品の配置なんかを工夫してシルクを大きくすればよかったです。
肝心のキースイッチについては、今回は初期試作ということで、単価が安いタクトスイッチを使うようにAIにお願いしています。実際にAIは実装費用が安く上がる表面実装タイプのタクトスイッチを選んでくれました。1個3円です。ただもっと安い同じ形状のタクトスイッチもあって、そちらは1個1円でした。
AIになぜわざわざ値段の高いタクトスイッチを選んだのか理由を聞いたところ、使用事例の多かったタクトスイッチを選んだとのことです。結果的には値段の高い方が選ばれました。価格の横断比較はしておらず、EasyEDAのライブラリで部品を検索して、LCSCで在庫ありを確認したら、その時点で探索終了という動作をしています。同等品での価格ソートはしていないようです。
実績はないけども価格の安い部品というよりかは、実績はあるけども高い部品を選んだようなので、価格を抑えたい設計の場合は価格でソートしていくつか候補を出してみるようにAIに指示を出すと良さそうです。それか使いたいパーツを最初から指定しておくと、もっとスムーズにいくかと思います。
その他の部品についても見ていきます。今回使ったマイコンはRaspberry PiのRP2040です。このマイコン自体は3.3Vの電源が必要で、USBから来ている5Vでは動作しません。なので電圧レギュレーターを使って5Vを3.3Vまで降圧する必要があります。
電源周りについているパスコンの配置なんかも、AIがしたレイアウトですと動かないこともなさそうな感じですが、若干怪しかったので位置調整だけ人間が介入しています。ただ人間の介入も完璧というわけではないです。配線については自動配線を使いました。
マイコンの左下にある部品が水晶振動子です。RP2040自体は発振回路が内蔵されているので、マイコン単体でも動作は可能です。ただUSBに接続してそこからプログラムを書き込んだりする場合には、水晶振動子は必須となっています。水晶振動子部分の部品レイアウトについてもAIでの設計は微妙だったので、部品の位置調整だけ人間が介入して、その後の配線は自動配線を使いました。
マイコンの左にある部品はフラッシュメモリです。RP2040マイコンにはプログラム用のフラッシュメモリは内蔵されていないので、メモリを外付けする必要があります。ただ後で気がついたのですが、RP2354というフラッシュメモリを内蔵しているラズパイマイコンもあるようです。これを使えばもう少し設計が簡単になるのではないかなとは思いました。
さらに部品の価格でも見てみると、今回の設計ではRP2040が0.99ドル、外付けフラッシュメモリが2.54ドルで、トータル3.53ドルでした。一方でフラッシュ内蔵のRP2354は1.62ドルとなっていて、フラッシュメモリ内蔵のシンプルな構成の方が2ドル近く安くできます。基板は5枚作ったので、トータルで10ドル近く安くできる選択肢もあったことになります。
今回はとりあえずAIが出してきたものをそのまま作りましたが、このあたりはもう少しAIと対話して安く作れないか、みたいなことは聞いておいた方が良かったです。
ちなみになぜRP2040を採用したのかAIに聞いてみると、このように回答しました。初回で確実に動くを最優先した、そしてE9エラッタへの警戒です。初回で確実に動くについては、自作キーボード界隈ではRP2040はよく使われるので、それに倣って採用したということです。
E9エラッタについては私も初めて知ったのですが、調べてみるとどうやらすでに解決されている問題であることがわかりました。これについてAIに問いただしてみると、AIの中の情報も古くて、AIも自分で調べてみると、すでに解決した問題であることに気がついたようです。
回路の中身や価格、部品選定理由についてはこれくらいにしておいて、次は実際に使ってみます。まずはパソコンにつないでみると、このようにしっかりと認識されています。しっかりとマイコンとして認識されています。
水晶振動子とかパスコン、フラッシュメモリあたりのレイアウトや自動配線がかなりしょぼかったので、動くかどうか心配だったのですが、無事に動いていそうです。ただ挿しているだけですと、電源が入っているのかとか、マイコンが動いているとかがわからないので、インジケーター用のLEDもつければよかったです。
ちなみにこの状態ですとまだ何も動きません。マイコンにファームウェアとかソフトウェアとか何も書き込んでいないからです。その後ファームウェアを作るようにお願いしたのですが、勝手にいろいろやってくれそうなので進めてもらいました。5分ぐらい待機していたらいろいろ進めてもらって、無事キーボードとして使えるようになりました。
実際ファームウェアを書き込んで動かせる状態のものがこちらです。打ち込んでみるとこんな感じで動いています。
ちゃんと動いています。改行もできますし、バックスペースもちゃんと動きます。すごいです。自分じゃほとんど何もやっていないのに、動く回路ができてしまいました。AIについてもここまで自律的に動いて、ファームウェアの書き込みまで自動でやってくれるとは思っていなかったので、AIの進化に驚いています。
ただ使っているうちに、特定のキーだけ使えないことに気がつきました。1、2、3、4。3と4が動かないです。5、6、7、8、9というふうには動いていきます。こちらのアルファベットの列もそうです。Q、Wは動きますけども、E、Rが動かなくて、さらにその下の列もそうです。A、Sは動くけどもD、Fは動かない。最後のところについても、Z、Xは動くけどもC、Vは動かない、というふうになっています。
法則性のある不具合ですので、ある程度原因は推定はできるのですけども、AIにもなんでこうなったのか聞いてみました。チャットのやり取りを見せると、このようにキーを全部打ち込んだものを見せています。そこからAIと対話しながらデバッグ作業を続けていましたが、なかなか解決しません。
私の方でも回路図をよく確認してみたところ、コラムの3と4がないことに気がついたので、それについてAIに聞いてみました。そうしますとAIは「いい着眼点です、データで確認しましょう」。はあという感じですが、数分間待ってみます。5分ぐらい待ってみると、AIが回路図のバグを発見しました。「column3とcolumn4は3.3V電源にショートしています」。なんだよそれという感じです。
回路図を見てみるとちょうどこの部分です。ラズパイの電源の3.3Vのネットリストと、column3と4がつながっていました。こうなってしまった原因というのは実はわかっていて、AIが回路図を作るときに部品をギチギチに詰めてしまったから起こった事故です。これは部品の配置間隔にゆとりを持てば防げた事故です。
あまり予想していないところで起こった不具合ではあるのですけども、AIへの指示をちゃんと出せば防げたような感じですので、このあたりの知見については次回以降AIで設計するときに役に立つかと思います。
というわけでこのように、自作キーボードの設計をAIにやってもらいました。キーボードとしての基本的な機能は問題なく動作していましたが、回路図のミスで一部動かないキーもありました。ただこれについては原因も特定済みで、次回以降は改善できるので、ラピッドプロトタイプとしては成功したと言って良いと思います。
今回AIを使った設計なのですが、大きなミスなくかなりうまくいった方かなとは思ってます。というのも自作キーボードというありふれた題材ですし、インターネット上にたくさんの回路図があるということも、ここまでうまくいった要因かと思います。使うファームウェアについてもオープンソースで公開されていて、AIもそれを参照していました。
ここまで実際やってきた感想として、AIを使った回路設計の過大評価は禁物ですが、過小評価も現状ではするべきではないと思いました。実際ここまでの試作品を作るのに私が使った時間は3時間ぐらいですからね。
ではどんな時にAIを回路設計に活用できるかですが、配線をつないであれば動くような回路であれば、AI設計は十分に通用すると思います。それ以外のパワーであったりそのあたりは、まだまだ人間がやった方が良いのではないかなとは考えてます。
というわけでもしこの動画が役に立ちましたら、ぜひ高評価をよろしくお願いします。何か気になることがありましたら、コメントでも残してみてください。それでは最後まで動画をご視聴いただきありがとうございました。
記事公開
