Professional Documents
Culture Documents
Adafruit Huzzah32 Esp32 Feather
Adafruit Huzzah32 Esp32 Feather
https://learn.adafruit.com/adafruit-huzzah32-esp32-feather
Overview 3
Pinouts 6
• Power Pins
• Logic pins
• Serial pins
• I2C & SPI pins
• GPIO & Analog Pins
Assembly 10
• Header Options!
• Soldering in Plain Headers
• Prepare the header strip:
• Add the breakout board:
• And Solder!
• Soldering on Female Header
• Tape In Place
• Flip & Tack Solder
• And Solder!
Power Management 20
• Battery + USB Power
• Power Supplies
• Measuring Battery
• ENable pin
• Alternative Power Options
WipperSnapper Setup 25
• What is WipperSnapper
• Sign up for Adafruit.io
• Add a New Device to Adafruit IO
• Feedback
• Troubleshooting
• "Uninstalling" WipperSnapper
WipperSnapper Usage 31
• Blink a LED
• Read a Push-Button
• Read an I2C Sensor
• Going Further
ESP32 F.A.Q 44
Downloads 45
• Files
• Schematic and Fabrication print
Aww yeah, it's the Feather you have been waiting for! The HUZZAH32 is our ESP32-
based Feather, made with the official WROOM32 module. We packed everything you
love about Feathers: built in USB-to-Serial converter, automatic bootloader reset,
Lithium Ion/Polymer charger, and all the GPIO brought out so you can use it with any
of our Feather Wings.
That module nestled in at the end of this Feather 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 and 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! We think that as the
ESP32 gets traction, we'll see more people move to this chip exclusively, as it is so
full-featured.
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
• GND - this is the common ground for all power and logic
• BAT - this is the positive voltage to/from the JST jack for the optional Lipoly
battery
• USB - this is the positive voltage to/from the micro USB jack if connected
• EN - this is the 3.3V regulator's enable pin. It's pulled up, so connect to ground
to disable the 3.3V regulator
• 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.
Logic pins
This is the general purpose I/O pin set for the microcontroller. All logic is 3.3V
The ESP32 runs on 3.3V power and logic, and unless otherwise specified, GPIO
pins are not 5V safe!
Serial pins
RX and TX are the additional Serial1 pins, and are not connected to the USB/Serial
converter. That means you can use them to connect to UART-devices like GPS's,
fingerprint sensors, etc.
The TX pin is the output from the module. The RX pin is the input into the module.
Both are 3.3V logic
There are tons of GPIO and analog inputs available to you for connecting LEDs,
buttons, switches, sensors, etc. Here's the remaining pins available.
Bottom row:
• A0 - this is an analog input A0 and also an analog output DAC2. It can also be
used as a GPIO #26. It uses ADC #2
• A1 - this is an analog input A1 and also an analog output DAC1. It can also be
used as a GPIO #25. It uses ADC #2
• A2 - this is an analog input A2 and also GPIO #34. Note it is not an output-
capable pin! It uses ADC #1
Top row:
• 13 - 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
• 12 - 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.
• 27 - This is GPIO #27 and also an analog input A10 on ADC #2
• 33 - This is GPIO #33 and also an analog input A9 on ADC #1. It can also be
used to connect a 32 KHz crystal.
• 15 - This is GPIO #15 and also an analog input A8 on ADC #2
• 32 - This is GPIO #32 and also an analog input A7 on ADC #1. It can also be
used to connect a 32 KHz crystal.
• 14 - This is GPIO #14 and also an analog input A6 on ADC #2
• A13 - This is general purpose input #35 and also an analog input A13, which is a
resistor divider connected to the VBAT line
Note you can only read analog inputs on ADC #2 once WiFi has started as it is shared
with the WiFi module.
Assembly
We ship Feathers fully tested but without headers attached - this gives you the most
flexibility on choosing how to use and configure your Feather
Header Options!
Before you go gung-ho on soldering, there's a few options to consider!
And Solder!
Be sure to solder all pins for reliable
electrical contact.
Tape In Place
For sockets you'll want to tape them in
place so when you flip over the board they
don't fall out
Power Management
1. You can connect with a Micro USB cable (just plug into the jack) and the Feather
will regulate the 5V USB down to 3.3V.
2. You can also connect a 4.2/3.7V Lithium Polymer (LiPo/LiPoly) or Lithium Ion
(LiIon) battery to the JST jack. This will let the Feather run on a rechargeable
battery.
When the USB power is powered, it will automatically switch over to USB for power,
as well as start charging the battery (if attached). This happens 'hot-swap' style so you
can always keep the LiPoly connected as a 'backup' power that will only get used
when USB power is lost.
The JST connector polarity is matched to Adafruit LiPoly batteries. Using wrong
polarity batteries can destroy your Feather.
The above shows the Micro USB jack (left), LiPoly JST jack (top left), as well as the
3.3V regulator (to the right of the JST jack), changeover diode+transistor (below the
JST jack) and the LiPoly charging circuitry (right below the regulator).
There's also a CHG LED next to the USB jack, which will light up while the battery is
charging. This LED might also flicker if the battery is not connected, it's normal.
Please budget 250mA for the WROOM32 module. We use this to power the ESP32
which draws about 200mA continuous. The good news is you can put the ESP32 into
sleep and low-power modes much easier.
Measuring Battery
If you're running off of a battery, chances are you wanna know what the voltage is at!
That way you can tell when the battery needs recharging. LiPoly batteries are 'maxed
out' at 4.2V and stick around 3.7V for much of the battery life, then slowly sink down
to 3.2V or so before the protection circuitry cuts it off. By measuring the voltage you
can quickly tell when you're heading below 3.7V.
Since the ESP32 has tons of ADC pins, we 'sacrifice' one for Lipoly battery monitoring.
You can read half of the battery voltage off of A13. Don't forget to double the voltage
you read, since there is a divider.
This will turn off the ESP32 processor as well as all onboard circuitry except the USB-
Serial converter.
• Do not use alkaline or NiMH batteries and connect to the battery port - this will
destroy the LiPoly charger and there's no way to disable the charger
• Do not use 7.4V RC batteries on the battery port - this will destroy the board
The Feather is not designed for external power supplies - this is a design decision to
make the board compact and low cost. It is not recommended, but technically
possible:
• Connect an external 3.3V power supply to the 3V and GND pins. Not
recommended, this may cause unexpected behavior and the EN pin will no
longer. Also this doesn't provide power on BAT or USB and some Feathers/
Wings use those pins for high current usages. You may end up damaging your
Feather.
• Connect an external 5V power supply to the USB and GND pins. Not
recommended, this may cause unexpected behavior when plugging in the USB
port because you will be back-powering the USB port, which could confuse or
damage your computer.
Check out the Espressif Arduino repository for details on how to install it (https://
adafru.it/weF)
Don't forget you will also need to install the SiLabs CP2104 Driver
Once installed, use the Adafruit ESP32 Feather board in the dropdown
The ESP32 uses a fair amount of current, so if you're getting flakey behavior
make sure you are plugging your console cable into either a motherboard USB
port or a powered USB hub. Don't use the 'extra' USB port on your monitor or
keyboard.
WipperSnapper Setup
The WipperSnapper firmware and ecosystem are in BETA and are actively being
developed to add functionality, more boards, more sensors, and fix bugs. We
encourage you to try out WipperSnapper with the understanding that it is not
final release software and is still in development.
If you encounter any bugs, glitches, or difficulties during the beta period, or with
this guide, please contact us via http://io.adafruit.com/support
Simply load the WipperSnapper firmware onto your board, add credentials, and plug it
into power. Your board will automatically register itself with your Adafruit IO account.
From there, you can add components to your board such as buttons, switches,
potentiometers, sensors, and more! Components are dynamically added to hardware,
so you can immediately start interacting, logging, and streaming the data your
projects produce without writing code.
You will need an Adafruit IO account to use WipperSnapper on your board. If you do
not already have one, head over to io.adafruit.com (https://adafru.it/fsU) to create a fre
e account.
Log into your Adafruit IO (https://adafru.it/fsU) account. Click the New Device button
at the top of the page.
After clicking New Device, you should be on the board selector page. This page
displays every board that is compatible with the WipperSnapper firmware.
If the installation was successful, a popover should appear displaying that your board
has successfully been detected by Adafruit IO.
Feedback
If you have suggestions or general feedback about the installation process - visit http
s://io.adafruit.com/support (https://adafru.it/Sgb), click "Contact Adafruit IO Support"
and select "I have feedback or suggestions for the WipperSnapper Beta".
If you encountered an issue during installation, please try the steps below first.
If you're still unable to resolve the issue, or if your issue is not listed below, get in
touch with us directly at https://io.adafruit.com/support (https://adafru.it/Sgb). Make
sure to click "Contact Adafruit IO Support" and select "There is an issue with
WipperSnapper. Something is broken!"
Next, please make sure that you entered your WiFi credentials properly, there are
no spaces/special characters in either your network name (SSID) or password, and
that you are connected to a 2.4GHz wireless network.
If you're still unable to connect your board to WiFi, please make a new post on the
WipperSnapper technical support forum with the error you're experiencing, the
LED colors which are blinking, and the board you're using. (https://adafru.it/V6a)
"Uninstalling" WipperSnapper
• If you are unable to double-tap the RST button to enter the UF2 bootloader,
follow the "Factory Resetting a WipperSnapper Board" instructions below.
If you want to use your board with Arduino, you will use the Arduino IDE to load any
sketch onto your board.
First, follow the page below to set up your Arduino IDE environment for use with your
board.
Then, follow the page below to upload the "Arduino Blink" sketch to your board.
Sometimes, hardware gets into a state that requires it to be "restored" to the original
state it shipped in. If you'd like to get your board back to its original factory state,
follow the guide below.
Note: There is no "Factory Reset" binary file available for this board. You will need to
upload the "Blink" sketch to your board per the instructions above.
There's a large number of components (physical parts like buttons, switches, sensors,
actuators) supported by the WipperSnapper firmware, this page will get you started
with the core concepts to build an IoT project with Adafruit IO.
This page assumes that you have installed WipperSnapper on your Feather and
registered it with the Adafruit.io WipperSnapper web page. If you have not done
this yet, please go back to the previous page in this guide and connect your
Feather.
Blink a LED
One of the first programs you typically write to get used to embedded programming is
a sketch that repeatably blinks an LED. IoT projects are wireless so after completing
this section, you'll be able to turn on (or off) the LED built into your Feather from
anywhere in the world.
In this demo, we show controlling an LED from Adafruit IO. But the same kind of
control can be used for relays, lights, motors, or solenoids.
• If the Feather appears offline on the website but was previously connected,
press the Reset (RST) button to force the board to reboot.
Once verified that the device is online, click the device tile to navigate to the device's
interface page.
Add a new component to your Feather by clicking the + button or the + New
Component button on the device interface.
Feathers contain GPIO pins that can be configured either as an input or an output.
The "Create LED Component" screen tells WipperSnapper to configure a general-
purpose output pin connected to the LED on your Feather as a digital output so you
can turn the LED on or off.
The Feather ESP32 has a built-in LED located at pin D13. Select this pin as the LED
Pin and click Create Component
On the device interface, toggle the LED component by clicking the toggle switch. This
should turn your Feather's built-in LED on or off.
You can also configure a board running WipperSnapper to wirelessly read data from
standard input buttons, switches, or digital sensors, and send the value to Adafruit IO.
Let's wire up a push button to your Feather and configure it with Adafruit IO to publish
a value to Adafruit IO when the button has been pressed or depressed.
Wiring
We'll be using the Feather's internal pull-up resistors instead of a physical resistor.
On the device interface, add a new component to your Feather by clicking the + butto
n or the + New Component button on the device interface.
The next screen presents you with options for configuring the push button. Start by
selecting the Feather's digital pin you connected to the push button.
Select On Change
Finally, check the Specify Pin Pull Direction checkbox and select Pull Up to turn on the
Feather's internal pullup resistor.
Typically, using I2C with a microcontroller involves programming. Adafruit IO lets you
configure a microcontroller to read data from an I2C sensor and publish that data to
the internet without writing code.
The process for adding an I2C component to your board running WipperSnapper is
similar to most sensors. For this section, we're using the Adafruit AHT20 (https://
Wiring
First, wire up an AHT20 sensor to your board exactly as follows. Here is an example
of the AHT20 wired to a Feather using I2C with a STEMMA QT cable (no soldering
required) (https://adafru.it/FA-).
First, ensure that you've correctly wired the AHT20 sensor to your Feather by
performing an I2C scan to detect the I2C device on the bus.
On the upper right-hand corner of the device interface, click Start I2C Scan.
• If you do not see this button, double-check that your Feather shows as Online.
Now that you know the sensor can be detected by the Feather, it's time to configure
and create the sensor on Adafruit IO.
On the device interface, add a new component to your Feather by clicking the + butto
n or the + New Component button on the device interface.
On the component configuration page, the AHT20's I2C sensor address should be
listed along with the sensor's settings.
The AHT20 sensor can measure ambient temperature and relative humidity. This
page has individual options for reading the temperature and the relative humidity.
This comes in handy in the case where you have multiple I2C sensors connected to
your Feather which read the same value. You may choose to enable or disable a
specific sensor type on this page.
The Send Every option is specific to each sensor measurements . This option will tell
the Feather how often it should read from the AHT20 sensor and send the data to
Adafruit IO. Measurements can range from every 30 seconds to every 24 hours.
For this example, set the Send Every interval for both seconds to Every 30 seconds
and click Create Component.
After the interval you configured elapses, WipperSnapper automatically reads values
from the sensor and sends them to Adafruit IO.
Going Further
• 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
• 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