2

I am new to the whole arduino scene. I have connected my wifi module (esp8266 v01) to my arduino Uno like this:

http://www.teomaragakis.com/hardware/electronics/how-to-connect-an-esp8266-to-an-arduino-uno/

And have downloaded the arduino ide framework so that I may be able to use the arduino IDE as opposed to sending AT commands through the serial monitor.

When trying to upload an example sketch that sends a http request that I found on github, I get the following error:

    Arduino: 1.8.4 (Windows 8.1), Board: "Generic ESP8266 Module, 80 MHz, 40MHz, DIO, 115200, 512K (64K SPIFFS), ck, Disabled, None"

Archiving built core (caching) in: C:\Users\Yasmeen\AppData\Local\Temp\arduino_cache_354217\core\core_esp8266_esp8266_generic_CpuFrequency_80,FlashFreq_40,FlashMode_dio,UploadSpeed_115200,FlashSize_512K64,ResetMethod_ck,Debug_Disabled,DebugLevel_None_____9d1d735445f8d7bf19746e2177d24e71.a
Sketch uses 285417 bytes (65%) of program storage space. Maximum is 434160 bytes.
Global variables use 38688 bytes (47%) of dynamic memory, leaving 43232 bytes for local variables. Maximum is 81920 bytes.
error: failed reading byte
warning: espcomm_send_command: cant receive slip payload data
error: failed reading byte
warning: espcomm_send_command: cant receive slip payload data
error: failed reading byte
warning: espcomm_send_command: cant receive slip payload data
error: failed reading byte
warning: espcomm_send_command: cant receive slip payload data
error: failed reading byte
warning: espcomm_send_command: cant receive slip payload data
error: failed reading byte
warning: espcomm_send_command: cant receive slip payload data
error: failed reading byte
warning: espcomm_send_command: cant receive slip payload data
error: failed reading byte
warning: espcomm_send_command: cant receive slip payload data
error: failed reading byte
warning: espcomm_send_command: cant receive slip payload data
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed

After looking online and researching, I can see that it has something got to do with flashing the firmware or something. I came across this question:

ESP8266 error: espcomm_upload_mem failed while uploading sketch

and the answer did say that he bought a converter.. what does this mean? Does it mean buying this?: https://www.amazon.co.uk/gp/product/B06Y3FNGJF/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1

I really need help, been stuck on this for the past few days now and seriously contemplating whether to get the arduino wifi shield since it comes prebuilt with wifi.. even though it costs quite a lot!

3
  • 1
    Did you take note of the paragraph in your first link that reads And since we talked about the CH_PD pin, remember that if you want to flash the ESP8266 you should connect the GPIO0 pin to GND (blue line), which puts the ESP into flash mode.
    – Majenko
    Sep 28, 2017 at 12:32
  • @Majenko I am able to send AT commands with the module so should I not be in flash mode when trying to send a http request? Also, does flashing mean upgrading the firmware in the esp2866? Sep 28, 2017 at 12:44
  • >To solve the issue,do this > >short the pin GPIO 0(D3) to ground using a jumper wire. >press reset button >upload the sketch >remove the jumper wire . Done!!!! Thanks for this note that solved my problem
    – Duvy
    Mar 2, 2019 at 20:50

5 Answers 5

1

The ESP8266 has two "modes". "Run" mode and "Flash" mode. In "Run" mode the firmware installed onto the ESP8266 executes. The default firmware is the AT firmware that allows you to control the device with AT commands through serial.

Note that the site you link to has erroneous information about CH_PD that should be talking about GPIO0.

In "Flash" mode you get to upload new firmware (AKA a "sketch") to make the device do something different.

The basic programming sequence is:

  1. Switch the device to Flash mode (connect GPIO0 to GND)
  2. Upload the sketch using the IDE
  3. Switch the device to Run mode (connect GPIO0 to 3.3V).

Because of these extra steps many people choose to invest in a small USB interface board designed specifically for programming the ESP8266 to make their life easier. These generally have a switch on them to set whether GPIO0 is connected to GND or 3.3V.

9
  • Thank you for the clarification. Really helps. I have connected the CH_PD to GND, I try to run the sketch but still pretty much get the same error: warning: espcomm_sync failed error: espcomm_open failed error: espcomm_upload_mem failed error: espcomm_upload_mem failed Not sure whats going wrong Sep 28, 2017 at 13:04
  • Get an adaptor. It makes everything so much simpler. They're dirt cheap on eBay.
    – Majenko
    Sep 28, 2017 at 13:19
  • Would this adapter work?: amazon.co.uk/gp/product/B06Y3FNGJF/… Sep 28, 2017 at 13:20
  • This is incorrect. CH_PD turns the chip on or off. I think you mean GPIO0
    – tttapa
    Sep 28, 2017 at 13:22
  • @tttapa I thought it was GPIO0 too, but the site linked to in the question says CH_PD.
    – Majenko
    Sep 28, 2017 at 13:25
1

By default, the ESP8266 runs the program in flash memory. To upload new firmware over UART, you have to change the boot mode by connecting GPIO0 to ground during reset. GPIO15 should be low and GPIO2 should be high during boot in both cases. GPIO needs an external pull-down resistor, the internal pull-up resistor for GPIO2 is enabled during boot, so you don't need to add an external one.
To prevent from shorting GPIO0 if it's used as an output in your sketch, it's recommended to add a series resistor to limit the current.

ESP8266 schematic

To upload a sketch:
1. press and hold the reset button
2. press and hold the program button
3. release the reset button, the ESP will boot in program mode
4. release the program button
5. upload the sketch

If your USB-to-Serial breaks out the RTS and/or DTR lines, you can automate the reset and programming mode procedures.

1

I had the same issue while uploading to the NodeMCU.

The issue was that the mode was not selected to program mode even after doing the below steps:

  1. press and hold the reset button
  2. press and hold the program button
  3. release the reset button, the ESP will boot in program mode
  4. release the program button
  5. upload the sketch

To solve the issue, do this:

  1. short the pin GPIO 0(D3) to ground using a jumper wire.
  2. press reset button
  3. upload the sketch
  4. remove the jumper wire

Done!!!!

0

depending on the USB speed cable that you are using, sometimes this problem often occurs if I use a cable that is not suitable. if your com setting is 9600 then you have to set up upload speed in the tools menu -> upload speed faster than 9600 ... for exp: 57600. this is should be work!!

1
  • at 9600 baud the upload starts but fails in the middle because of problems with the esptool used in Arduino esp8266 package until version 2.4.1 . starting 2.5.0 esptool.py is used
    – Juraj
    May 4, 2019 at 5:10
0

This is one of the simple solutions that worked for me:

  1. Plug out the USB connection with the computer;
  2. Hold the flash button on the nodemcu/esp8266;
  3. Plug in the usb connection and quickly release the flash button;
  4. Now try uploading the sketch.

Thank you.

Not the answer you're looking for? Browse other questions tagged or ask your own question.