ESP8266-01S & Arduino Nano - Stromversorgung vermurkst?

OP #6834929
Lesenswert?

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);
}
Angehängte Dateien:
Gast #6834933
Lesenswert?

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.
OP #6834995
Lesenswert?

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.
Gast #6835004
Lesenswert?

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.
Gast #6835006
Lesenswert?

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....
Gast #6835021
Lesenswert?

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.
OP #6835055
Lesenswert?

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.
Gast #6835064
Lesenswert?

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.
OP #6835086
Lesenswert?

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 :-)
Gast #6835099
Lesenswert?

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.
Gast #6835108
Lesenswert?

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)?
Gast #6835109
Lesenswert?

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.
Gast #6835150
Lesenswert?

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.
Gast #6835163
Lesenswert?

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.
OP #6835243
Lesenswert?

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.
Gast #6835264
Lesenswert?

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.
OP #6835312
Lesenswert?

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.
Angehängte Dateien:
Gast #6835346
Lesenswert?

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.
Gast #6835468
Lesenswert?

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.
Gast #6835669
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren