Setting up Mega 2560 + WiFi

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?

complex? not at all. you have 3 chips: ATmega, esp8266 and CH340 connected over RX/TX. DIP switches determine which two are connected. the CH340 USB chip is a gateway to computer. and you can select if Serial or Serial3 of ATmega is connected to Serial of esp8266. so a normal setup is CH340 to ATmega on Serial and esp8266 on Serial 3 of Atmega.
if you want flash the esp8266 you connect it to CH340 and disconnect the ATmega from both. don't switch the switches too many times. they fall apart.

Do you have AT firmware in the esp8266 to use the WiFiEsp library?

If you flash AT 1.7 or higher to esp8266 you can use my WiFiEspAT library which works at higher baudrates.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.