Sparkfun support will be closed from 3:00PM to 4:15PM on April 27th for a company-wide townhall meeting. We will resume regular hours on the 28th.

Creative Commons images are CC BY-NC-SA 3.0

SparkFun ESP32 Thing
project on
hackster.io project

rotary quadrature encoder: let's make a digital safe...
by Tyeth

Description: The SparkFun ESP32 Thing is a comprehensive development platform for Espressif’s ESP32, their super-charged version of the popular ESP8266. Like the 8266, the ESP32 is a WiFi-compatible microcontroller, but to that it adds support for Bluetooth low-energy (i.e BLE, BT4.0, Bluetooth Smart), and nearly 30 I/O pins. The ESP32’s power and versatility will make it the foundation of IoT and connected projects for many years to come.

Why the name? We lovingly call it the “Thing” because it’s the perfect foundation for your Internet of Things project. The Thing does everything from turning on an LED to posting data with phant.io, and can be programmed just like any microcontroller. You can even program the Thing through the Arduino IDE by installing the ESP32 Arduino Core.

The SparkFun ESP32 Thing equips the ESP32 with everything necessary to program, run and develop on the wonderchip. In addition to the WiFi/BLE SoC, the Thing includes an FTDI FT231x, which converts USB to serial, and allows your computer to program and communicate with the microcontroller. It also features a LiPo charger, so your ESP32 project can be battery-powered and truly wireless. Additionally, the board includes a handful of LEDs and buttons to aid in your development.

Get Started with the ESP32 Thing Guide


  • Dual-core Tensilica LX6 microprocessor
  • Up to 240MHz clock frequency
  • 520kB internal SRAM
  • Integrated 802.11 BGN WiFi transceiver
  • Integrated dual-mode Bluetooth (classic and BLE)
  • 2.2 to 3.6V operating range
  • 2.5 µA deep sleep current
  • 28 GPIO
  • 10-electrode capacitive touch support
  • Hardware accelerated encryption (AES, SHA2, ECC, RSA-4096)
  • 4MB Flash memory
  • Integrated LiPo Battery Charger


Recommended Products

Customer Comments

  • Well that sold out quickly. Any ETA on the next batch?

  • No U.FL antenna connector?

  • Are there dimensions available? I’d like to make a small PCB around this.

  • Hey, I’m getting an issue with the ESP32 (https://github.com/espressif/esp32-at/issues/12) and Espressif told me to “erase all flash and try again.” I’m using the Arduino IDE. Can anyone point me in the right direction?

  • I was looking at the layout and I don’t think C23 serves any purpose. It looks like it was left behind from an older design? Can someone confirm that this is unnecessary?

  • What’s the max current per I/O pin?

  • I’m seeing an issue where the processor falls back into interpreter mode when I connect something to pin 12. After looking at the schematic it looks like this is an MTDI pin which has some special startup purpose? Is there anything I can do to allow me to use this pin?

  • Does anyone know how to fix this error when uploading to the ESp32 Thing with the Arduino IDE.

    “A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header”

    thanks for any help

    • I had the same error among others. I am using the Arduino IDE on Windows 10 per the instructions on Git. I got uploading to work by connecting Pin 0 to GND per one of the comments in the reviews section. After that I got some different error messages, and on the 4th or 5th attempt it finally uploaded everything. I didn’t do anything with the reset button. I think connecting Pin 0 to GND maybe reduces some noise…(use short jumper)? Use as short a USB cable as possible too, and just click upload again until it works. Good Luck!

  • The Espressif CEO mentioned in a Facebook post (https://www.facebook.com/groups/1499045113679103/permalink/1731855033731442/?hc_location=ufi) that the ESP32 and ESP8266 have 5v tolerant GPIO. Can you confirm that this is the case on the ESP32 Thing and a 5V input won’t fry anything?

  • There appears to be a typo on the graphical datasheet with GPIO2 labeled as GPIO21.

  • Does anyone else have trouble with the ESP32 chip getting very hot (I’ve measured at about 46 C max – painful to the touch within a few seconds) and possibly having flaky behavior because of this? I’ve had this experience and seen some other anecdotal evidence of this on the ESP32 forums. Thanks, -c

  • Has anyone tried capacitive touch?

  • I have the ESP32 Thing and got it working in Arduino IDE. I can down load blink and other Sketches. When I wrote a Sketch for the WS2812B and use getCycleCount(void) for timing cycles it looks like the ESP32 is running at 160MHz instead of 240MHz that is in the default in the Espressif’s esp-idf GitHub repository. I selected ESP32 DEV MODULE in Arduino IDE.

    Any suggestions on how to switch to the faster speed?

    My Sketch stops executing after about 45 seconds of running my application. Resetting start it back up for about 45 seconds. The problem looks like it is in the Arduino delayMicroseconds(100); which I call every 1ms. If I replace this with delay(1); or use _getCycleCount() spin delay I do not have a problem.

    When i am outputting the Neopixel BitBanger I lock interrupts during the high state to insure timing. I notice that the CPU looks like it stops executing every 1ms for about 8.5us. It does not matter if interrupts are locked or not. This is a show stopper for outputting to Neopixels. Could this have something to do with the second CPU servicing WIFI beacon (every 1ms) and locking I/O inhibiting my CPU from doing GPIOs?

  • Just checking - do these come with male headers for breadboarding?

    • Because of the various uses (male headers for breadboarding, female headers for plugging jumper wires in directly, or just soldering wires and parts directly on the board) we do not include headers on most of our boards.

  • GPIOs 7–11 (SDIO) aren’t broken out? Can I not use an SD card in 4-bit mode with this board?

    • If you solder wires to the onboard flash chip’s legs then you get the GPIO6-11 :) But there’s the HS2/SDIO2 interface which can be used for 4-bit SD cards, and those pins are broken out.

  • Hello I tried to hook up a serial LCD on the RX/TX pin but it seem the 32Thing doesn’t like that I get this error and so far I tried to tweak the libraries but no luck so far. It’s also the case for the SPI too.

    fatal error: avr/interrupt.h: No such file or directory #include <avr/interrupt.h> compilation terminated. exit status 1 Error compiling for board ESP32 Dev Module.

    • According to GIT SPI and Serial are implemented in the Arduino Core. Can you post the code so we can try it out ourselves?

      • Sure I tried both code from the tutorial over here adjusting the pins (I post the link to avoid polluting the thread with code too much.) https://www.sparkfun.com/tutorials/246

        Thanks for the help :)

        • Ok it might be a day or so b4 I get to it. I have a lot of cooking to prep for tomorrow.

  • When using a single cell LiPo, how do you set the charging? I assume it’s like the Sparkfun LiPo charger (PRT-12711) where you cut through a trace, connect two jumper pads or use resistors to set the charging system output.

    I’m planning on using the 110mA LiPo battery, PRT-13853.

    Exact specs for that cell would be greatly appreciated. :-)

  • I got one of this in a group buy with a friend, and it’s a wonderful little board. The only issue is that you can’t put a switch between the battery/charge system and the rest of the board. So it keeps discharging unless you unplug the battery. Is there a solution to this other than to splice a switch into the battery connector? That’s not an ideal solution, since you’d still need to have the board powered while charging, which slows the process down.

    Edit: Adding a switch between RST and GND does the trick!

  • I just received this and got it working fine. If you follow the instructions on Github (Sparkfun links to it) everything sets up fine for me. There were a couple of ‘gotchas’

    1. First time I went to build there was a python error (it appears the build process uses python). The error was on the line “import serial” and it was because pyserial was not installed on my machine. If you run into this, try running the following on a command line: pip install pyserial

    2. Sparkfun didn’t say this but one you compile and upload the program doesn’t automatically run (at least for me). The blue led will be dim. Just hit reset and the code will then execute.

    Unlike the ESP8266 you do not need put it in bootloader mode at all. At least… that is how it worked for me :-)

    If I see any other gotchas I’ll post them here.

    • I also think this thing has power consumption ‘features’ like the ESP8266. It is why I need to reset the board on occasion.

      Also SSL doesn’t appear implemented yet. Bummer.

  • Anybody managed to get the install for Arduino on Windows 10? After installing phython 2.7 and downloading the core files, the python get.py simply gives SSL errors and does nothing. (Also tried on 3.? but did not work either.)

    On the Mac I managed to get it to install but I need it running on a Windows laptop.

    • I just followed the instructions and I had no problems except when building in the Arduino IDE I got an error saying that python could not import the serial library but I easily fixed that.

      • Did you got this error by any chance ? “ESP32 Dev Module, 80MHz, 921600” arduino isp programmer

        exec: “python.exe”: executable file not found in %PATH% Error compiling for board ESP32 Dev Module.

        I’m not sure if I’ve missed something. Thanks

        • You either did not install Python 2.7 (not Python 3) or you did but it is not set in your PATH variable. If you installed it you should set your system PATH variable to reflect the directory where it.

  • Does anyone know how to make this RELIABLY load programs from the arduino IDE? It does not work unless you time it VERY EXACTLY (and I am not sure when exactly…) pressing the reset button. I only succeed in uploading once every 20 attempts. This is highly frustrating. Also: there should be a way to get this to load a program and then run without having to press reset so many times. I imagine the scenario where this device is in a box and the reset button hard to reach. Not very convenient so far.

    • I’m sort of seeing a similar thing. I was able to flash it successfully once, both using the Arduino IDE and the esp-idf compiler. However, since, I’m getting stuck at “Writing at 0x00010000… (20 %)”. I see on the reviews that a user was able to fix this by holding the PIN0 button down while flashing, but this doesn’t seem to work for me. Any suggestions?

    • Hi. Mine seems to be working and I am not having the same problem. After following the instructions (use the instructions on GIT release notes not on Sparkfun) I was able to compile and upload. What I noticed was the LED was ‘dim’ and so I hit reset. The code seems to execute fine after that.

      I took the blink program and changed the timing so it would be on for 3 seconds and off for 500 mills. Waited for upload to complete and then hit reset.

  • if my country is on the restricted list, Can i let a backorder? So when you can ship to my country be some of the first?

    • At this point because of the restrictions on this part currently we are restricted until November 27th to only ship to a limited number of countries. The good news is we have multiple batches of The Thing set to be available at that time so anyone that is currently not able to place an order should be able to then!

      If you have any other questions on the issues with exporting or placing an order please contact us in Customer Service at cservice@sparkfun.com.

  • I have been trying to download blink to the code. I very carefully followed the instructions for installing Arduino Core. Everything compiles, but I cannot get it to upload, the connection attempt keeps timing out. I held the 0 button down while starting the upload, nothing.

    I tried running esptool tool directly: ./esptool.py –chip esp32 –port /dev/ttyUSB0 -b 115200 read_mac I also get the timeout message. There I held the 0 button down, started running esptool, and released the button as the connect attempts started.

    I also tried downloading the esp-idf. Same issue.

    I am doing this on an Ubuntu box. I have permissions to write to the serial port. pyserial is installed. Python 2.7.12.

    I notice that the red power light is on, but when I press either the RST button or the 0 button, I see nothing changing with any of the LEDs.


    • Do you see any output on the serial when you press the reset button? By default the bootloader should print out some stuff. And during this, the blue LED next to pin “5” is at about half brightness. (By the way, I’ve ordered 2 boards and both had blink flashed on them by default. I think it’s a “SparkFun default”)

Customer Reviews

3.7 out of 5

Based on 33 ratings:

Currently viewing all customer reviews.

2 of 2 found this helpful:

Nice, especially with LiPo support

I placed several orders for ESP32 based boards, Sparkfun shipped this in just a few days. Still waiting for the rest. It works just fine, and I especially appreciate the LiPo support circuitry. I don’t use the Arduino IDE and could care less about it – the “idf” (new name for the sdk?) for C programming works great.

1 of 1 found this helpful:

The hardware is great!

I’ve just started using the “thing”, but so far have not had any problems installing the arduino core and getting the “hello world” script working on Win 10 pro 64 bit. Looking forward to when the analog support (in/out) is working. Thanks for a nice piece of h/w!

3 of 3 found this helpful:

Great HW on a nicely done board

Even before I received this little piece of beauty I was blown away by its capabilities, reading over all the documentation. Clearly way much more than the ESP8266. With the onboard FTDI, automatic reset mechanism and the extra battery charger, it is an easy-to-handle IoT Thing. The SW side is also great. Following the steps, the esp-idf setup was done quickly (I have a Linux), and setting up a project also took me a few minutes. Then “make flash” and without touching anything, the code is upladed and the board resets. I couldn’t believe how easy it was and that it worked for the first try. Nothing ever works for the first try. :) I won’t use Arduino IDE for this. It is far away from an Arduino, and the guys working on the vitrual core will have a tough time. If you want to use it with the Arduino IDE, please be patient. Otherwise use the esp-idf, which is growing fast, and many things are already there.

1 of 1 found this helpful:

Good reliable product as you would expect from SparkFun

Early in the development phase for this product so you can expect some teething problems with the software IDE. Arduino support is sort of there but as others have said you need to reset it sometimes during load.

I have it running with WiFi and ST7735 LCD and looking good.


1 of 1 found this helpful:

Good board for the ESP32

I have a couple of the ESP32 boards to work with, and I really like the sparkfun variant. So far I have been able to connect to my local WiFi, use the SPI interface to connect to a peripheral, and send the data from the peripheral over WiFi to the sparkfun phant server. Oh, and I can do all this while walking around the office thanks to SparkFun’s forward thinking design that includes a battery connection. On top of this, I was able to use the Arduino IDE as a rapid prototyping tool. Overall a great buy.

1 of 1 found this helpful:

Nice hardware just not ready yet on the software

Arduino is working for the basic! Easy to setup. The IDF sdk is there but a lot of functionality is missing. They should be fine to use in a couple of month. Right now this board is note for beginner. Do not expect to work out of the box. It require a lot of time to setup and work through the documentation. How and i using Windows 10.

1 of 1 found this helpful:

On the bleeding edge

A really cool board. Here is how I used mine. https://github.com/Ebiroll/esp32_ultra The software is still work in progress but already usable.

1 of 1 found this helpful:

Working Great!

Purchased three for a demo/presentation. Just finished my demo code involving accelerometers and LED light strips with MQTT control of same. Finished a burn in test with all three units running for 24 hours today. The ESP32 Thing devices were rock solid, wifi was solid, and MQTT broker server reported solid connections for entire duration. Nice. Using ESP-IDF, FreeRTOS, etc, directly, not using Arduino libraries.

1 of 1 found this helpful:

nice board

Nice board.

Support software works tolerably well under linux. At this point, the environment is good for advanced users. It helps I’ve been using freertos for years.

1 of 1 found this helpful:

Happy with the Thing, so far so good...

Firstly, I had no trouble getting the board running, I just followed the instructions on Espressif’s GitHub site for Windows10 after reading the SparkFun Hookup Guide.

I then loaded about 6 different Arduino sketches starting with Blink, then a small sketch to serial input strings and converted them to ‘float’ (to 6 decimal places) using atof, which worked just fine. Also successfully ran 3 of the WiFi examples. I would love to use the Bluetooth facility at some stage.

I did not have to press ‘reset’ to upload or run sketches and when they finished uploading they ran immediately. I repeated this process using different baud rates, with no problems. After reading some of the other reviews, I just hope my good fortune continues when I use my Thing in my GPS tracking/logging device.

One observation I have is that the board gets quite hot when its working hard, eg. running WiFi sketches. It also got hot when I plugged in a LiPo battery to charge while the board was powered by USB cord from a 5v Power supply. The battery itself did not get hot though. I wonder how normal this is?

Cheers Geoff

1 of 2 found this helpful:

Frustrating set up

After many tries and being utterly frustrated with it I returned it. May provide great features but not the easiest thing to set up.

1 of 4 found this helpful:

Neat device but software environment still very bad

On Windows 10 the instructions on how to make it work in Arduino simply does not work. The phython get.py (using python 2.7) gets SSL errors and simply does not do anything. Searched for solutions but found none.

Managed to get things going on Mac OS.

However things are not rosy here either: The bootloader does not activate unless you press reset in a very precise moment (but it is not documented exactly when). I only succeed in uploading things once every 20 times from Arduino IDE. Also then a second reset is needed to have the program run. This should improve and should be done all by the software.

Also: still not clear how to make the BT and dual processors run.

This looks like it could be a very interesting product, the hardware looks great. However the software tools are simply not working as well as they should.

Yes, the environment for this is still very young, and all feedback is appreciated. I would suggest contacting our Tech Support Team, and see if there are solutions yet for the issues your experiencing.

1 of 7 found this helpful:


Hardware stable and very helpfull for first steps into the ESP32. But the setup for the programming is not professional. Why is it not possible to sell a working IDE. Really, i can’t understand why even the supplier doesn’t deliver a professional IDE.

0 of 3 found this helpful:

Sparkfun needs to improve its processing and shipping orders

My review is about how slow Sparkfun shipping orders. I ordered this item more than a week, the order says barely left their facility. Unacceptable! If you guy want to beat Amazon, you guys needs to improve your shipping and processing orders.

Great capabilities but the libraries are still in development

This board is actually great. Sparkfun made a very nice dev board with this one. No complaints in regard to Sparkfun’s hardware. The ESP-IDF and Arduino libraries are still in development and are missing a few features like captive portal. Overall, the ESP32 is a very interesting IoT chip and I would recommend the ESP32 Thing as a dev board if you are looking to get into using it in a project.

Very good but let down by the USB

I own a couple of the Espressif ESP-DevKit-C boards and wanted to try the sparkfun ESP32 Thing. It arrived promptly. The board is well designed and narrower that the DevKit-C and hence gives me room on a breadboard (just). The primary distinction is the availability of battery socket. This seems to work nicely with 3.7v LIPOs. I also like the position of the buttons free from other components. Less change of “damp hands” shorting something else out.

It does exactly what it claims it does.

My one gripe is that I am having mixed success flashing new programs. If I perform a flash, it may flash the first time, or the second or the third. It seems to have about a 30% success rate at any given go. My DevKit-C flashes first time every time at a whopping 921600 baud … but even bringing the ESP32 Thing down to 115200, I can’t seem to get better than a 50/50 first time flash. I do note that the USB<->UART chip is distinct in ESP32 Thing from DevKit-C. However, once flashed … everything is perfect and the device just keeps on ticking.

Arduino Core Not Finished, but its an Exciting Platform

The combination of Bluetooth and Wifi in this device makes possible interesting applications involving mobile apps and IoT.

That said, as a previous reviewer pointed out, the Arduino Core isn’t finished – but, it’s a start. I’m using a Mac and didn’t have any problem following the instructions to install the core, connecting the ESP32, and programming. I appreciate not having to pull out my FTDI cable since the USB/Serial interface is built in.

Programming from the Arduino IDE happens reliably without pressing a reset button for me. However, after programming, to run the program I do have to press reset. Not a huge inconvenience, but …

Release notes for the Arduino Core mention that WiFi Client/Server aren’t working fully yet. Though, digital i/o, interrupts, Serial, SPI, Wire, and WiFi are generally working. No mention of Bluetooth, cap-sense, encryption or other features on the ESP32 being supported yet.

So, all said and done, I’m pleased with this “Thing” and looking forward to exploring its possibilities. Though, in the near term, I might look into installing the espressif toolchain instead of relying exclusively on the Arduino Core.

Not quite there yet, Arduino wise.

I have it driving shift registers that are driving nixie tubes, pulling time from the internet, but no access to RTC and BLE. Also it crashes and I don’t seem to get any sort of debug output in the serial monitor to figure out why its crashing. So, looking forward to a better Arduino support for it and more libraries such as RTC and BLE libs. Also better debug support for it. Would like to use this in my nixie clocks to provide Blue tooth and wireless support to set the clock and control settings.

Good potential not good fit.

I currently have a number of projects using the ESP8266 Thing via the Arduino interface. My template is easy to modify and lets me spin up new instances in a few minutes and works seamlessly with the Adafruit Huzzah Feather.

Although I am excited about the cool things the ESP32 Thing can do, until the development tools mature I’ll probably shelve it and devote the time to looking at the Edison!

0 of 6 found this helpful:

NO BLE support, is it a ESP8266 or ESP32 ?

Honestly after buying 4 units, following the install guide for the core in Arduino and realizing that you guys still don’t have to implement BLE was extremely frustrating.

Should be well written on item description as this is a SCAM.


Not Yet Implemented:

Bluetooth Analog Input (analogRead([pin])) Analog Ouptut (analogWrite([pin], [value])) WiFi Server and WiFI UDP Real-Time Clock Touch-controller interface

Please inform when the product actually works.

0 of 1 found this helpful:

Fix for Windows Arduino IDE

Hi- So support found a fix for me today. I was able to upload my first program, however after that, I was stuck. It would error out during the program upload process. The fix is to wire PIN 0 to GND, then flash your code. Once code is uploaded, pull the wire from PIN 0 to GND and hit the RESET button. When you hit RESET, your code will execute.

Hope this helped someone else. Sparkfun tech support was great for helping me to get this working! Hopefully changes to the Arduino IDE component will be made that alleviate this a bit.

Nice board but missing GPIO pins

GPIO pins 6-11 are missing. Why not add 3 pins to each side of the board so you get all of the GPIO? Also, pin 2 is listed as GPIO21 in esp32-thing-graphical-datasheet-v02.png and it is really GPIO2. The same datasheet doesn’t list all of the functions for each pin (e.g. ethernet, rtcio).

ESP32 Maybe!

Trying to get toolchain going has not gone well. Even got a real Expressif dev board and followed their instructions but still getting build errors. Tried to register with them for questions but they have yet to approve my access to their support forums - after a week.

Now I’m very technical and could roll up my sleeves but not having available support at your back eventually fails - been there, done that. This is a great little device if only I could dev for the thing… BTW I don’t mean in debugger-less environment but something real along the lines of atmel studio.

0 of 1 found this helpful:

Still some Technical Hurdles

During the Board Config selection in Arduino, the ESP32’s pins are assigned. Why does This board have the SPI-SS on pin 2 and not pin 5 like every other ESP32? (According to “pins_arduino.h” in the ESP32 Folder.)

This manifests itself in that when you have your SPI device connected, you can’t upload a program!

Review of the board (With notes on the SDK)

The board is fantastic– the only reason I didn’t give it 5 stars is the micro USB port comes off very easily; so keep an FTDI cable handy in case (mine came off the second time I unplugged it.

Now the SDK, which really has no bearing on the quality of the product. The Arduino core isn’t ready to use the full features of the chip. I’d recommend using the ESP Programming Guide (https://esp-idf.readthedocs.io/en/latest/index.html), which allows you to use all the features. But it is a lot to process, so set aside some time.

Overall, the board itself is pretty great! Just keep in mind the platform is under active development.

Sorry to hear about the micro USB port coming off. We’ll be happy to send you a replacement of you’d like, just get in touch with our tech support team, and they’ll hook you up. Happy Hacking!

Works as advertised but no 5 GHz band support

The ESP32 only supports the 2.4 GHz band.

I had an HTTP server up and running in about 2 hours using the examples in the Espressif ESP-IDF SDK.

One out of two units DOA

I ordered two of these units. Just now I discovered one of them is dead on arrival.

Sorry to hear that. Please contact our tech support team, they’ll be able to help you resolve the issue.

0 of 2 found this helpful:

Train wreck. Not ready for prime time

Everything about this is not ready for prime time. Crashes, incomplete documentation - (even down to the chip itself) - poor example code, etc. code is in a total state of flux. I think this needs more time to settle out before really being usable.

Related Tutorials

ESP32 Thing Hookup Guide

October 27, 2016

An introduction to the ESP32 Thing's hardware features, and a primer on using the WiFi/Bluetooth system-on-chip in Arduino.