I have been using ESP8266 wifi module with Arduino as FTDI. The power for ESP8266 comes from LM317 5V - 3.3v regulated supply(I am sure 5V is powerful enough to give upto 1A of current).
The RX of ESP8266 is connected to RX of Arduino via a voltage divider to ensure 3.3V logic level. But still, I am not getting any response to AT
command, though my laptop and phone wifi have successfully connected to AI-Thinker... SSID(which is an open hotspot from ESP8266).
I am also having some garbage values on the serial port immediately after I turn on the power supply to ESP8266. I have tested all baud rates available in Arduino IDE v1.0.5 with no results.
The resistor values for lm317 are R1 = 125 Ohm, R2 = 225 Ohm with which I am getting around 3.2 Volts.
The connections are as follows:-
-----Arduino UNO-----
RESET ------------ GND
Arduino UNO ----- ESP8266
TX ------------------- TX
RX ---5V to 3.3v--- RX
GND ----------------- GND
ESP8266 --------- LM317(5V to 3.3V)
VCC --------------- 3.3V
GND --------------- GND
CH_PD ------------ 3.3V
EDIT - 1: I have bought a new ESP8266, and even it doesn't responds to any AT
commands, thought there is some difference in the previous ESP8266 output and this new ESP8266 output.
The difference is a sort of good news to me, it sends ready
after sending some garbage at 115200
baud on boot which never happened with previous one(ESP8266).
Is anyone having some clue why there is no response to AT
commands?
May it be a issue with TX line?
EDIT - 2: I have also used another Arduino with same connections doubting the TX pin on Arduino, but with same luck, bad luck. Still, nothing got changed.
EDIT - 3: I am shifting 5v to 3.3v by using three 100 ohm resistors.
-
Comments are not for extended discussion; this conversation has been moved to chat.Nick Gammon– Nick Gammon ♦2017年06月09日 07:43:27 +00:00Commented Jun 9, 2017 at 7:43
-
I think, the blue led should blink even at wrong bauds. Correct me If I am wrong.Devesh Saini– Devesh Saini2017年06月10日 19:17:43 +00:00Commented Jun 10, 2017 at 19:17
-
blue led blinks only when sending some data, not receiving.Devesh Saini– Devesh Saini2017年06月15日 18:32:14 +00:00Commented Jun 15, 2017 at 18:32
6 Answers 6
Connect TX of arduino to esp8266 RX, and arduino RX to esp8266 TX.
See this link for more info.
-
Comments are not for extended discussion; this conversation has been moved to chat.2017年06月13日 08:05:26 +00:00Commented Jun 13, 2017 at 8:05
-
The rather extensive set of comments (now moved to chat) should be added to the answer, if indeed they help answer the question. This is not a forum-type situation here on Stack Exchange.2017年06月13日 08:06:31 +00:00Commented Jun 13, 2017 at 8:06
First of all your connectons are wrong: -----Arduino UNO-----
RESET ------------ GND (Why)
Arduino UNO ----- ESP8266
TX ------------------- RX
RX ------------------- TX
(RX is the recieving end, TX is the transmitting end, one should allways connect a transmitter to a reciever both directions, never a transmitter to transmitter or reciever to reciever, and use a logic level shifter)
GND ----------------- GND
ESP8266 --------- LM317(5V to 3.3V) (only for Vcc)
VCC --------------- 3.3V
GND --------------- GND
CH_PD ------------ 3.3V
In these cases you should use a logic level shifter like 74LVC245 or sparkfun level converter and not a voltage regulator. If you must use lm317 connect it correctly, diodes, capacitors and an adjusting potmeter or resistor. Typical application found in the datasheet on p. 10
baudrate should be 57600 on the esp8266.
glhf :)
-
When we are doing TX-RX, RX-TX, we are trying to communicate between Arduino MCU and ESP8266, that's why these pins are labelled so. But, in case, we are bypassing the Arduino MCU, we do it this way TX-TX, RX-RX. By bypassing Arduino MCU, our TX and RX on arduino gets reversed i.e. they become RX and TX of computer(if we attach a computer with USB cable)with which we can communicate between a computer and ESP8266 bypassing ArduinoDevesh Saini– Devesh Saini2017年06月11日 10:53:58 +00:00Commented Jun 11, 2017 at 10:53
-
Second thing, I think the ESP8266 is getting enough power as it is showing as wifi hotspot in my laptop and phone as well as sending some bits and then
ready
in serial console, so maybe nothing to do with LM317, i think.Devesh Saini– Devesh Saini2017年06月11日 10:56:46 +00:00Commented Jun 11, 2017 at 10:56 -
Third thing, Arduino: RESET --- GND because that's a way to bypass Arduino MCU, we could have done physically removing its ATMEGA328p from the board but that's not a elegant way of doing this.Devesh Saini– Devesh Saini2017年06月11日 11:04:59 +00:00Commented Jun 11, 2017 at 11:04
Which version of arduino IDE are you using? I use 1.6.12 and works, it does not work for 1.8 versions. Also ensure 3.3v power input for the esp8266 separately from arduino power. I suggest using a PC power supply (color orange is 3.3v).
The problem was with my logic level shifting.
Any Arduino pin can provide only upto 40mA of current. What current you are trying to draw is:-
5 Volts / 100 Ohm = 50mA
which is clearly more current than what an UNO can provide. Your ESP also adds up its own resistance meaning even more current draw requirement from RX pin.
Instead of using three 100 ohm resistors, use some high valued resistors such as 1K ohm resistors(or even higher value) in the voltage divider circuit so that no much current pass through it, consuming less power affordable by the Arduino RX pin.
Remark: If you don't know how logic level shifting works with voltage divider circuit, click here.
The issue you are running into is that the Arduino Uno cannot source enough current at 3.3V for esp8266 operation. I had to use a separate power supply with grounds tied together and then my esp8266 responded to AT commands.
Summary:
I use the Arduino Uno as the serial bridge (RESET tied to GND)
an external power supply for the esp8266
and a bidirectional level shifter for 3.3V to 5V TX/RX data paths
Connected CHPD of esp8266 to GND, waited 5 sec then reconnected to 3.4V
Arduino IDE > Tools> Serial Monitor > Both NL&CR > 115200 Baud Rate
-
and I just connect the Uno to esp-01 directly and it works. but it depends on version of Uno. original Rev 3 gives 150 mA on 3.3 V pins, which is enough for esp-01. there is no need to level shift 3.3 to 5 V and the esp8266 has no problem with 5 V logic level with almost no current flow2022年10月16日 08:47:34 +00:00Commented Oct 16, 2022 at 8:47
-
@Juraj I’ve read in multiple locations the ESP8266 operating voltage is 3.3V. Also, I level shift because the TX/RX of the Arduino Uno expects 5V whereas the ESP8266 expects 3.3V cdn-shop.adafruit.com/product-files/2471/…goat1123– goat11232022年10月17日 06:57:09 +00:00Commented Oct 17, 2022 at 6:57
First of all do not use any resistors(try it) for RX pin. Connect it directly.
Second connect RST pin of ESP8266 to 3.3V power supply.
And also try to use arduino directly with esp8266 once. Do not use lm317 or any other separate power supply. Use 3.3 volt power supply of arduino.
And i dont know why you have connected RESET pin of Arduino to GND. Please answer me that.
-
I have already tried to connect arduino RX to ESP8266 RX without resistors(voltage divider circuit), but it didn't worked either. Second, I have not tried RST pin of ESP8266 to 3.3V, I am going to try it now and report back soon.Devesh Saini– Devesh Saini2017年06月07日 11:36:36 +00:00Commented Jun 7, 2017 at 11:36
-
I also used arduino directly without lm317, it does not shows any hotspot until an external power supply to Arduino is given. I gave arduino 5V external supply, and the hotspot showed again, but this time also, no response to AT command, but garbage on starting.Devesh Saini– Devesh Saini2017年06月07日 11:39:16 +00:00Commented Jun 7, 2017 at 11:39
-
why are you making things complicated. Connect 3.3V of arduino to esp8266 Vcc port. And you obviously have to provide external power supply to arduino. Connect it to PC using USB Cable. And Connect RST pin to 3.3V. Use a breadboard.SONIA JOHNSON– SONIA JOHNSON2017年06月07日 11:48:05 +00:00Commented Jun 7, 2017 at 11:48
-
I have used 3.3V of arduino to esp8266 directly. Given, external power supply to arduino, connected arduino to pc and connected RST pin of ESP8266 to 3.3V. I am still geting garbage at serial on starting and no AT response.Devesh Saini– Devesh Saini2017年06月07日 12:01:22 +00:00Commented Jun 7, 2017 at 12:01
-
3@SONIAJOHNSON You need to power the ESP8266 separately from the Arduino - it required a higher current than the Arduino 3V3 pin is capable of supplying. Also, ESP8266 RX pin does seem to be voltage sensitive, requiring a voltage divider or converter to reduce voltage to 3V3.Holmez– Holmez2017年06月07日 14:42:22 +00:00Commented Jun 7, 2017 at 14:42