シリーズ全体を読む
この記事は、Quilterの物理法則に基づくレイアウト自動化を使い、NXP i.MX 8M Mini搭載コンピューターを再現した過程を詳しく紹介するシリーズの一部です。
電子回路設計の範囲は広いため、Quilterの当面の製品ロードマップでは、ユーザーの皆様が最もよく作成する基板、つまり高密度の 高速デジタル設計に注力することにしました。
そして、デジタルエレクトロニクスの広い世界で、AI設計者に経験を積ませる場として、モノのインターネット(IoT)のプロジェクトほどふさわしいものがあるでしょうか。IoTモジュールといえば、ESP32ほど象徴的なものもありません。
この記事では、私がQuilterで初めて取り組んだプロジェクトである、カスタムESP32開発基板を紹介します。QuilterのAI PCB設計ツールがすべてを設計し、人による手直しや修正は行っていません。
ESP32ベースの開発基板、QSP32のご紹介

今回製作した「QSP32」基板は、現在多くのエンジニアが取り組んでいるIoT設計の典型例であり、Quilterがすでに得意としている設計でもあります。
このQSP32設計では、具体的にはESP32-WROOM-32Eモジュールを採用し、次のものを備えています。
- 豊富なGPIOを備えています。
- USB-UART変換チップを搭載しています。
- 電圧安定化とバッテリー充電を管理する便利な電源ICを搭載しています。
基板には、Boot0とResetのプッシュボタンに加え、外部LCDを接続するためのI2Cインターフェースも備えています。
👏
先に結果をお伝えします!Quilterは見事に設計を仕上げてくれました。Macrofabで製造したところ、きちんと動きました!😄
基本的なArduinoの「blinky」スケッチでLEDを点滅させるQSP32
Quilterでの設計
Quilterでのジョブ設定は、大きく2つのステップで行います。
- 入力ファイルのアップロードを行います。回路図と基板ファイルによって、ネットリスト、部品フットプリント、基板外形、および事前配置済み部品の位置を定義します。
- 制約の定義を行い、QuilterのAI設計ツールがレイアウト時に守るべき、主な物理的要件を指定します。
入力ファイル
この設計では、位置が重要な少数の部品だけを事前に配置しました。
- ESP32モジュールを配置したのは、信号干渉を減らすため、ESP32のパターンアンテナが基板の端から外に出るようにしたかったからです。
- USB、JST、ヘッダーの各コネクタは、基板の同じ辺にまとめて配置するためです。
- そしてプッシュボタンは、ESP32モジュールの近くに、対称にまとめて配置するためです。
残りの部品は未配置のままにしました。右側を見ると、部品は合計57個で、そのうち9個を私が事前配置したことが分かります。残る48個の部品、161ピンの配置と配線をQuilterに任せました。

物理制約
QSP32の設計で主に考慮した物理的要件は、次のとおりです。
- 大電流ネットを、USB-C電源とLi-Po充電回路に使用します。
- 差動ペアを使用して、USB-CコネクタとESP32の間で高速USB信号を伝送します。
- そして、バイパスコンデンサによって、十分なデカップリングを確保します。
ℹ このレイアウトを生成した当時(2024年7月)、Quilterが対応していたのは大電流ネットのみで、差動ペアにはまだ対応していませんでした。バイパスコンデンサの制約にも未対応でした。次のESP32ベースのプロジェクト、QSP32 Solar Boostでは、この2種類の新しい制約を活用するための更新を行います。ぜひご期待ください!
ESP32 WROOMモジュールを選んだ理由の1つは、アンテナの調整や、水晶振動子と負荷コンデンサの配置といった、追加の物理制約を考慮する必要をなくすためです。
以下のスクリーンショットは、Quilterにレイアウトジョブを送信する前に定義した大電流ネットの制約を示しています。

出力ファイル
1時間半のコンパイルで200以上のレイアウト候補が生成されました。その中から、最終的に製造用に選んだ設計がこちらです!

KiCad標準のDRCを実行すると、部品ライブラリの同期とシルクスクリーンの線幅に関する警告がいくつか出ましたが、DRCエラーはありませんでした。やりました!

立ち上げと検証
MacroFabから実装済み基板を受け取った後、立ち上げの一環として検証する必要があった主な機能は、次のとおりです。
- バッテリー充電と、基板上のユーザーLEDおよび充電LEDの動作を確認します。
- I2C通信を、外部LCDを使い、引き出されたヘッダーピン経由で確認します。
- シリアル通信を、USB経由でコンピューターと行い、確認します。
LEDとLiPo充電


基本的なArduinoのBlinkサンプルを書き込み、基板のLEDを検証しました。これにより、USB-C-UARTインターフェース経由で書き込みができる程度には、USB(5V)からMCU用の3.3Vへの電圧安定化が機能していることも確認できました。
点灯しているLEDは、電源が接続され、基板上のLTC3557 ICを介してLiPoバッテリーが充電中であることを示しています。ここに写っているバッテリーの測定電圧は3.9Vです。
すべてのLEDは想定どおりに動作しています。ただし、RXとTXのLED用の20Ω抵抗は、値をもっと小さくすれば明るさを上げられたはずです。QuilterとMacrofabは、すべてのダイオードを正しい向きに配置してくれました。この素晴らしい仕事をしてくれたMacrofabに感謝します。
I2C経由のLCD接続

こんにちは、世界!
I2C経由でバッテリーの充電電圧をLCDに表示する、簡単なArduinoスケッチを書きました。このLCDは5V用に設計されているため、3.3V電源ではやや暗いものの、データははっきり表示されています。
シリアル通信

Arduinoのシリアルモニターを使い、USB-UART接続経由で12ビットのA/Dコンバータ(ADC)をデバッグしています。画像は、バッテリーを接続したときと、ADC(GPIO35)をグランドに接続したときのADC値(adcValue: 0)を示しています。
設計の検証
すべての機能を確認できたので、オシロスコープを取り出して、QSP32の特に重要な信号の品質を詳しく見てみましょう。
電源
QSP32の電源入力経路はUSB-Cコネクタから始まり、USB電圧を保護ダイオードD1経由で電圧レギュレータU1に供給します。U1の3.3V出力は、インダクタ、コンデンサ、2個の抵抗を通り、ESP32と、少し離れたテストポイント用ヘッダーに届きます。


青い波形は、ノートPCから給電されているUSBコネクタの、ノイズを含む入力を示しています。黄色い波形は、保護ダイオードD1を通過した後の信号で、U1への入力でもあります。

U1の3.3V出力は、非常にクリーンです。オシロスコープ上のピンクの波形が、この出力を示しています。さらにインダクタ、2個のコンデンサ、2個の抵抗によるフィルタリングを経て、最終的な3.3V電源になります。黄色い波形はESP32の電源ピンにプローブを当てて測定したもので、このフィルタリングが有効に働いていることを示しています。

シグナルインテグリティ:I2C
I2CのSDA(データ)線とSCL(クロック)線は、一般的な16x2 LCDに接続されています。これらの信号を解析するため、画面のデータを毎秒更新するようにプログラムしました。オシロスコープでは、クロック信号を黄色、データをピンクで表示しています。ESP32のGPIO21とGPIO22の各ピンに直接プローブを当て、これらの信号を取得しました。

同じ信号を拡大したものがこちらです。

シグナルインテグリティ:USB
USBのシグナルインテグリティを評価するため、USB-UARTインターフェースでDP_NとDN_Pにプローブを当てました。
DP信号とDN信号は差動ペアとして配線されていなかったため、レイアウト上で十分に整合していませんでした。特性は似ていますが、完全には一致しておらず(画像16)、シグナルインテグリティを損なう可能性があります。この不整合により、ノイズの影響を受けやすくなったり、位相ずれが生じたりするおそれがあります。今後の反復では、適切な差動ペア配線によって、信号全体の信頼性を高めます。
それでも、USB-Cコネクタ経由でのQSP32への書き込みは、非常に安定しており、信頼性も十分です。3枚の基板を製造しましたが、いずれもすぐに接続できます。



結論
ESP32 WROOMモジュールを選んだのは、アンテナ、水晶振動子、バイパスコンデンサといった主要部品が内蔵されているからです。これらは、Quilterチームが製品の物理制約として追加するため、まだ開発を進めている要素です。
今後は、QuilterだけでESP32モジュールを作成します。また、この設計の次の改訂では、最近追加された差動ペア対応を取り入れる予定です。
この基板に対するQuilterの自動配置・配線は非常に優れており、手作業での設計にかかる数日分の時間を節約できました。
設計の改善点
- Quilterの差動ペア機能を使用します。
- ADCにプルダウン抵抗を追加します。
- USB電源に加えてバッテリー電源も使用するようにLTC3557を設定します。
- TX / RXのLEDが暗すぎます。
- 電源オンを示すLEDを追加します。
- 不要なENスイッチを削除します。
- 中央のヘッダーをテストポイントに置き換えます。
- LCD用に5V出力を追加します。
- 「試作」用に基板を緑色で製作します。
次のステップ
QSP32プラットフォームを基に、デジタルオーディオミキサーを共同設計する予定です。この新しい設計では、音量調節用のロータリースイッチと、オーディオ信号の経路を切り替えるアナログマルチプレクサ(74HC4051)を搭載します。
























