Forum: Mikrocontroller und Digitale Elektronik ESP8266 sendet Daten an µC ohne Anforderung


von Sascha B. (bruegae)


Lesenswert?

Hallo zusammen,

ich beschäftige mich gerade mit dem ESP8266.
Ich habe ein paar ESP8266-01 sowie einen USB-Adapter speziell für den 
ESP8266 bei eBay gekauft. Am PC habe ich den ESP8266-01 mit dem 
USB-Adapter wurderbar zum Laufen bekommen und mich auch schon mit den AT 
Commands beschäftigt.

Jetzt möchte ich den ESP8266-01 an einem Atmega32 zum Laufen kriegen. 
Ich habe folgende Verkabelung (Pinbelegung siehe 
http://esp8266-server.de/):
VCC - 3,3V
GND - GND
1nF Kerko direkt an VCC/GND als support für Leistungsspitzen beim Senden
RST - 3,3V über 10kOhm
CH_PD - 3,3V über 10kOhm
RX - TX Atmega32
TX - RX Atmega32

Für die UART-Kommunikation verwende ich die UART-AVR Lib von Fleury 
(http://homepage.hispeed.ch/peterfleury/avr-software.html) bzw. die 
weiterentwickelte Variante von Gock 
(https://github.com/andygock/avr-uart).

Mein Problem ist, dass der ESP8266-01 nicht zu erreichen ist, mein 
Problem ist, dass er zu viel spricht. Wenn ich mein Board einschalte, 
fängt der ESP8266-01 nach ein paar Sekunden ohne Anforderung an zu 
senden (blaue LED blinkt immer wenn er anfängt). Dann ist kurz Pause und 
es geht weiter. Das geht über Minuten so. Um das Verhalten zu zeigen, 
habe ich ein kurzes Video hochgeladen: 
https://www.youtube.com/watch?v=laUkKjnPNwc Immer wenn der Atmega32 ein 
Zeichen empfangen hat, geht der Counter auf dem ebenfalls 
angeschlossenen Display um 1 nach oben.

Hier mein Quellcode:

uart0_init(115200ui); //baud 115200 (mit dieser funktioniert mein 
ESP8266-01 per USB am PC)
sei(); //Interrupts aktivieren

lcd_init_display();

//2x Lauflicht hin und her...

//jetzt werden in einer Endlosschleife ankommende UART Daten gelesen
uint16_t counter = 0;

while(1) {
  uint16_t uartData = uart_getc() ;

  if(uartData == UART_NO_DATA) {
    continue;
  }

  counter +=1;

  lcd_setCursorPosition(1,0);
  lcd_printuint16AtCurrentPos(counter);
}

Der ESP8266-01, den ich per USB am PC habe, verhält sich nicht so. Er 
sendet nur Daten, wenn er ein AT Command empfangen hat.

Irgendwas mache ich ganz sicher falsch. Hat jemand eine Idee oder einen 
Tipp?

von Planlos (Gast)


Lesenswert?

Vermutung: Spannungsversorgung passt nicht, ESP resettet regelmäßig.

Der ESP zieht einiges an Strom, und das nicht gleichmäßig.

Bastel mal 100µF an die 3.3V-Versorgung, mit möglichst kurzen 
Verbindungen zum ESP.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Sascha B. schrieb:
> 1nF Kerko direkt an VCC/GND als support für Leistungsspitzen beim Senden
Das hilft für diesen Anwendungszweck natürlich gar nichts. Da sollten 
schon 10uF oder noch mehr dran...

von Stefan F. (Gast)


Lesenswert?

Ich empfehle 100µF direkt auf das Modul löten. Denn je kürzer die 
Leitungen sind, umso besser. Außerdem sollte das Netzteil und der 
Spannungsregler mindestens 400mA alleine für das ESP Modul bereit 
stellen.

von Sascha B. (bruegae)


Angehängte Dateien:

Lesenswert?

Erstmal vielen Dank für die schnellen Antworten!

Mein 1nF Kerko ist ein 1µF, da habe ich mich vertippt. Ist ja dann aber 
auch deutlich zu wenig.
Ich habe leider grade keinen 100µF Elko da, daher hab ichs zusätzlich zu 
dem 1µF Kerko einen 22µF Elko und einen 10µF Tantal parallel gelötet. 
Hat leider nix geholfen. Ist ja dann aber nach Aussage von Planlos und 
stefanus auch viel zu wenig.

Ich sehe auch gerade, dass auf meinem USB-Adapter ein 1000µF Kerko drauf 
ist... (siehe Bild)

Als Spannungsregler verwende ich einen LM 1117 T3,3. Der kann laut 
Datenblatt 0,8A liefern. Das Display braucht um die 100mA, Controller 
und Sensoren auf dem Board deutlich weniger. Sollten also noch 
mindestens 500mA für den ESP übrig sein. Das Netzteil hinter dem LM kann 
deutlich mehr als 0,8A.

Dann werde ich mal einen entsprechenden Elko bestellen und melde mich 
dann hier nochmal.

: Bearbeitet durch User
von Brummbär (Gast)


Lesenswert?

Sascha B. schrieb:
> Kerko

Kerko deute ich als eine sehr unschöne Abkürzung für Keramikkondensator.
Das, was Du auf dem USB-Adapter siehst, ist aber ein 
Elektrolytkondensator.

von Sascha B. (bruegae)


Lesenswert?

Brummbär schrieb:
> Das, was Du auf dem USB-Adapter siehst, ist aber ein
> Elektrolytkondensator.

Ja stimmt natürlich. Ich bin einfach mehr der ITler als der E-Techniker 
:D



Ich habe mir nun kurzfristig aus der Verwandschaft einen 2200µF Elko 
besorgt (was anderes in passenderer Größenordnung war nicht verfügbar). 
Damit zeigt mein Counter nun bei jedem Anstecken des Netzteils den 
gleichen Wert und danach kommt keine weitere UART-Kommunikation. Damit 
kann ich arbeiten!

Vielen Dank an alle für die Hilfe!

von Empfehlung (Gast)


Lesenswert?

Gerade ist ein schönes deutschsprachiges ESP8266-Praxisbuch auf den 
Markt gekommen. Einfach mal googeln :)

von Andreas B. (bitverdreher)


Lesenswert?

Sascha B. schrieb:

> Als Spannungsregler verwende ich einen LM 1117 T3,3. Der kann laut
> Datenblatt 0,8A liefern. Das Display braucht um die 100mA, Controller
> und Sensoren auf dem Board deutlich weniger. Sollten also noch
> mindestens 500mA für den ESP übrig sein. Das Netzteil hinter dem LM kann
> deutlich mehr als 0,8A.
>
Wie kommst Du drauf, daß Dein USB Port einfach so mal 1A liefert?

Gruß
Andreas

von Sascha B. (bruegae)


Lesenswert?

Empfehlung schrieb:
> Gerade ist ein schönes deutschsprachiges ESP8266-Praxisbuch auf
> den
> Markt gekommen. Einfach mal googeln :)

Wenn Du "Kolbans Book on ESP8266" meinst, habe ich es soeben gefunden. 
Danke dafür.

Andreas B. schrieb:
> Wie kommst Du drauf, daß Dein USB Port einfach so mal 1A liefert?

Meine Platine versorge ich natürlich mit einem gesonderten Netzteil, das 
mehr als 500mA (USB) kann :)

von Stefan F. (Gast)


Lesenswert?

Wie ich sehe haben wir hier zwei Threads zum selben Thema.
Bitte diesen Thread hier schließen und nur noch in dem anderen weiter 
diskutieren.
Danke

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.