0

I am trying to upload something directly to the ESP8266 using the ESP8266 IDE. I have configured the ESP8266 to communicate at 9600 using UART_DEF and I have set the ESP8266 IDE at 9600. I see some tutorials that say to use a FTDI but I only have a Serial to TTL cable (note it even says at the bottom that it's not good for Arduinos :( ) and am making the following connections:

  • ESP8266 RX - TTL cable TX
  • ESP8266 TX - TTL cable RX
  • ESP8266 GND - common GND
  • ESP8266 VCC - External 3.3V
  • GND from External 3.3V - common GND
  • ESP8266 GPI0 (through a 10k resistor) - common GND
  • ESP8266 GPI2 (through a 10k resistor) - External 3.3V
  • EPS8266 CH_PD - External 3.3V (sorry, that was wrong before)

However, when I upload that sketch I get an error that the board cannot be found. I have read online that the ESP has some bootloader mode that needs to be activated but haven't found great instructions on how to do that. Any advice would be appreciated.

FYI I also have an Uno if that is any help. I have communicated with the ESP8266 through the Uno before (connecting the Uno reset to ground) .

  • 1
    wire io 0 to gnd without resistor for the moment of esp8266 startup. esp8266 is put into flashing mode with io 0 LOW at startup. but the module can have a pull-up on io 0 to start normally. – Juraj Aug 12 at 4:22
  • 1
    AT firmware UART baud rate has nothing to do with bootloading baud rate. bootloader detects the baud rate – Juraj Aug 12 at 4:24
  • 1
    Connecting CH_PD to ground turns off the ESP8266. – tttapa Aug 12 at 8:26
1

The cable you point to is fine for programming the ESP8266. The only reason it's not "good" for an Arduino is the lack of a DTR signal to trigger a reset for you - which you can do manually anyway and still use it for an Arduino (if your reactions are fast enough).

You have no such problem with the ESP8266. Once you have it in bootloader mode it stays in bootloader mode until you tell it to exit bootloader mode.

First make sure that the ESP8266 is actually set up to run properly. That means:

  • Connect CH_PD to 3.3V, not GND, through a pull-up resistor.
  • Connect GPIO0 to 3.3V via a pull-up resistor.
  • Connect RST to 3.3V via a pull-up resistor.

Then for simplicity of programming:

  • Connect a button between RST and GND
  • Connect a button between GPIO0 and GND

To enter bootloader mode simply hold the GPIO0 button in, tap the RST button, then release the GPIO0 button. When you have successfully uploaded your firmware just tap the RST button to exit bootloader mode.

ESP8266 boards with a built-in USB interface usually use both the DTR and the RTS pins to control both those buttons virtually. That's somewhat complex to arrange for an external USB to TTL UART adaptor, so it's simpler to just press the buttons manually.


Here's a link to a website that details the circuit and operation using an ESP-01 as an example.

  • the new esp-01S modules have a pull-up on io 0 and CH-PD wired to Vcc 'on board' – Juraj Aug 12 at 15:31
  • @Juraj Indeed they do - however the OP never mentioned which ESP8266 module (if any) they are using. – Majenko Aug 12 at 15:40
  • Wow this is a great start! It's still not working for me. I am using a lower resistor on the CH_PD and GPIO2 - VCC connection (500 Ohms) could that be a reason? Here is a picture of my setup if that's any help...imgur.com/a/miZuQN9 – garson Aug 12 at 20:30
  • It's no help at all. All I see is a bundle of meaningless wires. Not even an ESP8266 in there. What module are you using? – Majenko Aug 12 at 20:38
  • According to this site, I think I have ESP8266-01 but I am not really sure how to check just from looking at it. esp8266.com/wiki/doku.php?id=esp8266-module-family – garson Aug 12 at 20:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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