This tutorial is the first of three parts meant for people who want to connect their ESP8266 through an Arduino UNO board. More specifically, I will be using the ESP-12E version of these wifi modules.

I personally had a lot of trouble when I started exploring ESP8266 boards. There is a lot of information out there but parsing through it is quite daunting for a beginner and I never found a tutorial to my liking on how to use them with Arduino Uno. I therefore decided to create my own tutorial with the knowledge I gathered from endless hours of looking on sites, blogs, forums, etc. so others don't have to go through the same tedious process.

Here's what the different parts will cover:

  1. How to connect the ESP-12E to the UNO for basic operation and serial communication;
  2. How to flash new firmware to the module;
  3. How to upload your own sketches to your ESP-12E.

I'm assuming you already have some sort of breakout board for your module or a way to attach wires to the different pins. This series of tutorials will not cover how to build a breakout board. ankitdaf has a good tutorial on this subject HERE -- I'm using something very similar to his build.

I'm also not going to cover installing the Arduino IDE since you probably have it installed if you have an UNO. Here's the official link in case you don't have it.

Let me tell you from the start, THIS CONFIGURATION WORKS! I have used it successfully for a while now and it hasn't let me down (no resets or anything).

What you'll need:

  • Arduino UNO board
  • ESP-12E module (have not tested this on other versions but it might work, give it a try)
  • 3.3V power source, don't use Arduino 3.3V pin
    • I'm using a 5V USB phone charger and a step-down voltage converter
    • use something that's capable of providing at least 500mA just to be sure as some people have been noticing spikes of up to 420mA in ESP modules
    • EDIT: I'm actually using mine just under 3.6V and it seems to perform better than it did at 3.3V.
  • jumper wires
  • 4 x 10kΩ resistors
  • a breadboard
  • 2 push buttons (optional but recommended for ease of use)
  • a 470uF capacitor (optional but recommended for stability)

Step 1: Make the Connections

Start with the diagram and refer to the description below if something is not clear.

Here's a nice, large diagram that hasn't been compressed if you need it: WIRING DIAGRAM.

WARNING: Again, do not use the 3.3V pin on the Arduino UNO to power your ESP module. The ESP draws more current than the 3.3V pin can provide.



+3.3V to positive rail of breadboard

GND/Negative to negative rail of breadboard

There is also a 470μF capacitor connected between the positive and negative rails of the breadboard. This is a polarized capacitor so be careful with the wiring: the side with the stripe usually indicates the negative pole, so connect this to the negative rail and the other to the positive rail.



VCC to positive rail of breadboard

GND to negative rail of breadboard

EN (or CH_PD) pulled high (to 3.3V) with a 10kΩ resistor

RST normally pulled high with a 10kΩ resistor but connected to GND when "RESET" button is pushed

GPIO15 pulled down (to GND) with a 10kΩ resistor


  • Normal operation: pulled high with 10kΩ resistor OR floating (not connected to anything)
  • Flashing/uploading: Connected to GND when "FLASH" button is pushed

If you don't want to use the buttons:

  • RST should be pulled high; manually connect-and-disconnect to GND when a reset of the ESP is required; alternative: leave RST pulled high and power off/on the ESP by disconnecting and reconnecting the VCC line
  • GPIO0 should not be connected to anything for normal operation but manually connect it to GND when you want to flash firmware or upload sketches



TX on ESP to TX pin on Arduino (pin #1)

RX on ESP to RX pin on Arduino (pin #0)



RESET pin must be connected to GND pin (this disables board resetting on serial com initialization in Arduino)


If you've connected everything correctly, you should at least see the blue LED on the ESP flash when you reset/reboot it.

<p>Thanks for sharing :)</p>
<p>You're welcome. Hope it helps.</p>

About This Instructable




More by Tstef:ESP-12E (ESP8266) with Arduino Uno: Getting Connected 
Add instructable to: