Description: The SparkFun ESP8266 Thing is a breakout and development board for the ESP8266 WiFi SoC – a leading platform for Internet of Things (IoT) or WiFi-related projects. The Thing is low-cost and easy to use, and Arduino IDE integration can be achieved in just a few steps. We’ve made the ESP8266 easy to use by breaking out all of the module’s pins, adding a LiPo charger, power supply, and all of the other supporting circuitry it requires.
Why the name? We lovingly call it the “Thing” due to it being 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 ESP8266 Arduino addon.
The SparkFun 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. LEDs towards the inside of the board indicate power, charge, and status of the IC. The ESP8266’s maximum voltage is 3.6V, so the Thing has an onboard 3.3V regulator to deliver a safe, consistent voltage to the IC. That means the ESP8266’s I/O pins also run at 3.3V, you’ll need to level shift any 5V signals running into the IC. A 3.3V FTDI Basic is required to program the SparkFun ESP8266 Thing, but other serial converters with 3.3V I/O levels should work just fine as well. The converter does need a DTR line in addition to the RX and TX pins.
Based on 37 ratings:
3 of 3 found this helpful:
All in all a pretty good product and fairly easy to use. Remember to get a SPARKFUN FTDI cable with the correct pinout (DTR instead of RTS). My “FTDI cable” purchased from FTDI didn’t work. I tried both NodeMCU and Arduino and both work. Note that the NodeMCU GPIO and the ESP8266 Thing GPIO don’t line up- there is a conversion table online for this. In general, I like the Arduino approach better since I’m mostly hooking up sensors that already have libraries written for them. Note that you will have to modify some libraries (mainly header includes) for them to be compatible with this MCU. I haven’t tested the WiFi range but it works well sitting on my desk. I do wish I had a few more GPIO, but this product is really more for making UI-less sensor nodes than full-blown systems. That said, I still managed to squeeze in a couple of sensors, a display, and pushbuttons with just enough GPIO.
1 of 1 found this helpful:
This is a great introductory board to the ESP8266 experience. The onboard USB power supply/battery charger and breadboard spacing of the pins really make this a very easy way to begin experimenting with this awesome chip. If you want to improve it, it would be great if there were buttons for reset and programming or pads/traces to add your own. But otherwise, this is an excellent board and I highly recommend it for anyone interested in experimenting with the ESP8266 chip.
4 of 4 found this helpful:
Got the ESP8266 up & running in short order. Getting it connected & Posting data to my site was the easiest part, particularly with the excellent example code. Minor speed bumps: In Arduino mode, it is a 32-bit processor. Only mention of this is ‘32-bit CPU’ in the Features on the product page. This may (did for me) require some coding changes. Analog input is, indeed on pin ‘A0’, not ‘0’. (confused me). And the whole “Serial Monitor” thing was a little confusing - All Arduinos Reset (and go into “boot loader”) when you open the Serial Monitor. This just sticks there. Eventually figured everything out, and the information was there. Could use a “Spec” summary page for the Arduino mode - 32 bit, RAM size(?), EEPROM size, Flash size, etc. Again, overall a Great product.
2 of 2 found this helpful:
If you are interested in the ESP8266, I think this is a great way to get into it. The breakout is nice, and gives you access to pretty much everything the 8266 can provide. It’s small on flash, smaller than alternatives, but I’m not sure you need much more… they’re not so powerful that you’d be using thousands of lines of code. I think in the next rev, it would be nice to have the jumper for GPIO-0 to DTR be a three way jumper, so you pull the jumper off GPIO-0 to DTR and put it back on DTR to XPD for sleep mode… that way you can swap for programming, then swap back for serial debug and sleep mode. I have no use for the Lipo charger, but I am sure others may find that useful. I’ve used this as my test board, and then use smaller breakout boards for my actual devices I’m building.
4 of 4 found this helpful:
I’ve been working with musicians and dancers for a number of years developing wearable motion tracking devices. We’ve been through several design iterations including wireless XBee and Bluetooth, both of which had numerous issues (We’re using Macs, and Bluetooth is very unreliable under MacOS).
I eventually decided that UDP over WiFi was the best approach to transmitting real-time data at the required rates. While there are such products on the market that target artists, they tend to be quite expensive ($300 and up per unit).
The ESP8266, and especially the ESP8266 Thing have dramatically changed all of that. The ease of programming using the Arduino environment and the power of the 32-bit processor and onboard WiFi, when combined with a 9DOF sensor such as SparkFun’s LMS9DS1 IMU, make a great platform for wearable motion tracking.
Added to all that is the fact that the engineers at SparkFun were thoughtful enough to include both an on/off switch (amazing how few devices out there include this—the $300 WiFi unit I mentioned above does not, meaning that you must connect/disconnect the battery from the JST socket every time you use the device, and that requires a tool unless you’re willing to break a lot of fingernails) and an on-board charger for the battery (another feature almost universally omitted).
Given the low cost of the ESP8266 Thing and I2C IMU devices, this powerful new platform opens up a lot of new avenues for wearable motion tracking. My only request is that SparkFun take the next step and integrate the 9DOF IMU on the same board as the ESP8266 Thing.
1 of 1 found this helpful:
I connected a few I2C temp sensors (TC74) and a non-invasive current sensor to this board and had it sending data over the WiFi network in no time. The Arduino add on rocks - it is great having the libraries available.
The extra features like the USB power connector and pin layout are well worth the extra money over the basic $5 board. This is one of the best examples of great products by the folks at sparkfun.
The Hookup guide was priceless - the examples made it simple to get things rolling without having to scour the internet for resources.
8 of 9 found this helpful:
This board comes so close to what I want that it’s slightly painful that it falls just a little bit short.
The built in 73831 based LiPo charger is a great idea. Having the On-Off switch is less important, IMHO.
The lack of an on-board capacitor to stabilize the input from a Solar Panel is tragic.
Here are the things I’d do to turn this into the perfect Solar development/deployment board:
Put an FTDI chip on it and integrate to the USB connector. Allow power via USB, but don’t power the FTDI chip from any of the other power sources (Battery connector). After all, if the USB isn’t connected, the FTDI chip isn’t going to be doing anything useful.
Replace the 73831 with a 73871. Superior charge controller with battery temperature monitoring and solar optimizations.
Add a Capacitor (or at least space for one), about 4700µf 10v or so to stabilize a solar panel and a place where a 10K NTC thermistor can be added to the board for battery temperature measurement (the 73871 already supports this).
Add small buttons for reset and GPIO0 (closed=ground, open = GPIO0 pulp). This would facilitate flashing. (or better yet, integrate this capability into the FTDI so it can be triggered from the IDE similar to Arduino.
Add a coaxial power plug for attaching the solar cell.
The things I want are going to require some real estate, so let’s sacrifice that power switch. I don’t think it’s all that important in 99% of applications. With the integration of the FTDI, the Serial Programming header pins are nice to have if there’s room, but they’d be my second sacrifice.
Finally, that’s still probably not going to free up enough real estate, but for most applications, a slightly larger board would be worth the tradeoffs to get these added capabilities.
Thanks for the feedback!
5 of 6 found this helpful:
I tried every single WiFi module out there, and this one is not only the cheapest, but by far the simplest to program and use. I Love the seamless Arduino IDE integration.
More then enough microprocessor power to remote control IoT devices and post data to Phant/ThingSpeak. Had my air quality sensors up and running and posting to ThingSpeak in 20 minutes.
Only shortcoming: Please add FTDI on board.
4 of 5 found this helpful:
For some reason, I could never get a serial connection to this even by following the guide. I can use the esptool command line utility to report the mac address & other info, but could never flash any new data or send commands.
1 of 2 found this helpful:
Right now, I am using this for a LCD display that monitors an MQTT topic and displays the output. this is handy since I can publish different things like whether the garage door is open or closed, what the current temperature is, and what my unread email account is. MQTT then gives me a very lightweight way to queue up messages and easily read.
super great tool. and because it has its own battery charger, I can charge off of solar and put this out in my back yard and have a visual LCD display showing me what is going on with my MQTT devices at a glance!
The Thing does not work with AT commands, in case you are used to the other ESP-xx boards out there. When you hook up a serial terminal, all you get is garbage. To get it working: hook USB power supply, serial to USB converter (3.3V!), CUT the trace on the bottom of the board: when programming from Arduino, have a wire in the two holes to connect the trace, or use a jumper, to run the application, remove the wire or jumper, and power cycle the board. This information is hidden at the end of the tutorial unfortunately, would have save me some time if I had known when I started, I saw quite a few people having this issue. A program and reset button would have been nice, instead of the on/off button
ESP8266 Thing Dev. This board works fine in two different versions of Linux. Lubuntu 14.04 and Lubuntu 15.01 Please note: The Arduino IDE 1.6.10 does not work correctly in Windows XP. It appears to have a problem with directory paths longer than 255 characters. It took a while but I fixed this problem! Also many of the Wifi examples do not work as advertised. The user should try each one.
I found it very easy to use. Used the example code and the Arduino addon and had a cell phone interface running in short order.
I use the Arduino IDE with an FTDI 3.3v (DEV-09717) cable on the ESP8266 Thing (non Dev model) for serial monitor functionality, and for programming the device. The 09717 cable is not the best choice for this device, but I made it work.
I do three things to make it work. I run the 5v Vcc from the FTDI cable to a 3.3v regulator on a breadboard, then run the 3.3v to the 3.3v “pin”. This is the 3v3 pin between RX1 and NC. The second task is to solder the FTDI jumper, so the 3.3v from the regulator powers the board. The third item is to interrupt the DTR line (green wire) from the FTDI cable at the breadboard. I put a “normally open” pushbutton in that line.
To upload a program to the “Thing”, I push and hold the pushbutton, then I click “Upload” in the IDE, then once I see the IDE status message change from “Compiling sketch…” to “Uploading…”, I let go of the button. To connect with the serial monitor, just click the serial monitor icon in the IDE, without pushing the pushbutton.
Future feature request: add some sort of analog switch so more than one channel of A to D is available.
Thanks for the tips. Happy hacking!
Like most things from Sparkfun, it’s a well-engineered product that works as advertised. There is a lot of similarity and code swapping capability between The Thing, the Ada fruit Huzzah and the Photon, but the lipo battery connector and charging circuit is a unique addition….ands is the space for a couple of other ic’s. Well done SF!
0 of 1 found this helpful:
I made an rgb led cloud for my sons room controlled via the blynk app. It works great for IOT projects. Really easy to program and hook up.
It was very easy to get this up and running.
Took me a while to get going with programming it using the Arduino IDE (and I’m still not 100% on what the deal was) but I’ve got it playing nice and logging to data.sparkfun.com now.
Quick question, though: Is there any discharge protection on the LiPo path to keep this from over draining the battery? I’m not in a position to test it since I accidentally shorted Vin and Gnd pins while it was plugged into my computer via USB…
All of our silver single cell lipos have built in protection circuits. Additionally this board has the MCP73831 which does power management and circuit protection for the battery. You should be all good to let your battery go unattended without damage.
Combined with a MUX is a good measurement station.
If you want something working right out of the shelf, without headache - that’s you Thing.
0 of 2 found this helpful:
It is a dud, fortunately ordered similar board from Chinese company for 8$ and works like charm.
Easy to program, I’ve got my chicken-door open/closed sensor (almost) up and running. https://github.com/Sequoia/cluck/blob/gh-pages/thing_door_phant_sleep.ino
What would make it perfect for me:
Other things I desire
Overall I like it & I have recommended it to friends but I’ll probably try the Huzzah next time simply because the price is lower & if you’re comfortable soldering a JST connector it’s not clear (to me) how The Thing is worth 60% more than the Huzzah. Basically, I like it but there’s something cheaper that seems to do the same thing!
UPDATE: tutorial to address EXACTLY what I am trying to do (power Thing on solar power) yey! :) https://www.hackster.io/fablabeu/esp8266-thing-by-sparkfun-982bc6
UPDATE 2: I spoke too soon, I actually can’t easily follow that tutorial (need a bit more hand-holding I guess). Oh well, it’s a start!
I had a bad experience with these. I purchased two of them and they did not work out very well. They would only program about 10% of the time. Eventually gave up and stopped using them. I will not being buying these again.
Used the ESP8266 Thing to interface with sensors and to post data to a MySQL database. Together with the 3.3V FTDI Basic, hook-up, programming and uploading to the Thing could be done very easily; within a day - Thanks to the comprehensive hook-up guide. The only hiccup was the garbled data sent to the serial monitor which was solved by cutting the tracks at the back of the PCB and putting in jumpers for uploading.
This was amazing easy to get up and running. I followed the hook up guide and program examples and voila, I was up and running and posting data to Phant in almost no time at all. I did have a few hiccups… I never did get the Serial Monitor to work with my Basic FTDI programmer (which made for debugging my code a little more work). But for the price of this “Thing” I’m not worried about it. I set up my board to monitor my garage door so I could check if I leave it open. I included a Dallas Semiconductor I2C temperature chip (just because I wanted to try the I2C bus), a reed relay to sense the door, and stuck a magnet on the garage door frame. I also used the OneWire and Dallas Temperature Control libraries, which made interfacing with the temperature chip a piece of cake. Super easy and it all gets posted to data.sparkfun.com for free, allowing me to check my garage door position and garage temperature from anywhere in the world that I have an internet connection. Eventually, I will add the ability to close my door, but for now I’ll just leave it as a position sensor.
Really like the fast built-in LiPo charger, and the fact that in deep sleep the board will only consume about 70 uA. I only wish it had a bit more flash.
I am running an Internet-of-Things special interest group for our local makerspace. I purchased a few of these along with a bunch of other devices (Particle Photon, NodeMCU Dev v0.9 boards, ESP8266 boards, etc.). After some initial issues with finding an FTDI board that would work, it was very easy to put up a sketch to upload DHT22 temp/humidity data to ThinkSpeak. Much more reliable and stable than the NodeMCU stuff. I will be buying some more as we expand our project … definitely want to make some “Cloud Clouds”!
The tutorial is detailed and accurate. The device works well despite slightly flaky programming, even when USB-powered. I hooked up an MPU6050 for a wearable physical therapy aid and it’s been very straightforward.
I’d like to know, though: is there a way to store some data and have it survive a spell in deep sleep? I want to record some stats and keep an average that spans several spells in sleep, so I need to record some data while awake and recover it after sleep. Is it possible or should I stick with turning off the radio with WiFi.mode(WIFI_OFF) and accept the higher battery drain? I believe I need to use system_rtc_mem_write and system_rtc_mem_read
The two words that best describe the Thing are “espcomm_open failed”. As amazing as this board is, the hit-or-miss process of programming it makes using it a chore. Research into the problem leads me to believe that this is a general issue with the ESP8266, and not a flaw in the design of the Thing, but know that it will definitely affect you.
It was a little confusing when I first powered up the board that I needed to cut traces and add a jumper to make the serial console work, but this was all documented in the hookup guide (with Wifi as the big feature, serial is actually one of the later topics).
In a future revision, it would be nice to have the XPD (deep sleep) pin run over to the header supplied for the DTR/RST connection. This would allow you to move the jumper between DTR/RST for programming and RST/XPD for running.
I’m frequently frustrated by the “setup hurdle”; the time it takes to get a new device up and running and doing something useful. The Thing didn’t give me any trouble at all. Using Sparkfun’s excellent setup guides and example code I was able to create wireless temperature sensors that post data to ThingSpeak (an unrelated but equally awesome cloud data collection service) with only a couple hours of work. The Arduino libraries make it relatively effortless to use, and I had a couple days worth of battery life on a 1,000 mAH lipo while posting a temperature reading every ~5 minutes and deep sleeping between readings. I placed four devices around my house to get an idea of which rooms were warmer than others. A word of warning, however, that although the lipo batteries recommended to power the Thing have all standard protection circuitry, they are completely unprotected from physical damage. My roommate somehow damaged the sensor in his room (probably by stepping on it after he moved it from where I placed it, which wasn’t on the floor) causing the bottom of the temp sensor wires I soldered through the board to puncture the thin covering of the battery. Shortly after it caught on fire and was thankfully discovered before it could do any serious damage. I consider myself lucky to only have a hole burned through the carpet and a renter’s insurance claim as a result. The Thing is awesome so don’t let my battery mishandling experience dissuade you from buying one, I would simply be remiss if I didn’t share it in the hopes of preventing at least one similar incident.
I had no problems getting this guy up and running following the Hookup Guide. They recommend increasing the upload speed for loading your code onto it but I found that to decrease my success rate and the standard upload speed was not that slow. I have mine posting light sensor data to a phant.io stream and it’s been doing great for months now with only a couple drop outs, maybe for a couple hours at a time, and it always reconnects itself. I posted a little more about my experience here: https://katygero.wordpress.com/2016/01/09/iot-light-sensor-its-a-thing/
Extremely easy to setup & get going. It also works just as well with the blynk application for learners looking to experiment with IoT.
Finally got my Thing up and running. As a novice to Arduino, setting up and using the environment went well until I tried to post to the Phant. Needed to backup and figure out how to install the libraries for that. (Isn’t mentioned in the Tutorial) But after that it connected up and functions beautifully.
I’ve spent more time than is probably wise with the Thing this week, really like it. (Using it for a touchscreen WiFi clock + bedside controller for Magic-Home WiFi lights – kind of a DIY Chumby, if anyone remembers those)
My only “complaint” is that the flash is not large enough do to OTA (over-the-air) updates: this requires at least 1MByte flash (sketch update is saved in free space, and copied over upon reboot). I can confirm that replacing the 4Mbit (512Kbyte) flash chip with it’s 8Mbit version (Adesto AT25SF08) works, with no other changes required (other than boards.txt, if you’re using Arduino). In particular, first-stage bootloader is burned into ESP ROM (so you don’t need any SOIC programming fixtures etc; very easy replacement). Hopefully SparkFun will eventually update the Thing, so OTA updates work out of the box.
Other than that, great board and I have a few suggestions that are different from what other ppl may have suggested, and like it more the way it is now.
One quick minor feedback: the JST header placement is a little unfortunate. I want to put it in a 3D printed case, with USB exposed, so the JST would hit the enclosure’s wall. I had to de-solder it and solder a vertical JST header instead.
So, things to consider: (i) don’t populate the JST, include unsoldered header as option; (ii) make it face another side of the PCB (not same as USB; maybe move power switch to opposite side and rotate JST 90deg?); (iii) inset it into PCB, leaving space for the male connector and wires.
As for power switch: given that the Thing has a battery, and unplugging USB won’t power it down if a LiPo is inserted, I would not remove it (as someone suggested). Too much hassle unplugging/replugging JST (plus, if ppl want to solder battery directly, then it’d be impossible to power off).
And a final tip I found useful: for DTR, I just cut my FTDI cable’s DTR wire, and crimped a M/F pin pair, so I can easily cut the connection. Much easier on fingers than fiddling with a tiny jumper next to the pin header. Now I just leave the serial monitor open, plug pin headers together before starting upload, and just quickly pull the pin headers apart as soon as I see esptool start flashing. Maybe an inline switch would be even better, but this is quick and easy enough.
So, if you do add FTDI on board (I prefer not, but that’s just me), I’d be a little upset if the tiny jumper was the only way to break the DTR connection. :) But, please, don’t go the RESET + PROGRAM pushbutton pair route (I have it on an Adafruit breakout and, while I like that too, flashing it is a major PITA, so I always go for the Thing instead).
Works great overall, thanks! Now, if you’ll excuse me, I’ll go back to ripping my hair out with I2C reads on Arduino for the ESP… :)
This thing makes it very easy to get your thing on the internet. Pretty much tamed the ESP8266 into a simple Arduino programmable board.