The ESP-12 has 16 pins broken out for the maker to use. A majority of them are simple GPIO pins, but others serve important dedicated purposes. These pins are:
- TXD & RXD: Communication pins used to send (TXD) and receive (RXD) data. These pins will be used to program the device with new firmware and communicate with the running software.
- VCC: The ESP must be supplied with 3.3V. Exceeding 3.3V will likely damage the device.
- GND: Ground.
- CH_PD: Chip enable. This needs to be pulled up to 3.3 V in order to power up the ESP.
- GPIO 0: This pin is used to select which mode the ESP boots into. If it is pulled high, the system boots into the software that has been stored on its FLASH. If the pin is low, the system boots into the write mode, where new firmware can be burned. After the ESP has booted, this pin can be used for normal GPIO.
- GPIO 2: This pin must be pulled high to boot the ESP.
- RESET: This is an active-low reset pin. When it is pulled high, it does not impact the system, but when it is grounded it resets.
- GPIO15: This pin must be pulled low to boot from FLASH or enter write mode. If this pin is high, the ESP will attempt to boot from SD card.
- ADC: Analog to digital converter.
- GPIO16: This pin is supposed to be used for the sleep mode and requires some in-program tweaking to use as a regular GPIO pin.
These simple rules are enough for experienced hackers to jump in and start playing with the ESP-12. Accessories such as this simple, cheap adapter plate or more advanced breakout boards from Adafruit and SparkFun take care of many of the pin settings.