I've been using Sparkfun's ESP32 Thing few a couple of weeks with the arduino IDE set up per Sparkfun's Hookup Guide. I am now trialing WiFi and found some poor interaction between it and the Serial Port/Serial Monitor. The following code I evolved from the Hookup Guide "Arduino Example: WiFi" works fine as long as the Serial Monitor is not connected. With the correctPassword there are a few slow flashes, followed by fast flashing indicating its connected to the access point and the hotspot shows "espressif" connected. With an incorrectPassword, it slow blinks forever - until I go Tools > Serial Monitor at which the blinking stops (with the occasional exception confounding things). Pushing the Thing's reset button does nothing until the Monitor is closed.
Code: Select all
#include "WiFi.h"
#include "esp_log.h"
const char * networkName = "BTC";
const char * networkPswd = "correctPassword";
const int LED_PIN = 5;
int ledState = 0;
void setup()
{
//Serial.begin(115200);
//Serial.print("ESP32 SDK: ");
//Serial.println(ESP.getSdkVersion());
//esp_log_level_set("*", ESP_LOG_VERBOSE);
pinMode(LED_PIN, OUTPUT);
connectToWiFi(networkName, networkPswd);
}
void connectToWiFi(const char * ssid, const char * pwd)
{
WiFi.begin(ssid, pwd);
while (WiFi.status() != WL_CONNECTED)
{ // SLOW flash while connecting.
digitalWrite(LED_PIN, ledState);
ledState = (ledState + 1) % 2; // Flip ledState
delay(1000);
//Serial.print("!");
}
}
void loop() // FAST flash once connected.
{ // FAST flash when connected.
digitalWrite(LED_PIN, ledState);
ledState = (ledState + 1) % 2; // Flip ledState
delay(100);
}
Uncommenting the four Serial lines and the esp_log_level_set is not detrimental. The slow blinking continues to work properly while the Monitor is closed, and again stops immediately the Monitor is connected, which then shows...
ets Jun 8 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
ets Jun 8 2016 00:22:57
rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0x00
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0008,len:8
load:0x3fff0010,len:160
load:0x40078000,len:10632
load:0x40080000,len:252
entry 0x40080034
ESP32 SDK: v2.0-rc1-803-g1e0710f1
I (222) wifi: wifi firmware version: 6c86a1c
I (223) wifi: config NVS flash: enabled
I (223) wifi: config nano formating: disabled
I (232) wifi: Init dynamic tx buffer num: 32
I (232) wifi: Init dynamic rx buffer num: 64
I (233) wifi: wifi driver task: 3ffcf538, prio:23, stack:4096
I (235) wifi: Init static rx buffer num: 10
I (239) wifi: Init dynamic rx buffer num: 0
I (242) wifi: Init rx ampdu len mblock:7
I (246) wifi: Init lldesc rx ampdu entry mblock:4
I (251) wifi: wifi power manager task: 0x3ffd4900 prio: 21 stack: 2560
I (258) wifi: wifi timer task: 3ffd5980, prio:22, stack:3584
I (287) wifi⸮⸮
Its always the same output up to "wifi timer task" and thereafter varies a lot including unprintable characters that don't copy, so I've attached a few snapshots for reference.. Upping the serial monitor to 250,000 baud, seems to often allow more information to be logged (but not always, maybe 2 in 3) ...
I (242) wifi: wifi timer task: 3ffd5978, prio:22, stack:3584
I (266) wifi: mode : sta (24:0a:c4:05:b1:40)
I (388) wifi: n:6 0, o:1 0, ap:255 255, sta:6 0, prof:1
I (1045) wifi: state: init -> auth (b0)
I (1049) wifi: state: auth -> assoc (0)
I (1101) wifi: state: assoc -> run (10)
!!!!!!!!!!!!Gr eiainErr oe0pnce Itrutwttmoto P0)
Rgse up
C :04012 P x0003 A x811 A x31
2 :00000 A x0005 A x0000 A x30c7
6 :00007 A x0000 A x0000 9 x0005
A0 x0002 A1 x0002 A2 xffffffff A x30d8
1 :00000 A5 0ff000 SR x0000 ECAS x0000
XVDR:00000 LE x40d LN x4010 LON xffffff
akrc: x08a2:xffcf00 x11bc0032 x08f9035 x0f2fc:3ffcf3 x0f30:xffcf40 x0f3:0xffcf4 x0fd94030 x0ff16x35
CUhle.
And about 1 in 5 times (at 250,000) it worked perfectly (i.e. properly slow blinking)...
I (268) wifi: mode : sta (24:0a:c4:05:b1:40)
I (390) wifi: n:6 0, o:1 0, ap:255 255, sta:6 0, prof:1
I (1047) wifi: state: init -> auth (b0)
I (1050) wifi: state: auth -> assoc (0)
I (1102) wifi: state: assoc -> run (10)
!!!!!!!!!!!!I (5075) wifi: state: run -> auth (3a0)
I (5075) wifi: n:6 0, o:6 0, ap:255 255, sta:6 0, prof:1
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
and...
I (245) wifi: wifi timer task: 3ffd5978, prio:22, stack:3584
I (270) wifi: mode : sta (24:0a:c4:05:b1:40)
I (391) wifi: n:6 0, o:1 0, ap:255 255, sta:6 0, prof:1
I (1048) wifi: state: init -> auth (b0)
I (1053) wifi: state: auth -> assoc (0)
I (1106) wifi: state: assoc -> run (10)
!!!!I (5075) wifi: state: run -> auth (3a0)
I (5075) wifi: n:6 0, o:6 0, ap:255 255, sta:6 0, prof:1
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
I'm on Windows 10 using Arduino IDE 1.8.3.
I have a charged 500mAh LiPo battery connected to the Thing to hopefully guard against high WiFi current draw issues I read about.