ESP8266: Difference between revisions
(23 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
= IoThursday = | = IoThursday = | ||
The ESP8266 has been discussed quite a bit in the regular [[IoThursday]] meetings. | The ESP8266 has been discussed quite a bit in the regular [[IoThursday]] meetings. | ||
= ESP8266 = | = ESP8266 = | ||
The ESP8266 is a microcontroller that has WiFi built in, making it a great starting device for all things IoT. | The ESP8266 is a microcontroller that has WiFi built in, making it a great starting device for all things IoT. | ||
== Limitations == | |||
As of 2016-04-01 it is not currently possible to route traffic between multiple clients connected to the ESP8266 when it is acting as an Access Point (AP). | |||
To the clients it appears they are in a "client isolation mode" in that they can talk to the ESP8266 but no other devices on that particular WiFi network. Forum posts and questions asked on [http://www.esp8266.com/] suggest this may be a limitation of the firmwares currently on offer, and that it may be possible (if someone were willing to spend the time and effort) to develop a routable firmware, however it's not clear if the limited hardware of the modules would be a limiting factor. | |||
=== Pulse Width Modulation (PWM) === | |||
While it's possible to use PWM on most of the GPIO pins, and in fact most documentation reads "any of the GPIO pins", with NodeMCU 0.9.6 build 20150704 firmware it is not possible to use PWM on GPIO 16 (I/O interrupt 0). | |||
=== Analogue Reading === | |||
Only the ADC0 pin is capable of Analogue reading and reads a max of 1V with a 10 bit reading (0(min)->1023(max)) | |||
== Useful Links == | |||
[[ESP8266/Bookmarks|Find more links on the Bookmarks page]] | |||
[http://www.instructables.com/id/Get-Started-with-ESP8266-Using-AT-Commands-NodeMCU/step3 Instructibles Getting Started] | |||
Everything ESP8266 - Forum, lots of stuff, not always reliable (check posting dates - a lot of stuff may be out-of-date) | |||
http://www.esp8266.com/ | |||
Deep Sleep - what GPIO to connect, internal firmware issues (Jun2015) | |||
http://bbs.espressif.com/viewtopic.php?t=562 | |||
Lots of useful information here: https://nurdspace.nl/ESP8266 | |||
Complete starter tutorial, including programming via Arduino, AT-mode operation, etc. | |||
http://rancidbacon.com/files/kiwicon8/ESP8266_WiFi_Module_Quick_Start_Guide_v_1.0.4.pdf | |||
If YouTube's your thing, try: | |||
https://www.youtube.com/watch?v=qU76yWHeQuw | |||
Wiki pages - work in progress http://www.esp8266.nu/index.php/Main_Page | |||
Flash, fancy, UK seller - not so much useful information though. | |||
http://esp8266.co.uk/ | |||
ESP8266: "It don't come easy!" - Using the ESP8266 as a serial-slave to a Zpuino http://www.xess.com/blog/esp8266-it-dont-come-easy/ | |||
NodeMCU Quickstart http://benlo.com/esp8266/esp8266QuickStart.html | |||
Re-flashing firmware http://www.xess.com/blog/esp8266-reflash/ | |||
== Getting Started == | == Getting Started == | ||
Line 11: | Line 55: | ||
=== Modules === | === Modules === | ||
A subsection to explain the different modules and what differs between them | A subsection to explain the different modules and what differs between them | ||
List of modules on the ESP8266 community wiki: http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family | |||
[http://l0l.org.uk/2014/12/esp8266-modules-hardware-guide-gotta-catch-em-all/ ESP8266 Modules Explained] | |||
=== NodeMCU v2 === | === NodeMCU v2 === | ||
Line 46: | Line 94: | ||
==== NodeMCU ==== | ==== NodeMCU ==== | ||
Uses the Lua scripting/programming language to control the ESP8266 | Uses the Lua scripting/programming language to control the ESP8266 | ||
See http://nodemcu.readthedocs.org/en/dev/en/ for the documentation. | |||
Page describing the process for flashing NodeMCU firmware into a device, with links to Flasher programs for Win32 and Win64 http://randomnerdtutorials.com/flashing-nodemcu-firmware-on-the-esp8266-using-windows/ | Page describing the process for flashing NodeMCU firmware into a device, with links to Flasher programs for Win32 and Win64 http://randomnerdtutorials.com/flashing-nodemcu-firmware-on-the-esp8266-using-windows/ | ||
===== Programming ===== | |||
There are a couple of different programs that can be used to upload code and files to an ESP8266 with NodeMCU firmware: | |||
#[http://benlo.com/esp8266/ LuaLoader] | |||
#[http://esp8266.ru/esplorer/ ESPlorer] | |||
#[https://nodelua.org/ NodeLua], an open source web based IDE (Integrated Development Environment) | |||
#[https://studio.zerobrane.com/ ZeroBrane Studio - A (general) Lua IDE for writing scripts in] | |||
##NOTE: This IDE is not specific to the NodeMCU implementation, but can be used to write general Lua code. | |||
==== Arduino ==== | ==== Arduino ==== | ||
The ESP8266 Arduino core brings support for ESP8266 boards and modules to the Arduino environment. It lets you write sketches using familiar Arduino functions and libraries, and run them directly on ESP8266 with no external microcontroller required. ESP8266 Arduino core comes with libraries to communicate over WiFi using TCP and UDP, set up HTTP, mDNS, SSDP, and DNS servers, do OTA updates, use a file system in flash memory, work with SD cards, servos, SPI and I2C peripherals. | |||
Installation into Arduino is simple with recent versions by using the Boards Manager: see http://esp8266.github.io/Arduino/versions/2.1.0/doc/installing.html for a walkthrough guide. | |||
<gallery> | |||
File:Nodemcu-ard-boardsman.png | |||
</gallery> | |||
== Projects == | == Projects == | ||
Line 56: | Line 121: | ||
* Michael's [[Status_Boards]] project for Hackspace infrastructure status reporting | * Michael's [[Status_Boards]] project for Hackspace infrastructure status reporting | ||
* Toby's [[WiFi-enabled Banjo]] | |||
* Owen's [https://github.com/sid351/ESP8266-CameraController Timelapse Camera Controller] | |||
* Owen's [https://github.com/sid351/ESP8266-RGB-Controller RGB LED Strip Controller] | |||
[[Category:Microcontroller]] |
Latest revision as of 12:41, 12 February 2019
IoThursday
The ESP8266 has been discussed quite a bit in the regular IoThursday meetings.
ESP8266
The ESP8266 is a microcontroller that has WiFi built in, making it a great starting device for all things IoT.
Limitations
As of 2016-04-01 it is not currently possible to route traffic between multiple clients connected to the ESP8266 when it is acting as an Access Point (AP).
To the clients it appears they are in a "client isolation mode" in that they can talk to the ESP8266 but no other devices on that particular WiFi network. Forum posts and questions asked on [1] suggest this may be a limitation of the firmwares currently on offer, and that it may be possible (if someone were willing to spend the time and effort) to develop a routable firmware, however it's not clear if the limited hardware of the modules would be a limiting factor.
Pulse Width Modulation (PWM)
While it's possible to use PWM on most of the GPIO pins, and in fact most documentation reads "any of the GPIO pins", with NodeMCU 0.9.6 build 20150704 firmware it is not possible to use PWM on GPIO 16 (I/O interrupt 0).
Analogue Reading
Only the ADC0 pin is capable of Analogue reading and reads a max of 1V with a 10 bit reading (0(min)->1023(max))
Useful Links
Find more links on the Bookmarks page
Everything ESP8266 - Forum, lots of stuff, not always reliable (check posting dates - a lot of stuff may be out-of-date) http://www.esp8266.com/
Deep Sleep - what GPIO to connect, internal firmware issues (Jun2015) http://bbs.espressif.com/viewtopic.php?t=562
Lots of useful information here: https://nurdspace.nl/ESP8266
Complete starter tutorial, including programming via Arduino, AT-mode operation, etc. http://rancidbacon.com/files/kiwicon8/ESP8266_WiFi_Module_Quick_Start_Guide_v_1.0.4.pdf
If YouTube's your thing, try: https://www.youtube.com/watch?v=qU76yWHeQuw
Wiki pages - work in progress http://www.esp8266.nu/index.php/Main_Page
Flash, fancy, UK seller - not so much useful information though. http://esp8266.co.uk/
ESP8266: "It don't come easy!" - Using the ESP8266 as a serial-slave to a Zpuino http://www.xess.com/blog/esp8266-it-dont-come-easy/
NodeMCU Quickstart http://benlo.com/esp8266/esp8266QuickStart.html
Re-flashing firmware http://www.xess.com/blog/esp8266-reflash/
Getting Started
A section for useful information on getting started with an ESP8266 module
Modules
A subsection to explain the different modules and what differs between them
List of modules on the ESP8266 community wiki: http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family
NodeMCU v2
An open hardware board (costing about £3.50) that combines the ESP-12-E core (32Mbits(4MBytes) flash) with a CP2102 USB-UART so you can connect it directly to a PC USB with a standard USB micro cable. It comes flashed with a Lua core but that can easily be replaced with an Arduino core with all the Lua core features plus anything vanilla that works with Arduino.
- Official site: http://nodemcu.com/index_cn.html
- Open hardware schematics, PCB layouts, Gerbers, etc: https://github.com/nodemcu/nodemcu-devkit-v1.0
- NB: hype of version numbers when sold by various sellers on ebay! See http://frightanic.com/iot/comparison-of-esp8266-nodemcu-development-boards/ for the lowdown at time of writing.
- Wikipedia page: https://en.wikipedia.org/wiki/NodeMCU
- Michael's initial investigations page at NodeMCU_v2
Connecting to an ESP8266 module
What you'll need:
- An ESP8266 module with
- A breadboard and suitable cables
- A USB to TTL Serial adapter
- A computer to connect to the ESP8266 with
Firmware
A subsection to explain the different firmwares available for the ESP8266 and how they differ
Page with links to different firmwares http://www.electrodragon.com/w/Category:ESP8266_Firmware_and_SDK
Espressif
The default firmware
Article describing the process of re-flashing firmware http://www.allaboutcircuits.com/projects/update-the-firmware-in-your-esp8266-wi-fi-module/
Current RTOS SDK Latest Version: 1.4.0 Release date: Feb 28, 2016 http://bbs.espressif.com/viewtopic.php?f=46&t=1827
Firmware flash download tools (version 2.4 at 31 Mar 31 2016) http://bbs.espressif.com/viewtopic.php?f=57&t=433
NodeMCU
Uses the Lua scripting/programming language to control the ESP8266
See http://nodemcu.readthedocs.org/en/dev/en/ for the documentation.
Page describing the process for flashing NodeMCU firmware into a device, with links to Flasher programs for Win32 and Win64 http://randomnerdtutorials.com/flashing-nodemcu-firmware-on-the-esp8266-using-windows/
Programming
There are a couple of different programs that can be used to upload code and files to an ESP8266 with NodeMCU firmware:
- LuaLoader
- ESPlorer
- NodeLua, an open source web based IDE (Integrated Development Environment)
- ZeroBrane Studio - A (general) Lua IDE for writing scripts in
- NOTE: This IDE is not specific to the NodeMCU implementation, but can be used to write general Lua code.
Arduino
The ESP8266 Arduino core brings support for ESP8266 boards and modules to the Arduino environment. It lets you write sketches using familiar Arduino functions and libraries, and run them directly on ESP8266 with no external microcontroller required. ESP8266 Arduino core comes with libraries to communicate over WiFi using TCP and UDP, set up HTTP, mDNS, SSDP, and DNS servers, do OTA updates, use a file system in flash memory, work with SD cards, servos, SPI and I2C peripherals.
Installation into Arduino is simple with recent versions by using the Boards Manager: see http://esp8266.github.io/Arduino/versions/2.1.0/doc/installing.html for a walkthrough guide.
Projects
A section for Hackspace members to fill up with links to their ESP8266 related projects
- Michael's Status_Boards project for Hackspace infrastructure status reporting
- Toby's WiFi-enabled Banjo
- Owen's Timelapse Camera Controller
- Owen's RGB LED Strip Controller