projects:group_projects:esp2866

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

projects:group_projects:esp2866 [2015/01/27 23:50] (current)
Line 1: Line 1:
 +====== Working With the ESP8266 Wifi Module ======
 +
 +
 +This page documents the "​findings"​ of a series of MHV workshops started in late 2014 that investigated setups and usage of recently released wifi modules labelled as "​esp8266"​.
 +
 +The main contributors to the workshops were Eyal Lebedinsky and David Lyon.  You can see the project unfolding on a series of [[http://​forum.makehackvoid.com/​|forum posts]].
 +
 +We have included a lot of background info here for those just getting started with these modules. ​ We'll write up individual projects on separate pages.
 +===== What is an ESP8266? =====
 +
 +
 +The first esp8266 modules were released by Espressif (a Chinese manufacturer) in August 2014. They excited interest in the maker community because they were cheap (around $5 each) and apparently had a lot of potential - they are more than just a wifi module - they can be programmed as standalone microcontrollers accessing the wifi functions through firmware and have a dozen or so GPIO (General Purpose Input-Output) pins including an analog input pin (via an inbuilt Analog to Digital Converter - ADC).  The chips have around 30K of user addressable program memory (for both the firmware and your programs).
 +
 +The esp8266 is seen as an affordable and relatively easy way to create "​Internet of Things"​ devices or to interact over a web link with an existing device.
 +
 +The first modules available (the "​ESP-01"​) were very small and had only three GPIO pins brought out the module periphery as standard 2.54mm header pins. Nevertheless,​ they provided a good test bed for using the chip.
 +
 +{{:​projects:​group_projects:​esp01.jpg?​nolink&​100|}} The original ESP-01 module. ​ This is still the most common form factor available online.
 +
 +
 +David Lyon made one of his [[http://​www.clixx.io/​esp8266-01.html|clixx_io]] mounting boards for the ESP-01 module. ​ This gives easier access to the pins and provides an alternative mounting system for add-ons (which David also supplies).
 +
 +{{:​projects:​group_projects:​esp01_clixx.png?​nolink&​300|}}  ​
 +
 +We used David'​s version to get familiar with the process of uploading firmware, issuing basic commands and eventually uploading our own programs to the esp8266.
 +
 +Since the arrival of the ESP-01, a proliferation of different boards has been released by, mainly, Chinese manufacturers. ​ They are all over ebay and Aliexpress. ​ At last count, we were up to esp-12.
 +
 +The main variations are:
 +
 +  * the number and arrangement of pins brought out of the chip (and whether or not the ADC pin is included);
 +  * the type of wifi antenna included, if any;
 +  * whether or not the chip itself is shielded to meet FCC requirements (see "​Warnings and Gotchas"​ below)
 +
 +Because the variety of boards is likely to increase rapidly, we won't cover each one here, only to say that as we have moved to more complex applications,​ the MHV workshop group has started to play around with the ESP-07 and ESP-12 versions, which have all the pins available.
 +
 +{{:​projects:​group_projects:​esp_12.png?​nolink&​200|}} The "​ESP-12"​ module with pinouts.
 +
 +{{:​projects:​group_projects:​esp_08.png?​nolink&​200|}} The "​ESP-07",​ which has a ceramic antenna and a plug for an external mini antenna
 +
 +==== Warnings and Gotchas ====
 +
 +The esp8266 is very new and its origin and history are largely unknown. ​ The original datasheets were in Chinese and very sparse. ​ There'​s still a lot we don't know and the company is not always completely upfront when it does answer users' questions. ​ For example, we don't know if:
 +
 +  * the company pays the licence fees attached to wifi;
 +  * the stated FCC certification of some of the newer modules is genuine;
 +  * the standard firmware (see below) will be open-sourced.
 +
 +These issues probably don't affect hobbyists at the moment but would certainly be cause for pause for anyone thinking about embedding these in a critical or commercial application.
 +
 +Other things that potential users need to be aware of include:
 +
 +  * Most of the modules (except the original ESP-01 and the clixx_io board) have 2mm pin spacing rather than the breadboard-friendly 2.54mm. ​ This means that to use them with a standard breadboard you will need to either get an adapter or do some ugly dead-bug soldering of wires directly to the connectors on the module. ​ The MHV group is working on solutions to this annoying issue.
 +
 +  * The board is rated at 3.3V and is NOT 5V tolerant.
 +
 +  * The boards all come with the manufacturer'​s proprietary(?​) firmware installed (which is the version that takes the "AT command set" - see below)
 +
 +  * Interacting with the board (eg. to upload new firmware or programs or to just send commands from another device) requires a standard FTDI (USB to serial) cable or connector.
 +
 +  * Uploading firmware or programs to a module requires GPI0 to be pulled LOW and the CH_PD pin to be pulled HIGH.  These pins must then be released and the module restarted to use it.
 +
 +==== Important Links ====
 +
 +
 +Things change quickly in the esp8266 world. ​ Not only do new modules become available regularly but both the official and unofficial firmware and tools are developing rapidly. ​ A new version of something seems to appear weekly. This is exciting but can also be confusing if you are still trying to get your head around basic concepts. There are a few web sites that are worth watching to keep track of important developments. We list a few of them here for easy reference:
 +
 +[[http://​www.esp8266.com/​index.php|{{:​projects:​group_projects:​espcommunity.png?​nolink&​300|}}]]
 +
 +
 +[[https://​github.com/​esp8266/​esp8266-wiki/​wiki|{{:​projects:​group_projects:​github-octocat.png?​100|}}]]
 +
 +
 +[[https://​github.com/​nodemcu|{{:​projects:​group_projects:​nodemcu.png?​100|}}]]
 +
 +===== Firmware and the ESP8266 Toolchain =====
 +
 +==== The Espressif SDK ====
 +
 +To interact with the chip you need firmware installed. ​ The modules come with "​factory standard"​ firmware referred to as the **Espressif SDK**. ​ This firmware allows you to send commands directly via a terminal program like screen (in linux) or putty (Windows) to the module (via your usb/serial connection).
 +
 +The Espressif SDK is also suitable for sending commands via a script (eg from an Arduino or RasPi program), again via a serial (Rx/Tx) connection. ​ The commands available are called "the AT command set" and are documented [[https://​github.com/​esp8266/​at-command-set/​blob/​master/​commands.txt|here]].
 +
 +At our MHV Workshops, we played with the SDK for a while, establishing and verifying a wifi link to the MHV server. It is probably a suitable way to use the ESP8266 as an add-on module to another system but does not really take full advantage of the program memory of the chip.  If you want to use the ESP8266 as a stand-alone device, as we did, you will probably want to move quickly to another type of firmware - like nodemcu (see next section).
 +
 +==== The Toolchain ====
 +
 +It is all very well to have a firmware file or a program, but you need a way to write these to the chip from your computer.
 +
 +This involves compiling, linking and then sending the binary packages to the module via your usb/serial device (ie an FDTI cable of some kind). ​ It also involves having some "​helper programs"​ properly configured so that the right files are written to the right memory locations on the device you are using.
 +
 +Fortunately,​ a complete toolchain is available for the Espressif SDK and it is relatively easy to install. ​
 +=== Warnings and Gotchas ===
 + 
 +It is likely that any module bought from ebay, Aliexpress etc. will have a non-current version of the SDK installed. The latest version is available from the Espressif github repo at [[https://​github.com/​esp8266/​esp8266-wiki/​tree/​master/​sdk|the Espressif github repo]].
 +
 +
 +==== nodemcu ====
 +
 +The current alternative to the Espressif SDK is a package called **nodemcu**. ​ This is firmware that allows you to use the **Lua** scripting language to interact with the ESP8266 via line-by-line commands or a Lua program that you upload to the device as **init.lua**. ​ Lua is a lot like Python and the nodemcu version has support for many protocols like i2c, 1-wire, spi and uart which gives it a lot of power when it comes to connecting sensors etc. directly to the esp8266. ​ It is also pretty straightforward to serve up data and controls via a simple web page with Lua.
 +
 +The nodemcu firmware is open-source and available from the [[https://​github.com/​nodemcu|nodemcu github repo]]
 +
 +=== Flashing the nodemcu Firmware ===
 +
 +
 +There are some good guides for the tools you need already posted online.
 +
 +For Windows - see this guide: [[http://​www.whatimade.today/​loading-the-nodemcu-firmware-on-the-esp8266-windows-guide/​|Flashing the NodeMCU firmware on the ESP8266 (Windows)]]
 +
 +For Linux - see this one: [[http://​www.whatimade.today/​flashing-the-nodemcu-firmware-on-the-esp8266-linux-guide/​|Flashing the NodeMCU firmware on the ESP8266 (Linux)]]
  
  • projects/group_projects/esp2866.txt
  • Last modified: 2015/01/27 23:50
  • (external edit)