# Adafruit HUZZAH32 – ESP32 Breakout Board

## Overview

![](https://cdn-learn.adafruit.com/assets/assets/000/074/363/medium800/adafruit_products_ESP_Huzzah_Top.jpg?1555002466)

Squeeeeze down your next ESP32 project to its bare-bones essential with the **Adafruit HUZZAH32 Breakout**. This breakout is basically the 'big sister' of our HUZZAH 8266, but instead of an ESP8266 it has the '32! We've pared down our popular [Feather ESP32](https://www.adafruit.com/product/3405), removing the battery charger and USB-serial converter. You just get a regulator, some protection diodes, two buttons and an LED. For some projects, where price and size are at a premium, you can program this board over the 'FTDI cable' breakout when needed, and leave it alone otherwise.

Note that this board _doesn't_ come with a USB to serial converter chip and auto-reset circuit. Instead, you will need to plug in a [CP2104 Friend](https://www.adafruit.com/product/3309) or [FTDI cable](https://www.adafruit.com/product/70). Then, before uploading code, put it into bootloader mode by holding down the GPIO #0 button and clicking Reset button, then releasing the #0 button.

![](https://cdn-learn.adafruit.com/assets/assets/000/074/364/medium800/adafruit_products_ESP_Huzzah_Top_Angle.jpg?1555002489)

That module in the middle of the breakout contains a dual-core ESP32 chip, 4 MB of SPI Flash, tuned antenna, and all the passives you need to take advantage of this powerful new processor. The ESP32 has both WiFi&nbsp;_and_&nbsp;Bluetooth Classic/LE support. That means it's perfect for just about any wireless or Internet-connected project.

The ESP32 is a perfect upgrade from the ESP8266 that has been so popular. In comparison, the ESP32 has way more GPIO, plenty of analog inputs, two analog outputs, multiple extra peripherals (like a spare UART), two cores so you don't have to yield to the WiFi manager, much higher-speed processor, etc. etc!

![](https://cdn-learn.adafruit.com/assets/assets/000/074/365/medium800/adafruit_products_ESP_Huzzah_Top_Headers.jpg?1555002529)

Comes fully assembled and tested, pre-programmed with ESP32 SPI WiFi co-processor firmware that [you can use in CircuitPython to use this into a WiFi co-processsor over SPI + 2 pins](https://github.com/ladyada/Adafruit_CircuitPython_ESP32SPI). We also toss in some header so you can solder it in and plug into a solderless breadboard.&nbsp;

Here are&nbsp;[specifications from Espressif about the ESP32](https://espressif.com/en/products/hardware/esp32/overview):

- 240 MHz dual&nbsp;core Tensilica LX6&nbsp;microcontroller&nbsp;with 600 DMIPS
- Integrated 520 KB SRAM
- Integrated 802.11b/g/n HT40 Wi-Fi transceiver, baseband, stack and LWIP
- Integrated dual mode Bluetooth (classic and BLE)
- 4 MByte flash include in the WROOM32 module
- On-board PCB antenna
- Ultra-low noise analog amplifier
- Hall sensor
- 10x capacitive touch interface
- 32 kHz crystal oscillator
- 3 x UARTs (only two are configured by default in the Feather Arduino IDE support, one UART is used for bootloading/debug)
- 3 x SPI (only one is configured by default in the Feather Arduino IDE support)
- 2 x I2C (only one is configured by default in the Feather Arduino IDE support)
- 12 x ADC input channels
- 2 x I2S Audio
- 2 x DAC
- PWM/timer input/output available on every GPIO pin
- OpenOCD debug interface with 32 kB TRAX buffer
- SDIO main/secondary 50 MHz
- SD-card interface support

![](https://cdn-learn.adafruit.com/assets/assets/000/074/366/medium800/adafruit_products_ESP_Huzzah_Bottom.jpg?1555002555)

# Adafruit HUZZAH32 – ESP32 Breakout Board

## Pinouts

One of the great things about the ESP32 is that it has tons more GPIO than the ESP8266. You _won't_ have to juggle or multiplex your IO pins! There's a few things to watch out for so please read through the pinouts carefully

![](https://cdn-learn.adafruit.com/assets/assets/000/075/655/medium800/adafruit_products_pinout.jpg?1557715199)

![](https://cdn-learn.adafruit.com/assets/assets/000/112/292/medium800/adafruit_products_Adafruit_ESP32_Huzzah_Breakout_Pinout.png?1654548847)

[Click here to view a PDF version of the pinout diagram](https://github.com/adafruit/Adafruit-ESP32-HUZZAH-Breakout-PCB/blob/master/Adafruit%20ESP32%20Huzzah%20Breakout%20Pinout.pdf)

# Power Pins
![](https://cdn-learn.adafruit.com/assets/assets/000/075/656/medium800/adafruit_products_power.jpg?1557715246)

- **GND** - this is the common ground for all power and logic
- **BAT** - this is the positive voltage to/from the JST jack on the back as well as input into the 3.3V regulator
- **V+** - this is the positive voltage from the USB-to-Serial converter if one is plugged into the 6-pin header
- **3V** - this is the output from the 3.3V regulator. The regulator can supply 500mA peak but half of that is drawn by the ESP32, and it's a fairly power-hungry chip. So if you need a ton of power for stuff like LEDs, motors, etc. Use the **USB** or **BAT** pins, and an additional regulator

# Serial pins

**RX** and **TX** are the main Serial pins, and are connected to the USB/Serial converter. These are for use to program/bootload or debug the ESP32. They shouldn't be connected to any other hardware since the bootloader uses these pins only!

![](https://cdn-learn.adafruit.com/assets/assets/000/075/657/medium800/adafruit_products_rxtx.jpg?1557715340)

# Logic pins

This is the general purpose I/O pin set for the microcontroller. All logic is 3.3V

Warning: 

There are tons of GPIO and analog inputs available to you for connecting LEDs, buttons, switches, sensors, etc. Here's the remaining pins available. Note that SPI/I2C/UART can be on any pins but we mark out the ones we've set up in our Arduino definition which is probably what you want. Likewise for the analog pin names.

- **IO0** - Used primarily for bootloader detect. Hold low while resetting to enter the bootloader. This is also connected to a small tactile button on the board.
- **IO2** - This is GPIO #2
- **IO4** - This is GPIO #4 and also an analog input **A5** on ADC #2.
- **IO5** - This is GPIO #5 and also SPI **SCK**
- **IO12** - This is GPIO #12 and also an analog input **A11** on ADC #2. This pin has a pull-down resistor built into it, we recommend using it as an output only, or making sure that the pull-down is not affected during boot.
- **IO13** - This is GPIO #13 and also an analog input **A12** on ADC #2. It's also connected to the red LED next to the USB port
- **IO14** - This is GPIO #14 and also an analog input **A6** on ADC #2
- **IO15** - This is GPIO #15 and also an analog input **A8** on ADC #2
- **IO16** - This is GPIO #16&nbsp; and also Serial1 **RX**
- **IO17** - This is GPIO #17 and also Serial1 **TX**
- **IO18** - This is GPIO #18 and also SPI **MOSI**
- **IO19** - This is GPIO #19 and also SPI **MISO**
- **IO21** - This is GPIO #21
- **IO22** - This is GPIO #22 and also I2C **SCL**
- **IO23** - This is GPIO #23 and also I2C **SDA**
- **IO25** - This is GPIO #25 and an analog input **A1** on ADC #2 and also an analog output DAC1
- **IO26** - This is GPIO #26 and an analog input **A0** on ADC #2 and also an analog output DAC2
- **IO27** - This is GPIO #27 and also an analog input **A10** on ADC #2
- **IO32** - This is GPIO #32 and also an analog input **A7** on ADC #1. It can also be used to connect a 32 KHz crystal.
- **IO33** - This is GPIO #33 and also an analog input **A9** on ADC #1. It can also be used to connect a 32 KHz crystal.
- **I34** - This is GPI #34 and also an analog input **A2**. Note it is _not_ an output-capable pin! It uses ADC #1
- **I35** - This is GPI #35 and also an analog input **A13**. Note it is _not_ an output-capable pin! It uses ADC #1
- **I36** - This is GPI #36 and also an analog input **A4**. Note it is _not_ an output-capable pin! It uses ADC #1
- **I39** - This is GPI #39 and also an analog input **A3**. Note it is _not_ an output-capable pin! It uses ADC #1

Note you cannot read analog inputs on&nbsp; **ADC #2** &nbsp;once WiFi has started as it is shared with the WiFi module.

## JST Connector Pads

On the back of the board are four pads, designed for a JST connector that, when soldered on, allows you to plug in a lipoly battery.

![](https://cdn-learn.adafruit.com/assets/assets/000/108/985/medium800/adafruit_products_Huzzah32Breakout_back.jpg?1644860944)

# Adafruit HUZZAH32 – ESP32 Breakout Board

## Using with Arduino IDE

In order to upload code to the ESP32 and use the serial console, you will need a USB to serial converter! [Use either an FTDI cable](https://www.adafruit.com/product/70) or [any console cable](https://www.adafruit.com/products/954), you can use either 3V or 5V logic and power as there is level shifting on the RX pin.

Warning: 

# Connect USB-Serial cable

Connect either your console cable or FTDI cable. If using FTDI, make sure the black wire goes to the GND (ground) pin

_We show a Huzzah ESP8266 in this photo but the connection setup is the same_

![](https://cdn-learn.adafruit.com/assets/assets/000/075/658/medium800/adafruit_products_ftdiconnect.jpg?1557716582)

If using a console cable, connect the black wire to ground, red wire to **V+** , white wire to **TX** and green wire to **RX**

_We show a Huzzah ESP8266 in this photo but the connection setup is the same_

![](https://cdn-learn.adafruit.com/assets/assets/000/075/659/medium800/adafruit_products_console.jpg?1557716586)

Don't forget you may also need to install the SiLabs CP2104 Driver or FTDI driver for your cable!

[Click here to download the CP2104 USB Driver](http://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers)
[Click here to download the FTDI USB Driver](https://www.ftdichip.com/Drivers/VCP.htm)
# Install the Arduino IDE & ESP32 package

[Download the latest Arduino IDE from Arduino.cc! You can use your existing IDE if you have already installed it](http://www.arduino.cc/en/Main/Software)

We primarily recommend using the ESP32 Huzzah with Arduino.

[Check out the Espressif Arduino repository for details on how to install it](https://github.com/espressif/arduino-esp32#using-through-arduino-ide)

Once installed, use the **Adafruit ESP32 Feather** board in the dropdown

For **Upload speed** we've found **921600** baud works great, **but use 115200** if you're having upload issues.

![](https://cdn-learn.adafruit.com/assets/assets/000/041/643/medium800/feather_board.png?1494452059)

# Blink Test

We'll begin with the simple blink test

Enter this into the sketch window (and save since you'll have to)

```auto
void setup() {
  pinMode(13, OUTPUT);
}

void loop() {
  digitalWrite(13, HIGH);
  delay(500);
  digitalWrite(13, LOW);
  delay(500);
}
```

Now you'll need to put the board into bootload mode. You'll have to do this before each upload. There is no timeout for bootload mode, so you don't have to rush!

1. Hold down the **GPIO0** button
2. While holding down **GPIO0** , click the **RESET** button
3. Release **RESET** , then release **GPIO0**

Once the ESP board is in bootload mode, upload the sketch via the IDE

![](https://cdn-learn.adafruit.com/assets/assets/000/075/660/medium800/adafruit_products_image.png?1557717118)

During upload if you see

`esptool.py v2.6`  
`Serial port COM22`  
`Connecting........ _____....._____..... _____.....____ `

Try resetting the board into bootloader mode again, by holding down the **GPIO0** button and pressing **Reset** then releasing **GPIO0**

If the upload is successful, it should end with this message:

```cpp
Hard resetting via RTS pin...
```

Once you see that, press the **RESET** button and the sketch will then run.

# Adafruit HUZZAH32 – ESP32 Breakout Board

## ESP32 F.A.Q

Some pins are special about the ESP32 - here's a list of 'notorious' pins to watch for!

- **A2 / I34** - this pin is an _input only!_ You can use it as an analog input so we suggest keeping it for that purpose
- **A3 / I39** - this pin is an _input only!_ You can use it as an analog input so we suggest keeping it for that purpose
- **A4 / I36** - this pin is an _input only_! You can use it as an analog input so we suggest keeping it for that purpose
- **IO12** - this pin has an internal pulldown, and is used for booting up. We recommend not using it or if you do use it, as an output only so that nothing interferes with the pulldown when the board resets
- **A13 / I35** - this pin is not exposed, it is used only for measuring the voltage on the battery. The voltage is divided by 2 so be sure to double it once you've done the analog reading

### Why does the yellow CHARGE LED blink while USB powered?

The charging circuit will flash when there is no LiPoly battery plugged in. It's harmless and doesn't mean anything. When a LiPoly battery is connect it will stabilize the charger and will stop flashing

### Why can I not read analog inputs once WiFi is initialized?

Due to the design of the ESP32, **ADC2** is not available once WIFi has started. You can still use **ADC1** even if WiFi is in use.

### Why is Serial.read() not working as expected on ESP32 Breakout? 

This is a minor design issue with the initial version of the Breakout (does not apply to Feather version). If you are having issues similar to the [discussion here](https://forums.adafruit.com/viewtopic.php?f=57&t=153553), try the trick of enabling the internal pull-up as [described here](https://forums.adafruit.com/viewtopic.php?f=57&t=153553#p769168).

# Adafruit HUZZAH32 – ESP32 Breakout Board

## Downloads

## Files

- [EagleCAD PCB files on GitHub](https://github.com/adafruit/Adafruit-ESP32-HUZZAH-Breakout-PCB)
- [Fritzing object on Adafruit Fritzing Library](https://github.com/adafruit/Fritzing-Library/blob/master/parts/Adafruit%20ESP32%20Huzzah%20Breakout.fzpz)
- [PDF for Huzzah32 Breakout Board Diagram on GitHub](https://github.com/adafruit/Adafruit-ESP32-HUZZAH-Breakout-PCB/blob/master/Adafruit%20ESP32%20Huzzah%20Breakout%20Pinout.pdf)

[SVG for Huzzah32 Breakout Board Diagram](https://cdn-learn.adafruit.com/assets/assets/000/112/293/original/Adafruit_ESP32_Huzzah_Breakout_Pinout.svg?1654548888)
# Schematic
![](https://cdn-learn.adafruit.com/assets/assets/000/074/367/medium800/adafruit_products_ESP_HUZZAH_Sch.png?1555002935)

# Fab Print
![](https://cdn-learn.adafruit.com/assets/assets/000/074/368/medium800/adafruit_products_ESP_HUZZAH_Fab_Print.png?1555002958)


## Primary Products

### Adafruit HUZZAH32 – ESP32 Breakout Board

[Adafruit HUZZAH32 – ESP32 Breakout Board](https://www.adafruit.com/product/4172)
Squeeeeze down your next ESP32 project to its bare-bones essential with the **Adafruit HUZZAH32 Breakout**. This breakout is basically the 'big sister' of our HUZZAH 8266, but instead of an ESP8266 it has the '32! We've pared down our popular <a...></a...>

In Stock
[Buy Now](https://www.adafruit.com/product/4172)
[Related Guides to the Product](https://learn.adafruit.com/products/4172/guides)

## Featured Products

### FTDI Serial TTL-232 USB Cable

[FTDI Serial TTL-232 USB Cable](https://www.adafruit.com/product/70)
Just about all electronics use TTL serial for debugging, bootloading, programming, serial output, etc. But it's rare for a computer to have a serial port anymore. This is a USB to TTL serial cable, with a FTDI FT232RL usb/serial chip embedded in the head. It has a 6-pin socket at the end...

In Stock
[Buy Now](https://www.adafruit.com/product/70)
[Related Guides to the Product](https://learn.adafruit.com/products/70/guides)
### FTDI Friend with Micro USB Port + extras

[FTDI Friend with Micro USB Port + extras](https://www.adafruit.com/product/284)
Long gone are the days of parallel ports and serial ports. Now the USB port reigns supreme! But USB is hard, and you just want to transfer your every-day serial data from a microcontroller to computer. What now? Enter the FTDI Friend!

The FTDI Friend is a tweaked out FTDI FT232RL chip...

In Stock
[Buy Now](https://www.adafruit.com/product/284)
[Related Guides to the Product](https://learn.adafruit.com/products/284/guides)
### Adafruit CP2104 Friend - USB to Serial Converter

[Adafruit CP2104 Friend - USB to Serial Converter](https://www.adafruit.com/product/3309)
Discontinued - **you can grab** [Adafruit CP2102N Friend - USB to Serial Converter&nbsp;](https://www.adafruit.com/product/5335) **instead!&nbsp;**

Long gone are the days of parallel ports and serial ports. Now the USB port reigns supreme! But USB is hard, and you just...

No Longer Stocked
[Buy Now](https://www.adafruit.com/product/3309)
[Related Guides to the Product](https://learn.adafruit.com/products/3309/guides)
### USB to TTL Serial Cable - Debug / Console Cable for Raspberry Pi

[USB to TTL Serial Cable - Debug / Console Cable for Raspberry Pi](https://www.adafruit.com/product/954)
The cable is easiest way ever to connect to your microcontroller/Raspberry Pi/WiFi router serial console port. Inside the big USB plug is a USB\<-\>Serial conversion chip and at the end of the 36" cable are four wire - red power, black ground, white RX into USB port, and green TX out...

In Stock
[Buy Now](https://www.adafruit.com/product/954)
[Related Guides to the Product](https://learn.adafruit.com/products/954/guides)

## Related Guides

- [Adafruit HUZZAH ESP8266 breakout](https://learn.adafruit.com/adafruit-huzzah-esp8266-breakout.md)
- [Building and Running MicroPython on the ESP8266](https://learn.adafruit.com/building-and-running-micropython-on-the-esp8266.md)
- [Adafruit MENTA Kit](https://learn.adafruit.com/adafruit-menta-kit-mint-tin-arduino-compatible.md)
- [Trinket / Gemma IR Control](https://learn.adafruit.com/trinket-gemma-ir-remote-control.md)
- [CircuitPython Libraries on Linux and ODROID C2](https://learn.adafruit.com/circuitpython-libaries-linux-odroid-c2.md)
- [Introducing Bluefruit EZ-Key](https://learn.adafruit.com/introducing-bluefruit-ez-key-diy-bluetooth-hid-keyboard.md)
- [Trinket Powered Analog Meter Clock](https://learn.adafruit.com/trinket-powered-analog-meter-clock.md)
- [DC & USB Boarduino Kits](https://learn.adafruit.com/boarduino-kits.md)
- [How to Find Hidden COM Ports](https://learn.adafruit.com/how-to-find-hidden-com-ports.md)
- [Internet of Things Printer](https://learn.adafruit.com/internet-of-things-printer.md)
- [XBee Radios](https://learn.adafruit.com/xbee-radios.md)
- [Home Automation in the Cloud with the ESP8266 & Adafruit IO](https://learn.adafruit.com/home-automation-in-the-cloud-with-the-esp8266-and-adafruit-io.md)
- [FTDI Friend](https://learn.adafruit.com/ftdi-friend.md)
- [Adafruit USB Power Gauge Mini-Kit](https://learn.adafruit.com/adafruit-usb-power-gauge-mini-kit.md)
- [Bootloading Basics](https://learn.adafruit.com/bootloader-basics.md)
