シミュレーション通過 ≠ 量産の安全。ブレッドボードが初心者を裏切ってきた方法がまさにこれです — 一種類の成功を全体の成功と誤解させること。そのため ibouPCB は検証を 3 つのゲートに分け、決して混ぜて表示しません。
3 重検証ゲート
| ゲート | 検証するもの | 検証できないもの | ツール |
|---|---|---|---|
| ① ロジック検証 | コードが意図どおりに動くか | 電気的な安全性のすべて | シミュレーター(L0) |
| ② 電気検証 | 焼損させないか | 実際のノイズ・EMI | ERC + DRC エンジン |
| ③ 実機検証 | 本当に動作するか | — | ユーザー自身 |
- ①② が両方とも緑でなければダウンロードボタンは開きません。
- ③ は決して自動で緑になりません。ボードを受け取って直接確認したあとにユーザーがチェックします。
- シミュレーターで捉えられないものを常に明示します: 電源ノイズ、グラウンドバウンス、EMI、センサーのタイミングばらつき、部品公差。
AI は提案のみ、判定は決定論的に
回路拡張には 2 つの提案ソースがあります。1 つはルールとカタログのリファレンス回路からネットリストを作る決定論的拡張器、もう 1 つは JSON スキーマを強制した AI 提案器(N=3 サンプル)です。どちらが作ったものであれ、以下の検証器をすべて通過しなければ採用されません。検証器のコードに AI はありません — すべて決定論的なコードです。
- AI はカタログ外の部品を作れません。提案はカタログ ID でのみ部品を指定し、存在しない ID は即座に拒否されます。
- いずれかの段階で error が出れば採用しません。警告はユーザーに表示したうえで進行します。
- AI キーがない場合や合意に失敗した場合は、常に決定論的拡張器にフォールバックします。
- すべての判定は根拠を残します。ゴールデンパターンごとに出典(Arduino 公式回路図、Espressif ハードウェア設計ガイドなど)が記録されています。
8 段階(P1–P8)
| 段階 | 検査 | 防ぐもの |
|---|---|---|
| P1 スキーマ | 部品・ネット・ピンの構造が形式に合っているか | 壊れた提案 |
| P2 カタログ接地 | すべての部品 ID とピン名がカタログに実在するか | AI のハルシネーション(存在しない部品・ピン) |
| P3 ゴールデンパターン | MCU・レギュレーター・インターフェースごとの必須サポート回路があるか | EN プルアップの欠落、デカップリングの欠落のような「静かな」失敗 |
| P4 ERC ルール | 電圧ドメイン、I²C アドレス衝突、プルアップ、電流バジェット、フライバック、ブートストラップピン… | 初心者が実際に焼損させるもの |
| P5 ピン契約 | .ino の論理ピンがすべて 1:1 でマッピングされ、PWM・割り込み・ADC の能力が合っているか | コードと異なるボード |
| P6 合意(AI 専用) | N サンプルの正規化されたネットトポロジーを比較し、過半数の一致がなければ破棄 | 偶然通過した提案 |
| P7 KiCad DRC | 基板生成 → Freerouting 配線 → kicad-cli pcb drc | 製造不可能な基板(クリアランス・配線幅・ドリル) |
| P8 シミュレーション回帰 | 変換前 / 後のシミュレーション記録をピン契約で照合 | 「基板は正しいがコードが違う動きをする」ケース |
P1–P6 は KiCad なしで実行され、数秒で終わります。P7 は KiCad 9 コンテナで別プロセスとして動作し(GPL ツールはリンクもバンドルもしません)、P8 はブラウザシミュレーターとサーバーが共同で実行します。
ゴールデンパターン — 実際のオープンソース回路から読み取った事実
P3 のデータは人が考え出したルールではなく、公開回路図から読み取ったパターンです。
| 対象 | パターン | 出典 |
|---|---|---|
| ESP32-WROOM-32 | EN 10 kΩ プルアップ + 0.1 µF、3V3 に 10 µF + 0.1 µF デカップリング | Espressif Hardware Design Guidelines、Adafruit HUZZAH32、Olimex ESP32 4 種 |
| ATmega328P | 16 MHz 水晶 + 22 pF × 2、RESET 10 kΩ プルアップ、VCC / AVCC 100 nF | Arduino Uno Rev3 公式回路図 |
| AMS1117-3.3 | 入力 10 µF、出力 10 µF(+100 nF) | データシート推奨回路 |
| リレーコイル | NPN ドライバ + ベース抵抗 + フライバックダイオード | Arduino リレーモジュール回路 |
| I²C バス | SDA / SCL プルアップ(2.2 k–10 k)をちょうど 1 セット | NXP I²C 仕様 |
| DS18B20 | DQ 4.7 kΩ プルアップ | Maxim データシート |
パターンは実際のボードと照合しながら修正されます。たとえば Olimex の ESP32 ボード 4 種をインポートしたところ、EN プルアップと 3V3 バルクコンデンサは手書きのパターンと一致しましたが、IO0 の外部プルアップは 4 ボードすべてにありませんでした(ボタン + 内部プルアップ)。そのため IO0 プルアップの深刻度は error ではなく warning に調整されました。検証器はこのように根拠があるときにだけ変わります。
P4 ERC ルール — 実際に焼損させるもの
- 電圧ドメインの不一致 — 3.3 V GPIO ↔ 5 V センサーの直結 → レベルシフター / 分圧器を自動挿入
- GPIO 電流の超過 — ピン単位・ポート合計・チップ全体 → ドライバトランジスタを提案
- I²C アドレス衝突 — 同じバスに同一アドレスが 2 つ(例: 0x68 MPU6050 + DS3231) → アドレス変更可能なモジュールを提案
- I²C プルアップの欠落 / 重複 — バスごとのプルアップ合計 → 自動計算・挿入
- 電源バジェットの超過 — レギュレーター定格 vs 負荷合計 → 上位のレギュレーターを提案
- 誘導性負荷の保護欠落 — リレー・モーター・ソレノイド → フライバックダイオードを挿入
- デカップリングの欠落 — IC 電源ピンごとに 0.1 µF → 自動挿入
- PWM / 割り込み非対応ピンの使用、ピンの重複割り当て → 再割り当てを提案
- ブートストラップピンの誤用 — ESP32 GPIO0 / 2 / 12 / 15 → 警告 + 再割り当て
- 逆電圧保護・ESD 保護なし → ダイオード / P-MOSFET、TVS を提案
結果はこのように表示されます
✅ P1 スキーマ 通過
✅ P2 カタログ接地 通過(部品 14 個すべてカタログに実在)
✅ P3 ゴールデンパターン 通過 — ESP32-WROOM-32 EN プルアップ・デカップリング(Espressif HDG §2.1)
⚠️ P4 ERC 警告 1 — HC-SR04 ECHO 5V→3.3V: 分圧器を自動挿入済み
✅ P5 ピン契約 通過 — 5/5 論理ピンをマッピング、PWM 要求 2 個を充足
✅ P6 合意 3/3 サンプルのトポロジーが一致
✅ P7 KiCad DRC 0 件(unconnected 0)
✅ P8 シミュレーション回帰 6 ピン比較一致どの検査が、どの根拠で、何を直したのかをすべて表示します。教育製品だからです。そしてこのすべての緑の下には、常に「⚠️ 実機検証 未完了」が残っています。