Comments: ESP8266 WiFi Shield Hookup Guide
Looking for answers to technical questions?
We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.
If you've found an issue with this tutorial content, please send us your feedback!
Hi, I need instructions on how to reflash the WIFI Shield with AT firmware.
I tried to follow the sequences referred to in comments below using both the NODEMCU flasher and the ESPRESSIVE flasher and files. While I did get successful completions and AP and STA MACs displayed, my shield is not working when plugged onto an Arduino UNO. I either get the Looping error when trying the SHIELD DEMO or I get no responses when trying the SERIAL PASSTHRU examples.
Shield shows only the RED light on, no BLUE light activity at all.
Thanks for any help. Turgut
I ordered an ESP8266 wifi shield. I followed the instructions, how to install the board with the Board Manager of the Arduino IDE. https://learn.sparkfun.com/tutorials/esp8266-wifi-shield-hookup-guide
I'm using Arduino IDE 1.6.7 a fresh new install. It seems that your git repo is not compatible with this version. After selecting the ESP8266 Thing board I got error messages that there is an incompatible libraray, which is tha phant-arduino library. (It is the version 1.6.4)
I do not have this error if I select the Sparkfun ESP8266 Thing board from the ESP8266 community boards.
Could you please confirm and suggest a solution?
---------- Tech Support Tips/Troubleshooting/Common Issues ----------
If there are no visible shorts on the board, it could be the way that the shield's header pins are connected to the Arduino. Try to not jam the whole board into the Arduino and connecting the board level with the microcontroller. You might see this error in the serial monitor when running the ESP8266_Shield_Demo.ino sketch example code:
During a few instances, the board would work again when I pulled the known good ESP8266 shield off the Arduino and restacked it so that the shield is level. The blue STAT LED should begin blinking if it is trying to connect to the WiFi router.
Connecting with an Arduino Mega
You can also see this error if you are using the example code with the Arduino Mega. Unfortunately, the Arduino Mega has limitations on certain pins and the Rx on pin 9 of the Mega will not work with software serial. If you are using software serial [ https://www.arduino.cc/en/Reference/SoftwareSerial ] , you need to reroute the pins and redefine the software serial pins [right here => https://github.com/sparkfun/SparkFun_ESP8266_AT_Arduino_Library/blob/44bcb9294f2e51342983402ebb3a2b0065472555/src/SparkFunESP8266WiFi.h#L33 ]. The reason why is because not all the pins on the Arduino Mega 2560 can support change interrupts so only certain pins can be used for the Rx pin. Due to this limitation, you are not connecting properly to the ESP8266 Shield and therefore seeing this output error in the Arduino serial monitor.
Try looking at these two comments for alternatives and for an idea of how to reroute the software serial pins on your Arduino Mega => https://learn.sparkfun.com/tutorials/arduino-shields/discuss .
Using a Arduino UNO R3 Board Module With DIP ATmega328P(Blue), I get the same "Error talking to ESP8266" -- can't talk to the ESP8266 shield. When I try the serial pass thru example, I get garbage text followed by "READY!". I've tried several speed settings.
"....could be the way that the shield’s header pins are connected to the Arduino. Try to not jam the whole board into the Arduino...." worked for me.
sorry to ask i am not quite clear with the line "try not jam the whole board", what does it mean anyways?
thank you
Worked for me as well. How bizarre.
Looks like you might have resolved the issue. I do remember some instances where reinserting the ESP8266 on the Arduino helps to resolve this problem. It's possible that the range is lowered depending on how it is mounted to the shield as stated in the hookup guide [ https://learn.sparkfun.com/tutorials/esp8266-wifi-shield-hookup-guide/hardware-assembly ]. This might explain why the output is garbage text with followed by "READY!" You also might see that the connection has failed when using the ESP8266 Arduino library. Another customer was able to get their ESP8266 working by connecting an external antenna to the u.FL connector.
Please contact techsupport@sparkfun.com with your order number and a description of your issue so we can troubleshoot this further if you continue to have problems. Tech support does not usually troubleshoot the comments section.
What is the root cause of this Error talking to esp8266?
thank you
I've attempted to reflash with the two files mentioned at the addresses but the shield is not responding to commands and after a short period the wifi chip gets extremely hot! However it works fine with the standard AT firmware from ESP but only useable from programing interface. Any more detail on the actual shipped firmware or the possibility of a firmware dump from a working unit?
Please contact techsupport@sparkfun.com with your order number and a description of your issue so we can troubleshoot this further.
So I'm having an issue getting the libraries to allow me to upload. My C++ skills aren't good enough to sort out the issue on my own, so I figure I should post here.
I've used the 'add .ZIP library' option to import the library as well as unzipping to the "C:\User\me\docs\Arduino\libraries" folder and both give me the same results:
In file included from C:\Users\Nick Fischer\Desktop\Arduino practice\ESP8266_Shield_Demo_edit\ESP8266_Shield_Demo_edit.ino:29: C:\Users\Nick Fischer\Documents\Arduino\libraries\SparkFun_ESP8266_AT_Arduino_Library-master\src/SparkFunESP8266WiFi.h:218:21: error: 'ESP8266Class esp8266' redeclared as different kind of entity 218 | extern ESP8266Class esp8266; | ^~~~~~~ In file included from C:\Users\Nick Fischer\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266/Arduino.h:42, from C:\Users\Nick Fischer\AppData\Local\Temp\arduino-sketch-77539968AB18891986747EC434ABFCB4\sketch\ESP8266_Shield_Demo_edit.ino.cpp:1: C:\Users\Nick Fischer\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266/core_esp8266_version.h:121:11: note: previous declaration 'namespace esp8266 { }' 121 | namespace esp8266 { | ^~~~~~~ C:\Users\Nick Fischer\Desktop\Arduino practice\ESP8266_Shield_Demo_edit\ESP8266_Shield_Demo_edit.ino: In function 'void initializeESP8266()': C:\Users\Nick Fischer\Desktop\Arduino practice\ESP8266_Shield_Demo_edit\ESP8266_Shield_Demo_edit.ino:101:21: error: expected primary-expression before '.' token 101 | int test = esp8266.begin(); | ^ C:\Users\Nick Fischer\Desktop\Arduino practice\ESP8266_Shield_Demo_edit\ESP8266_Shield_Demo_edit.ino: In function 'void connectESP8266()': C:\Users\Nick Fischer\Desktop\Arduino practice\ESP8266_Shield_Demo_edit\ESP8266_Shield_Demo_edit.ino:117:23: error: expected primary-expression before '.' token 117 | int retVal = esp8266.getMode(); | ^ C:\Users\Nick Fischer\Desktop\Arduino practice\ESP8266_Shield_Demo_edit\ESP8266_Shield_Demo_edit.ino:122:21: error: expected primary-expression before '.' token 122 | retVal = esp8266.setMode(ESP8266_MODE_STA); | ^ C:\Users\Nick Fischer\Desktop\Arduino practice\ESP8266_Shield_Demo_edit\ESP8266_Shield_Demo_edit.ino:136:19: error: expected primary-expression before '.' token 136 | retVal = esp8266.status(); | ^ C:\Users\Nick Fischer\Desktop\Arduino practice\ESP8266_Shield_Demo_edit\ESP8266_Shield_Demo_edit.ino:147:21: error: expected primary-expression before '.' token 147 | retVal = esp8266.connect(mySSID, myPSK); | ^ C:\Users\Nick Fischer\Desktop\Arduino practice\ESP8266_Shield_Demo_edit\ESP8266_Shield_Demo_edit.ino: In function 'void displayConnectInfo()': C:\Users\Nick Fischer\Desktop\Arduino practice\ESP8266_Shield_Demo_edit\ESP8266_Shield_Demo_edit.ino:163:23: error: expected primary-expression before '.' token 163 | int retVal = esp8266.getAP(connectedSSID); | ^ C:\Users\Nick Fischer\Desktop\Arduino practice\ESP8266_Shield_Demo_edit\ESP8266_Shield_Demo_edit.ino:172:27: error: expected primary-expression before '.' token 172 | IPAddress myIP = esp8266.localIP(); | ^ C:\Users\Nick Fischer\Desktop\Arduino practice\ESP8266_Shield_Demo_edit\ESP8266_Shield_Demo_edit.ino: In function 'void serverSetup()': C:\Users\Nick Fischer\Desktop\Arduino practice\ESP8266_Shield_Demo_edit\ESP8266_Shield_Demo_edit.ino:216:25: error: expected primary-expression before '.' token 216 | Serial.println(esp8266.localIP()); | ^
exit status 1
Compilation error: expected primary-expression before '.' token
Are there any issues we should be aware of when using this board with a 3.3V Arduino (like the 101, Zero, or Due)?
What are possible conditions for esp8266.begin() to return 0, i.e. not connect? I'm having very inconsistent results on both the Arduino Uno, and the compatible Mega 2560, with both my own code and the official example demo. Sometimes I can get it to connect by shifting the shield around, but it is very unreliable. I've tried: level and all the way in, level and high up, tilted forward as in the tutorial. I've had success and failure in each of these positions. My power supply is a 9V battery. I'm using SW serial. The red LED is on, the blue LED is flashing. Is this a physical problem with my pins?
The shield automatically connects to my WiFi network on its own, however I still get the errors on: making the serial connection to the shield, settings its mode, and connecting to wifi (I'm commenting out the "error, loop forever" parts to allow it to advance to next steps). So the shield seems to work in terms of connecting to wifi, but is sending different info over serial to the monitor. Is the likely suspect the SW pin itself? Am I just getting incorrect info?
client.connect() seems not to work for shared hosting IPs. Even your example of connecting to sparkfun.com currently returns the HTML for a 301 redirect page. Are there any settings that can be added to find the actual website at the provided URL?
I am trying to connect to my home wifi. Its open w/ no password( Ive tried an empty string and a space in the password string.) When I run the demo here is what I get:
Press any key to begin.
ESP8266 Shield Present Mode set to station Connecting to Helds Error connecting Error: -3
Given the warning about loading a sketch to the shield with the UART select switch set to HW instead of SW, it seems strange that the device is shipped with the switch set to HW. If someone (as I did) tries the board with the switch set to HW, it likely has to be reprogrammed which, while doable, is not a simple task, and requires additional hardware. If it were set to SW when shipped, only those who want to upload code to the shield will need to change it.
With those switches we never have a default setting, while they are good at staying put they are too easily bumped when in a bin or shipping to count on that switch being in the same location when you get it.
Why couldn't you put a piece of tape over it (or next to the little nub, anyways, to make it more difficult to slip into the HW position)?
A yellow warning sticker with a bold legend reading
ENSURE SWITCH IN 'SW' POSITION WHEN PROGRAMMING ARDUINO
would serve the dual purpose of helping to keep the switch from getting nudged, and in the event it does get nudged, would provide a physical reminder for users to check the switch before programming. If the sticker were long enough to go from next to the ESP chip, over the switch body, and wrap a bit around the edge to the back side, it would not easily get dislodged during shipping and the big yellow rectangle would provide ample visual cue.
Alternatively, a tiny dab of hot glue would help hold it, yet could easily be peeled away from the switch if the user wants to put it in HW mode.
Hi All, I am having a problem with the communication of my shield with a FTP server. I bought a WiFi Shield to work with a FTP server and it is working fine with the Arduino MEGA 2560 using the SW emulated serial port at the ports 52 and 53. I Tried to use the HW port of the shield and for that, I conected the TX and RX pins to the Serial2 port of the board, switched the control to HW and modified the library so it recognize my Serial port as the Serial 2. It worked really well connecting to my router, retrieving the IP address and AP name but, when I try to connect the board as a FTP client, I can´t get it to work properly. My FTP server receives the requests but my Arduino board doesn´t receive the FTP response. Do anyone know what can be happening? Thanks.