Description
Basic Infos
Hardware
Hardware: Arduino UNO WiFi's esp8266 (see below)
Core Version: master branch as of today.
Description of the board
The Arduino UNO WiFi is an Arduino UNO with an ESP module integrated on the board. (That is, ESP8266, SPI flash memory, everything).
Custom firmware flashing is allowed by an SPI to UART converter connected to UART0.
Description of the issue
Everything works, except for the WiFi. I'm trying to make an access point but I can't detect the network, I try to connect to the modem, protected or unprotected. Nothing works.
I've checked that WiFi.softAP() always returns a true, and I've also tried fiddling with setPhyMode(), setOutputPower(), and the channel. Nothing works.
I've also checked that the esp8266 doesn't enter some sleep state. Every other function seems operative: (mainly Serial and GPIOs) and the esp8266 is heated, as in normal function.
The firmware provided by Arduino works fine. It sets the AP properly and can connect as an station, so I don't think that it is a hardware malfunction issue.
Settings in IDE
(I'm not actually using an IDE, but these are the settings that ended up working)
Module: Generic ESP8266 Module
Flash Size: 4MB (with either 3M or 1M)
CPU Frequency: 80Mhz
Flash Mode: qio
Flash Frequency: 40Mhz (weird, because original firmware uses 80Mhz)
Upload Using: SERIAL
Reset Method: either ck and nodemcu works
Sketch
This modified WifiAccessPoint.ino can recreate the issue. I use the LED to debug because there is no good way to synchronize the ESP8266 serial signal with the serial monitor. It's too buried. If softAP returns true, the LED blinks slower.
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
/* Set these to your desired credentials. */
const char *ssid = "ESPnetwork";
const char *password = "thereisnospoon";
ESP8266WebServer server(80);
int timeBlink = 1000;
bool itsOK = false;
/* Just a little test message. Go to http://192.168.4.1 in a web browser
* connected to this access point to see it.
*/
void handleRoot() {
server.send(200, "text/html", "<h1>You are connected</h1>");
}
void setup() {
delay(1000);
Serial.begin(115200);
Serial.println();
Serial.print("Configuring access point...");
pinMode(14,OUTPUT);
digitalWrite(14,LOW);
/* You can remove the password parameter if you want the AP to be open. */
WiFi.setOutputPower(0);
IPAddress Ip(192, 168, 240, 1);
IPAddress NMask(255, 255, 255, 0);
WiFi.softAPConfig(Ip, Ip, NMask);
itsOK = WiFi.softAP(ssid, password);
timeBlink = itsOK ? 1000 : 500;
IPAddress myIP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(myIP);
server.on("/", handleRoot);
server.begin();
Serial.println("HTTP server started");
}
void loop()
{
digitalWrite(14,HIGH);
delay(timeBlink);
digitalWrite(14,LOW);
delay(timeBlink);
}
Debug Messages
I can't synchronize the serial communication, so I have no debug messages. I only receive gibberish.
The ATMEGA can receive serial messages properly though.
I'm working on it right now.