Automatischer Upload auf ESP32 ohne USB auf CP2102-Chip

Ich sehe viele Informationen zum automatischen Hochladen (d. h. ohne eine Taste gedrückt zu halten/zu drücken). Der ESP32-Entwickler tut dies mit der folgenden Schaltung:

Geben Sie hier die Bildbeschreibung ein

In meinem Fall habe ich jedoch keinen USB-zu-TTL-IC. Ich habe derzeit zwei Tasten (RST und PROG), um mein ESP32 zu programmieren.

Geben Sie hier die Bildbeschreibung ein

Ich programmiere auch meine SMD-ESP32-Version mit dem ESP32-Dev-Board, verbinde aber RX (ESP32 Dev) mit TX (ESP32 SMD) und TX (ESP32 Dev) mit RX (ESP32 SMD) und erde dann die beiden zusammen. Derzeit funktioniert dies, aber das Gedrückthalten der Tasten zum Flashen des ESP32 SMD wird lästig. Gibt es eine Möglichkeit, wie ich automatisch hochladen kann, wie sie es im ersten Bild tun?

Sie müssen die Tasten nicht halten. Halten Sie io 0, klicken Sie auf Reset, lassen Sie io 0 los. Der ESP bleibt im Bootloader. Hochladen starten
Kaufen Sie sich das offizielle Espressif ESP-PROG :)

Antworten (1)

Ich hatte dieselbe Situation. Wenn Ihr Board zugängliche Pins auf dem Reset hat und Boot-Strapping-Netze herunterlädt, könnten Sie einen Raspberry Pi / Bus Pirate / Favorite SBC/Micro mit Open-Drain-Ausgängen aufrüsten, um diese Pins zum richtigen Zeitpunkt herunterzuziehen.

Aber die Lösung, die für mich viel besser funktionierte, war, Over-the-Air-Updates (OTA) so früh wie möglich im Entwicklungsprozess zu implementieren. Es erfordert ein wenig zusätzliche Arbeit, aber dann benötigen Sie den UART überhaupt nicht zum Programmieren (nach dem ersten anfänglichen Laden natürlich).

Ohne Bezug: Warum kreuzen Sie RX und TX? Sind Sie sicher, dass Sie das tun? Wenn Sie ein externes ESP32 auf ein Entwicklungsboard huckepack nehmen, kreuzen sich RX und TX nicht (d. h. DevBoard.ESP32.TX <-> OffBoard.ESP32.TX). Vielleicht meintest du aus Sicht des CP2102 (true: CP2102.RX <-> ESP32.TX).

Kannst du eine Schaltung hinzufügen? Wenn es für die Verkabelung des ersten Absatzes möglich ist, muss ich nur das esp32-dev-Modul programmieren
@JoeyB Ich bin mir nicht sicher, ob es nur mit dem Entwicklungsboard möglich ist. Das Problem ist, dass der eigene ESP32 des Entwicklungsboards zurückgesetzt werden muss, damit er nicht mit dem UART Ihres ESP32 in Konflikt gerät. Ich gehe davon aus, dass Sie dies tun. Daher können Sie das Pulldown-Menü für den automatischen Download nicht vom Entwicklungsboard übernehmen. Sie müssten den Reset extern ziehen, entweder von einer separaten MCU / SBC oder (wie Sie es jetzt tun) einer Taste.
Oh, ich verwende derzeit einen Jumper zwischen EN und GND auf meinem esp32-Entwicklungsboard.
@JoeyB Ja, genau, und das zieht auch die "Auto Download" -Leitung des CP2102 (von DTR / RTS) herunter, wodurch die automatische Logik unbrauchbar wird. Es ist das gleiche Netz. Daher die Notwendigkeit einer Taste oder einer externen MCU ...
Wenn Sie bereit sind, Ihr Entwicklungsboard zu zerstören, können Sie es lösen, indem Sie Spuren schneiden.
Argh, jetzt verstehe ich. Können Sie einen Link zur Verwendung einer anderen MCU bereitstellen, vielleicht kann ein Arduino Nano funktionieren?
@JoeyB Ich habe keinen Link, aber alles, was Sie brauchen, ist ein Open-Drain-Ausgang, der mit den Reset- und DL-Netzen (IO0/IO2) verbunden ist. Dann können Sie einen Befehl schreiben, um diese herunterzuziehen, bevor Sie eine Verbindung zum ROM-Bootloader herstellen. Arduino würde funktionieren, aber Sie müssten eine Möglichkeit haben, es auszulösen. Mit einem rPi könnten Sie einfach einen ssh-Befehl in Ihrem Skript haben, um die GPIOs umzuschalten. (Ich weiß, dass rPis heutzutage schwer zu bekommen sind ...) Alles in allem ist OTA wirklich der richtige Weg!
Ihr Kommentar zum Schneiden von Spuren ist also nicht wirklich genau. Das ist keine gute Art, Dinge zu beschreiben. Alles, was man tun muss, ist, das esp32-Modul von der Entwicklungsplatine zu entlöten und dann Drähte an den IO0 zu löten und den Pin auf den freiliegenden Pads des esp32 zu aktivieren und natürlich TX und rx und GND und 3,3 V zu verbinden. Und quo Ollie, Sie haben einen Auto-Rest-Programmierer. Ich dachte ursprünglich, dass der cp2102-IC auf der von mir hergestellten Haupt-MCU sein müsste, aber in Wirklichkeit wurde mir klar, dass dies stattdessen auf einer Programmierer-Leiterplatte sein kann, damit Sie ihn nicht in Massenproduktion produzieren.
Also keine komplizierten Lieblings-MCU- oder Bus-Piratenkram oder Raspberry Pi. Die Antwort lag die ganze Zeit vor mir. Das Rad muss nicht neu erfunden werden. Verwenden Sie einfach, was ich bereits habe .... KISS (HALTEN SIE ES EINFACH, DUMM) ANMERKUNG an mich selbst, hahahahaha
@JoeyB Ich verstehe nicht, wie das Entfernen des ESP32 weniger destruktiv ist als das Schneiden einer Spur. Sicher, es kann neu gelötet werden, aber auch eine Schnittspur kann geflickt werden. Ich bin froh, dass Sie es zum Laufen gebracht haben, aber ich glaube nicht, dass ich "Sachen nicht gut / ungenau beschrieben habe".
Das Schneiden einer Leiterbahn ist viel schwieriger zu reparieren als das Entlöten der MCU, da die Kupferbahnen etwa 0,2 mm breit sind. Während das Löten der ESP32 MCU viel einfacher ist, da die Pads noch intakt sind. Also aus meiner Sicht und ich habe die Spur auch zuerst geschnitten, nur damit ihr es wisst. Sie sollten beide Methoden selbst ausprobieren und mir mitteilen, welche einfacher ist, :). Daher finde ich "beschriebenes Zeug nicht gut / ungenau". sehr akkurat. Und die Spuren sind viel zu eng und die Lötmaske macht es noch schwieriger zu wissen, welche Spuren Sie schneiden, aber ich schweife ab