IOT ESP8266 Tutorial – Using nodeMCU/LUA

IOT ESP8266 Tutorial – Using nodeMCU/LUA

This is the first of a multi-part posting on the ESP8266.   We are going to show how to use the ESP8266 IOT WiFi processor and breakout board.  WeFigure4 are using this chip for several new IOT projects at SwitchDoc Labs.  Our latest IOT project is called LightSwarm and it uses 5 ESP8266 boards arrayed in a cooperative distributed swarm.  More on that project in a future posting.

Part 1  IOT ESP8266 Tutorial – Using nodeMCU/LUA

Part 2 IOT ESP8266 Timer Tutorial – Arduino IDE

Part 3 IOT ESP8266 Tutorial – Using the Arduino IDE

Part 4 IOT ESP8266 Tutorial – AT Command Set Firmware

Part 5 IOT ESP8266 Tutorial – Connect to the IBM Bluemix Internet of Things

Part 6 IOT ESP8266 Tutorial – Sending ESP8266 Data to the IBM Bluemix IOT

Part 7 IOT ESP8266 Tutorial – The IOT Application and Source Code

Part 8 IOT ESP8266 Tutorial – Displaying the data on the IBM Bluemix IOT

 

 

 

We are using the Adafruit ESP8266 Huzzah breakout board for these postings.

The ESP8266

The ESP8266 is made by a privately held company in China called Espressif.   They are a fabless semiconductor company that just came out of nowhere and shook up the whole industry.   Now all the major players are working on inexpensive versions of an IOT chip with WiFi connectivity.  And they are all struggling to make it as inexpensive as the ESP8266.

The ESP8266 chip was originally designed for connected lightbulbs (with functionality like the Phillips Hue we used in the iBeacon BeaconAir project) , but soon was used in a variety of  applications.  While the ESP8266 has huge functionality and a good price, the amount of current consumed by the chip makes battery powered solutions problematic, but with very clever programming, possible in some applications.

Here are the main features of the chip and a block diagram.

Figure3

  • – SDIO 2.0, SPI, UART, I2C
  • – Integrated RF switch, DCXO, and PMU
  • – Integrated RISC processor, on-chip memory and external memory interfaces
  • – Integrated MAC/baseband processors
  • – I2S interface for high fidelity audio applications
  • – Fully integrated WiFi solution

 

The Adafruit ESP8266 Huzzah

The Adafruit ESP8266 Huzzah board is a great  breakout for the ESP8266.  It makes it much easier to use with the Raspberry Pi that the really cheap modules.

Most of the low cost modules are not breadboard friendly, don’t have an onboard 3.3V regulator or level shifting for signals.  The Huzzah has all of those features.

The main features in the Huzzah which aren’t part of an inexpensive (< $3.00 on Ebay) ESP8266 board are:

  • – Reset button
  • – Second button that can put the chip into boot loading mode for programming
  • – Red LED under user control
  • – Level shifting on the UART and reset pin
  • – 3.3V out, 500mA regulator (the ESP8266 can use up to 270ma so be aware!)
  • – Two diode-protected power inputs (one for a USB cable, another for a battery)

Two parallel, breadboard-friendly breakouts on either side give you access to:

  • – 1 x Analog input (1.8V max!  ADC reads from 0 – 1024 over 0.0V to 1.0V)
  • – 9 x GPIO (3.3V logic), which can also be used for I2C or SPI
  • – 2 x UART pins
  • – 2 x 3-12V power inputs, reset, enable, LDO-disable, 3.3V output
71SztW5WmdL._SL1483_
FTDI Cable (5V version. Both 5V and 3.3V will work with Huzzah)

The breakout at the end of the board has an FTDI pinout.  You will also need to buy a compatible FTDI cable to USB  to really get the most out of this breakout board.

SwitchDoc Labs has an inexpensive FTDI cable available here.

When you are done programming, you can unplug the cable.  Then you have to supply power and possible a serial interface if you want to talk to the Raspberry Pi.   The FTDI cable supplies both.

 

Setup nodeMCU – Lua Language on the ESP8266

Lua is a lightweight  programming language designed as a scripting language with embeddability and extensibility as primary goals. Lua is cross-platform since it is written in the standard C language and has a relatively simple API (Application Programming Interface).

NodeMCU has written a Lua interpreter for the ESP8266 and that is what we will load into the ESP8266.  Note that the Adafruit Huzzah ESP8266 comes preloaded with NodeMCU so you can skip this step if you have not overwritten it.

Here is a great tutorial on how to flash NodeMCU on your Raspberry Pi (and another link for windows) as well as the Adafruit tutorial.

You can find the NodeMCU combined firmware here.

Webserver Code

Here is the rather short code needed to implement a web server using nodeMCU.

nodeMCU/Lua Webserver

Note:  because of the embedded HTML codes in this code snippet, we give a PDF file so you can cut and paste.

Build a file called init.la, put this code into the file, and then load the above code into the Huzzah using the command:

sudo python luatool.py --port /dev/ttyUSB0 --src init.la --dest init.la --restart

You can download luatool.py from here.

You will see a list of statements showing you the you have downloaded the init.lua file into the ESP8266 and that the program has started.

Make sure you change the Network SSID and network password in the init.la file to match your local WiFi access point.

Open up the website using Chrome.  We have had issues with Safari on the Mac, but chrome works.

Below is the resulting web page.   Hitting GPIO1 “Off” will turn on the red LED and hitting GPIO2 “Off” will turn on the blue LED on the ESP8266.

Figure541 lines of code implements a webserver.

 

 

 

 

 

Firmware Comments

Bringing up the ESP8266 with the nodeMCU Lua software was a pretty good experience.   Clearly a lot of functionality can be implemented with this Figure6firmware.  It supports timers, I2C, PWM, GPIO, the ADC and the serial UART.   Pretty good and not too hard to get working.   Once the software was running, we have had no problems with it at all.

3 Comments

    • Yes and No. We’ve updated the web page to clarify things.

      The Analog pin is 1.8V max on the pin! The ADC reads from 0 – 1024 over 0.0V to 1.0V.

      That’s the confusion point.

      SDL

  1. I advise you to not use any of the outdated releases from https://github.com/nodemcu/nodemcu-firmware/releases. They’re old, unmaintained, suffer from memory issues and contain modules that you probably won’t need (but still eat memory. Use https://nodemcu-build.com/ or the Docker image at https://hub.docker.com/r/marcelstoer/nodemcu-build/ to build your own custom firmware from the NodeMCU dev branch. Disclaimer: both services are from yours truly.

12 Trackbacks / Pingbacks

  1. Getting Started with NodeMCU Board Powered by ESP8266 WiSoC
  2. IOT ESP8266 Timer Tutorial - Arduino IDE - SwitchDoc Labs
  3. IOT ESP8266 Tutorial - Using the Arduino IDE - SwitchDoc Labs
  4. CNXSoft – Новости Андроид приставок и встраиваемых систем » Начало работы с платформой NodeMCU на WiFi процессоре ESP8266
  5. IOT ESP8266 Tutorial - AT Command Set Firmware - SwitchDoc Labs
  6. IOT ESP8266 Tutorial - Connect to the IBM Bluemix Internet of Things - SwitchDoc Labs
  7. IOT ESP8266 Tutorial - The IOT Application and Source Code - SwitchDoc Labs
  8. IOT ESP8266 Tutorial - Sending ESP8266 Data to the IBM Bluemix IOT - SwitchDoc Labs
  9. IOT ESP8266 Tutorial - Solar Power your ESP8266! #1 - SwitchDoc Labs
  10. IOT ESP8266 Tutorial - Pi to ESP8266 via REST - Part 2 - SwitchDoc Labs
  11. IOT ESP8266 Tutorial - Displaying the data on the Raspberry Pi with MatPlotLib #3 - SwitchDoc Labs
  12. NodeMCU und ESP8266 - Einstieg in die Programmierung

Comments are closed.