ESP8266 Thing Hookup Guide

Contributors: jimblom
Favorited Favorite 35

Hardware Overview

The ESP8266 Thing is a relatively simple board. The pins are broken out to two parallel, breadboard-compatible rows. USB and LiPo connectors at the top of the board provide power -- controlled by the nearby ON/OFF switch. And LEDs towards the inside of the board indicate power, charge, and status of the IC.

Here's a quick overview of the Thing's main components:

Board components annotated

The Pinout

The Thing's I/O headers can be broken down into three sections:

Serial Programming Header

This six-pin header will be the main point of contact between the Thing and your development computer. The pinout of this header matches the extremely common "FTDI header." That means you can interface it with either a 3.3V FTDI Basic or a 3.3V I/O FTDI Cable to program and debug the Thing.

For a quick breakdown of the pins on this header, consult the table below. If a pin is directly tied to an ESP8266 I/O, it'll be noted:

Pin LabelESP8266 I/O #Notes
DTRPerforms auto-reset, and puts the ESP8266 into bootloader mode. Connects through a capacitor to RESET, and a buffer to the ESP8266's GPIO0.
TXO7ESP8266 UART1 data output.
RXI8ESP8266 UART1 data input.
3V3By default, this pin does not supply the ESP8266 directly (a jumper on the back can change that).
NCNot connected to anything on the Thing.
GNDGround (0V).

I2C Header

I2C is a very popular communication protocol in the embedded world. Whether you want to hook the Thing up to a motion sensor, light sensor, digital-to-analog converter, or OLED display, I2C is often the protocol of choice.

This header includes four pins -- all that should be required to connect an I2C device up to the Thing.

Pin LabelESP8266 I/O #Notes
GNDGround (0V).
SDA2Can either be used as ESP8266 GPIO2 or I2C serial data (SDA).
SCL14Can either be used as ESP8266 GPIO14 or I2C serial clock (SCL).
Also used as the SPI clock (SCLK).

This pinout matches that of most of our I2C-based breakout boards, so you can piggyback them right on top of the Thing.

If you need the extra I/O, instead of I2C, the SDA and SCL pins can be used as GPIO 2 and 14 respectively. The SCL pin also serves as the clock (SCLK) for the ESP8266's SPI interface.

General I/O Header

The rest of the power, control, and I/O pins are broken out on the other side of the board. They are:

Pin LabelESP8266 I/O #Notes
GNDGround (0V).
VINUSB connected: ~4.5V output
LiPo connected (no USB): ~3.7V output
No supply: Can be used as a voltage supply input to the 3.3V regulator.
55This pin is also tied to the on-board LED.
1313Hardware SPI MOSI
1212Hardware SPI MISO
XPD16Can be connected to reset to set the ESP8266 into deep sleep mode.
ADCA0A 10-bit ADC with a maximum voltage of 1V.
ENESP8266 enable pin. HIGH = on, LOW = off. Pulled HIGH on-board.

What happened to the rest of the GPIO pins? Why the eclectic pin-numbering scheme? We're taking what the ESP8266 gives us. Unfortunately, most of the remaining GPIO are connected to the on-board SPI flash memory IC, which stores the ESP8266's program memory and potentially other data.

Back of the Thing

Flipping the Thing over revels a few trace jumpers and test points, which you may find handy for your application.

Back of ESP8266 Thing


Jumper LabelDefault SettingNotes
DTRClosedAllows for auto-reset while programming the ESP8266, but makes serial debugging difficult.
I2C PUClosedConnects 10kΩ pull-up resistors to the SDA and SCL pins.
FTDI VCCOpenConnects the 3V3 pin on the serial header directly to the ESP8266's 3.3V supply.

Of these jumpers, the DTR one is the most commonly modified. The DTR output of the FTDI Basic is used for two purposes: to reset the ESP8266 and pull GPIO0 low (putting the chip in bootloader mode). Keeping this jumper closed enables programming, but makes debugging via the Serial Monitor difficult, as the board will reset into bootloader mode whenever the terminal opens. Using and modifying this jumper is discussed later in this tutorial.

The FTDI_VCC jumper defaults to open to ensure that, if a 3.3V Logic (5V power) FTDI Cable is used to program the Thing, 5V isn't accidentally delivered to the IC. Also, most 3.3V FTDI boards don't have a lot of juice to supply on the 3.3V bus (they often supply about 50mA max).

Test Points

These pins are made available just in case they become necessary to your project. The six pins bundled up together are connected to the Thing's on-board SPI flash memory, but if you really need the extra GPIO, or want to experiment with the pins, they're available.

The RST pin is more useful, but we didn't leave room to break it out -- at least not directly. RST is tied through a 0.1µF capacitor to the DTR pin, to allow for automatic reset during programming. For many applications that need the RST pin, toggling the DTR pin works as well. Putting the ESP8266 into deep sleep is one such application.

Selecting the Antenna

The Thing's default WiFi antenna is a PCB trace antenna based on this TI app note. It's cost-effective and actually works really well!

If you need to connect a more sensitive antenna to the chip, a U.FL connector is also available on the board, but isn't connected by default to the ESP8266's antenna pin. To connect this antenna to the chip, you'll need to heat up the 0Ω resistor and rotate it 90°:

alt text

An (ugly, uncleaned) resistor swapped from printed antenna to U.FL antenna.

A soldering iron, pair of tweezers, (2) steady hands, and good set of eyes should be enough to accomplish the task.

Why Are There Unpopulated Parts?

We initially set out to make the Thing a secure, common-sensor base station. The empty pads you see are landing spots for three unique IC's:

  • ATECC108A -- A "full turnkey Elliptic Curve Digital Signature Algorithm (ECDSA) engine", which can be used for unique serial numbers, hashing, key storage, or random numbers. A great start to securing your IoT project!
  • TMP102 Temperature Sensor -- A simple, 12-bit, digital temperature sensor.
  • TSL2561 Light Sensor -- A nifty luminosity/light sensor. If you are lucky to have obtained this sensor, the spot is available to populate. Unfortunately, the TSL2561 sensor is EOL so you will need to opt to use a different light sensor and connect via the the PTH along the sides of the board.
  • Plus a few footprints for decoupling capacitors.

After a late change of heart, we decided to keep the board as low cost as possible (that's the ESP8266's best feature!), while leaving the option for later expansion. The pads are still there. If you want to add any of these components, hopefully all you should need is a hot air station (maybe probably not a Heaterizer) and some tweezers.