シリーズ全体を読む
この記事は、Quilterの物理法則に基づくレイアウト自動化を使い、NXP i.MX 8M Mini搭載コンピューターを再現した過程を詳しく紹介するシリーズの一部です。
QSP32の成功を踏まえ、Quilterの生成型PCB設計機能を新たな領域へと押し広げることにしました。エナジーハーベスティング機能を備えたIoT基板です。
QSP32 Solar Boostをご紹介します!

QSP32 Solar Boostは、あらゆるIoTプロジェクトに太陽光による充電機能を組み込めるよう設計されたPCBです。QSP32と同様に、この基板のレイアウトは人の手を介さず、すべてQuilterの生成型設計によって作成されました。
QSP32 Solar BoostはESP32-C3-MINI-1モジュールに加え、次の機能を備えています。
- USB 2.0-UART変換チップ
- 5Vから3.3Vへの電源レギュレータチップ
- ソーラーパネルからマイクロワットまたはミリワット単位の電力を収穫するエナジーハーベスティング用チップ
- ヘッダー経由でのGPIOへのアクセス
- LCD画面用のI2Cインターフェース
- 湿度・温度・気圧を測定する3-in-1パッケージのセンサー
電力効率の最適化に取り組む方にも、環境に優しいデバイスを開発する方にも、このプロジェクトはQuilterが現実の課題に取り組みながら大幅な時間短縮を実現できることを示しています。
要約:Quilterはレイアウトで素晴らしい仕事をしてくれました。Macrofabで製造し、すべて期待どおりに動作しています!
プロジェクトの詳細は以下をご覧ください!
Hello Worldを点滅表示するQSP32 Solar Boost
Quilterでの設計
Quilterでのジョブ設定は、大きく分けて2つのステップで行います。
- 入力ファイルのアップロード(回路図と基板ファイル):ネットリスト、部品フットプリント、基板外形、事前配置した部品の位置を定義します。
- 制約条件の定義:QuilterのAI設計エンジンがレイアウト時に考慮すべき主要な物理的要件を指定します。
入力ファイル
この設計では、位置が重要ないくつかの部品を事前配置しました。
- ESP32-C3-MINIモジュール:信号干渉を減らすため、ESP32のパターンアンテナが基板の端から外側に出るようにしたかったためです。
- USBコネクタとバッテリーコネクタ:共通の一辺に沿ってまとめて配置しました。
- プッシュボタン:操作しやすいようESP32の近くに配置しました。
- ソーラーパネル用のはんだ付けポイント:筐体との組み合わせ方を検討中です。
残りの部品は未配置のままQuilterに任せました。右側を見ると、部品は全部で63個あることが分かります。そのうち10個を事前配置し、265ピンを持つ残り53個の部品の配置と配線をQuilterに任せました。

物理的制約
QSP32 Solar Boostの設計で主に考慮した物理的要件は次のとおりです。
- USB-C電源供給とLi-Po充電回路のための大電流ネット
- USB-CコネクタとUART間でUSB信号を伝送するための差動ペア
- 十分なデカップリングとフィルタリングを確保するためのバイパスコンデンサ
💡
このレイアウトを最初に生成した時点(2024年8月)では、Quilterがサポートしていたのは大電流ネットと差動ペアのみでした。バイパスコンデンサの制約にはまだ対応していませんでした。
以下は、Quilterにレイアウトジョブを送信する前に定義した大電流ネットの制約です。

Quilterに差動ペア機能が追加されました!差動ペアが必要なのはEthernetやUSBのような高速でノイズに敏感な通信プロトコルに限られますが、機能を試すため、USB-UART(USB-シリアル)ブリッジに差動ペアを1組定義しました。

出力ファイル
入力ファイルをアップロードしてから2時間後、12個の候補の中から候補7を選びました。片面実装、4層、希望する製造業者という条件を満たしていたためです。

選んだ設計はこちらです。

立ち上げと検証
MacroFabから実装済みの基板を受け取った後、検証が必要な機能は次のとおりでした。
- 電圧レギュレーション:ESP32向けの安定した3.3V
- ソーラーパネルによるエナジーハーベスティング
- USB経由でのPCとのシリアル通信
- 外部LCDを使用した、露出したヘッダーピン経由のI2C通信
- I2C経由のセンサーデータ:気圧、温度、湿度
Solar Boostの電圧レギュレーション、シリアル通信、BME280センサーの動作は、BME280センサーのデータ収集スケッチをESP32-C3-MINIモジュールに書き込むことで、一度に検証しました。
下の2枚目の画像のとおり、書き込みとシリアルでのデータ読み取りができていることから、電圧レギュレータがESP32に安定した3.3V(5.2VのUSB電源から)を供給していることが分かります。さらなる検証として、すぐ下に示すように3.3VとGNDの間に電源投入LED(D7)があります。


エナジーハーベスティング
エナジーハーベスティングはBQ25504によって行われます。これは、ソーラーパネルなどのデバイスが発電するマイクロワットまたはミリワット単位の電力を取得・管理するために設計された昇圧コンバータです。動作の検証には、開放電圧定格3.4V、最大電力点電圧2.2V(V @pmpp)の小型(約1.25インチ×2インチ)ソーラーパネルと、6.3V定格の470uF有極性コンデンサを使用しました。
パネルを日向と日陰の間で動かしながら、コンデンサにプローブを当てました。コンデンサは急速に充放電を繰り返します。この動画は1000倍速ですが、信号ははっきりと確認できます。
ソーラーパネルでコンデンサを充放電するQSP32 Solar Boost

I2C経由のLCD
このLCDはSolar Boost基板の露出したヘッダーピンに接続されており、I2Cバス経由で送信されたリアルタイムデータを表示します。
バッテリー電圧を読み取って表示する簡単なスケッチを書き込み、PCBレイアウトが正しく機能していることを確認しました。

設計の検証
QSP32 Solar Boostは完璧に動作しています!
機能の検証が済んだところで、さらに詳しく見ていきましょう。
シグナルインテグリティ:差動ペア
Quilterは常に新機能を追加しており、差動ペアにも対応するようになったので、この機能を使ってUSBとUART間の配線(オレンジ色の矢印)を処理しました。前述のとおり、USB-UARTブリッジにこの機能は必要ありませんが、それでもテストするのは楽しいものでした。

QuilterはFTDIチップをUSB-Cコネクタの近くにうまく配置してくれました。これらの配線はUARTチップ(上)とUSB-Cコネクタ(下)の間を結んでいます。差動ペアのレイアウトは精密に等長配線されており、良好なシグナルインテグリティが得られています。
DP_PとDP_N(白い矢印)にプローブを当てました。

このオシロスコープの波形は、USB-UARTインターフェースの差動信号を示しています。赤(DP)と青(DM)の波形は、期待どおり逆極性になっています。信号はクリーンで、安定したシグナルインテグリティを示しています。

差動ペアの拡大図も非常に良好です!ノイズはなく、信号は完全に鏡像になっています。

電源レギュレーション
QSP32 Solar Boostの電源経路は、USB-Cコネクタ経由のUSB電源(5.2V)から始まります。USB電源は3.3V電圧レギュレータに入り、3.3Vに降圧・安定化されます。ESP32は動作に非常に安定した電源を必要とするため、レギュレータの性能が重要です。

ほとんどのレギュレータは、入力側と出力側にバイパスコンデンサを必要とします。レギュレータに供給される電圧の安定化、デカップリング、高周波ノイズのフィルタ、そしてシステムの負荷が増加・変動したときの過渡応答のためです。
💡
このレイアウトを最初に生成した時点(2024年8月)では、Quilterはまだバイパスコンデンサの制約に対応していませんでした。
以下は、QuilterがSolar Boostの電圧レギュレータとその入力・出力コンデンサをどのように配置し、レイアウトしたかを示しています。自分でこれらの部品を手配置するなら、データシートの指示に従うでしょう。
外付け部品、特に出力コンデンサC13は、ICにできるだけ近づけて配置し、配線はできるだけ短くしてください。
とはいえ、基板上で測定できるすべての箇所で電圧は非常に安定した3.3Vだったため、この点は問題にならなかったようです。

Solar Boostを製造した1か月後、Quilterは「Circuit Comprehension(回路理解)」によってバイパスコンデンサに対応するようになりました。

このオシロスコープのスクリーンショットでは、青の波形がUSB-Cコネクタからの5Vラインの電圧、赤の波形が電圧レギュレータの3.3V出力を示しています。3.3V出力は非常にクリーンで、フィルタが効果的に機能していることが分かります。

シグナルインテグリティ:I2C
このバス上では、LCDと3つのセンサーという2つのデバイスが同時に通信しています。両方のデバイスが動作している状態で、SDA(データ、赤)とSCL(クロック、黄)の信号をキャプチャしました。信号にはややノイズがあるように見えますが、これはLCD画面がかなり長い(3インチ)ジャンパーワイヤーで接続されているためと考えられます。

I2Cバス上のセンサーをソフトウェアで初期化しなくても大きな違いはありませんでした(図示せず)が、LCD画面を物理的に取り外すと信号のノイズが減りました。
前述のとおり、LCD画面は基板上の外部パッドに接続されたジャンパーワイヤーで取り付けられているため、これは驚くことではありません。
💡
ここから得られた2つの教訓:
- I2Cはノイズに耐えられる堅牢な通信プロトコルである
- PCBをどれだけ最適化しても、シグナルインテグリティは基板外の要因に影響されうる(そして実際に影響される)!


試しに、Saleaeのロジックアナライザーでこの信号を調べてみました。センサーのアドレス0x76と、スケッチに組み込んだ8秒の遅延が確認できます。当然ながら、ロジックアナライザーはこれらの信号をI2Cとして正しく認識しています!

まとめ
ESP32-C3-MINIモジュールを選んだのは、アンテナ、水晶振動子、負荷コンデンサ、バイパスコンデンサといった必須部品が統合されているためです。Quilterの機能が増えていくにつれ、Quilterを使ってESP32モジュール全体を設計できるようになるのを楽しみにしています。
QSP32 Solar Boostの次のリビジョンでは、バイパスコンデンサ機能も利用する予定です!この基板でのQuilterの自動配置・配線は非常にうまく機能し、手作業でのレイアウトにかかる数日分の時間を節約できました。
設計の改善点
- USB-Cコネクタの両面を接続し、リバーシブル入力に対応する
- ADCにプルダウン抵抗を追加する
- USB電源に加えてバッテリー電源でも動作するよう構成する
- GPIO0がQ1に誤って配線されている
- D1の4ピンフットプリントを修正し、RGBステータス表示に使用する
- D6を反転する(設計上で逆向き)
- 電力を消費するためD5を削除する
- BQ25504の設定用抵抗値を見直す
- 不要なENスイッチを削除する
- ソーラーパネルの配置を変更する
- 「試作品」として緑色の基板で製造する
今後のステップ
QSP32 Solar Boostをベースに、低消費電力のソーラー用途で使えるよう効率の改善に取り組みます。筐体、より小型のLCD画面、ソーラーパネル用のより優れた機械的な固定具を備えれば、あらゆる種類の低消費電力の気象データ収集に使える、素敵な小型製品になるでしょう。
リンク/リソース
- QSP32 Solar Boost 入力ファイル
- QSP32 Solar Boost 出力ファイル
- QSP32 Solar Boost Arduinoスケッチ
























