Be careful with that "Instructables" article. The author powers the ESP8266 from the Arduino's 3.3V power out pin. The ESP8266 can want to use more current than the Arduino is rated to supply.
I've looked at a few "Instructables" articles on ESP8266 and Arduino, and a large fraction of them seem to have this issue.
Another issue many of them that use a 5V Arduino have is that they ignore the difference between the logic levels of the 5V Arduino and the 3.3V ESP8266. For the connection from the ESP8266 UART Tx to the Arduino Rx, that's probably fine. The ESP8266 will drive the line to 3.3v, and that is high enough for the Arduino to recognize it as high on the Rx line, as long as you are powering the Arduino through the USB port or through the barrel jack (I'm using Arduino Uno for my examples, so some adjustment may be needed for other models).
If you are powering through the 5V pin, which bypasses the 5V regulator on the Arduino, then you could have a problem if your voltage is high. The minimum voltage seen as a logic 1 on the input pins goes up as supply voltage goes up, and since you are already near the edge when hooking an 3.3V ESP8266 up directly, you have to be careful.
For the connection the other way, Arduino UART Tx to ESP8266 UART Rx, you are putting a 5V signal on a pin that's supposed to only take up to 3.3V. The ESP8266 has built-in protection against over-voltage which probably will save you, but this is not good practice.
Simplest fix here is to use a 1k and 2k resistor to make a voltage divider for the Arduino Tx -> ESP8266 Rx signal. Note that this only works for going from the higher voltage side to the lower voltage side. That's fine here, since on the Tx->Rx connection only the Tx side drives the line.
If you have to hook different voltage I/O pins together and both sides can drive, you need something more elaborate. There's a cool solution that uses two resistors and a MOSFET. That, and some others, is given here [1].
tzs|10 years ago
I've looked at a few "Instructables" articles on ESP8266 and Arduino, and a large fraction of them seem to have this issue.
Another issue many of them that use a 5V Arduino have is that they ignore the difference between the logic levels of the 5V Arduino and the 3.3V ESP8266. For the connection from the ESP8266 UART Tx to the Arduino Rx, that's probably fine. The ESP8266 will drive the line to 3.3v, and that is high enough for the Arduino to recognize it as high on the Rx line, as long as you are powering the Arduino through the USB port or through the barrel jack (I'm using Arduino Uno for my examples, so some adjustment may be needed for other models).
If you are powering through the 5V pin, which bypasses the 5V regulator on the Arduino, then you could have a problem if your voltage is high. The minimum voltage seen as a logic 1 on the input pins goes up as supply voltage goes up, and since you are already near the edge when hooking an 3.3V ESP8266 up directly, you have to be careful.
For the connection the other way, Arduino UART Tx to ESP8266 UART Rx, you are putting a 5V signal on a pin that's supposed to only take up to 3.3V. The ESP8266 has built-in protection against over-voltage which probably will save you, but this is not good practice.
Simplest fix here is to use a 1k and 2k resistor to make a voltage divider for the Arduino Tx -> ESP8266 Rx signal. Note that this only works for going from the higher voltage side to the lower voltage side. That's fine here, since on the Tx->Rx connection only the Tx side drives the line.
If you have to hook different voltage I/O pins together and both sides can drive, you need something more elaborate. There's a cool solution that uses two resistors and a MOSFET. That, and some others, is given here [1].
[1] http://electronics.stackexchange.com/questions/97889/is-ther...