Connection between Due and ESP8266, refer to last post "Connect ESP8266 (WiFi module) to Arduino Due".
Due8266.ino
/*
Arduino Due - ESP 8266 WiFi Module
Serial (Tx/Rx) communicate to PC via USB
Serial3 (Tx3/Rx3) connect to ESP8266
Tx3 - ESP8266 Rx
Rx3 - ESP8266 Tx
pin 53 - ESP8266 CH_PD (Always High)
*/
#define ESP8266 Serial3
String SSID = "TestAP";
String PASSWORD = "12345678";
int LED = 13;
//always high
int CH_PD_8266 = 53;
boolean FAIL_8266 = false;
void setup() {
pinMode(LED, OUTPUT);
pinMode(CH_PD_8266, OUTPUT);
digitalWrite(CH_PD_8266, LOW);
digitalWrite(LED, LOW);
delay(500);
digitalWrite(LED, HIGH);
delay(500);
digitalWrite(LED, LOW);
delay(500);
digitalWrite(LED, HIGH);
delay(500);
digitalWrite(LED, LOW);
delay(500);
digitalWrite(LED, HIGH);
delay(500);
digitalWrite(LED, LOW);
digitalWrite(CH_PD_8266, HIGH);
delay(1000);
do{
Serial.begin(9600);
ESP8266.begin(9600);
//Wait Serial Monitor to start
while(!Serial);
Serial.println("--- Start ---");
ESP8266.println("AT+RST");
delay(1000);
if(ESP8266.find("ready"))
{
Serial.println("Module is ready");
ESP8266.println("AT+CWMODE=1");
delay(2000);
//Quit existing AP, for demo
Serial.println("Quit AP");
ESP8266.println("AT+CWQAP");
delay(1000);
clearESP8266SerialBuffer();
if(cwJoinAP())
{
Serial.println("CWJAP Success");
FAIL_8266 = false;
delay(3000);
cwGetIP();
}else{
Serial.println("CWJAP Fail");
delay(500);
FAIL_8266 = true;
}
}else{
Serial.println("Module have no response.");
delay(500);
FAIL_8266 = true;
}
}while(FAIL_8266);
digitalWrite(LED, HIGH);
}
void loop() {
}
boolean waitOKfromESP8266(int timeout)
{
do{
Serial.println("wait OK...");
delay(1000);
if(ESP8266.find("OK"))
{
return true;
}
}while((timeout--)>0);
return false;
}
boolean cwJoinAP()
{
String cmd="AT+CWJAP=\"" + SSID + "\",\"" + PASSWORD + "\"";
ESP8266.println(cmd);
return waitOKfromESP8266(10);
}
//show IP address on Serial Monitor
void cwGetIP()
{
clearESP8266SerialBuffer();
ESP8266.println("AT+CIFSR");
delay(1000);
while (ESP8266.available() > 0) {
char a = ESP8266.read();
Serial.write(a);
}
}
void clearESP8266SerialBuffer()
{
Serial.println("= clearESP8266SerialBuffer() =");
while (ESP8266.available() > 0) {
char a = ESP8266.read();
Serial.write(a);
}
Serial.println("==============================");
}
Hi,
ReplyDeleteIm using arduino mega. I try this code, but I take error..
"--- Start ---
Module have no response. "
Thank you for interesting..
ESP8266.begin(115200);
DeleteESP8266.println("AT+RST");
Deletedelay(1000);
if(ESP8266.find("OK"))//instead of ready in if condition you need to make it "OK"...and BOOM code is working....***lsololobo***
***This is working for arduino mega***
Deletereplace --> if(ESP8266.find("ready")) to if(ESP8266.find("OK")) and make baud rate as Serial.begin(115200); ESP8266.begin(115200);
**lsololobo**
ESP8266.begin(115200);
ReplyDeletethanks for great info! But same here:
ReplyDelete"--- Start ---
Module have no response. "
change the baud.
It appears on my phone but I can't connect. It tries to connect, but then nothing.. Any Ideas?
Thanks /Rasmus
In my case to get it working I had to change the Serial3 (Tx3/Rx3) baud rate from 9600 to 115200 because of my original ESP8266 firmware. As follow:
ReplyDeletedo{
Serial.begin(9600); // Serial (Tx/Rx) communicate to PC via USB (serial monitor)
ESP8266.begin(115200); // Serial3 (Tx3/Rx3) connect to ESP8266