Hallo zusammen, ich nutze einen ESP32-S den ich auf einem selbst erstellen Board einsetzte. Das Board selbst macht nicht viel außer mit einem CH340C ein USB-2-Serial bereit zu stellen, um zu flashen und 4 Pins für I2C nach außen schleifen. Ich nutze einen Sketch, der WLan einsetzt. Wenn ich mein Board über USB+Serial monitor betreibe, um den Debug output zu sehen, funktioniert alles problemlos. Keine Exception und stabiler Betrieb über Stunden. Sobald ich das Board aber nur über einen USB-Power Supply einstecke, kann sich das Board nicht mehr mit WLan verbinden. Ich habe das mal mit einem simplen Sktech getestet der sich im WLan registriert und dann ein LED Blick Pattern abspielt in eine Schleife. ==> Im Serial monitor Modus = alles OK (WLan (in der Fritz box geprüft) + Led pattern) ==> Nur Power-Supply = nur LED Pattern keine WLan Verbindung. Daher schließe ich aus das der Controller sich wegen brownout resettet Ich habe meinen Sketch daher mal auf einem WEMOS ESP32 (gleicher Chip) getestet. Dort läuft alles prima auch ohne Serial Monitor. Ich kann also mein Code als Fehlerquelle ausschließen. Ich habe meine Schaltung mal angehängt, vielleicht findet jemand von euch was.
Zeig mal deinen Sketch/Code her. Wahrscheinlich hängt der Controller in einer Schleife, weil er auf die serielle Schnittstelle wartet.
Hallo, bevor ich den Test Code poste nochmal der Hinweis: Das LED Pattern in loop() wird in beiden Fällen ausgeführt. Lediglich am Power Supply findet keine WLan Verbindung statt. Daher kann ich den Code ausschließen, da er in beiden Fällen die setup() erfolgreich durchläuft und in die loop() geht.
1 | #include "WiFi.h" |
2 | |
3 | const char* ssid = ""; |
4 | const char* password = ""; |
5 | |
6 | #define LED_PIN 2
|
7 | |
8 | void setup() { |
9 | |
10 | Serial.begin(9600); |
11 | |
12 | WiFi.begin(ssid, password); |
13 | |
14 | while (WiFi.status() != WL_CONNECTED) { |
15 | delay(500); |
16 | Serial.println("Connecting to WiFi.."); |
17 | }
|
18 | |
19 | Serial.println("Connected to the WiFi network"); |
20 | |
21 | pinMode(LED_PIN, OUTPUT); |
22 | |
23 | }
|
24 | |
25 | void loop() { |
26 | |
27 | |
28 | for(int i=0;i<5;i++){ |
29 | digitalWrite(LED_PIN, HIGH); |
30 | delay(200); |
31 | digitalWrite(LED_PIN, LOW); |
32 | if(i< (5-1)){ |
33 | delay(200); |
34 | }
|
35 | }
|
36 | |
37 | delay(3000); |
38 | }
|
while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.println("Connecting to WiFi.."); } -> Er könnte die Loop gar nicht abarbeiten wenn er keine Verbindung zu deinem WLAN Router hergestellt hätte.
Braucht dein LM1117 keinen 10µF Kondensator am Eingang? Meiner braucht das. Mich würde mal das Layout der Platine interessieren.
Wahrscheinlich wird Dein Board über den 1x4 Pinheader mit Strom versorgt. Was hängt da dran? Zeig mal das Board her.
Hallo, danke für die Hinweise: @Thomas R.: Das stimmt absolut... Er scheint auch auch einmal mit dem WLan zu verbinden, dann aber sofort die Verbindung zu verlieren... Wie gesagt in beiden Fällen geht er in die loop() @Stefan ⛄ F.: interessanter Hinweis. Muss der 10uF zwischen Input-VCC und GND oder zwischen Output (3.3V) Vcc und GND? ich habe bereits einen zwischen 3.3v und GND aber vielleicht muss ja einer auch an den Eingang... ich teste das... @Pete K.: An den Pin Header wird nur ein Temperatursensor angeschossen (i2c). In allen meiner Testfälle erfolgt die Stromversorgung über den USB-C Anschluss
Die Kondensatoren für den Spannugsregler müssen direkt am Spannungsregler sitzen. So nahe wie möglich. Halte dich was die Werte angeht an die Empfehlungen aus dem Datenblatt. Bei manchen anderen Spannungsreglern spielt sogar die Bauform eine wichtige Rolle. Die Abblock-Kondensatoren (100nF) müssen am zugehörigen OC so nahe wie möglich sitzen. Am ESP Modul füge ich immer einen 100µF Kondensator hinzu, und zwar direkt am Modul, so kurz wie möglich.
Manuel S. schrieb: > Ein 10uF am Eingang des LM1117 war es leider nicht Schade. > Mich würde mal das Layout der Platine interessieren. und Pete K. schrieb: > Wahrscheinlich wird Dein Board über den 1x4 Pinheader mit Strom > versorgt. Was hängt da dran? > Zeig mal das Board her. Hast du ein Oszilloskop mit dem du die Versorgungsspannung prüfen kannst? Wenn nicht, versorge es mal mit 3 bis 3,6 Volt aus Batterien (trenne dabei den Spannungsregler ab). Achtung: frisch geladene Akkus könnten zu viel Spannung liefern.
Ok... Ich habe einen Screenshot eingefügt. Sind aber 2-Layer. Schwer was zu erkennen. Welche Infos willst du da heraus nehmen die man nicht im Schaltplan sieht?
Manuel S. schrieb: > Welche Infos willst du da heraus nehmen die man nicht im Schaltplan > sieht? Die Leitungsführung. Mir sind die Leiterbahnen der Stromversorgung viel zu dünn. Löte mal zusätzliche Drähte darüber: - Von allen GND Anschlüssen der USB Buchse zu GND vom Spannungsregler. - Vom Spannungsregler GND zu allen GND Anschlüssen des ESP Moduls. - Vom 3,3V Ausgang des Spannungsreglers zum VCC Eingang des ESP Moduls. - Zusätzlich 100µF an VCC/GND direkt am ESP Modul. Ich nehme an, dass das Netzteil an der USB Buchse hängt. Richtig? Was hängt an der Stiftleiste? Links, rechts und unter der Antenne sollten keine Bauteile platziert werden. Du hast zwei Bauteile links daneben. Hat der Spannungsregler keine Kühlfläche? Vielleicht wird er bei Senden zu heiß.
@Stefan ⛄ F.: Ich habe deinen Vorschlag getestet mit einer anderen Stromversorgung: Da ich leider kein ordentliches Netzteil habe das 3.3v liefert habe ich mal ein Breakoutboard rein gelötet, das auch ein LM1117 einsetzt. ich habe also meinen LM1117 mit einem Breakoutboard ersetzt ==> Es geht! Aber was heißt das nun konkret? Es kann ja dann nur noch im Umfeld des LM1117 liegen. Ich löte jetzt noch ein bisschen Schummeldraht ein, um deine Theorie zu testen. Wenn es nur daran liegt, wäre ich froh. Ich glaube aber ich habe den LM1117 falsch angeschlossen, also es fehlen vielleicht noch Kondensatoren. Könnt ihr da direkt was aus dem Schaltplan entnehmen was ich falsch gemacht habe?
Manuel S. schrieb: > Aber was heißt das nun konkret? Es kann ja dann nur noch im Umfeld des > LM1117 liegen. Den Kondensator am Ausgang sehe ich, er ist aber weit vom Spannungsregler entfernt (nicht gut). Am Eingang hast du zur Probe einen hinzugefügt - ohne Erfolg. Da drängt sich als nächstes die Frage auf, ob du wirklich einen LM1117 eingebaut hast, oder ein anderes Bauteil das dir als LM1117 verkauft wurde. Doch bevor man laut "Fälschung" schreit, sollte man ganz sicher sein. Ich würde den Spannungsregler noch mal mit optimalen Bauteilen nach Datenblatt zusammen löten und einzeln durch testen. Ein Oszilloskop hast du nicht? Das wäre jetzt sehr hilfreich. Zur Not würde schon ein billiges DSO150 genügen.
@ Stefan ⛄ F.: Das war es leider nicht. Habe alles umgesetzt. War super fummelig hat aber leider nix geholfen. >- Von allen GND Anschlüssen der USB Buchse zu GND vom Spannungsregler. >- Vom Spannungsregler GND zu allen GND Anschlüssen des ESP Moduls. >- Vom 3,3V Ausgang des Spannungsreglers zum VCC Eingang des ESP Moduls. >- Zusätzlich 100µF an VCC/GND direkt am ESP Modul. Ich werde jetzt aus dem Breakoutboard den LM1117 rauslöten und bei mir einsetzten. Auf meinem steht zwar LM1117 3.3 drauf... aber wer weiß
:
Bearbeitet durch User
Manuel S. schrieb: > Das war es leider nicht. Habe alles umgesetzt. War super > fummelig hat aber leider nix geholfen. Ich habe es fast befürchtet. Denn obwohl die Leitungen recht dünn sind, sind sie ja nicht allzu lang. Zwar nicht optimal aber da habe ich schon ganz andere "Sünden" gesehen. > Ich werde jetzt aus dem Breakoutboard den LM1117 > rauslöten und bei mir einsetzten. Gute Idee. Hast du also kein Oszilloskop? Dann schau dir mal das DSO150 an. Es ist ein billiges Spielzeug aber dennoch viel besser als gar keins zu haben.
Ich habe aber auch kein Problem etwas mehr Geld auszugeben (ca 150€) ... Vorschläge?
:
Bearbeitet durch User
Stefan ⛄ F. schrieb: > Am ESP Modul füge ich immer einen 100µF Kondensator hinzu, und zwar > direkt am Modul, so kurz wie möglich. Warum sollte beim 100µF Kondensator der Abstand kritisch sein? Dann ist irgendetwas am Aufbau falsch. Der 100µF hat sowieso einen relativ hohen ESR und stützt bei niederfrequenten Verbrauchsspitzen. Für kurze Spitzen und steilen Flanken, bei denen es dann auch auf die Anbindung ankommt, ist ein direkt angebundener kleinerer Kondensator wesentlich wichtiger. Der 100µF muss Ladung nachliefern, wenn der kleine bereits den hochfrequenten Lastanteil gepuffert hat.
Moin, ich hab jetzt nicht alles gelesen, aber falls das Problem noch immer besteht, dass es nur mit aktiver USB-UART Session läuft: Das könnte der CH340 sein. Der hat bei inaktiver Verbindung ein High an #DTR und sobald man ne Session aufmacht, geht der auf Low. Kannst ja mal den EN-Pin am ESP checken, bevor du die Session aufmachst und dann UART verbinden. grüße
Wolfgang schrieb: > Der 100µF hat sowieso einen relativ hohen ESR und stützt bei > niederfrequenten Verbrauchsspitzen. Für kurze Spitzen und steilen > Flanken, bei denen es dann auch auf die Anbindung ankommt, ist ein > direkt angebundener kleinerer Kondensator wesentlich wichtiger. Der > 100µF muss Ladung nachliefern, wenn der kleine bereits den > hochfrequenten Lastanteil gepuffert hat. Was kann das konkret für mich bedeuten? ich habe ja bereit einem 100uF am ESP getestet. Soll ich nochmal einen anderen dran machen? Was ich noch habe ist ein 100nF, 47uF, 10n
:
Bearbeitet durch User
Manuel S. schrieb: > Ich habe aber auch kein Problem etwas mehr Geld auszugeben (ca 150€) ... > Vorschläge? Benutze dazu mal die Suchfunktion. Oszilloskop-Vorschläge werden hier gefühlt jeden Monat erneut diskutiert.
Wolfgang schrieb: > Warum sollte beim 100µF Kondensator der Abstand kritisch sein? Mehr aus Erfahrung als Fachwissen. Wir hatten hier schon ein paar Leute, denen das geholfen hatte. > Für kurze Spitzen und steilen Flanken, bei denen es > dann auch auf die Anbindung ankommt, ist ein > direkt angebundener kleinerer Kondensator wesentlich wichtiger Ja. Der befindet sich unter der Abdeckung des ESP Moduls. Manuel S. schrieb: > ich habe ja bereit einem 100uF am ESP getestet. > Soll ich nochmal einen anderen dran machen? Wenn einer nicht hilft, dann werden zwei wohl auch nicht helfen. Das würde mich doch sehr überraschen.
Ich habe jetzt nochmal das Breakout Board dran gelötet um sicher zu sein das das erste mal kein Zufall war... und es war keiner. Das Breakoutboard habe ich jetzt mal mit angefügt. Aber eines treibt mich da noch um. Bei diesem Breakoutboard verwende ich als In-VCC 7,5V = 4x AA Batterie. Aber das darf doch keinen unterschied machen oder? ==> Mir ist auch ein Fehler von mir aufgefallen... Ich schreibe immer von einem LM1117, dabei verwende ich einen AM1117!!!! Habe ich für den AMS1117 dann doch falsche Kondensatoren verwendet?? Ich muss jetzt mal raus finden, welche Kondensatoren das Breakoutboard verwendet. Damit geht es ja schließlich
Manuel S. schrieb: > Ich schreibe immer von einem LM1117, dabei verwende ich einen AM1117 AM oder AMS? Ich hake nach, weil es von diesen "1117" Spannungsreglern in der Tat ganz viele Varianten gibt. Hier wurde schon einmal diskutiert, dass deren Eigenschaften nicht gleich sind. > Habe ich für den AMS1117 dann doch falsche Kondensatoren verwendet?? Schau ins Datenblatt. Am besten schaust du nicht nur in das Datenblatt vom selben Typ sondern auch vom selben Hersteller.
Stefan ⛄ F. schrieb: > Manuel S. schrieb: >> Ich schreibe immer von einem LM1117, dabei verwende ich einen AM1117 > > AM oder AMS? Ich hake nach, weil es von diesen "1117" Spannungsreglern > in der Tat ganz viele Varianten gibt. Hier wurde schon einmal > diskutiert, dass deren Eigenschaften nicht gleich sind. > Das ist ein AMS1117. die Kondensatoren auf den Breakout sollten am Eingang und am Ausgang jeweils 100nF und 10uF sein. Das versuche ich jetzt mal dran zu basteln, direkt am AMS1117
B. Lötmann schrieb: > Moin, > > ich hab jetzt nicht alles gelesen, aber falls das Problem noch immer > besteht, dass es nur mit aktiver USB-UART Session läuft: Das könnte der > CH340 sein. Der hat bei inaktiver Verbindung ein High an #DTR und sobald > man ne Session aufmacht, geht der auf Low. Kannst ja mal den EN-Pin am > ESP checken, bevor du die Session aufmachst und dann UART verbinden. > > grüße Übersehen? Meinungen dazu?
B. Lötmann schrieb: > Übersehen? Meinungen dazu? Manuel S. schrieb: > Das LED Pattern in loop() wird in beiden Fällen ausgeführt. Also ist der Chip wohl enabled.
Die Fehlerbeschreibung ist sehr komisch. Der ESP scheint in beiden Fällen zu laufen (LED Pattern), aber einmal geht WLAN, einmal nicht. Man könnte vermuten, dass der ESP ständig rebootet und zwar das LED Pattern ausführt, aber keine Zeit hat, sich mit dem WLAN zu verbinden. Da wäre also die Frage, haben wir es mit einem ständigen Reboot zu tun? Bitte einmal den ganzen Code posten, so wie das Fehlerbild auch entsteht.
Die LM1117- und AMS1117-Datenblätter, die ich spontan gefunden habe, sind für 3,3V Ausgangsspannung ab 4,75V oder 4,8V Ausgangsspannung spezifiziert. Für USB (5V +-5%) also knapp. Vielleicht bist du gerade der eine unter 100, bei dem es nicht geht, vielleicht ist dein USB-Kabel zu lang/zu dünn... Wenn du hast, würde ich mal 5V oder 5,5V (was auch immer der CH340 aushält) aus einem Labornetzteil in die Platine speisen. MfG, Arno
Arno schrieb: > Wenn du hast, würde ich mal 5V oder 5,5V (was auch immer der CH340 > aushält) aus einem Labornetzteil in die Platine speisen. ...und zumindest statisch messen, was denn durch das USB-Kabel eigentlich an deiner Platine ankommt... MfG, Arno
Ich habe jetzt super viel Dinge probiert. Aktuell habe ich zwei "starke Vermutungen": * Die Leiterbahnen zwischen USB und AMS1117 sind zu dünn. * Ich habe dafür das Breakoutboard direkt mit einem "dicken" Schummeldraht an eine separaten USB-C Stecker gemacht und das Breakout mit meinem Board verbunden. ==> Geht! * Wenn ich das Breakoutboard an meinem USB-C Anschluss anschließe geht es nicht. Ich habe hierfür meinen AMS1117 raus gelötet und das Breakoutboard dafür dran gemacht * Die separate USB Buchse mit dickem Schummeldraht an meinen AMS1117 zu machen brachte auch keinen Erfolg --> also muss im Vergleich zum BreakoutBoard noch was fehlen * AMS1117: Die Kondensatoren am Ausgang sind zu weit weg und es fehlen die Kondensatoren am Eingang * Das konnte ich leider nicht abschließend prüfen, weil meine Versuche die Kondensatoren direkt dran zu löten haben, dann doch kein positives Ergebnis gebracht haben * Die Kondensatoren und deren Anordnung ist der einzige Unterschied vom Breakoutboard zu meinem AMS1117 auf meinem Board Da es aber mit dem Breakoutboard und einem dicken Schummeldraht+seperate USB Buchse gelappt hat, habe ich jetzt keine andere Idee mehr Das möchte ich jetzt nochmal reproduzieren, und wenn das wieder klappt habe ich nur noch die Idee, mein Layout entsprechend anzupassen und ein neues PCB zu bestellen um zu testen. PS: Sorry für die schlechte Formatierung. In der Preview wurden schöne Bullet-Points angezeigt.
:
Bearbeitet durch User
Vielleicht doch noch mal das Designfile hochladen? Ist das n Eagle-Projekt oder KiCad? Kann ja sein, dass sich das jemand mit bissl Erfahrung mal kurz ansieht...
Ich habe nix zu verstecken... Gerne darf da jemand mal drüber schauen wenn's hilft. Hab's angehängt Ist ein Fusion 360 File. Keine Ahnung zu was das alles kompatibel ist.
Wenn ich nun mein Board überarbeite .... Habt Ihr generelle Hinweise was ich anders Besser machen sollte beim Board-Design und der Platzierung der Bauteile. Habe ihr generelle Tipps was ich vorsehen einbauen sollte aus eurer Erfahrung mit dem ESP32 heraus?
Die üblichen Tipps zum Leiterplattendesign: Mach die Leiterbahnen (und Vias) so breit wie möglich, so schmal wie nötig. Nicht so schmal wie möglich. Für freie Platinenfläche bekommst du kein Geld zurück. Gefühlt könntest du bei der Platine mit 0,5mm Leiterbahnbreite (Versorgung/Masse 1mm oder mehr) und 0,2mm Abstand hinkommen - natürlich mit schmaleren Leiterbahnen zum USB-Stecker. Führe schnelle Datenleitungen (vor allem USB, aber auch Seriell - und I2C, wenn das ähnlich schnell ist) möglichst parallel (mit GND daneben bei den seriellen Leitungen, USB ist ja ein differentieller Bus) und direkt. Dazu auch ggf. den CH340 verschieben. Mach Masse und Versorgungsspannung noch breiter und geradliniger - zumindest sieht das auf den ersten Blick eher nicht so aus, als hättest du die irgendwie anders als alle anderen langweiligen Signale behandelt. Oft bietet es sich an, eine Seite vertikal, die andere horizontal zu routen (ja, das kostet erstmal Vias - aber wenn du in den Bereich kommst, in dem Extra-Vias extra kosten, dann weißt du auch, wie es besser geht) - das gibt "mehr Platz" für breitere Leiterbahnen. Dazu ggf. auch Bauteile drehen, wenn sie sonst im Weg sind - auch wenn das hier eigentlich nur den CH340 betrifft, alles andere liegt ja ziemlich fest. Ansonsten hab ich keine Erfahrung mit dem ESP32, aber dem ESP32-S2 und dem ESP8266 hab ich immer 100nF plus ca. 100µF parallel (kann auch 5x22uF parallel sein, wenn mein Bestücker die billiger da hat als 1x 100µF) an die Versorgungsspannungspins gelegt. Sicherlich mehr aus Angst denn aus Notwendigkeit, aber egal, ob ich den Chip aus Step-Up, aus Step-Down oder aus LiPo+LDO versorgt hat, es hat immer stabil funktioniert. Dann braucht bestimmt der CH340 ein oder zwei Stützkondensatoren, und über den AMS1117 haben wir ja oben schon gesprochen. Mit kurzen Verbindungen zu den VCC- und GND-Pins. Wozu soll beispielsweise der 100nF-Kondensator rechts über dem AMS1117 gehören? Der ist von allem zu weit weg. Dann kommen die Details - zum Beispiel kannst du wahrscheinlich die beiden Bauteile links oben vertauschen und dir damit ein paar Leiterbahnkreuzungen und Winkelzüge sparen. MfG, Arno
@Arno: Danke für deine Anregungen. Ich werde das mitnehmen. Für mich sind solche Infos wichtig um in Zukunft besser auf ein besseres Design achten zu können.
Manuel S. schrieb: > Habt Ihr generelle Hinweise was ich anders Besser machen sollte beim > Board-Design und der Platzierung der Bauteile. Da steht auch einiges drin https://www.espressif.com/sites/default/files/documentation/esp32_hardware_design_guidelines_en.pdf
Stefan ⛄ F. schrieb: > Manuel S. schrieb: >> Habt Ihr generelle Hinweise was ich anders Besser machen sollte beim >> Board-Design und der Platzierung der Bauteile. > > Da steht auch einiges drin > https://www.espressif.com/sites/default/files/documentation/esp32_hardware_design_guidelines_en.pdf Wobei das größtenteils die Komponenten und das Layout des ESP32-Moduls betrifft (außer 3.1.2.) und nicht, wie das Modul auf eine Platine gebracht werden soll. Flash, ggf. PSRAM, Quarz, R/C-Oszillator, Pi-Filter, Antenne... sind ja schon drauf. MfG, Arno
Hallo zusammen, ich habe nun das neue PDC Design testen können. Da habe ich beim AMS1117 nun jeweils am Input und am Output 10nf und 100uF Kondensatoren angefügt. Leider ohne Erfolg :-( Ich habe jetzt mal zum Test, den CH340C rausgelötet nachdem ich den ESP32 geflasht habe. ... Tatsächlich scheint es damit doch was zu tun zu haben. Aber ich sehe nicht was. ==> Der ESP verbindet sich ohne den CH340C mit dem WLan, egal an welcher Energiequelle. Wieder kann ich damit den Code ausschließen, denn wenn der Code auf die Serielle Verbindung wartet, dann müsste der ESP32 ja ohne den CH340C erst recht nichts tun. aber tatsächlich tut er etwas. Leider finde ich im Internet keine Beispiele wie de CH340C angebunden sein muss. Ich habe nur raus gefunden das der V3 Anschluss mit einem Kondensator an GND verbunden sein muss, wenn die Versorgungsspannung 5V ist. <-- So ist das bei mir. Folgende Pins sind gar nicht verbunden: RS232, CTS, DSR, RI, DCD Habt ihr da Erfahrung mit dem CH340C?
Ich habe nun ein Beispiel gefunden: https://pcbartists.com/wp-content/uploads/2020/12/esp32-ch340-programmer-schematic-for-espressif-esp32-esp8266.png Ich habe meine Schaltung praktisch identisch dazu aufgebaut... Bis auf die Transistoren. Das Beispiel verwendet BC-817. Ich verwende BC-818-40 Könnte das ein Problem sein?
> Ich habe jetzt mal zum Test, den CH340C rausgelötet nachdem ich den > ESP32 geflasht habe. > > ... Tatsächlich scheint es damit doch was zu tun zu haben. Aber ich sehe > nicht was. ==> Der ESP verbindet sich ohne den CH340C mit dem WLan, > egal an welcher Energiequelle. > > Wieder kann ich damit den Code ausschließen, denn wenn der Code auf die > Serielle Verbindung wartet, dann müsste der ESP32 ja ohne den CH340C > erst recht nichts tun. aber tatsächlich tut er etwas. Bist Du dir da sicher weil du den Code vollständig kennst oder glaubst Du es einfach? Der Code kann nämlich so sein, dass NUR wenn bei der initialisierung der CH340 gefunden wird, der "bedien"-Code irgendwo zum warten kommt (hinter println* versteckt). Wird jedoch bei der Initialisierung der CH340 NICHT gefunden, wird ev. auch in der Aufrufkette hinter println* früh eine Abkürzung genommen welche um das Warten herum kommt... Kläre dies gründlich ab. Die inititalisierung eines ggfs. vorhandenen CH340 kann durchaus mehr umfassen als bloss was hinter "Serial.init(9600);" steckt!!!
Hallo, da der Code von mir ist, glaube ich ihn zu kennen. Ich habe aber dennoch mal einen simplen Test Code ohne jeglichen Serielle Kommunikation drauf geladen:
1 | #include "WiFi.h" |
2 | |
3 | const char* ssid = "<<ssid>>"; |
4 | const char* password = "<<pwd>>"; |
5 | |
6 | #define LED_PIN 2
|
7 | |
8 | void setup() { |
9 | |
10 | WiFi.begin(ssid, password); |
11 | |
12 | while (WiFi.status() != WL_CONNECTED) { |
13 | delay(500); |
14 | }
|
15 | |
16 | pinMode(LED_PIN, OUTPUT); |
17 | |
18 | }
|
19 | |
20 | void loop() { |
21 | |
22 | for(int i=0;i<5;i++){ |
23 | digitalWrite(LED_PIN, HIGH); |
24 | delay(200); |
25 | digitalWrite(LED_PIN, LOW); |
26 | if(i < 4){ |
27 | delay(200); |
28 | }
|
29 | }
|
30 | |
31 | delay(3000); |
32 | }
|
Das Resultat: * Mit Seriellem Monitor: WLan wird aufgebaut und ich finde den ESP32 in meiner FritzBox --> Board blinkt * Ohne Seriellen Monitor: WLan wird NICHT aufgebaut und ich finde den ESP32 NICHT in meiner FritzBox --> Board blinkt NICHT. Das wird hängt hier wohl in der Dauerschlaufe im Versuch sich zu verbinden fest.
:
Bearbeitet durch User
Manuel S. schrieb: > Ohne Seriellen Monitor: WLan wird NICHT aufgebaut und ich finde den > ESP32 NICHT in meiner FritzBox --> Board blinkt NICHT. Das wird hängt > hier wohl in der Dauerschlaufe im Versuch sich zu verbinden fest. ja mit Monitor kommen andere Wartezeiten rein, Problem ist alt bekannt dein connect scheint falsch zu sein, versuchs mal mit längeren Zeiten und mache die LED Init output nach setup nicht nach connect ich müsste jetzt erst mal suchen ich glaube mit 750 delay klappts besser mein letzter while (WiFi.status() != WL_CONNECTED) delay(2000); denn dein wait 500 ist zu kurz
1 | #include "WiFi.h" |
2 | const char* ssid = "<<ssid>>"; |
3 | const char* password = "<<pwd>>"; |
4 | #define LED_PIN 2
|
5 | |
6 | void setup() { |
7 | pinMode(LED_PIN, OUTPUT); |
8 | WiFi.begin(ssid, password); |
9 | while (WiFi.status() != WL_CONNECTED) |
10 | delay(2000); |
11 | }
|
12 | |
13 | void loop() { |
14 | for(int i=0;i<5;i++){ |
15 | digitalWrite(LED_PIN, HIGH); |
16 | delay(200); |
17 | digitalWrite(LED_PIN, LOW); |
18 | if(i < 4) |
19 | delay(200); |
20 | }
|
21 | delay(3000); |
22 | }
|
:
Bearbeitet durch User
Hallo, das war es leider nicht. Ich habe den Testcode mal so umgebaut:
1 | #include "WiFi.h" |
2 | |
3 | const char* ssid = ""; |
4 | const char* password = ""; |
5 | |
6 | #define LED_PIN 2
|
7 | |
8 | void setup() { |
9 | |
10 | WiFi.begin(ssid, password); |
11 | while (WiFi.status() != WL_CONNECTED) { |
12 | delay(2000); |
13 | }
|
14 | }
|
15 | |
16 | void loop() { |
17 | pinMode(LED_PIN, OUTPUT); |
18 | |
19 | for(int i=0;i<5;i++){ |
20 | digitalWrite(LED_PIN, HIGH); |
21 | delay(200); |
22 | digitalWrite(LED_PIN, LOW); |
23 | if(i < 4){ |
24 | delay(200); |
25 | }
|
26 | }
|
27 | |
28 | delay(3000); |
29 | }
|
Manuel S. schrieb: > Ich habe den Testcode mal so umgebaut: Manuel S. schrieb: > pinMode(LED_PIN, OUTPUT); warum im loop? das ergibt doch keinen Sinn! Programmieren ist nicht malen nach Zahlen oder C&P Wenn der Pin out sein soll gehört das in setup abgesehen davon, wenn er nicht connected muss er auch nicht in den loop! Dann ist was faul und es sollte eine Meldung (stör LED ohne Serial.print) oder ein Reset kommen! Wenn er aber noch aus dem vorigen Versuch verbunden war klappt neuerliches verbinden auch nicht dann fehlt der disconnect
1 | // Set WiFi to station mode and disconnect from an AP if it was previously connected
|
2 | WiFi.mode(WIFI_STA); |
3 | WiFi.disconnect(); |
4 | delay(100); |
:
Bearbeitet durch User
Hallo du scheinst ein Problem behandeln zu wollen das keines ist. Damit du beruhigt bist habe ich mal den Code, so umgebaut:
1 | #include "WiFi.h" |
2 | |
3 | const char* ssid = ""; |
4 | const char* password = ""; |
5 | |
6 | #define LED_PIN 2
|
7 | |
8 | void setup() { |
9 | |
10 | pinMode(LED_PIN, OUTPUT); |
11 | |
12 | WiFi.begin(ssid, password); |
13 | while (WiFi.status() != WL_CONNECTED) { |
14 | delay(2000); |
15 | }
|
16 | }
|
17 | |
18 | void loop() { |
19 | |
20 | for(int i=0;i<5;i++){ |
21 | digitalWrite(LED_PIN, HIGH); |
22 | delay(200); |
23 | digitalWrite(LED_PIN, LOW); |
24 | if(i < 4){ |
25 | delay(200); |
26 | }
|
27 | }
|
28 | |
29 | delay(3000); |
30 | }
|
Übrigens: Das der "pinMode(LED_PIN, OUTPUT);" im loop war, ist selbstverständlich Unsinn und wahr schon behoben bevor der unnötige "Mahlen nach Zahlen" Kommentar abgesetzt wurde. Tu mir doch nun schnell den Gefallen und sage mir was aus deiner Sicht an diesem Code falsch sein soll und warum deswegen der Code sich nur mit einem Seriellen Monitor aber nicht ohne verbindet. P.S.: Ich empfinde es als ein respektloses Miteinander, wenn "Mahlen nach Zahlen" Kommentar abgesetzt werden. Diese helfen niemanden, und wenn du das für dein Ego brauchst mache das doch bitte nicht in Foren in denen man eigentlich ein höfliches miteinander einhält.
Manuel S. schrieb: > Übrigens: Das der "pinMode(LED_PIN, OUTPUT);" im loop war, ist > selbstverständlich Unsinn und wahr schon behoben nicht als ich den lesen konnte, ich lüge ja nicht! Manuel S. schrieb: > das war es leider nicht. Ich habe den Testcode mal so umgebaut:#include > void setup() { > WiFi.begin(ssid, password); > while (WiFi.status() != WL_CONNECTED) { > delay(2000); > } > } > > void loop() { > pinMode(LED_PIN, OUTPUT); so steht das hier! Manuel S. schrieb: > höfliches miteinander ist wenn man nicht belogen wird, von wegen umgebauter Code Manuel S. schrieb: > Tu mir doch nun schnell den Gefallen und sage mir was aus deiner Sicht > an diesem Code falsch sein soll tat ich bereits! Joachim B. schrieb: > Wenn er aber noch aus dem vorigen Versuch verbunden war klappt > neuerliches verbinden auch nicht dann fehlt der disconnect > // Set WiFi to station mode and disconnect from an AP if it was > previously connected > WiFi.mode(WIFI_STA); > WiFi.disconnect(); > delay(100);
den pinMode mehrfach zu setzen oder auch zu ändern ist erlaubt, der Aufruf alle paar Sekunden muss nicht sein, ist aber auch kein Fehler. TL;DR, Wie ist der Pegel am Reset Pin mit/ohne serial Monitor? Sind die Verbindungen zwischen CH340 und WROOM32 sauber, also keine Kurzschlüsse zu anderen ESP Pins die dann evtl. das booten behindern?
> tat ich bereits! Sorry aber ich kann dir nicht folgen. Ich habe den Code nach deinen Vorgaben unbebaut (siehe letzter Post von mir). Er tut aber dennoch nicht ohne Seriellen Monitor. Folgendes habe ich zuerst noch raus gelassen, weil ich den ESP immer von der Stromversorgung trenne. Er kann also nicht vorher schon verbunden gewesen sein. > // Set WiFi to station mode and disconnect from an AP if it was > previously connected > WiFi.mode(WIFI_STA); > WiFi.disconnect(); > delay(100); ABER.... der Vollständigkeit halber, habe den Code folgendermaßen umgebaut:
1 | #include "WiFi.h" |
2 | |
3 | const char* ssid = ""; |
4 | const char* password = ""; |
5 | |
6 | #define LED_PIN 2
|
7 | |
8 | void setup() { |
9 | |
10 | pinMode(LED_PIN, OUTPUT); |
11 | |
12 | WiFi.mode(WIFI_STA); |
13 | if(WiFi.status() == WL_CONNECTED){ |
14 | WiFi.disconnect(); |
15 | delay(100); |
16 | }
|
17 | |
18 | WiFi.begin(ssid, password); |
19 | while (WiFi.status() != WL_CONNECTED) { |
20 | delay(2000); |
21 | }
|
22 | }
|
23 | |
24 | void loop() { |
25 | |
26 | for(int i=0;i<5;i++){ |
27 | digitalWrite(LED_PIN, HIGH); |
28 | delay(200); |
29 | digitalWrite(LED_PIN, LOW); |
30 | if(i < 4){ |
31 | delay(200); |
32 | }
|
33 | }
|
34 | |
35 | delay(3000); |
36 | }
|
.... und: Naja.... geht immer noch nicht. Könntest du mir den Gefallen tun und den Code so umbauen, wie du sagst so muss es gehen und damit sind alle Probleme gelöst und den dann einfach mal vollständig hier posten? Ich denke da würde ab schnellsten gehen um diese Diskussion zu einem vernünftigen ende zu führen.
Johannes S. schrieb: > den pinMode mehrfach zu setzen oder auch zu ändern ist erlaubt, der > Aufruf alle paar Sekunden muss nicht sein, ist aber auch kein Fehler. > > TL;DR, > Wie ist der Pegel am Reset Pin mit/ohne serial Monitor? Sind die > Verbindungen zwischen CH340 und WROOM32 sauber, also keine Kurzschlüsse > zu anderen ESP Pins die dann evtl. das booten behindern? Habe jetzt nochmal alle Pins am CH340C durchgemessen: Keine Kurzschlüsse. Da aber der Code (reproduzierbar) an jeder Anschlussart (mit und Ohne Seriellem Monitor) läuft wenn der CH340C raus gelötet ist, muss der Fehler immer noch da irgendwo liegen. Mitleerweile habe ich auch diesen "Datenblatt" aufgetan: https://www.mpja.com/download/35227cpdata.pdf Auch die Beschreibung dort deutet drauf hin das meine Schaltung richtig ist. Kann es den sein das der CH340C Störsignale aussendet, wenn er nicht verbunden ist und daher der ESP32 nicht ins WLan kommt? Wenn ja: Was bedeutet das konkret für eine mögliche Fehlerbehebung?
:
Bearbeitet durch User
Mich macht immer noch der 12kΩ Widerstand neben der Antenne nervös. Die strahlt da voll hinein!
> TL;DR, > Wie ist der Pegel am Reset Pin mit/ohne serial Monitor? Sind die > Verbindungen zwischen CH340 und WROOM32 sauber, also keine Kurzschlüsse > zu anderen ESP Pins die dann evtl. das booten behindern? Das habe ich jetzt auch noch gemessen.... und siehe da: Mit Seriellem Monitor 3.3V --> Top! Aber OHNE sind es 4,7V !!! Wie kann sowas kommen? Ich finde hier keinen Fehler in meiner Schaltung. Der EN Pin mit einem 10k Pullup an 3.3V (Ausgang des AMS 1117) angeschlossen. Ich habe die Schaltung nochmal angefügt.
Manuel S. schrieb: > Folgendes habe ich zuerst noch raus gelassen, weil ich den ESP immer von > der Stromversorgung trenne. Er kann also nicht vorher schon verbunden > gewesen sein. da irrst du leider! für den ESP stimmt das JA! aber wo er sich anmeldet, bei mir Fritzbox ist er lange nicht getrennt! Damit auch dein wlan router weiss das der getrennt ist braucht es manchmal (oder immer?) ein disconnect! Manuel S. schrieb: > Könntest du mir den Gefallen tun siehst du es geht auch höflich! Manuel S. schrieb: > und den Code so umbauen leider kenne ich deinen wlan router nicht und seine Besonderheiten! Das müsstest du schon selber rausfinden optimal if connect -> disconnect kleines delay while not connected ...... usw.
:
Bearbeitet durch User
Manuel S. schrieb: > Wie kann sowas kommen? Der Enable Pin ist doch mit dem 12kΩ Widerstand direkt neben der Antenne verbunden, oder irre ich mich da?
Stefan ⛄ F. schrieb: > Manuel S. schrieb: >> Wie kann sowas kommen? > > Der Enable Pin ist doch mit dem 12kΩ Widerstand direkt neben der Antenne > verbunden, oder irre ich mich da? Der ist mittlerweile umgezogen. Ich habe die neue PCB mal angehängt. Der Pull-Up ist gelb markiert. Ist deine Vermutung, dass a irgendwas abstrahlt/induziert? Das müsste ja dann auch vom CH340C kommen, wenn er nicht verbunden ist (ohne Serial Monitor)
Einstrahlungen können sicher auch Fehler verursachen, aber da würde ich eher sporadische Effekte vermuten und nicht so einen hartnäckigen Boot Fehler. Im Schaltplan sollten die Netze Namen bekommen, dann sind die im Layout zu lesen und besser zu verfolgen. Hast du DRC und ERC gemacht? Die Spannungsregler gibt es mit verschiedenen Pin Belegungen, passt dieser wirklich zum Layout? Auch hier nachmessen ob die 3V3 richtig anliegen und die 4,7 V nicht noch irgendwo anders.
Manuel S. schrieb: > Ist deine Vermutung, dass a irgendwas abstrahlt/induziert? Ja, Ich meinte dass es vielleicht nur so gerade eben mit Glück funktioniert, wenn der SerialMonitor verbunden ist. Also dass die Problemursache nicht direkt vom CH340 kommt aber durch ihn ausgelöst wird. Espressif weist sicher nicht ohne Grund darauf hin, dass links und rechts von der Antenne kein Bauteil und kein Metall gehört.
Beitrag #6922670 wurde vom Autor gelöscht.
Stefan ⛄ F. schrieb: > Manuel S. schrieb: >> Ist deine Vermutung, dass a irgendwas abstrahlt/induziert? > > Ja, Ich meinte dass es vielleicht nur so gerade eben mit Glück > funktioniert wenn wir keinem Troll aufgesessen sind, warum müssen wir uns alles zusammen suchen? warum ist Board und Schaltplan nicht in einem Post? warum ist der Schaltplan so schlecht lesbar? warum zu dünne Strippen zu klein eingestellt? der CH340 hängt ja an 5V und ohne Init von dem wundert mich 5V Ruhepegel nicht, wo soll ein init herkommen ohne Serial. init open print? Nun wirds verrückt! Der Schaltplan sagt CH340C! https://www.mpja.com/download/35227cpdata.pdf Aber das Datenblatt weisst für den Typ CH340C/E/B Vcc min 3.0V Vcc typ 3.3V Vcc max 3.6V aber er ist an +5V angeschlossen!
Johannes S. schrieb: > Einstrahlungen können sicher auch Fehler verursachen, aber da würde ich > eher sporadische Effekte vermuten und nicht so einen hartnäckigen Boot > Fehler. Das ist auch das was mich wundert. Aber ein Boot Fehler ist es aus meine Sicht nicht. Der ESP durchläuft die setup(). Ich habe zum Test die Anzahl an Delays bei "WiFi.status() != WL_CONNECTED" auf 5 begrenzt und die LED auf Dauer HIGH gestellt, wenn nach den 5 mal warten (= 10 Sekunden) immer noch keine Verbindung da ist. Die loop() wurde so umgebaut das Sie nur noch bei verbundenem WLan blinkt. Ergebnis: * Mit Serial Monitor: ESP32 blinkt * Ohne Serial Monitor: ESP32 LED geht nach 10 Sekunden an und bleibt es auch. > Die Spannungsregler gibt es mit verschiedenen Pin Belegungen, passt > dieser wirklich zum Layout? Auch hier nachmessen ob die 3V3 richtig > anliegen und die 4,7 V nicht noch irgendwo anders. Den AMS1117 habe ich jetzt nochmal durchgemessen. Die Spannungen sind So wie sie sein sollen. Es ist ein AMS1117 3.3 und benötigt daher auch keine zusätzlichen Widerstände für die Regulierung. Auch die Spannung am ESP32 ist saubere 3.33V und am CH340C sind es 5V. Dass ist ok. Die 4,7v am EN Pin scheinen das booten nicht zu verhindern aber zumindest die WLan Verbindung. Daher nochmal kurz meiner Frage von gestern: Kann es sein das der verwendete BC-818-40 hier nicht der richtige ist, den ich für den Auto-Reset eingesetzt habe? Hier auch nochmal mein neuer Testcode:
1 | #include "WiFi.h" |
2 | |
3 | const char* ssid = ""; |
4 | const char* password = ""; |
5 | |
6 | #define LED_PIN 2
|
7 | |
8 | void setup() { |
9 | |
10 | pinMode(LED_PIN, OUTPUT); |
11 | |
12 | WiFi.mode(WIFI_STA); |
13 | if(WiFi.status() == WL_CONNECTED){ |
14 | WiFi.disconnect(); |
15 | delay(100); |
16 | }
|
17 | |
18 | WiFi.begin(ssid, password); |
19 | for(int i = 0; (i<5) && (WiFi.status() != WL_CONNECTED) ;i++){ |
20 | delay(2000); |
21 | }
|
22 | |
23 | if(WiFi.status() != WL_CONNECTED){ |
24 | digitalWrite(LED_PIN, HIGH); |
25 | }
|
26 | }
|
27 | |
28 | void loop() { |
29 | |
30 | if(WiFi.status() == WL_CONNECTED){ |
31 | for(int i=0;i<5;i++){ |
32 | digitalWrite(LED_PIN, HIGH); |
33 | delay(200); |
34 | digitalWrite(LED_PIN, LOW); |
35 | if(i < 4){ |
36 | delay(200); |
37 | }
|
38 | }
|
39 | }
|
40 | |
41 | delay(3000); |
42 | }
|
Joachim B. schrieb: > der CH340 hängt ja an 5V und ohne Init von dem wundert mich 5V Ruhepegel > nicht, wo soll ein init herkommen ohne Serial. init open print? Wie kommst du darauf, dass der CH340C initialisiert werden muss? Klar hat der 5V das ist bei dem so vorgesehen. Auch hier bitte genauer lesen: Die 4,7V lagen am EN Pin an. Dort ist das nicht gewünscht. Am CH340C völlig in Ordnung. > Nun wirds verrückt! > Der Schaltplan sagt CH340C! > > https://www.mpja.com/download/35227cpdata.pdf > Aber das Datenblatt weisst für den Typ > CH340C/E/B > Vcc min 3.0V > Vcc typ 3.3V > Vcc max 3.6V > > aber er ist an +5V angeschlossen! Bitte das Datenblatt genau lesen.... 3.0V bis 3.6v nur, wenn der v3 Pin mit VCC verbunden ist. Sonst sind es 4.0V bis 5.3V. Ich habe den Teil nochmal als Bild angehängt. Ist aber auch auf Seite 6 klar erkennbar.
Manuel S. schrieb: > Kann es sein das der verwendete BC-818-40 hier nicht der richtige ist, > den ich für den Auto-Reset eingesetzt habe? Glaube ich nicht, das ist ja ein ganz gewöhnlicher NPN. Nicht der schwächste, aber das verlangt ja auch keiner.
Nur wenn der CH340 mit 5V versorgt wird, dann kommen an den Signalleitungen auch 5V - 0,5 V raus, das scheint dann über deine T an den EN zu gehen. Auch über die UART Leitung. Den ESP8266 konnte man afaik mit 5 V Pegeln zuverlässig killen.
Kann denn das WLan Problem überhaupt vom 4.7V Pegel am EN Pin ausgelöst werden? Oder ist das nur eine Erscheinung der man nachgehen sollte, aber das eigentliche Problem nicht verursachen kann?
Manuel S. schrieb: > Kann denn das WLan Problem überhaupt vom 4.7V Pegel am EN Pin ausgelöst > werden? Spannungen außerhalb der "absolute maximum ratings" dürfen alle möglichen Fehlfunktionen bis hin zum Defekt auslösen. Da wird dir kaum jemand mit großartigen Erfahrungswerten dienen können, weil das niemand macht.
Johannes S. schrieb: > Nur wenn der CH340 mit 5V versorgt wird, dann kommen an den > Signalleitungen auch 5V - 0,5 V raus, das scheint dann über deine T an > den EN zu gehen. Auch über die UART Leitung. Den ESP8266 konnte man > afaik mit 5 V Pegeln zuverlässig killen. Nicht zu fassen..... Das war es wohl!!! Herzlichen Dank!!!! Ich habe den CH340C jetzt mit 3.3v angeschlossen. Der Versuch hat mich jetzt zwar einen CH340C gekostet aber jetzt verbindet er sich auch sauber ohne Serial Monitor Zusammenfassung: Der CH340C muss mit 3.3V betrieben werden, wenn das Logik-Level des Controllers auch 3.3v ist. (Wenn ich da lese, schäme ich mich fast das mir das nicht selbst aufgefallen ist) Leider sind wohl einige Beispiele die man im Internet findet, wie man den CH340c mit dem ESP32 oder ESP8266 verbindet: total falsch: https://pcbartists.com/wp-content/uploads/2020/12/esp32-ch340-programmer-schematic-for-espressif-esp32-esp8266.png ==> Danke an alle die hier durchgängig konstruktiv mitgeholfen haben!!! (aber auch nur an diese) Ich war schon kurz davor aufzugeben!
Manuel S. schrieb: > Leider sind wohl einige Beispiele die man im Internet findet, wie man > den CH340c mit dem ESP32 oder ESP8266 verbindet: total falsch Es gibt sogar Leute, die heute noch behaupten, man könne den ESP8266 problemlos mit 5V betreiben.
Manuel S. schrieb: > Nicht zu fassen..... Das war es wohl!!! Glückwunsch, aber solche Fehler müssen ja eine Ursache haben. Erinnert mich an ein LPC4088 Board von EA, das lief auf einmal auch nichts mehr, nichtmal debuggen ging. Bis mir einfiel das ich vorher noch ein Arduino Shield aufgesteckt hatte, aber das war nur eine leere Lochrasterplatine. Allerdings nicht ganz leer, nur ein Taster mit PullUp an Reset. Der PullUp wurde aber auch von +5 V versorgt... Habe ich auch lange gesucht bis mir das auffiel.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.