Die gesamte Serie lesen
Dieser Artikel ist Teil einer ausführlichen Anleitung dazu, wie wir mit Quilters physikgestützter Layout-Automatisierung einen Computer auf Basis des NXP i.MX 8M Mini nachgebaut haben.
Angesichts der enormen Bandbreite des Elektronikdesigns konzentrieren wir Quilters kurzfristige Produktplanung auf die Platinentypen, die unsere Nutzer am häufigsten erstellen: hochdichte digitale Hochgeschwindigkeitsdesigns.
Wo könnte unser KI-Designer in der weiten Welt digitaler Elektronik besser Erfahrungen sammeln als an einem Internet-of-Things-Projekt (IoT)? Und welches IoT-Modul wäre bekannter als der ESP32?
Dieser Projektbericht dokumentiert mein erstes Quilter-Projekt: eine individuelle ESP32-Entwicklungsplatine, vollständig von Quilters KI-PCB-Designer entworfen, ohne menschliche Nachbearbeitung oder Änderungen.
Hier ist der QSP32, unsere ESP32-basierte Entwicklungsplatine

Die von uns gebaute „QSP32“-Platine ist ein hervorragendes Beispiel für die IoT-Designs, an denen viele Ingenieure heute arbeiten und für die Quilter bereits gut geeignet ist.
Dieses QSP32-Design nutzt insbesondere das ESP32-WROOM-32E-Modul und bietet:
- reichlich GPIO,
- einen USB-zu-UART-Chip
- und einen praktischen Versorgungs-IC für Spannungsregelung und Batterieladung.
Die Platine enthält außerdem Taster für Boot0 und Reset sowie eine I2C-Schnittstelle zum Anschluss eines externen LCD.
👏
Vorweggenommen!Quilter hat das Design hervorragend umgesetzt. Ich ließ es bei Macrofab fertigen, und es funktioniert! 😄
QSP32 lässt eine LED mit einem einfachen Arduino-Blinksketch blinken
Entwerfen mit Quilter
Die Einrichtung eines Auftrags in Quilter umfasst zwei wesentliche Schritte:
- Eingabedateien hochladen (Schaltplan und Platinendatei), die Netzliste, Bauteilfootprints, Platinenkontur und die Position vorplatzierter Bauteile definieren.
- Randbedingungen definieren, die die wichtigsten physikalischen Anforderungen festlegen, die Quilters KI-Designer beim Layout beachten soll.
Eingabedateien
Ich platzierte nur wenige Bauteile mit wichtigen Positionsanforderungen vor:
- Das ESP32-Modul, weil die Leiterbahnantenne des ESP32 über den Platinenrand hinausragen sollte, um Signalstörungen zu reduzieren;
- die USB-, JST- und Stiftleistenanschlüsse, damit sie gemeinsam entlang einer Kante lagen;
- und die Drucktaster, damit sie zusammen und symmetrisch nahe am ESP32-Modul lagen.
Die übrigen Bauteile blieben unplatziert. Rechts sehen Sie insgesamt 57 Bauteile: 9 hatte ich vorplatziert, sodass Quilter noch 48 Bauteile mit 161 Pins platzieren und routen musste.

Physikalische Randbedingungen
Beim QSP32 waren die wichtigsten physikalischen Aspekte:
- Hochstromnetze für die USB-C-Stromversorgung und die Li-Po-Ladeschaltung,
- Differenzpaare für schnelle USB-Signale zwischen USB-C-Anschluss und ESP32,
- und Abblockkondensatoren für ausreichende Entkopplung
ℹ Als dieses Layout ursprünglich erstellt wurde (Juli 2024), unterstützte Quilter nur Hochstromnetze und noch keine Differenzpaare oder Randbedingungen für Abblockkondensatoren. Freuen Sie sich auf mein nächstes ESP32-Projekt, den QSP32 Solar Boost, mit Anpassungen für beide neuen Randbedingungstypen!
Wir entschieden uns unter anderem deshalb für das ESP32-WROOM-Modul, weil damit zusätzliche physikalische Randbedingungen wie Antennenabstimmung sowie Quarz- und Lastkondensatorplatzierung entfallen.
Der Screenshot unten zeigt die Hochstromnetz-Vorgaben, die ich vor dem Einreichen meines Layoutauftrags bei Quilter festgelegt habe:

Ausgabedatei
Nach anderthalb Stunden Kompilierungszeit und mehr als 200 Layoutkandidaten ist dies das Design, das ich schließlich zur Fertigung auswählte!

Der native DRC in KiCAD meldete mehrere Warnungen zur Synchronisierung der Bauteilbibliothek und zur Beschriftungsstärke, aber keine DRC-Fehler. Super!

Inbetriebnahme und Validierung
Nach Erhalt der bestückten Platine von MacroFab musste ich bei der Inbetriebnahme vor allem folgende Funktionen prüfen:
- Batterieladung einschließlich des Verhaltens der Benutzer- und Lade-LEDs auf der Platine
- I2C-Kommunikation über die herausgeführten Stiftleistenpins mit einem externen LCD
- Serielle Kommunikation über USB mit meinem Computer
LEDs und LiPo-Ladung


Ich prüfte die LEDs der Platine, indem ich ein einfaches Arduino-Blinkbeispiel programmierte. Damit zeigte sich auch, dass die Regelung von USB (5V) auf 3.3V für den MCU ausreichend funktionierte, um ihn über die USB-C-zu-UART-Schnittstelle zu programmieren.
Die aktive LED zeigt, dass eine Stromquelle angeschlossen ist und die LiPo-Batterie über den LTC3557-IC auf der Platine geladen wird. Die hier gezeigte Batterie hat 3.9V.
Alle LEDs funktionieren wie erwartet. Der 20Ω-Widerstand der RX- und TX-LEDs hätte allerdings kleiner sein können, um mehr Helligkeit zu erreichen. Quilter und Macrofab platzierten alle Dioden in der richtigen Orientierung. Ein Lob an Macrofab für die hervorragende Arbeit.
LCD über I2C

Hallo Welt!
Ich schrieb einen kurzen Arduino-Sketch, um die Batterieladespannung über I2C auf einem LCD anzuzeigen. Das für 5V ausgelegte LCD ist bei der 3.3V-Versorgung zwar etwas dunkel, zeigt die Daten aber trotzdem klar an.
Serielle Kommunikation

Mit Arduinos seriellem Monitor untersuche ich einen 12-Bit-Analog-Digital-Wandler (ADC) über die USB-zu-UART-Verbindung. Das Bild zeigt ADC-Werte bei angeschlossener Batterie und wenn der ADC (GPIO35) auf Masse gezogen wird (adcValue: 0).
Designvalidierung
Nachdem alle Funktionen geprüft sind, holen wir das Oszilloskop hervor und betrachten die Integrität der wichtigsten QSP32-Signale genauer.
Stromversorgung
Der Versorgungspfad des QSP32 beginnt am USB-C-Anschluss. Die USB-Spannung gelangt über die Schutzdiode D1 zum Spannungsregler U1. Der 3.3V-Ausgang von U1 führt durch eine Spule, einen Kondensator und ein Widerstandspaar zum ESP32 und zu einer etwas weiter entfernten Testpunkt-Stiftleiste.


Die blaue Linie zeigt den verrauschten Eingang vom USB-Anschluss meines Laptops. Die gelbe Linie zeigt das Signal auf der anderen Seite der Schutzdiode D1, das zugleich den Eingang von U1 bildet.

Der 3.3V-Ausgang von U1 ist bemerkenswert sauber. Die rosa Linie auf dem Oszilloskop stellt ihn dar. Weitere Filterung durch eine Spule, zwei Kondensatoren und zwei Widerstände ergibt die endgültige 3.3V-Versorgung. Die gelbe Linie zeigt die Messung am Versorgungspin des ESP32 und verdeutlicht die Wirksamkeit dieser Filterung.

Signalintegrität: I2C
Die I2C-Leitungen SDA (Daten) und SCL (Takt) sind mit einem generischen 16x2-LCD verbunden. Zur Analyse programmierte ich eine Datenaktualisierung im Sekundentakt. Das Oszilloskop zeigt den Takt gelb und die Daten rosa. Ich erfasste diese Signale direkt an den ESP32-Pins GPIO21 und GPIO22.

Hier dieselben Signale im Detail:

Signalintegrität: USB
Zur Beurteilung der USB-Signalintegrität maß ich DP_N und DN_P an der USB-UART-Schnittstelle.
Die Signale DP und DN waren im Layout nicht gut aufeinander abgestimmt, weil sie nicht als Differenzpaare geroutet wurden. Ihre Eigenschaften sind zwar ähnlich, sie stimmen aber nicht exakt überein (Bild 16), was die Signalintegrität beeinträchtigen kann. Diese Abweichung kann die Störempfindlichkeit erhöhen und Phasenverschiebungen verursachen. Korrektes Differenzpaar-Routing wird in künftigen Iterationen die Signalzuverlässigkeit insgesamt verbessern.
Trotzdem funktioniert die Programmierung des QSP32 über den USB-C-Anschluss bemerkenswert beständig und zuverlässig. Ich ließ drei Platinen fertigen, und jede verbindet sich sofort.



Fazit
Ich wählte ein ESP32-WROOM-Modul, weil es wesentliche Bauteile wie Antenne, Quarz und Abblockkondensatoren integriert, für die das Quilter-Team noch physikalische Randbedingungen im Produkt ergänzt.
Künftig erstellen wir ein ESP32-Modul vollständig mit Quilter. Die kürzlich ergänzte Differenzpaar-Unterstützung soll in die nächste Revision dieses Designs einfließen.
Quilters automatische Platzierung und Routing funktionierten bei dieser Platine außerordentlich gut und sparten mir mehrere Tage manueller Designarbeit.
Designverbesserungen
- Quilters Funktion für Differenzpaare nutzen
- Pulldown-Widerstand an ADCs ergänzen
- LTC3557 für Batteriebetrieb zusätzlich zur USB-Versorgung konfigurieren
- TX-/RX-LEDs sind zu dunkel
- Betriebsanzeige-LED ergänzen
- Unnötigen EN-Schalter entfernen
- Die mittlere Stiftleiste durch Testpunkte ersetzen
- 5V-Ausgang für LCD ergänzen
- Platine für den „Prototyp“ in Grün fertigen
Nächste Schritte
Auf der QSP32-Plattform möchte ich gemeinsam einen digitalen Audiomixer entwickeln. Das neue Design wird Drehschalter zur Lautstärkeregelung und einen analogen Multiplexer (74HC4051) für die Führung der Audiosignale enthalten.
Links und Ressourcen
- QSP32-Projekt – Eingabedateien
- QSP32-Projekt – Ausgabedateien
- QSP32 – Quellcode
























