NodeMCU

Last updated
NODEMCU
NodeMCU DEVKIT 1.0.jpg
NodeMCU DEVKIT 1.0
DeveloperESP8266 Opensource Community
Type Single-board microcontroller
Introductory price$5
CPU ESP8266 [1] (LX106 [2] )
Memory128kBytes
Storage4MBytes [3]
PowerUSB
Website www.nodemcu.com
NodeMCU DEVKIT 1.0, bottom NodeMCU DEVKIT 1.0 BOTTOM.JPG
NodeMCU DEVKIT 1.0, bottom

NodeMCU is a low-cost open source IoT platform. [4] [5] It initially included firmware which runs on the ESP8266 Wi-Fi SoC from Espressif Systems, and hardware which was based on the ESP-12 module. [6] [7] Later, support for the ESP32 32-bit MCU was added.

Contents

Overview

NodeMCU is an open source firmware for which open source prototyping board designs are available. The name "NodeMCU" combines "node" and "MCU" (micro-controller unit). [8] Strictly speaking, the term "NodeMCU" refers to the firmware rather than the associated development kits.[ citation needed ]

Both the firmware and prototyping board designs are open source. [8]

The firmware uses the Lua scripting language. The firmware is based on the eLua project, and built on the Espressif Non-OS SDK for ESP8266. It uses many open source projects, such as lua-cjson [9] and SPIFFS. [10] Due to resource constraints, users need to select the modules relevant for their project and build a firmware tailored to their needs. Support for the 32-bit ESP32 has also been implemented.

The prototyping hardware typically used is a circuit board functioning as a dual in-line package (DIP) which integrates a USB controller with a smaller surface-mounted board containing the MCU and antenna. The choice of the DIP format allows for easy prototyping on breadboards. The design was initially based on the ESP-12 module of the ESP8266, which is a Wi-Fi SoC integrated with a Tensilica Xtensa LX106 core, widely used in IoT applications (see related projects).

Types

There are two available versions of NodeMCU as version 0.9 & 1.0 where the version 0.9 contains ESP-12 and version 1.0 contains ESP-12E where E stands for "Enhanced". [11]

History

NodeMCU was created shortly after the ESP8266 came out. On December 30, 2013, Espressif Systems [6] began production of the ESP8266. [12] NodeMCU started on 13 Oct 2014, when Hong committed the first file of nodemcu-firmware to GitHub. [13] Two months later, the project expanded to include an open-hardware platform when developer Huang R committed the gerber file of an ESP8266 board, named devkit v0.9. [14] Later that month, Tuan PM ported MQTT client library from Contiki to the ESP8266 SoC platform, [15] and committed to NodeMCU project, then NodeMCU was able to support the MQTT IoT protocol, using Lua to access the MQTT broker. Another important update was made on 30 Jan 2015, when Devsaurus ported the u8glib [16] to the NodeMCU project, [17] enabling NodeMCU to easily drive LCD, Screen, OLED, even VGA displays.

In the summer of 2015 the original creators abandoned the firmware project and a group of independent contributors took over. By the summer of 2016 the NodeMCU included more than 40 different modules.

ESP8266 Arduino Core

As Arduino.cc began developing new MCU boards based on non-AVR processors like the ARM/SAM MCU used in the Arduino Due, they needed to modify the Arduino IDE so it would be relatively easy to change the IDE to support alternate toolchains to allow Arduino C/C++ to be compiled for these new processors. They did this with the introduction of the Board Manager and the SAM Core. A "core" is the collection of software components required by the Board Manager and the Arduino IDE to compile an Arduino C/C++ source file for the target MCU's machine language. Some ESP8266 enthusiasts developed an Arduino core for the ESP8266 WiFi SoC, popularly called the "ESP8266 Core for the Arduino IDE". [18] This has become a leading software development platform for the various ESP8266-based modules and development boards, including NodeMCUs.

Pins

NodeMCU provides access to the GPIO (General Purpose Input/Output) and a pin mapping table is part of the API documentation. [19]

I/O indexESP8266 pin
0 [*]GPIO16
1GPIO5
2GPIO4
3GPIO0
4GPIO2
5GPIO14
6GPIO12
7GPIO13
8GPIO15
9GPIO3
10GPIO1
11GPIO9
12GPIO10

[*] D0 (GPIO16) can only be used for GPIO read/write. It does not support open-drain/interrupt/PWM/I²C or 1-Wire.

See also

Related Research Articles

<span class="mw-page-title-main">Arduino</span> Open-source hardware and software platform

Arduino is an open-source hardware and software company, project, and user community that designs and manufactures single-board microcontrollers and microcontroller kits for building digital devices. Its hardware products are licensed under a CC BY-SA license, while the software is licensed under the GNU Lesser General Public License (LGPL) or the GNU General Public License (GPL), permitting the manufacture of Arduino boards and software distribution by anyone. Arduino boards are available commercially from the official website or through authorized distributors.

<span class="mw-page-title-main">Raspberry Pi</span> Series of low-cost single-board computers used for educational purposes and embedded systems

Raspberry Pi is a series of small single-board computers (SBCs) developed in the United Kingdom by the Raspberry Pi Foundation in association with Broadcom. The Raspberry Pi project originally leaned towards the promotion of teaching basic computer science in schools. The original model became more popular than anticipated, selling outside its target market for uses such as robotics. It is widely used in many areas, such as for weather monitoring, because of its low cost, modularity, and open design. It is typically used by computer and electronic hobbyists, due to its adoption of the HDMI and USB standards.

<span class="mw-page-title-main">Intel Quark</span> Line of CPUs designed for small size and low power consumption

Intel Quark is a line of 32-bit x86 SoCs and microcontrollers by Intel, designed for small size and low power consumption, and targeted at new markets including wearable devices. The line was introduced at Intel Developer Forum in 2013, and discontinued in January 2019.

<span class="mw-page-title-main">Intel Galileo</span> Arduino-certified single-board computer

Intel Galileo is the first in a line of Arduino-certified development boards based on Intel x86 architecture and is designed for the maker and education communities. Intel released two versions of Galileo, referred to as Gen 1 and Gen 2. These development boards are sometimes called "Breakout boards".

<span class="mw-page-title-main">Intel Edison</span> Computer-on-module by Intel

The Intel Edison is a computer-on-module that was offered by Intel as a development system for wearable devices and Internet of Things devices. The system was initially announced to be the same size and shape as an SD card and containing a dual-core Intel Quark x86 CPU at 400 MHz communicating via Bluetooth and Wi-Fi. A later announcement changed the CPU to a 500 MHz Silvermont dual-core Intel Atom CPU, and in September 2014 a second version of Edison was shown at IDF, which was bigger and thicker than a standard SD card.

The VoCore is "a coin-sized Linux computer with wifi". It is a single-board computer developed in China. It includes WiFi, Ethernet, USB 2.0 and 28 GPIO (reused).

<span class="mw-page-title-main">ESP8266</span> System-on-a-chip microcontroller model with Wi-Fi

The ESP8266 is a low-cost Wi-Fi microchip, with built-in TCP/IP networking software, and microcontroller capability, produced by Espressif Systems in Shanghai, China.

<span class="mw-page-title-main">B4X</span>

B4X is a suite of rapid application development IDEs and proprietary programming language that allows the creation of applications on the following platforms: Google Android, Apple iOS, Java, Raspberry Pi and Arduino. Although the B4X syntax is very similar to BASIC, it is an entirely new language.

MicroPython is a software implementation of a programming language largely compatible with Python 3, written in C, that is optimized to run on a microcontroller.

<span class="mw-page-title-main">ESP32</span> Low-cost, low-power SoC microcontrollers with Bluetooth and Wi-Fi

ESP32 is a series of low-cost, low-power system on a chip microcontrollers with integrated Wi-Fi and dual-mode Bluetooth. The ESP32 series employs either a Tensilica Xtensa LX6 microprocessor in both dual-core and single-core variations, Xtensa LX7 dual-core microprocessor or a single-core RISC-V microprocessor and includes built-in antenna switches, RF balun, power amplifier, low-noise receive amplifier, filters, and power-management modules. ESP32 is created and developed by Espressif Systems, a Shanghai-based Chinese company, and is manufactured by TSMC using their 40 nm process. It is a successor to the ESP8266 microcontroller.

ESP Easy is a free and open source MCU firmware for the Internet of things (IoT). and originally developed by the LetsControlIt.com community. It runs on ESP8266 Wi-Fi based MCU platforms for IoT from Espressif Systems. The name "ESP Easy," by default, refers to the firmware rather than the hardware on which it runs. At a low level, the ESP Easy firmware works the same as the NodeMCU firmware and also provides a very simple operating system on the ESP8266. The main difference between ESP Easy firmware and NodeMCU firmware is that the former is designed as a high-level toolbox that just works out-of-the-box for a pre-defined set of sensors and actuators. Users simply hook up and read/control over simple web requests without having to write any code at all themselves, including firmware upgrades using OTA updates.

<span class="mw-page-title-main">MySensors</span>

MySensors is a free and open source DIY software framework for wireless IoT devices allowing devices to communicate using radio transmitters. The library was originally developed for the Arduino platform.

The RTL8710 is a low-cost Wi-Fi chip with full TCP/IP stack and MCU capability produced by Taiwanese manufacturer, Realtek.

Mongoose OS is an Internet of Things (IoT) Firmware Development Framework available under Apache License Version 2.0. It supports low power, connected microcontrollers such as: ESP32, ESP8266, TI CC3200, TI CC3220, STM32. Its purpose is to be a complete environment for prototyping, development and managing connected devices.

<span class="mw-page-title-main">Webduino</span>

The BPI Bit is an ESP32 with Xtensa 32bit LX6 single/dual-core processor based embedded system

Espruino is an open-source JavaScript interpreter for single board microcontrollers. It is designed for devices with small amounts of RAM.

<span class="mw-page-title-main">RP2040</span> ARM-architecture microcontroller by the Raspberry Pi Foundation

RP2040 is a 32-bit dual ARM Cortex-M0+ microcontroller integrated circuit by Raspberry Pi Ltd. At the same time, in January 2021, it was released as part of the Raspberry Pi Pico board.

<span class="mw-page-title-main">FatFs</span> Software library for microcontrollers

FatFs is a lightweight software library for microcontrollers and embedded systems that implements FAT/exFAT file system support. Written on pure ANSI C, FatFs is platform-independent and easy to port on many hardware platforms such as 8051, PIC, AVR, ARM, Z80. FatFs is designed as thread-safe and is built into ChibiOS, RT-Thread, and Zephyr real-time operating systems.

References

  1. Zohaib Hassan, Abhijeet, and Apoorva Sharma. "Internet of Life (IOL)." (2015). ISBN   978-93-5156-328-0
  2. Brian Benchoff (25 October 2014). "An SDK for the ESP8266 Wi-Fi chip". Hackaday. Retrieved 2 April 2015.
  3. Vowstar. "NodeMCU Devkit". Github. NodeMCU Team. Retrieved 2 April 2015.
  4. Zeroday. "A lua based firmware for wifi-soc esp8266". Github. Retrieved 2 April 2015.
  5. Hari Wiguna. "NodeMCU LUA Firmware". Hackaday. Retrieved 2 April 2015.
  6. 1 2 Systems, Espressif. "Espressif Systems". Espressif-WikiDevi. Archived from the original on 1 December 2017. Retrieved 3 June 2017.
  7. Brian Benchoff (2 January 2015). "A DEV BOARD FOR THE ESP LUA INTERPRETER". Hackaday. Retrieved 2 April 2015.
  8. 1 2 "IBM Developer".
  9. Mpx. "Lua CJSON is a fast JSON encoding/parsing module for Lua". Github. Retrieved 2 April 2015.
  10. Pellepl. "Wear-leveled SPI flash file system for embedded devices". GitHub. Retrieved 2 April 2015.
  11. "NodeMCU - A Perfect Board for IoT". circuito.io blog. 2018-11-21. Retrieved 2021-05-27.
  12. Espressif system (December 30, 2013). "IoT Wi-Fi 802.11b/g/n integrated SoC implementation of volume production". 中国上海讯. Archived from the original on 2 April 2015. Retrieved 2 April 2015.
  13. Hong. "First commit of NodeMCU Firmware". Github. Retrieved 2 April 2015.
  14. Huang R. "Initial design of NodeMCU devkit". Github. Retrieved 2 April 2015.
  15. Tuan PM. "MQTT client library for ESP8266". Github. Retrieved 2 April 2015.
  16. Olikraus; Daniel Sittig. "Universal Graphics Library for 8 Bit Embedded Systems". Google code. Retrieved 2 April 2015.
  17. Devsaurus. "U8glib for esp8266". Github. Retrieved 2 April 2015.
  18. "ESP8266 core for Arduino". GitHub . Retrieved 10 January 2019.
  19. "gpio - NodeMCU Documentation". nodemcu.readthedocs.io. Retrieved 2018-11-11.