Hi zusammen, auf meiner Platine (Plan angehängt), ist ein ESP8266-01S über einen Logic Level Converter mit einem Arduino Nano verbunden. Die Stromversorgung ist über ein 5V Mean Well Schaltnetzteil realisiert, an dem der Arduino direkt angeschlossen ist. Der ESP bekommt seine 3,3V über ein AMS1117 Modul. Die beiden Kondensatoren sind gegen den Hunger des ESP, einmal Elko einmal Keramik. Mein Problem: ich möche den Status des ESP über dessen TX-Pin auslesen, bekomme aber nur verschiedene Sonderzeichen oder ausschliesslich Fragezeichen angezeigt. Sofern ich jedoch das 5V Netzteil abziehe und alles über die USB Buchse des Arduino versorge, bekomme ich meine korrekte Ausgabe am ESP. Die Ausgabe über den TX Pin lese ich mit einem FTDI Adapter dessen Baudrate mit der des ESP übereinstimmt. Es wurden verschiedene Baudraten ausprobiert. Über USB Port des Arduino gespeist ist alles ok, über das 5V Netzteil nicht. Kann die Stromversorgung bei der Festlegung der Baudrate dazwischenfunken? Aus der uart.cpp des Esp8266 Arduino Cores: uart_set_baudrate(uart_t* uart, int baud_rate) { if(uart == NULL) return; uart->baud_rate = baud_rate; USD(uart->uart_nr) = (ESP8266_CLOCK / uart->baud_rate); }
Tuck I. schrieb: > Sofern ich jedoch das 5V Netzteil abziehe und alles über die USB Buchse > des Arduino versorge, bekomme ich meine korrekte Ausgabe am ESP. Der Unterschied ist, dass die Versorgungsspannung des AVR bei USB ein paar hundert Millivolt geringer ist. Bist du sicher, dass dein Pegelwandler funktioniert? Kontrolliere HIGH und LOW Pegel an den Ausgängen. Benutzt du auf dem AVR SoftwareSerial? Die funktioniert nach meinem Kenntnisstand nicht mit 115200 baud. Versuche mal maximal 38400 baud.
Der Wandler funktioniert, sofern ich alles über einen Arduino versorge. Lesen will ich ausschliesslich am ESP. Also jetzt mal den Arduino von der Funktion her aussen vorgelassen, ich bekomme die Sonderzeichen am ESP. Edit: am ESP messe ich direkt an VCC/GND 3,32V, wenn ich das 5V Netzzteil verwende.
:
Bearbeitet durch User
Mit einem I2C-Levelshifter habe ich auch Probleme bei der Verbindung per UART zu einem 5V Atmega. Deshalb verwende ich für die UART zwischen einem ESP-01 und dem Atmega nur Spannungsteiler mit Widerständen. Das funktioniert problemlos.
Was ich nicht in dem Zusammenhang verstehe: Laut Plan verwendest du GPIO0 GPIO2 für die Serielle. Wobei der ESP eigentlich GPIO1 GPIO3 dafür vorgesehen hat. Tuck I. schrieb: > Logic Level Converter Da hätte ich auch schon mal gerne gewusst, was das für ein Levelshifter ist....
Tuck I. schrieb: > Die beiden Kondensatoren sind gegen den Hunger des ESP, einmal Elko > einmal Keramik. Auch wenn du es nicht für nötig hältst: dein Spannungsregler braucht auch am Eingang einen fetten Elko sonst kann er am Ausgang nicht korrekt stabilisieren. Ein Elko im speisenden Netzteil kann normalerweise nicht diesen Elko ersetzen. Die Ausgangs-Kondensatoren müssen nahe am Spannungsregler platziert sein.
EAF schrieb: > Was ich nicht in dem Zusammenhang verstehe: > Laut Plan verwendest du GPIO0 GPIO2 für die Serielle. > Wobei der ESP eigentlich GPIO1 GPIO3 dafür vorgesehen hat. GPIO0 und 2 kann man sicher für i2c hernehmen. EAF schrieb: > Da hätte ich auch schon mal gerne gewusst, was das für ein Levelshifter > ist.... https://www.ebay.de/itm/253048505379 Ohne genaue Infos, vermutlich genau wie der Sparkfun mit mehreren BSS138. 10k Pull-Ups sind ebenfalls auf dem Platinchen. hard worker schrieb: > Auch wenn du es nicht für nötig hältst: dein Spannungsregler > braucht auch am Eingang einen fetten Elko sonst kann er am > Ausgang nicht korrekt stabilisieren. Ein Elko im speisenden > Netzteil kann normalerweise nicht diesen Elko ersetzen. Es handelt sich um dieses Modul https://cdn.shopify.com/s/files/1/1509/1638/files/AMS1117_Stromversorgungsmodul_3.3V_Datenblatt_9ad4555d-ea29-4360-8636-370433b21853.pdf?13805590412618064847 Ich habe noch andere Regulatoren, jedoch hatte ich dieses Modul verwendet, weils rumlag und ich dachte, dass es ein toller Zweck dafür wäre... Ich finde keine Info, welche Kondensatoren da verlötet wurden, Ja man könnte sie auslöten, aber dann bekomme ich die nie wieder so drauf. Habe gerade noch einen 1000uF an den Eingang des Reglers gehängt. Kein Unterschied. hard worker schrieb: > Die Ausgangs-Kondensatoren müssen nahe am Spannungsregler > platziert sein. Also hinten und vorne zwei so große Kondensatoren? Ein 1000uF ist direkt am Eingang des ESP ca. 2cm vom Regler entfernt.
Tuck I. schrieb: > Also hinten und vorne zwei so große Kondensatoren? Nein, hinten (Ausgang) reicht 10 bis 47uF. Datenblatt des Reglers lesen und Vorschläge beachten. Ein (sehr) grosser Elko am Ausgang macht das Regelverhalten zunichte oder verschlechtert es deutlich.
Tuck I. schrieb: > Es handelt sich um dieses Modul Du hast einen Spannungsregler gezeichnet, meinst aber ein Modul. Das ist extrem irreführend. Tuck I. schrieb: > Ich finde keine Info, welche Kondensatoren da verlötet wurden Auf jeden Fall keine grossen Elkos. Das mag für einen Mini- Controller gerade noch gut sein aber du willst ja einen Stromfresser versorgen. Nachdem deine Angaben so "präzise" sind darf man schon auch mal am Aufbau zweifeln.
Ich bin bisl blind, auf der Platine steht ja vorni und hinten je 104 und 106, also ein 100nF und ein 10uF sind schon verbaut.
:
Bearbeitet durch User
hard worker schrieb: > Tuck I. schrieb: >> Es handelt sich um dieses Modul > > Du hast einen Spannungsregler gezeichnet, meinst aber ein Modul. > Das ist extrem irreführend. Das stimmt, aber ich hatte Modul geschrieben und dass Kondensatoren drauf sind. Ja das Bild ist irreführend.
:
Bearbeitet durch User
Tuck I. schrieb: > Ein 1000uF ist direkt am Eingang des ESP ca. 2cm vom Regler entfernt. Das ist jedenfalls genau nicht zielführend, wie vorher bereits beschrieben.
Tuck I. schrieb: > GPIO0 und 2 kann man sicher für i2c hernehmen Dann ist deine Beschreibung im Eingangspost auch irreführend. Da habe ich UART zum Atmega rausgelesen. I2C sollte so funktionieren.
ESP <- i2c -> Arduino ESP TX -> nur für Serial Out. Völlig unabhängig von der Verbindung zum Arduino. Brain 2.0 schrieb: > Da habe > ich UART zum Atmega rausgelesen. Tuck I. schrieb: > ich möche den Status des ESP über dessen TX-Pin auslesen, bekomme aber > nur verschiedene Sonderzeichen oder ausschliesslich Fragezeichen > angezeigt. Es geht um den TX Pin am ESP, den ich für die Serielle Ausgabe nutzen will um etwas "zu sehen". Wenn ich das nächste Mal sowas wie den i2c Teil weglasse, dann gibts wieder mecker warum nciht alles angegeben wurde :-)
Tuck I. schrieb: > GPIO0 und 2 kann man sicher für i2c hernehmen. Ah, ja .... Interessante Taktik! Über die serielle reden, einen UART Pegelwander malen, aber I2C verwenden Dann auch noch: Es fehlt das Wichtigste im Plan! Das was die Probleme macht. Der Anschluss des TTL USB Wandlers. Ich behaupte: Dort hast du vergessen GND zu verbinden, deswegen siehts du auch was, wenn der Arduino am PC hängt. Und siehst nix/Schrott, wenn der Arduino vom PC ab ist.
Deine Beschriftung Rx und Tx und die Begriffe uart, FTDI und Baudrate deuten auf UART Kommunikation hin. Jeder muss also davon ausgehen, dass deine beiden Mikrocontroller per UART kommunizieren. Nun soll das jedoch eine I2C Kommunikation sein, aber um die geht es gar nicht. Sondern es geht um eine UART Kommunikation, die in deinem Schaltplan nicht eingezeichnet ist. Willst du uns verarschen? Hast du den GND Anschluss deines FTDI Adapters mit deiner Schaltung verbunden? Sind die Kabel auch wirklich heile (nicht innen drin gebrochen)?
Stefan ⛄ F. schrieb: > Nun soll es im I²C gehen. Nein, das verstehst du nicht, es geht sehr wohl um die UART! Er zeigt nur nicht das was die Probleme macht, die UART Verbindung, sondern ganz was anderes, die I2C Verbindung. Das mit der Levelshifter Beschriftung ist natürlich auch nur eine Nebelkerze. Ihm sieht da seinen I2C LEvelshifter vor sich liegen. Aber wie dürfen uns mit einem gemalten UART Levelshifter begnügen.
Diese Levelshifter funktionieren übrigens nicht zuverlässig mit 400 kHz.
Stefan ⛄ F. schrieb: > Diese Levelshifter funktionieren übrigens nicht zuverlässig mit 400 kHz. Die hochohmigen Pull-Ups mit gerade mal 10kΩ bei 3.3V sind daran sicher nicht ganz unbeteiligt. Ein Oszi verrät mehr.
Tuck I. schrieb: > Wenn ich das nächste Mal sowas wie den i2c Teil weglasse, dann gibts > wieder mecker warum nciht alles angegeben wurde :-) Die gibt es nur , wenn deine Beschreibung unverständlich ist. Und das ist hier def. der Fall. Ein deutliches Schaltbild wäre da sehr hilfreich.
Stefan ⛄ F. schrieb: > Diese Levelshifter funktionieren übrigens nicht zuverlässig mit 400 kHz. Da diese Levelshifter auf der Basis der BSS138 FETs aufgebaut sind gibt es keinen Grund warum sie in ihrer Funktion auf 400KHz oder weniger beschränkt sein sollen. Bei I2C sind allein die Pullups massgeblich für die maximale Frequenz verantwortlich. Bei höherfrequenten Anwendungen wie SPI sind nur die (niedrigen) Längswiderstände (die die FETs bilden) die frequenzbeschränkenden Elemente einer Pegelanpassung. Aber sicherlich liegt die Frequenzgrenze der BSS138-Levelshifter nicht bei 400KHz oder darunter. Herr Frings.
Ich denke ich verstehe die Aufregung, ich werde den Plan korrigieren. "I2C-sicher" hatte ich gerade bei Reichelt gelesen. Ich war die ganze Zeit davon ausgegangen, dass er einfach dafür gedacht ist. War wohl ein Irrtum. Wegen den Pullups und der Frequenz: Ich habe beim ESP und den Arduinos die internen Pullups deaktiviert, weil ich ohne irgendwas zu berechnen davon ausgegangen war, dass die 10K Ohm auf beiden Seiten ausreichen. Meine Verbindung funktioniert nur bei 100KHz. Aber wie gesagt, mir geht es darum, dass ich am ESP mit einem FTDI Adapter ncihts auslesen kann. Ich bin dann mal am Plan.
Tuck I. schrieb: > Ich habe beim ESP und den Arduinos > die internen Pullups deaktiviert, weil ich ohne irgendwas zu berechnen > davon ausgegangen war, dass die 10K Ohm auf beiden Seiten ausreichen. S.55 https://www.nxp.com/docs/en/user-guide/UM10204.pdf
Tuck I. schrieb: > Ich war die ganze Zeit davon ausgegangen, dass er einfach > dafür gedacht ist. War wohl ein Irrtum. Dein Irrtum besteht darin dass du meinst der Levelshifter sei auf irgendeine Art von Schnittstelle beschränkt. Das ist nicht der Fall, jedenfalls nicht bei zwei Teilnehmern mit 3.3V/5V Digitalpegeln. Wenn etwas nicht funktioniert liegt es an etwas Anderem. Ausserdem scheinst du meinen Beitrag vorher nicht gelesen oder nicht verstanden zu haben.
hard worker schrieb: > Ausserdem scheinst du meinen Beitrag vorher nicht gelesen > oder nicht verstanden zu haben. Ich gehe davon aus du meinst das Thema mit den Elkos? Da der erste Plan so herrlich war, habe ich einen neuen Plan erstellt. Ist der übersichtlicher? Ich meine das ernst, ja der erste Plan war hingeschludert. Das ist der aktuelle Zustand.
Tuck I. schrieb: > Ist der übersichtlicher? EAF schrieb: > Ich behaupte: > Dort hast du vergessen GND zu verbinden, deswegen siehts du auch was, > wenn der Arduino am PC hängt. Und siehst nix/Schrott, wenn der Arduino > vom PC ab ist. Stefan ⛄ F. schrieb: > Hast du den GND Anschluss deines FTDI Adapters mit deiner Schaltung > verbunden? Holy Cow Es funktioniert.....
Eigentlich hatte er die, aber die Klemme lag daneben. Die eine Verbindung zum FTDI im Plan und das erneute Querlesen hat mich dann doch darauf gebracht.
:
Bearbeitet durch User
Tuck I. schrieb: > Ich gehe davon aus du meinst das Thema mit den Elkos? Was ist an "meinen Beitrag vorher" nicht zu verstehen?
Tuck I. schrieb: > einen neuen Plan erstellt. > Ist der übersichtlicher? Diese Darstellung mit mehreren Kästchen ohne Verbindungswege ist modern, ich kann sie nicht leiden. Für mich ist Deine erste Darstellung, die Du "hingeschludert" nennst, verständlicher.
Manfred schrieb: > Für mich ist Deine erste Darstellung, die Du > "hingeschludert" nennst, verständlicher. Beiden Darstellungen ist gemeinsam, dass sie die Problemstelle geschickt ausblenden. Auf diesem Wege war es dann möglich, die Verwirrung, auf ein solche hohes Niveau hin zu optimieren.
Ich würde noch CH-PD und RST auf definiertes Potential legen und nicht offen lassen.
Helmut -. schrieb: > Ich würde noch CH-PD und RST auf definiertes Potential legen und nicht > offen lassen. Alle relevanten Leitungen sind auf dem 01 Board mit 12K Pullup oder Pulldown versehen. Das sollte reichen. Kann allerdings auch nicht schaden, diese noch etwas "stronger" zu machen, gerade bei längeren Anschlusskabeln.
Mal eine laienhafte blöde Frage: Wieso lässt du deinen Code nicht direkt auf dem ESP laufen statt ihn nur als Funkmodul zu benutzen?
Oliver S. schrieb: > Wieso lässt du deinen Code nicht direkt auf dem ESP laufen statt ihn nur > als Funkmodul zu benutzen? Das ist hier gar nicht das Thema. Es geht um die serielle Verbindung zwischen ESP8266 und PC über USB
Oliver S. schrieb: > Mal eine laienhafte blöde Frage: > Wieso lässt du deinen Code nicht direkt auf dem ESP laufen statt ihn nur > als Funkmodul zu benutzen? Deine Fantasie geht mit dir durch. Das ist gar nicht der Fall! Wenn der ESP nur ein Funkmodul wäre, z.B. mit der AT Software, dann bräuchte/könnte er keine I2C Anbindung.
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.