/*
Baudrate Test ESP8266
Arduino IDE 1.6.4
COM PORT 18 für MEGA
Mega mit HW-Serial: Serial#3
AT+UART_DEF=115200,8,1,0,0
AT+UART_DEF=9600,8,1,0,0
This command sets the UART configuration and ! save ! it to flash. It is stored as the default parameter
and will also be used as the default baudrate henceforth
AT+UART_CUR=115200,8,1,0,0
AT+UART_CUR=9600,8,1,0,0
This command sets the current UART configuration; it does ! not ! write to the flash.
Hence there is no change in the default baudrate.
*/
#include "WiFiEsp.h"
#include
int espbyte = 0;
unsigned long baud9600 = 9600;
unsigned long baud19200 = 19200;
unsigned long baud38400 = 38400;
unsigned long baud115200 = 115200;
boolean Baud_istOK = false;
boolean UART_Flashen = false;
#define MG_HW_PIN 53 // fuer Hardware beim Mega (Rev.3) (immer Output)
#define LED_OB 13 // LED
//-----------------------------------------------------------------
void Konsole_Eingabe()
{
if(Serial.available())
{
char inByte = Serial.read();
//Serial.print("\n\rEingabe= "); Serial.print(inByte);
if(inByte == 'A')
{
Serial.print("\n\rESP Cmd: ");
Serial3.write("AT\r\n");
}
if(inByte == 'R')
{
Serial.print("ESP Cmd: ");
Serial3.write("AT+RST\r\n");
UART_Flashen = false;
}
if(inByte == 'F')
{
Serial.println("\n\r\n\rSetze UART Baudrate flashen!");
UART_Flashen = true;
}
if(inByte == '#')
{
Serial.print("\n\rESP Cmd: ");
Serial3.write("AT+RESTORE\r\n");
delay(100);
Serial.println("\n\rESP-Restore zu Baud 115200");
Serial3.begin(115200);
Check_Baudrate(baud115200,1);
Auf_OK_warten();
if(Baud_istOK) Serial.println("Baudrate wurde erkannt");
delay(100);
Serial.println("\n\rESP Cmd - AT");
Serial3.write("AT\r\n");
}
if(inByte == 'V')
{
Serial.print("\n\rESP Cmd: ");
Serial3.write("AT+GMR\r\n");
}
if(inByte == 'P')
{
Serial.print("\n\rESP Cmd: ");
Serial3.write("AT+CWLAP\r\n");
}
if(inByte == '?')
{
asm volatile (" jmp 0");
}
if(inByte == '1')
{
Serial.print("\n\rESP Cmd: setze UART 115200");
if(!UART_Flashen)
{
Serial3.write("AT+UART_CUR=115200,8,1,0,0\r\n");
Serial.println("... eingestellt");
}
if(UART_Flashen)
{
Serial3.write("AT+UART_DEF=115200,8,1,0,0\r\n");
Serial.println("... geflasht");
UART_Flashen = false;
}
delay(100);
Serial3.begin(115200);
}
if(inByte == '2')
{
Serial.println("\n\rESP Cmd: setze UART 38400");
if(!UART_Flashen)
{
Serial3.write("AT+UART_CUR=38400,8,1,0,0\r\n");
Serial.println("... eingestellt");
}
if(UART_Flashen)
{
Serial3.write("AT+UART_DEF=38400,8,1,0,0\r\n");
Serial.println("... geflasht");
UART_Flashen = false;
}
delay(100);
Serial3.begin(38400);
}
if(inByte == '3')
{
Serial.println("\n\rESP Cmd: UART 19200");
if(!UART_Flashen)
{
Serial3.write("AT+UART_CUR=19200,8,1,0,0\r\n");
Serial.println("... eingestellt");
}
if(UART_Flashen)
{
Serial3.write("AT+UART_DEF=19200,8,1,0,0\r\n");
Serial.println("... geflasht");
UART_Flashen = false;
}
delay(100);
Serial3.begin(19200);
}
if(inByte == '4')
{
Serial.println("\n\rESP8266 Cmd: UART 9600");
if(!UART_Flashen)
{
Serial3.write("AT+UART_CUR=9600,8,1,0,0\r\n");
Serial.println("... eingestellt");
}
if(UART_Flashen)
{
Serial3.write("AT+UART_DEF=9600,8,1,0,0\r\n");
Serial.println("... geflasht");
UART_Flashen = false;
}
delay(100);
Serial3.begin(9600);
}
if(inByte == 'a')
{
Serial.println("\n\rSetze Baudrate = 9600");
Serial3.begin(9600);
}
if(inByte == 'b')
{
Serial.println("\n\rSetze Baudrate = 19200");
Serial3.begin(19200);
}
if(inByte == 'c')
{
Serial.println("\n\rSetze Baudrate = 38400");
Serial3.begin(38400);
}
if(inByte == 'd')
{
Serial.println("\n\rSetze Baudrate = 115200");
Serial3.begin(115200);
}
inByte = 'x';
}
}
//---------------------------------------------------------------
void Check_Baudrate(unsigned long baudr, int wait)
{
Serial.print("Check Baudrate: "); Serial.print(baudr); Serial.print(" ... ");
Serial3.begin(baudr);
Serial3.write("AT\r\n");
delay(wait);
}
void Auf_OK_warten()
{
boolean Ook = false;
boolean Kok = false;
unsigned long Counter = 0;
while(!Kok)
{
if (Serial3.available()) espbyte = Serial3.read();
//Serial.write(espbyte);
if (espbyte == 79) Ook = true;
if (espbyte == 75) Kok = true;
Counter++;
if (Counter > 200000){Serial.print("Timeout\n\r"); break;}
}
if (Ook && Kok) Baud_istOK = true;
}
//-----------------------------------------------------------------
void setup()
{
Serial.begin(19200);
pinMode(MG_HW_PIN, OUTPUT); //Hardware Pin53 Output
pinMode(LED_OB, OUTPUT); //onBoard LED
digitalWrite(LED_OB, LOW);
Serial.println("----------------------------------------------------------");
Serial.println("Baudrate-Aenderungen ESP8266");
Serial.println("MEGA-Board + ESP8266 an HW-UART#3\n\r");
Serial.println("Konsolen-Eingabe fuer AT-CMDs:");
Serial.println("A = AT, F = UART Flashen, R = AT+RST (flashen aus), # = RESTORE, V = AT+GMR, P = AT+CWLAP");
Serial.println("? = Prog. Neustart");
Serial.println("1 = ESP Baudrate 115200 einstellen -> davor F fuer flashen");
Serial.println("2 = ESP Baudrate 38400 einstellen -> davor F fuer flashen");
Serial.println("3 = ESP Baudrate 19200 einstellen -> davor F fuer flashen");
Serial.println("4 = ESP Baudrate 9600 einstellen -> davor F fuer flashen\n\r");
Serial.println("Setze SW+HW Baudrate: a=9600, b=19200, c=38400, d=115000");
Serial.println("----------------------------------------------------------");
Serial.println("Baudrate-Test mit AT-Cmd: AT ...");
if(!Baud_istOK)
{
Check_Baudrate(baud115200,10);
Auf_OK_warten();
if(Baud_istOK) Serial.println("Baudrate wurde erkannt");
}
if(!Baud_istOK)
{
Check_Baudrate(baud38400,10);
Auf_OK_warten();
if(Baud_istOK) Serial.println("Baudrate wurde erkannt");
}
if(!Baud_istOK)
{
Check_Baudrate(baud19200,10);
Auf_OK_warten();
if(Baud_istOK) Serial.println("Baudrate wurde erkannt");
}
if(!Baud_istOK)
{
Check_Baudrate(baud9600,10);
Auf_OK_warten();
if(Baud_istOK) Serial.println("Baudrate wurde erkannt");
}
}
//----------------------------------------------------------------
void loop()
{
Konsole_Eingabe();
if (Serial3.available()) Serial.write(Serial3.read());
//if (Serial.available()) Serial.write(Serial.read());
}