This is my first project other than some of the starter projects. I am trying to flash the firmware onto an ESP8266 wifi module using and arduino uno. It would be nice to know if anything is wrong/redundant in the picture below (I was looking at a few different diagrams to try and figure out what was right). I have found some tutorials saying that TX should go to RX instead of TX to TX so that is what I am doing. I am trying to use the level shifter to go from 5v to 3.3v because I wasn't sure if I had enough current going to the ESP8266 when just directly hooked up to 3.3v on arduino (I read in a few places that the arduino doesn't have a strong enough current to operate the wifi module). I found some tutorials which use a voltage regulator, I tried doing that but had the same results I am getting now. I have also read that you don't need a level shifter or voltage regulator but it might harm the components so I haven't tried that way yet.

I am the point where I plug it into my computer via USB, open the Arduino IDE > Tools > Serial Monitor.

I type the command 'AT' and there is no response - I tried every baud setting. Sometimes it randomly outputs a question mark or two.

Other things of note: When I plug it in, the ESP8266 blue light flashes once. When I was modding the header pins of the ESP8266 I kind of fumbled it a lot - could that have broken some aspect of the chip? Also while modding the header pins, I pushed them all in to make them longer and bent them on the other side, so it would work with the breadboard - I'm wondering if the soldering connections need to be stronger (you can kind of see in the picture).

enter image description here

This is the schematic for what I was trying to achieve basically, while also using the level shifter:

enter image description here

Any advice with regards to anything you see here would be great, I am new to the world of circuits.

Note: there is a ground wire that is not in the frame of the picture connecting one side of the breadboard to the other, that part of this is one thing I was wondering about.

  • Ohhh... That solder! That is NOT ok!
    – Randomaker
    May 14, 2021 at 0:51

3 Answers 3


You do not need the level shifter. The input pins of the ESP8266 contain over-voltage (though not over-current) protection. All you need to do is limit the current that can flow through the over-voltage protection circuit, and all that needs is a series resistor in the region of 100Ω or so.

And the Arduino already has that protection between the ATMega16U2 and the TX/RX pins anyway in the form of 100Ω resistors that it uses to prevent short circuits between the two MCUs on the board, so you don't need to add it in this instance (you do if you want to communicate between the ATMega328P and the ESP8266, but only between the Arduino's TX and the ESP8266's RX pins).

When it comes to actively running the ESP8266 it can be beneficial to power it from a more powerful 3.3V regulator than the 150mA one on the Arduino since when transmitting the ESP8266 wants more than that, but for simple flashing of it the Arduino's 150mA regulator should do the job fine.

One thing to note though: I don't like the look of the soldering on your ESP8266 pins. I would be inclined to re-solder those joints. Add a bit of flux to help the solder flow properly.

  • Thanks @Majenko, I'm gonna solder those joints. from your comments at the bottom: I don't have a regulator on hand and I was wondering if I could use the equation here learn.sparkfun.com/tutorials/voltage-dividers to use as sort of a rough regulator...would that be unsafe...I guess i'll solder and then try again just to make sure it wasnt a connection
    – ewizard
    Sep 10, 2017 at 0:11
  • 1
    Definitely not. hackingmajenkoblog.wordpress.com/2016/08/30/…
    – Majenko
    Sep 10, 2017 at 0:12
  • great that explained it, communication not power, thanks for link.
    – ewizard
    Sep 10, 2017 at 0:14
  • but I can still try with 3.3v on arduino as power source, u said that should be enough for flashing
    – ewizard
    Sep 10, 2017 at 0:14
  • 1
    Not for power, no. Logic signals only.
    – Majenko
    Sep 10, 2017 at 0:16

What I have done was connecting ESP8266 and UNO as the schematic described.

But instead of using the default program in ESP8266, I programmed ESP8266 via UNO using the ESP8266 Library on Arduino IDE

If your way still did not work you can maybe try this method.


I think I may be able to help clarify things a bit here:

You are not trying to "flash" the ESP01 (the kind you have) board, but you are trying to talk to the AT command firmware it came installed with.

Also, there's a sort of pingback sketch (I forget the name and can't find it, but it basically uses a SoftwareSerial and copies characters from one to the other and vice versa) that is used to configure the ESP01 that's normally used, but you don't seem to be using it here (it may not be worth the effort, either, since it's tricky to get working sometimes).

In this case, it seems that you are trying to do one of two things:

If you are trying to talk to the ESP01 module from the computer connect the TX to the TX pin and the RX to the RX pin. This is because the Arduino board's serial adapter is already connected in the mirrored direction, and you are using that to talk to the ESP01. Do note that you should, before connecting the ESP01, upload the Blink sketch or similar to the Arduino so that it's not trying to use the Serial connection too. See http://www.teomaragakis.com/hardware/electronics/how-to-connect-an-esp8266-to-an-arduino-uno/ for more information on that use case.

On the other hand, if you are trying to talk to the device from the Arduino itself (as in, the Arduino has a program that needs WiFi access), you'd want to connect it RX to TX and TX to RX. Of course, when doing this, the Arduino should already have its program uploaded since the ESP01 would cause issues uploading firmware via Serial afterward (they both talk at once).

Lastly, these things are REALLY finicky, so make sure you set the baud rate and use NLCR end-of-line signaling.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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