The ESP8266 system-on-a-chip is one of the most exciting development platforms to appear on the market as of late. Produced by Espressif Systems, it contains a custom Tensilica 32-bit microprocessor as well as all of the hardware needed for Wi-Fi communications. It is available in a number of configurations, the most versatile being the ESP-12 (pictured below). The ESP-12 features 4 megabytes of memory, allowing for larger programs than previous iterations of the device. The earliest model, the ESP-01, only had 512 kilobytes of flash memory and as a result can not run the current version of the official “AT” firmware. Depending on which supplier the chips are purchased from, they come with either the stock AT firmware or (at least with our experiences with Adafruit) the lua-based NodeMCU firmware.
Early in our design process we considered a number of chips, including solutions by Texas Instruments and Freescale. The ESP8266 provided a few tantalizing advantages over the other chipsets. It is already provided in small packages which are practically ready-to-use out of the box and can easily be integrated into our board designs. These packages even include a memory chip, rendering them truly complete systems ready to be programmed. They are ubiquitous, with many suppliers and people already using it for projects. The workflow is more adaptable, since the development process doesn’t require third-party IDEs and the compilation is handled by an implementation of gcc. Lastly, it was cheap.
Being a fairly new platform with limited documentation, programming for the ESP8266 often feels like forging a path on a new frontier. Luckily, there is a pretty dedicated Internet community working with the chip, centered on the ESP8266 Community Forum. Espressif also provides a forum where they communicate with developers concerning howtos, bugfixes and SDK releases. There is also a wealth of information on various maker\tech blogs and webzines that helped us considerably as we took our first steps. One of the purposes of this blog is to similarly provide some concentrated information about our experiences.