ESP8266 sendet Daten nach Initialisierung

OP #7627696
Lesenswert?

Hallo,

ich nutze einen ESP8266 als UART Gateway mittels UDP. Beim Starten vom ESP sendet dieser auf der UART Daten zum Mikrocontroller und ich weiß nicht warum. Mein Mikrocontroller sendet keine Daten, das kann ich auf dem Oszilloskop sehen, also muss dieses Senden vom ESP initiiert werden. Aber was wird dort gesendet?

Es sind nur wenige Zeilen Code, ich vermute, dass die Initialisierung irgendwelchen Unsinn schickt.

Oder ist bei der Initialiserung vom UDP schon "1 Paket im Buffer", warum auch immer?

EDIT: Auch wenn ich "Serial.write(packetBuffer, inCome);" auskommentiere wird beim Hochfahren etwas über die UART gesendet.

1
#include <ESP8266WiFi.h>
2
#include <WiFiUdp.h>
3

4
#define SERIALBAUD 115200 
5
#define AP_SSID "NETWORK"
6

7
// UDP
8
WiFiUDP UDP;
9
IPAddress local_IP(192, 168, 4, 1);
10
IPAddress gateway(192, 168, 4, 1);
11
IPAddress subnet(255, 255, 255, 0);
12
#define UDP_PORT 4210
13

14
char packetBuffer[400];
15
int inCome = 0;
16
int packetSize = 0;
17
char incoming_buffer[100], filename_rcv[100] = {0};
18

19
void setup() {
20
    WiFi.softAPConfig(local_IP, gateway, subnet);
21
    WiFi.softAP(AP_SSID);
22

23
    UDP.begin(UDP_PORT);
24
    Serial.begin(SERIALBAUD);
25
}
26

27
void processIncomingByte(const byte inByte) {
28
    const unsigned int MAX_INPUT = 512;
29
    static char input_line[MAX_INPUT];
30
    static unsigned int input_pos = 0;
31

32
    if (input_pos < (MAX_INPUT - 1)) {
33
        input_line[input_pos++] = inByte;
34
    }
35

36
    if (inByte == '\n') {
37
        UDP.beginPacket(UDP.remoteIP(), UDP.remotePort());
38
        UDP.write(input_line, input_pos);
39
        UDP.endPacket();
40
        input_pos = 0;
41
    }
42
}
43

44
void loop() {
45
    packetSize = UDP.parsePacket();
46

47
    if (packetSize > 0) {
48
        memset(packetBuffer, 0, sizeof(packetBuffer));
49
        inCome = UDP.read(packetBuffer, sizeof(packetBuffer));
50
        Serial.write(packetBuffer, inCome);
51
    }
52
    while (Serial.available() > 0) {
53
        processIncomingByte(Serial.read());
54
    }
55
}
#7627740
Lesenswert?

Hallo,

Ada J. Quiroz schrieb:

Sebastian R. schrieb:

Welche Daten denn?

742 Zeichen, irgendwelche Zahlen, kein Text.

Sebastian W. schrieb:

Du meinst die Bootmeldungen mit 75000 Baud?

Eigentlich 74880 Baud, sieht etwa so aus:

ets Jan 8 2013,rst cause:2, boot mode:(3,6)

load 0x4010f000, len 3460, room 16 tail 4 chksum 0xcc load 0x3fff20b8, len 40, room 4 tail 4 chksum 0xc9 csum 0xc9 v00054e50 ~ld

Wenn Du das nicht haben willst, eben ein Pin zusätzlich verbinden und in Deinem Programm beim Start setzen. Dein µC schickt dann eben die Daten nur weiter wenn der Pin aktiv ist.

Gruß aus Berlin Michael

#7634489
Lesenswert?

Hallo, ich versuche auch gerade zufällig mittes eines seriel --> TTL Adapters einem ESP8266, gebunden an eine Controller platine für LED Steuerung der Firma Hama, zu zuhören.

Ich versuche dies von einem Windows PC aus, wo ich aber die Baudrate von 74880 nicht einstellen kann. Bei 115200 kommen lediglich komische Zeichen die sich ständig wiederholen.

Hat jemand eine Idee wie ich Putty bzw ein anderes Terminalprogram zu einer Baudrate von 74880 "zwingen" kann?

Gruß

Gast #7634494
Lesenswert?

Sebastian D. schrieb:

Ich versuche dies von einem Windows PC aus, wo ich aber die Baudrate von 74880 nicht einstellen kann

Versuche mal ein anderes Programm oder einen anderen USB/seriell Adapter. Die billigen PL2303 und CH340 können es jedenfalls. Allerdings bietet nicht jedes Programm an, solche ungewöhnlichen Baudraten auszuwählen oder einzutippen.

#7634500
Lesenswert?

#7634510
Lesenswert?

Sebastian D. schrieb:

Ich versuche dies von einem Windows PC aus, wo ich aber die Baudrate von 74880 nicht einstellen kann. Bei 115200 kommen lediglich komische Zeichen die sich ständig wiederholen.

Kein Wunder - bereits bei viel kleineren Abweichungen stimmen beim letzten Bit die Abtastzeitpunkte nicht mehr. 5% Fehler in der Baudrate führen beim letzten Bit zu einem Zeitfehler von über 40% der Bitdauer. Natürlich versteht der Empfänger dann nur noch Kauderwelsch.

Sebastian D. schrieb:

Hat jemand eine Idee wie ich Putty bzw ein anderes Terminalprogram zu einer Baudrate von 74880 "zwingen" kann?

Notfalls nimmst du einen zweiten µC und setzt den Baudratengenerator passend für die 74880 Bd.

#7634653
Lesenswert?

Alternativen, wenn noch Pins frei sind:

  • benutze SoftwareSerial für eine Schnittstelle an beliebigen Pins
  • Benutze D7 und D8 für die Schnittstelle und schalte nach dem Booten die Serielle Schnittstelle drauf mit
1
Serial.swap();
  • [edit] Gerade noch gefunden: "Bootstrapping GPIO15 to ground will also disable initial output from the ROM bootloader." Also 10k Pull-Down, dann sollte da Ruhe sein. Der Pin kann weiterhin als Ausgang genutzt werden.

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