When I received my ESP8266 modules in the mail, I
was anxious to try them out but I didn't yet have the
required USB-to-TTL 3.3V serial interface cable to proceed.
Since necessity is the mother of invention and since I am
not known for being a patient person, I decided to use an
Arduino Uno board I had for this purpose. Note, I
removed the processor from the Uno as it was not
The breadboard is shown in Photo 4 and the Fritzing
schematic is in Figure 1. Here, the 5V output of the Uno
was used to drive a small switching mode power supply
set to 3. 3 VDC which, in turn, drives the ESP8266. The Tx
and Rx signal from the Uno were connected directly to
the Tx and Rx connections on the ESP8266. Yes, Tx to Tx
and Rx to Rx. Remember, the ESP8266 is a 3.3V part and
that direct connection to the 5V logic levels of the Uno
should be avoided. With that being said, this prototype
worked perfectly. I have since heard the ESP8266 has 5V
tolerant pins but I have yet to have that claim
substantiated. Anyway, I figured I only had a few bucks
tied up in the ESP8266 part so if it blew, oh well. As it
turned out, this prototype worked splendidly.
The Reset pushbutton on the prototype pulls the reset
pin on the ESP8266 low, thereby resetting the device. The
Flash pushbutton grounds the GPIO0 pin which places the
ESP8266 into firmware download mode. The CH_PD line
must be pulled high for new firmware to be downloaded.
After my 3.3V USB-to-TTL serial cable arrived, I
removed the Uno from the prototype and connected the
cable directly to the ESP8266. This approach is shown in
Photo 5 and the schematic in Figure 2. Here, the cable
provides 5 VDC on the VCC pin which is connected to
the 3. 3 VDC power supply. The Tx and Rx pins of the
cable are at the proper 3.3V interface levels. The Tx pin of
the cable is connected to the Rx pin of the ESP8266, and
the Rx pin of the cable connects to the Tx pin of the
ESP8266. I also added an LED and 1K resistor connected
between ground and GPIO2 which will be used with the
Teleduino demo described later.
In either case, the following series of steps must be
followed to initiate successful loading of code from the
Arduino IDE into the ESP8266 module:
1. Press and hold the Reset button down.
2. While holding the Reset button down, press and
hold the Flash button.
3. Release the Reset button while still holding the
Flash button down.
4. Click the Upload button in the Arduino IDE.
5. When the sketch starts to load, you can release the
Once code is successfully uploaded to the ESP8266, it
will be executed every time a power-up or a reset occurs.
To easily program the ESP8266 as an
Arduino, you must use the latest version of the
Arduino IDE. As of this writing, that is version
1.6.4. This version has a feature called the
board manager which lets third-party vendors
add support for their Arduino compatibles that
the makers of the IDE don't support directly.
Adding support for the ESP8266 is a multi-step
1. First, you must download version 1.6.4
or newer of the IDE from www.arduino.cc/en/
Figure 1. Prototype
hardware using an
Arduino Uno as a
44 October 2015
Photo 4. Prototyping hardware using an Arduino Uno.
This method is not recommended, but works.