Forum: Analoge Elektronik und Schaltungstechnik ATMEGA mit ESP8266 kommunizieren


von Magnus L. (muepsi)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

da man hier super Hilfe bekommt, wende ich mich wieder an euch :)

Also ich würde gerne meinen ATMEGA8515 der in einem STK500 Board steckt 
mit dem Internet verbinden und habe mir deswegen 4 Stück vom ESP8266-1 
Module gekauft. Der Plan war, den µC und den ESP per UART und 
AT-Commands kommunizieren zu lassen. Dazu habe ich mir noch einen USB zu 
TTL Adapter gekauft, damit ich die richtige Firmware und Baudrate 
flashen kann. Soweit hat das auch alles funktioniert. Ich kann mit dem 
Adapter und einem Terminal mit der Baudrate 9600 erfolgreich AT-Commands 
von meinem PC schicken und kann meinen ESP steuern.

Nun hab ich mich an die Arbeit gemacht, einen Adapter auf Lochraster für 
den ESP zu bauen damit ich ihn einfach mit einen Steckboard verbinden 
kann. Das bedeutet die Kondensatoren und der Spannungsteiler sind direkt 
auf dem Adapter verlötet, um die Leitungen so kurz wie möglich zu 
halten.

Dann habe ich mir noch einen eigenen Adapter für RS232 mit einen MAX232 
auf Lochraster aufgebaut, da ich zu erst mit dem aufgebauten ESP-Modul 
auf dem Steckboard und meinen PC zu kommunizieren möchte, bevor ich den 
µC in Spiel bringe. Damit ich sicher gehen kann das der ESP einwandfrei 
funktioniert. Und leider funktioniert diese Kommunikation nicht... Wenn 
ich eine Spannung anlege, blinkt der ESP "normal" an, aber schickt nur 
Kauderwelsch an den PC. Wenn ich ein "AT" schicke, antwort er natürlich 
auch nur Blödsinn...

Jetzt ist meine Frage an euch, ob ihr einen Fehler in der Schaltung 
sieht? Muss ich beim ESP8266-1 irgendwas wichtiges beachten, was ich 
übersehe?

Was ich bis jetzt alles versucht habe:
* den RS232 Adapter mit Hilfe vom STK500 Board getestet - und da 
funktioniert er normal.
* 10k Widerstände an CH_EN, GPIO und RST reingehängt - hat nichts 
geändert.
* Baudrate sollte ja auch passen, da ich mit dem USB-TTL-Adapter normal 
kommunizieren kann.

Der Spannungsregler und der Level-Shifter von 3.3V auf 5V ist auf dem 
Steckboard aufgebaut und fast nur mit kurzen Drahtbrücken verbunden. Ich 
kann euch auch gerne noch ein Bild vom Aufbau schicken, falls das 
jemanden helfen würde.

Ich hoffe ihr könnt mir weiterhelfen und schon mal vielen Dank für eure 
Hilfe.


lg muepsi

von Stefan F. (Gast)


Lesenswert?

Magnus L. schrieb:
> Jetzt ist meine Frage an euch, ob ihr einen Fehler in der Schaltung
> sieht?

Der Transistor invertiert dein Signal. Du brauchst zwei Transistoren. 
Abgesehen davon ist er auch falsch beschaltet.

Das Interface heisst nicht RS232, sondern UART oder einfach "seriell". 
RS232 definiert Pegel um +/-12V.

Den Reset Pin würde ich mit dem Mikrocontroller verbinden, damit dieser 
den ESP bei Bedarf (wenn er hängt) resetten kann.

Der 1000µF Kondensator kommt mir massiv übertrieben vor, zumal du noch 
einen zweiten mit 470µF hast. Einige Spannungsregler fangen an zu 
spinnen, wenn man sie kapazitiv überlastet.

> ESP8266-1
So heisst das Modul mit Sicherheit nicht. Benenne es richtig, damit man 
nicht aneinander vorbei diskutiert. Ich kenne das ESP-01 und das ESP-1.

http://stefanfrings.de/mikrocontroller_buch/Einstieg%20in%20die%20Elektronik%20mit%20Mikrocontrollern%20-%20Band%203.pdf 
Kapitel 13 zeigt, wie man das machen kann.

von Achim H. (pluto25)


Lesenswert?

R1 muß in der Leitung zu Tx. So bekommt der ESP immer noch die 5V. Seine 
Tx kann gleich mit der Rx verbunden werden. (Ohne Transistor) Dem Mega 
reichen die 3V normalerweise um ihn zu verstehen.

: Bearbeitet durch User
von Joachim B. (jar)


Lesenswert?

Stefan ⛄ F. schrieb:
> Der Transistor invertiert dein Signal.

entweder zu beiden nicht invertieren und Pegelwandler 3,3V/5V zwischen 
schalten ODER gleich BEIDE mit MAX3232 bestücken und ein Nullmodemkabel 
verwenden.

: Bearbeitet durch User
von Magnus L. (muepsi)


Lesenswert?

@stefanus:

Es handelt sich beim Modul um das ESP - 01.

Den 1000 µF Kondensator, habe ich in meiner Verzweiflung so gewählt... 
Habe dort einige Werte ausprobiert - ohne Erfolg. Was würdest du dort 
empfehlen?

Der Levelshifter ist wirklich falsch und ich habe ihn nun wie im Bild 
(angehängt) von Stefan Frings auf seiner Homepage beschreibt aufgebaut. 
Jedoch kommt leider immer noch Blödsinn am Terminal an.

@Pluto25
Da hast du Recht das dem ATMEGA die 3.3V als High erkennen würde, jedoch 
war ich mir beim MAX232 nicht sicher. Ich denke der Spannungsteiler von 
R1 und R2 sollte schon am RX vom ESP hängen.

@jar
Wie meinst du beide mit einem MAX232 bestücken? Denkst du da schon an 
den µC?

von Stefan F. (Gast)


Lesenswert?

Magnus L. schrieb:
> Den 1000 µF Kondensator, habe ich in meiner Verzweiflung so gewählt...
> Habe dort einige Werte ausprobiert - ohne Erfolg. Was würdest du dort
> empfehlen?

Das, was der Hersteller des Spannungsreglers in seinem Datenblatt 
empfiehlt. Und zwar am Eingang und Ausgang. Du hast den Kondensator am 
Eingang vergessen, damit provozierst du grobe Fehlfunktionen die sogar 
zu Überspannung am Ausgang führen können!

Der Spannungsregler schafft 500mA, das reicht für den ESP Chip gerade 
aus. hast du vielleicht noch etwas anderes dran hängen oder wird er 
heiß?

Magnus L. schrieb:
> Der Levelshifter ist wirklich falsch und ich habe ihn nun wie im Bild
> (angehängt) von Stefan Frings auf seiner Homepage beschreibt aufgebaut.
> Jedoch kommt leider immer noch Blödsinn am Terminal an.

Zeige deinen korrigierten Schaltplan!

Magnus L. schrieb:
> Da hast du Recht das dem ATMEGA die 3.3V als High erkennen würde, jedoch
> war ich mir beim MAX232 nicht sicher.

Laut Datenblatt reichen dem sogar 2V als High Pegel.

Der MAX232 braucht aber 5V Versorgungsspannung. Heute nimmt man 
eigentlich den MAX3232, wenn schon.

Warum verwendest du keinen USB-UART Adapter, der direkt 3,3V Pegel hat?

von Stefan F. (Gast)


Lesenswert?

Ich halte es für eine wenig schlaue Idee, die beiden GPIO Pins nach 3,3V 
kurz zu schließen.

Insbesondere bei GPIO2 ist das ganz falsch, denn das ist ein Ausgang 
(mit der blauen LED verbunden)!

Lasse die beiden Pins lieber offen wenn du sie nicht benutzt.

von Magnus L. (muepsi)


Angehängte Dateien:

Lesenswert?

Das wird wirklich knapp. Muss ich gleich mal nachsehen, was ich noch so 
zur Verfügung habe. Es hängt nur der ESP dran und heiß wird er auch gar 
nicht.
Könnte das das Verhalten erklären?

Dann könnte ich ja den Level-Shifter weglassen oder? Leider hatte ich 
nur den MAX232 daheim.

Da ich am Anfang versucht habe, direkt mit dem µC per UART zu 
kommunizieren und ich auch keine erfolgreiche Kommunikation zusammen 
gebracht habe dachte ich mir, ich teste es mit einem MAX232 um 
sicherzustellen, dass das Setup vom ESP passt.

: Bearbeitet durch User
von Joachim B. (jar)


Lesenswert?

Magnus L. schrieb:
> Der Levelshifter ist wirklich falsch

wo welcher?
nur dein Levelshifter kann ja falsch sein, ich weiss das es 
funktioniert!

R1 sitzt schon mal auf der falschen Seite denn der ESP will ja die 
runtergeteilte Spannung bekommen und die kommt nun mal vom Atmel.

Dein GND ist auch nicht verbunden!
Dir scheint die Funktion eines Spannungsteilers nicht bekannt zu sein!

Statt deiner Klimmzüge könntest du es leichter haben und einen Fet 
nehmen oder ein Modul!

https://de.wikipedia.org/wiki/Pegelumsetzer
https://upload.wikimedia.org/wikipedia/commons/4/4e/Bidirektionaler_pegelumsetzer_wikide.svg

und da der bidirektional arbeitet kann der auch Rx und Tx und deswegen 
mag ich die hier
https://www.ebay.de/i/382706727030

Brücke erst mal am ESP Rx und Tx und teste ob du gesendetes zurück 
bekommst.

: Bearbeitet durch User
von Stefan F. (Gast)


Angehängte Dateien:

Lesenswert?

So geht das.

Den 100nF am ESP kannst du dir sparen, denn er befindet sich bereits auf 
dem ESP-Modul. Er schadet aber auch nicht.

von Magnus L. (muepsi)


Lesenswert?

@jar
Ich habe deinen Einwand mit dem Spannungsteiler falsch verstanden und 
dachte du hättest ihn gerne am TX vom ESP. Aber du hast natürlich Recht, 
dass R1 vom  Spannungsteiler im Schaltplan falsch eingezeichnet war und 
jetzt auch von Stefanus ausgebessert worden ist. Ich habe das nochmal 
auf der Platine geprüft und dort sollte es passen.

Ich habe den Schaltplan so wie Stefanus korregiert hat aufgebaut und 
habe immer noch das gleiche Problem leider.

Deswegen habe ich mir gedacht, ich baue den Schaltplan im Buch von 
Stefan Frings, Kapitel 13, ein zu ein nach. Aber auch das schafft keine 
erfolgreiche Kommunikation..

http://stefanfrings.de/mikrocontroller_buch/Einstieg%20in%20die%20Elektronik%20mit%20Mikrocontrollern%20-%20Band%203.pdf

Was habe ich gemacht:
1. einen 100µF Elko direkt auf dem Modul wie im Buch beschrieben 
angelötet.
2. Die Stromversorgung kommt nun direkt von einem Netzteil mit 3.3V 
eingestellt und die Strombegrenzung weit genug aufgedreht. Das sollte ja 
jetzt kein Problem mehr mit der Leistung sein?
3. noch einen 100nF Keramikkondensator zwischen 3.3 und GND gehängt 
(wahrscheinlich eh nicht notwendig, aber wie oben geschrieben kann es ja 
nicht schaden)
4. GPIO0 und GPIO2 hängen in der Luft.
5. Beim RS232-USB-Kabel habe ich auf PIN2 den TX vom ESP und auf PIN3 
den RX vom ESP angehängt und PIN5 habe ich mit Masse verbunden, die 
restlichen Pins habe ich freigelassen.

Nun wenn ich das Netzteil anstecke leuchtet die blaue und die rote LED 
dauerthaft und es sendet nichts und ich kann vom Terminal auch nichts 
senden. Wenn ich zunächst den TX Pin vom ESP offen lasse und dann das 
Modul starte, läuft er normal an. Wenn ich den TX dann verbinde und ein 
"AT" vom Terminal sende, blinkt die blaue LED aber ich bekomme wieder 
nur Blödsinn vom Modul... also im Prinzip das gleiche Problem wie 
vorhin.

Aber was mich halt verrückt macht, ist das ich mit USB zu
TTL Adapter normal mit dem Modul kommunizieren kann.

Kann es vielliecht am RS232 zu USB Kabel liegen?

lg Magnus

: Bearbeitet durch User
Beitrag #6535426 wurde von einem Moderator gelöscht.
von Stefan F. (Gast)


Lesenswert?

Magnus L. schrieb:
> Kann es vielliecht am RS232 zu USB Kabel liegen?

Keine Ahnung, was für ein Kabel du da verwendest. Offenbar irgedn etwas 
selbst gebautes. Klar kann das fehlerhaft sein.

Solche Sachen tested man am einfachsten mit einer Loopback-Schleife (Tx 
mit Rx vebinden). Dann muss alles was du sendest, auch empfangen werden.

von Magnus L. (muepsi)


Lesenswert?

Das Kabel hab ich gekauft:

https://www.amazon.de/gp/product/B0758BWVXF/ref=ppx_yo_dt_b_asin_title_o05_s01?ie=UTF8&psc=1

Mit dem Kabel kann ich auch zb. mit dem STK500 ganz normal 
kommunizieren. Aber vielleicht braucht man dafür eine Zusatzbeschaltung? 
Ich bin leider schon sehr verzweifelt und ich weiß auch das es auch 
super schwer ist da weiter zu helfen, da ich auch viel rumprobiert habe. 
Dafür auf jeden Fall schon mal vielen Dank!

Also im Moment habe ich so einen fliegenden Aufbau wie im Buch 
beschrieben vor mir liegen und hab das selbe Verhalten wie mit meinen 
selbst gelöteteten Adapter. Die einzelnen Komponenten funktionieren an 
und für sich, nur wenn ich sie verbinde funktioniert nichts so wie es 
soll.

von Stefan F. (Gast)


Lesenswert?

> Also im Moment habe ich so einen fliegenden Aufbau wie
> im Buch beschrieben vor mir liegen

Im Buch wird aber kein RS232 Kabel verwendet, sondern ein USB-UART 
Kabel! Du nennst es fälschlicherweise TLL Adapter. Mit dem geht es auch, 
laut deiner obigen Information.

Ist dir der Unterschied zwischen UART, TTL und RS232 klar?

UART = typisch  3,3 oder 5V
TTL = 5V
RS232 = typisch +/- 12V (aber ivertiert: LOW = +12V und HIGH = -12V)

Wie hast du dieses RS232 Kabel mit der ganz oben gezeigten Schaltung 
verbunden? Da fehlt noch was, mindestens ein MAX232 oder ähnlich. Den 
hast du im Text auch erwähnt, aber er taucht im Schaltplan nicht auf. 
Bist du sicher, dass dein MAX232 Aufbau funktioniert? Hast du das mit 
der Loopback-Verbindung getestet?

von Magnus L. (muepsi)


Lesenswert?

jaa, das ist definitv falsch! Hab ich nicht gecheckt.. Mit dem MAX232 
konnte ich mit dem ATMEGA kommunizieren, das hat funktioniert. Ich 
schicke dir dann gleich den Schaltplan ergänzt mit dem MAX232. Muss 
davor noch schnell mit dem Hund gehen :D

Beitrag #6535608 wurde vom Autor gelöscht.
von Magnus L. (muepsi)


Angehängte Dateien:

Lesenswert?

Hier nochmal die aktuelle Schaltung inklusive MAX232. Irgendwie bin ich 
mir bei der Beschaltung vom MAX232 nicht mehr sicher.. Aber ich habe es 
mit einer Loopback-Verbindung getestet und das funktioniert. Er 
funktioniert ja auch wenn ich mit dem µC per UART kommuniziere. Habe den 
Schaltplan auch schon so angepasst wie du es empfohlen hast. Wie 
sinnvoll hälst du den Level-Shifter, wenn der MAX232 eh mit den 3.3V 
klar kommen würde?

lg

von Achim H. (pluto25)


Lesenswert?

Unnötig, sollte aber kein Problem verursachen. Bautrate?
Gpio0 , T1in und R1in sollten je auf High (Pullup)
Funktioniert der Loopback auch von Pin 1 zu 8 des Esp Sockels?

von Stefan F. (Gast)


Lesenswert?

Ohne Stromversorgung kann der Max232 nicht funktionieren.

Der Levelshifter ist nicht notwendig.

Die Pullups befinden sich bereits auf dem ESP-01 Modul, bzw. im ESP 
Chip.

von Magnus L. (muepsi)


Lesenswert?

Die Stromversorgung ist schon angeschlossen, nur auf in Eagle sind diese 
Pins nicht standardmäßig angezeigt bei mir. Baudrate ist 9600 und habe 
jetzt auch gerade probiert ob die Loopback-Schleife bei kurzschluss von 
TX und RX vom ESP Sockel funktioniert. Und das funktioniert auch 
einwandfrei!

von Stefan F. (Gast)


Lesenswert?

Dann habe ich keine weitere Idee, was du noch prüfen kannst.

von Magnus L. (muepsi)


Lesenswert?

Hm, langsam das Gefühl das es wirklich an der stromversorgung vom esp 
liegt?! Wäre das ein Verhalten dafür? Im Moment kommen die 5V vom 
Stk500, konnte das auch ein Problem sein?

von Stefan F. (Gast)


Lesenswert?

Magnus L. schrieb:
> langsam das Gefühl das es wirklich an der stromversorgung vom esp
> liegt?! Wäre das ein Verhalten dafür?

Schlechte Stromversorgung kann beliebige Fehlfunktionen auslösen. Also 
im Zweifelsfall ist es gar nicht falsch, den Verdacht hierhin zu lenken. 
Zumal man es mit einem Oszilloskop auch leicht prüfen kann.

Beitrag #6542218 wurde vom Autor gelöscht.
von Magnus L. (muepsi)


Angehängte Dateien:

Lesenswert?

So Leute ich habe es endlich hinbekommen! Ich hab nochmal den aktuellen
Schaltplan hochgeladen. Entscheind waren die Pullups an RST und CH_EN.
Habe den Level-Shifter auch weggelassen. Was auf jeden Fall extrem
wichtig ist, ist der 100µF Elko ganz nahe am ESP-Modul.

Bei einem Modul habe ich ihn direkt an die Pins oben aufgelötet und das
funktioniert jetzt einwandfrei. Dann hätte ich mal ein anderes (ohne
aufgelöteten Elko) getestet und habe einen 100µF Elko auf dem Steckboard
verbaut.. und das reicht schon nicht mehr! Der ist ca. 2-3cm entfernt
vom Modul.


Aber jetzt habe ich endlich ein funktionierendes Setup von dem ich mich
jetzt wegbewegen kann! Vielen vielden Dank an die Leute die mir geholfen
haben!!!


lg Magnus

von Stefan F. (Gast)


Lesenswert?

Magnus L. schrieb:
> Was auf jeden Fall extrem
> wichtig ist, ist der 100µF Elko ganz nahe am ESP-Modul.

Sag ich doch, aber ich werde immer wieder als Dummkopf belacht, wenn ich 
das schreibe.

Nimm im nächsten Leben lieber 2,2kΩ für die Pull-Ups. Wenn du großes 
Pech hast triggert sonst das eigene Funksignal manchmal einen Reset- 
oder Power-Down Impuls.

von Magnus L. (muepsi)


Lesenswert?

Danke für den Rat :-)

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
Noch kein Account? Hier anmelden.