Workbench

日付

著者

Workbench

QSP32:IoT開発基板

日付

初回公開日

September 29, 2024

著者

レビュー担当者

シリーズ全体を読む

/ 6

この記事は、Quilterの物理法則に基づくレイアウト自動化を使い、NXP i.MX 8M Mini搭載コンピューターを再現した過程を詳しく紹介するシリーズの一部です。 

電子回路設計の範囲は広いため、Quilterの当面の製品ロードマップでは、ユーザーの皆様が最もよく作成する基板、つまり高密度の 高速デジタル設計に注力することにしました。

そして、デジタルエレクトロニクスの広い世界で、AI設計者に経験を積ませる場として、モノのインターネット(IoT)のプロジェクトほどふさわしいものがあるでしょうか。IoTモジュールといえば、ESP32ほど象徴的なものもありません。

この記事では、私がQuilterで初めて取り組んだプロジェクトである、カスタムESP32開発基板を紹介します。QuilterのAI PCB設計ツールがすべてを設計し、人による手直しや修正は行っていません。

ESP32ベースの開発基板、QSP32のご紹介

Image 1: Meet Quilter “candidate 11”, fresh off the PCBA line from Macrofab
画像1:Macrofabから届いたばかりのQuilter「候補11」です

今回製作した「QSP32」基板は、現在多くのエンジニアが取り組んでいるIoT設計の典型例であり、Quilterがすでに得意としている設計でもあります。

このQSP32設計では、具体的にはESP32-WROOM-32Eモジュールを採用し、次のものを備えています。

  • 豊富なGPIOを備えています。
  • USB-UART変換チップを搭載しています。
  • 電圧安定化とバッテリー充電を管理する便利な電源ICを搭載しています。

基板には、Boot0とResetのプッシュボタンに加え、外部LCDを接続するためのI2Cインターフェースも備えています。

👏

先に結果をお伝えします!Quilterは見事に設計を仕上げてくれました。Macrofabで製造したところ、きちんと動きました!😄

基本的なArduinoの「blinky」スケッチでLEDを点滅させるQSP32

Quilterでの設計

Quilterでのジョブ設定は、大きく2つのステップで行います。

  1. 入力ファイルのアップロードを行います。回路図と基板ファイルによって、ネットリスト、部品フットプリント、基板外形、および事前配置済み部品の位置を定義します。
  2. 制約の定義を行い、QuilterのAI設計ツールがレイアウト時に守るべき、主な物理的要件を指定します。

入力ファイル

この設計では、位置が重要な少数の部品だけを事前に配置しました。

  • ESP32モジュールを配置したのは、信号干渉を減らすため、ESP32のパターンアンテナが基板の端から外に出るようにしたかったからです。
  • USB、JST、ヘッダーの各コネクタは、基板の同じ辺にまとめて配置するためです。
  • そしてプッシュボタンは、ESP32モジュールの近くに、対称にまとめて配置するためです。

残りの部品は未配置のままにしました。右側を見ると、部品は合計57個で、そのうち9個を私が事前配置したことが分かります。残る48個の部品、161ピンの配置と配線をQuilterに任せました。

Image 2: Preview of my input board file to Quilter
画像2:Quilterへの入力基板ファイルのプレビュー

物理制約

QSP32の設計で主に考慮した物理的要件は、次のとおりです。

  • 大電流ネットを、USB-C電源とLi-Po充電回路に使用します。
  • 差動ペアを使用して、USB-CコネクタとESP32の間で高速USB信号を伝送します。
  • そして、バイパスコンデンサによって、十分なデカップリングを確保します。
ℹ このレイアウトを生成した当時(2024年7月)、Quilterが対応していたのは大電流ネットのみで、差動ペアにはまだ対応していませんでした。バイパスコンデンサの制約にも未対応でした。次のESP32ベースのプロジェクト、QSP32 Solar Boostでは、この2種類の新しい制約を活用するための更新を行います。ぜひご期待ください!

ESP32 WROOMモジュールを選んだ理由の1つは、アンテナの調整や、水晶振動子と負荷コンデンサの配置といった、追加の物理制約を考慮する必要をなくすためです。

以下のスクリーンショットは、Quilterにレイアウトジョブを送信する前に定義した大電流ネットの制約を示しています。

Image 3: QSP32 high current net constraints
画像3:QSP32の大電流ネットの制約

出力ファイル

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

Image 4: Output file in Kicad from Quilter
画像4:KiCadで表示したQuilterの出力ファイル

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

Image 5: Error-free DRC
画像5:エラーのないDRC結果

立ち上げと検証

MacroFabから実装済み基板を受け取った後、立ち上げの一環として検証する必要があった主な機能は、次のとおりです。

  1. バッテリー充電と、基板上のユーザーLEDおよび充電LEDの動作を確認します。
  2. I2C通信を、外部LCDを使い、引き出されたヘッダーピン経由で確認します。
  3. シリアル通信を、USB経由でコンピューターと行い、確認します。

LEDとLiPo充電

Image 6: QSP32 powers on and charges a single cell LiPo through power chip LTC3557
画像6:電源が入り、電源チップLTC3557を通じて単セルのLiPoバッテリーを充電するQSP32
USB電源と小型リチウムポリマー電池に接続され、LEDが点灯したQSP32基板。

基本的な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接続

Image 7: LCD showing battery voltage over I2C
画像7:I2C経由でバッテリー電圧を表示するLCD

こんにちは、世界!

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

シリアル通信

Image 8: Serial data debugging
画像8:シリアルデータのデバッグ

Arduinoのシリアルモニターを使い、USB-UART接続経由で12ビットのA/Dコンバータ(ADC)をデバッグしています。画像は、バッテリーを接続したときと、ADC(GPIO35)をグランドに接続したときのADC値(adcValue: 0)を示しています。

設計の検証

すべての機能を確認できたので、オシロスコープを取り出して、QSP32の特に重要な信号の品質を詳しく見てみましょう。

電源

QSP32の電源入力経路はUSB-Cコネクタから始まり、USB電圧を保護ダイオードD1経由で電圧レギュレータU1に供給します。U1の3.3V出力は、インダクタ、コンデンサ、2個の抵抗を通り、ESP32と、少し離れたテストポイント用ヘッダーに届きます。

Image 9: QSP32 Schematic snippet. 3.3V net highlighted in pink
画像9:QSP32の回路図の一部。3.3Vネットをピンクで強調表示しています
Image 10: QSP32 voltage regulator component layout
画像10:QSP32の電圧レギュレータ周辺の部品レイアウト

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

Image 11: Input to U1
画像11:U1への入力

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

Image 12: 3.3V power supply. Pink at U1, yellow at ESP32
画像12:3.3V電源。ピンクはU1、黄色はESP32での測定値です

シグナルインテグリティ:I2C

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

Image 13: SCL (yellow) / SDA (pink) signal integrity.
画像13:SCL(黄色)/ SDA(ピンク)のシグナルインテグリティ。

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

Image 14: SCL (yellow)/ SDA (pink) signal integrity.
画像14:SCL(黄色)/ SDA(ピンク)のシグナルインテグリティ。

シグナルインテグリティ:USB

USBのシグナルインテグリティを評価するため、USB-UARTインターフェースでDP_NとDN_Pにプローブを当てました。

DP信号とDN信号は差動ペアとして配線されていなかったため、レイアウト上で十分に整合していませんでした。特性は似ていますが、完全には一致しておらず(画像16)、シグナルインテグリティを損なう可能性があります。この不整合により、ノイズの影響を受けやすくなったり、位相ずれが生じたりするおそれがあります。今後の反復では、適切な差動ペア配線によって、信号全体の信頼性を高めます。

それでも、USB-Cコネクタ経由でのQSP32への書き込みは、非常に安定しており、信頼性も十分です。3枚の基板を製造しましたが、いずれもすぐに接続できます。

Image 15: Schematic snippet
画像15:回路図の一部
Image 16: DM / DP lines signals taken at U2
画像16:U2で測定したDM / DP線の信号
Image 17: A zoomed in view of DM and DP
画像17:DMとDPの拡大表示

結論

ESP32 WROOMモジュールを選んだのは、アンテナ、水晶振動子、バイパスコンデンサといった主要部品が内蔵されているからです。これらは、Quilterチームが製品の物理制約として追加するため、まだ開発を進めている要素です。

今後は、QuilterだけでESP32モジュールを作成します。また、この設計の次の改訂では、最近追加された差動ペア対応を取り入れる予定です。

この基板に対するQuilterの自動配置・配線は非常に優れており、手作業での設計にかかる数日分の時間を節約できました。

設計の改善点

  • Quilterの差動ペア機能を使用します。
  • ADCにプルダウン抵抗を追加します。
  • USB電源に加えてバッテリー電源も使用するようにLTC3557を設定します。
  • TX / RXのLEDが暗すぎます。
  • 電源オンを示すLEDを追加します。
  • 不要なENスイッチを削除します。
  • 中央のヘッダーをテストポイントに置き換えます。
  • LCD用に5V出力を追加します。
  • 「試作」用に基板を緑色で製作します。

次のステップ

QSP32プラットフォームを基に、デジタルオーディオミキサーを共同設計する予定です。この新しい設計では、音量調節用のロータリースイッチと、オーディオ信号の経路を切り替えるアナログマルチプレクサ(74HC4051)を搭載します。

リンク・資料

Quilterを実際に試す

Project Speedrunは、自律的なレイアウトの実際の姿と、Quilterが実現する時間短縮を示しました。次は、ご自身のハードウェアでお確かめください。

利用を始める

設計の検証

仕上げが完了したら、最後に確認するのはハードウェアが動作するかどうかです。電源投入時には電気的な不具合の多くが現れます。エンジニアにとって、緊張と期待が入り交じる瞬間です。

第4回に進む

設計の仕上げ

自律的なレイアウトにより、DRCを実施済みの完成した設計が得られます。仕上げは、製造に向けて最終調整するための短い精密な作業です。

第3回に進む

設計のコンパイル

設計の準備ができたら、次はQuilterに引き渡します。従来のワークフローでは、この段階でエンジニアとレイアウト担当者が設計意図を確認します。Quilterはこの打ち合わせを回路理解のプロセスに置き換えます。プロジェクトをアップロードし、制約条件がどう解釈されたかを確認して、ジョブを実行します。

第2回に進む