I have recently purchased a Mega 2560 board (a clone I'm afraid) and I am trying to connect it to my router. I was trying to setup as shown in this article from the Code Project site: (A Tour of the Arduino Mega 2560+WiFi R3 - CodeProject).
It compiled and uploaded OK using the following code:
/*
WiFiEsp test: BasicTest
Performs basic connectivity test and checks.
*/
#include "WiFiEsp.h"
// Emulate Serial1 on pins 7/6 if not present
//#ifndef HAVE_HWSERIAL1
//#include "SoftwareSerial.h"
//SoftwareSerial Serial1(6, 7); // RX, TX
//#endif
char ssid[] = "******"; // your network SSID (name)
char pwd[] = "******"; // your network password
char pwdErr[] = "xxxx"; // wrong password
void setup()
{
Serial.begin(115200);
Serial3.begin(115200);
WiFi.init(&Serial3);
}
void loop()
{
assertEquals("Firmware version", WiFi.firmwareVersion(), "1.5.2");
assertEquals("Status is (WL_DISCONNECTED)", WiFi.status(), WL_DISCONNECTED);
assertEquals("Connect", WiFi.begin(ssid, pwd), WL_CONNECTED);
assertEquals("Check status (WL_CONNECTED)", WiFi.status(), WL_CONNECTED);
assertEquals("Check SSID", WiFi.SSID(), ssid);
IPAddress ip = WiFi.localIP();
assertNotEquals("Check IP Address", ip[0], 0);
Serial.print("IP Address: ");
Serial.println(ip);
byte mac[6]={0,0,0,0,0,0};
WiFi.macAddress(mac);
Serial.print("MAC: ");
Serial.print(mac[5], HEX);
Serial.print(":");
Serial.print(mac[4], HEX);
Serial.print(":");
Serial.print(mac[3], HEX);
Serial.print(":");
Serial.print(mac[2], HEX);
Serial.print(":");
Serial.print(mac[1], HEX);
Serial.print(":");
Serial.println(mac[0], HEX);
Serial.println();
assertEquals("Disconnect", WiFi.disconnect(), WL_DISCONNECTED);
assertEquals("Check status (WL_DISCONNECTED)", WiFi.status(), WL_DISCONNECTED);
assertEquals("IP Address", WiFi.localIP(), 0);
assertEquals("Check SSID", WiFi.SSID(), "");
assertEquals("Wrong pwd", WiFi.begin(ssid, pwdErr), WL_CONNECT_FAILED);
IPAddress localIp(192, 168, 168, 111);
WiFi.config(localIp);
assertEquals("Connect", WiFi.begin(ssid, pwd), WL_CONNECTED);
assertEquals("Check status (WL_CONNECTED)", WiFi.status(), WL_CONNECTED);
ip = WiFi.localIP();
assertNotEquals("Check IP Address", ip[0], 0);
Serial.println("END OF TESTS");
delay(60000);
}
////////////////////////////////////////////////////////////////////////////////////
void assertNotEquals(const char* test, int actual, int expected)
{
if(actual!=expected)
pass(test);
else
fail(test, actual, expected);
}
void assertEquals(const char* test, int actual, int expected)
{
if(actual==expected)
pass(test);
else
fail(test, actual, expected);
}
void assertEquals(const char* test, char* actual, char* expected)
{
if(strcmp(actual, expected) == 0)
pass(test);
else
fail(test, actual, expected);
}
void pass(const char* test)
{
Serial.print(F("********************************************** "));
Serial.print(test);
Serial.println(" > PASSED");
Serial.println();
}
void fail(const char* test, char* actual, char* expected)
{
Serial.print(F("********************************************** "));
Serial.print(test);
Serial.print(" > FAILED");
Serial.print(" (actual=\"");
Serial.print(actual);
Serial.print("\", expected=\"");
Serial.print(expected);
Serial.println("\")");
Serial.println();
delay(10000);
}
void fail(const char* test, int actual, int expected)
{
Serial.print(F("********************************************** "));
Serial.print(test);
Serial.print(" > FAILED");
Serial.print(" (actual=");
Serial.print(actual);
Serial.print(", expected=");
Serial.print(expected);
Serial.println(")");
Serial.println();
delay(10000);
}
I have altered the code which was based on the WiFiEsp example (Test, Basic Test).
When I upload and connect to the Serial Monitor I get loads of TIMEOUT messages and Failures.
Here is the output from the serial monitor:
[WiFiEsp] Initializing ESP module
[WiFiEsp] >>> TIMEOUT >>>
[WiFiEsp] >>> TIMEOUT >>>
[WiFiEsp] >>> TIMEOUT >>>
[WiFiEsp] >>> TIMEOUT >>>
[WiFiEsp] >>> TIMEOUT >>>
[WiFiEsp] Cannot initialize ESP module
[WiFiEsp] >>> TIMEOUT >>>
[WiFiEsp] No tag found
********************************************** Firmware version > FAILED (actual="", expected="1.5.2")[WiFiEsp] >>> TIMEOUT >>>
[WiFiEsp] No tag found
********************************************** Status is (WL_DISCONNECTED) > FAILED (actual=255, expected=3)[WiFiEsp] >>> TIMEOUT >>>
[WiFiEsp] Failed connecting to BT-HSA6MR
********************************************** Connect > FAILED (actual=2, expected=1)[WiFiEsp] >>> TIMEOUT >>>
[WiFiEsp] No tag found
********************************************** Check status (WL_CONNECTED) > FAILED (actual=255, expected=1)[WiFiEsp] >>> TIMEOUT >>>
[WiFiEsp] No tag found
********************************************** Check SSID > FAILED (actual="", expected="BT-HSA6MR")[WiFiEsp] >>> TIMEOUT >>>
[WiFiEsp] No tag found
********************************************** Check IP Address > FAILED (actual=0, expected=0)IP Address: 0.0.0.0
[WiFiEsp] >>> TIMEOUT >>>
[WiFiEsp] No tag found
MAC: 0:0:0:0:0:0[WiFiEsp] >>> TIMEOUT >>>
********************************************** Disconnect > PASSED[WiFiEsp] >>> TIMEOUT >>>
[WiFiEsp] No tag found
********************************************** Check status (WL_DISCONNECTED) > FAILED (actual=255, expected=3)[WiFiEsp] >>> TIMEOUT >>>
[WiFiEsp] No tag found
********************************************** IP Address > PASSED[WiFiEsp] >>> TIMEOUT >>>
[WiFiEsp] No tag found
********************************************** Check SSID > PASSED[WiFiEsp] >>> TIMEOUT >>>
[WiFiEsp] Failed connecting to BT-HSA6MR
********************************************** Wrong pwd > PASSED[WiFiEsp] >>> TIMEOUT >>>
[WiFiEsp] >>> TIMEOUT >>>
[WiFiEsp] >>> TIMEOUT >>>
[WiFiEsp] Failed connecting to BT-HSA6MR
********************************************** Connect > FAILED (actual=2, expected=1)[WiFiEsp] >>> TIMEOUT >>>
[WiFiEsp] No tag found
********************************************** Check status (WL_CONNECTED) > FAILED (actual=255, expected=1)
This board seems very complex to setup and there are many various articles on the web but some give conflicting information.
One thing I am not sure of is - Do I need to upload new firmware? Some articles talk about 8U2 & 16U2, which I gather is some thing to do with the USB interface. How to I find out which one is on my board? As with most clone boards there is a distinct lack of data sent with the board.
Can anyone help me sort out this problem?