In this post I will guide you through the jungle of available modules based on the ESP8266. This is not a complete list of available modules but a selection of the ones I could test and review. If you think that I have been missing out on one important module please let me know.Every module here as some advantages and disadvantages, depending on the targeted application. If you are planning to to use a module as Wifi shield for an Arduino you might pick a different type than if you´re planning a standalone node. Other aspects are breadboard compatibility, availability of pins, need for external components such as a serial-to-usb adapter as well as size and costs.
The following tables summarise this post, if you are too much in a hurry to read the whole article:
This is probably one of the most popular modules, although it is by far not the most convenient one. With its small form factor (24.75mm x 14.5mm) it fits nicely into any enclosure. Two GPIO pins are led out and can be used to control periphery. With proper wiring and a serial-to-usb adapter you can also easily flash alternatives firmwares on it. By default it comes with one of the different versions of the AT firmware which allows you to use it in combination with an Arduino. One of the biggest problems of this module is the placement of the pin posts which makes it impossible to plug it directly into a bread board for prototyping: the two rows of posts are so close to each other that you would get a short-cirtcuit. However you can still use this module on a breadboard: either build a bread-board adapter or use female-to-male dupont wires to wire the module to your bread-board. Update: There are now also versions of the ESP-01 available with 1MB Flash, compared to the earlier 512MB
ESP8266 ESP-01 module
This module is very simple and has one purpose only: use it as mini wifi shield together with your Arduino or similar micro controller. There are different versions available: a four pin version that only has 3.3V, GND, RX and TX. Over the later ones you talk with your Arduino. Another version has an additional reset pin which allows you to manually or programatically reset the module.
This module nicely fits into a breadboard since the module has only one row of pin posts. But (and there is always a but) you are stuck with the delivered firmware unless you are willing to do some lead cutting and soldering of some pins. According to the forums not all boards come with the same AT firmware version.
ESP8266 ESP-05 module
This module allows you to access many features of the ESP8266: 11 GPIO pins, one analog-to-digital converter (ADC) with a 10 bit resolution. It also lets you easily configure deep-sleep mode which (according to this source) lets you run the module for 3 years on two AA batteries. With one drawback: it is not breadboard friendly at all. As for the modules previously described here the antenna is a track on the PCB which delivers good results for Wifi sensitivity.
But to use it for prototyping you´ll have to build something around the module. You can order these breadboard adapters or build one yourself, like my colleague Andi did:
ESP8266 ESP-12 plus self made bread board adapter
(thx to Andifor the picture)
There is also an almost-ready breadboard adapter available here.
Thanks to its good availability and the rich access to the chip pins it is also widely used for aggregated modules, such as the test board I describe later in this post or the first version of the NodeMCU module. If you are planning to use the ESP8266 as a stand alone node the chances are good you will end up with this module in one way or the other.
Originally named as ESP-12 this module has come to popularity as ESP-201 after the name clash had been discovered. In good old BASIC line adressing style the creators apparently wanted to make sure that no other name clash would occure and added a safety distance to the numbering scheme;-)
It is currently my preferred module for prototyping since it is breadboard friendly and offers similar access to the chip pins as the ESP-12 does. I say breadboard friendly with two remarks: the four pins at the head of the module keep you from directly plugging the module into a breadboard. But you can easily bend them to ninety digrees or unsolder them and place them on the upper side of the module. The second note is that the module itself hides many pins of the bread board for direct access and leaves only one row visible on each side of the module. If you need more you will have to extend a 5-pin row by connecting it to annother row on your breadboard. The board comes with a printed PCB antenna but also with a connector for an external one. This makes this module also a perfect candidate if you need to bridge a longer distance with your Wifi module. You can then easily replace the package wire antenna with a high-gain antenna and improve the sensitivity even farther.
ESP8266 ESP-201 with pin-out description
There are various test boards available. Check the links and view the picture below to see what I´m describing here. This test board comes with a battery pack and various preconfigured LEDs and one light dependent resistor connected to the ADC. It integrates an ESP-12 as described earlier in this post and makes all the pins available to your convenience. It also has a jumper which you can set when flashing a new firmware. The board comes with a voltage regulator that steps down the 4.5 Volt from the battery pack to the 3.3V that the ESP8266 needs. You can easily replace the battery pack with the power lines of a USB connector, as I described here.
I see two kinds of applications for this board: run a standalone node somewhere without a wired power adapter is the first only from the attached battery pack. You can use a tiny bread board if you need to connect sensors to the test board and even glue it on the module. Just make sure to not cover the PCB antenna for better antenna reception.
The second application is to quickly test program code with the simplified periphery of the many LEDs and the light dependent sensor which is connected to the ADC. Update: I have this board running on the 3 AA batteries for more than 1000 hours (>40days) already. See the article here
ESP8266 test board with pin-out description
NodeMCU module V0.9 (Outdated)
This module is somehow quite different from the modules described earlier in this post. It comes with all you need to get started since it already has a built-in serial-to-usb adapter and comes with a micro USB plug for power supply and for programming the module.
I had high hopes on this module since in theory it should make development of applications based on the ESP8266 much easier: less wiring is required compared to any of the other modules, you need neither an external power supply nor a serial-to-usb adapter and two switches allow for easy resetting the module and booting it into flash mode. And it nicely fits into a bread board and lets you wire periphery with the fewest amount of wires imaginable.
Reality looks currently a bit different: on my Mac I could not flash the module with the built in serial-to-usb adapter even after installing the latest driver available. I then had to fall back to an external serial-to-usb adapter. For me this was not a big issue since I don´t flash new firmwares that often and I was already in possession of an external serial converter. After I had flashed the latest version of the NodeMCU Lua firmware I could use the built-in converter just fine. The second problem is that the current form factor of the module covers all the pins on a bread board in the area of the module. To use the pins you will have to insert bridges which lead from under the module to a visible part and insert the module again. And you can only to this for a limited number of pins.
Due to the higher price of this module you will most likely use this module during development time. Once you have completed the software and all the required external components you might use one of the other modules or you will design a completely new module which integrates all the required components
At the time of this writing only the first version of the NodeMCU module is available and that is what I´m reporting here. In the next few days (or weeks) the team that created the first module will publish an improved version which will fix the mentioned problems of the first version. I´m looking forward to test the new version as soon as it becomes available. Once these issues have been resolved this module certainly has all it takes to become an interesting all-in-one alternative to an Arduino based internet-of-things node. UPDATE: don’t order this version anymore, consider the NodeMCU V1.0 instead (see below)
ESP8266 NodeMCU module (version 0.9)
NodeMCU module V1.0
A few weeks ago the NodeMCU team published their new design and I have to say that it is a huge improvement over the first issue. I tested it with both the NodeMCU LUA firmware and the Arduino IDE. It incorporates the new ESP-12E module with 4MB of flash memory and also has a few more pin-outs.
Compared to the V0.9 variant the V1.0 is more narrow and leaves one row of pins on each side on a standard breadboard which is just perfect for prototyping. Another nice feature is the fact that you don’t even have to press the reset/flash button combination in the Arduino IDE to upload a new version of your code. Somehow the board or the software handle this automagically. And with the latest published version of the Arduino/ESP8266 board configuration you can configure upload speed to 921600 baud with which the upload finishes just within a few seconds.
All in all, this is the long awaited development board that you want to have and play with. The price is slightly higher than with the other boards, starting from around $8 for a potential clone, but it is totally worth it because you are saving all the additional hardware like serial-to-usb converter.
New improved version of the NodeMCU V1.0.
Now fits very nicely on a breadboard and also the Serial-To-USB
converter works very well.
I created a Fritzing part for the NodeMCU V1.0 that you
can use to draw up your circuits. Read all about it here
Which module suits you best depends on your application. If the price and small form factor is important for you and you are looking for a stand alone module with just two GPIO pins, the ESP-01 is your candidate. If you just want cheap Wifi connectivity for your Arduino you might go for the ESP-05. The ESP-12 might be interesting if you have periphery based on SPI or I2C bus or if you just many GPIO pins and you are not afraid of a bit of soldering. The ESP-201 is good for solder-free prototyping on a bread board and allows you to access almost all pins of the ESP8266 chip. But you´ll still need an external serial-to-usb converter and a power supply. In case you want it even easier and the slightly higher price is not a problem I would recommend the NodeMCU V1.0 module for you. The following table summarises this post:
I have to admit, this is a bit of shameless advertisement;-). But if you came here because you are interested in IoT and you are probably getting started you might profit from a ready-to-go development kit. One of my most successful projects with the ESP8266 is the WeatherStation. It displays current weather information and forecasts it downloads frequently from the web on a beautiful OLED display. And this is just the starting point. You can use the included libraries to display data from other sources (stock information, sport results, etc) available on the net. And: I sell it as a development kit in my shop. ESP8266 WeatherStation with shipping available to almost all countries.
The WeatherStation Kit displaying a 3-day forecast
The components included in a WeatherStation Kit:
NodeMCU V1 with 4MB flash, 128×64 pixels OLED display,
USB cable and jumper wires. Available now in the shop: ESP8266 WeatherStation