So you're a Noob? Post your questions here until you graduate! Don't be shy.
User avatar
By rudy
#60813
jclmdt wrote:May I know what is bootloader mode? Why do I need to connect the GPIO to GND? I thought it is connected to gnd only when you want to flash firmware in?


The program you want to load is the firmware. It overwrites whatever program was there before. For example, if you had the code that responded to AT commands initially, this would get overwritten with your newly loaded program. Your new program is the only application that is present until you go through the same process on the next code change.

When a reset happens, and the GPIO lines are set to start with the boot loader, the blue led will give a brief flash. About 1/10 of a second and only once. After that it is waiting for the new code to be sent.
User avatar
By jclmdt
#60821 Thank you for the response, but I am still quite confused with the ESP8266 chip.

1) From your responses, am I correct to say that by plugging in the usb cable from Arduino to connect to the computer and then uploading the code to Arduino Mega is actually loading the firmware (Arduino IDE program) into ESP8266? Which is why I need to connect GPIO0 to GND. What do I do with GPIO2 and RST? Does it need any connections?

2) I tried with the same connection as before, but this time with the GPIO0 grounded, with GPIO2 and RST left unconnected. I then upload the same code to Arduino Mega, but the blue LED still did not light up when I enter any random character into the serial monitor. This probably means the ESP8266 did not receive anything (which it should, according to the code), while the Arduino Mega's TX and RX LED did light up when characters are enter at the serial monitor.

The blue LED did give a brief flash for once when i plug in the usb cable to the computer when the power source is available to power the ESP8266. (Previous time, it flash three times instead when GPIO0 is not grounded)

3) I did some reading and found out that GPIO0 needs to be grounded and GPIO2 connects to VCC in order to get into the UART programming mode (am i right?). So I tried playing around with the connections and have GPIO0 grounded, RST left unconnected and GPIO2 connects to VCC. It yields the exact result as from point 2 above.

4) With reference to point 3 above, I changed the connections slightly and had GPIO0 grounded, RST connect to VCC and GPIO2 connects to VCC. Then I connect Arduino to PC and the blue LED becomes to have the light on all the time, even after uploading the code. After uploading the code with the connections left untouched, the serial monitor became flooded with random characters as well as the words "SOFTSERIAL AVAILABLE".



I suspect I am doing something wrong with the connections? Would greatly appreciate if someone provide a step by step tutorial on the connections to the uploading of code to the suppose output to get. I googled extensively and read almost all the guides available online but are too confusing or not clear enough as I am new. Please help!! Greatly appreciated with many thanks.
User avatar
By jclmdt
#60824 To add on, with regards to point 4 above, I did a search on the blue LED constantly on and found within this forum a thread response that says to connect as follow:

Vcc -> 3.3V
CH_PD ->3.3V
RST -> 3.3V
GPIO 0 -> 3.3V via a resistor (anything between 1K & 10K)
GPIO 2 -> 3.3V via a resistor (anything between 1K & 10K)
GND -> GND
Tx -> Tx (with arduino as Tx is realy Rx)
Rx -> Rx (with arduino as Rx is realy Tx)

This will get you into normal run mode. To flash, leave the GPIO 0 resistor in place but connect GPIO 0 to ground, power off then back on, flash then remove the GPIO 0 connection to ground. (Credits to Barnabybear) - See more at: viewtopic.php?f=8&t=6039#sthash.EM9xKmBO.dpuf


I did it the same way and uploaded the program with GPIO0 connected to ground. After the upload, I removed the GPIO0 connection to GND and left it either floating or connected to Vcc, but it still returns an endless flood of "SOFTSERIAL AVAILABLE" with random characters. An interesting thing is the TX LED of Arduino is constantly flickering and on, even though I did not send any command on the serial monitor. That links to the flood of words on the serial monitor screen, which I have no idea why.