ESP8266 NodeMcu is a popular and widely used development board based on the ESP-12E WiFi Module that combines elements of easy programming with Arduino IDE (C\C++) and WiFi capability. Through the build-in programmer and CH340G USB-to-Serial chip, flashing the ESP8266 and serial output on a PC, development and prototyping projects are done with ease. Just like Arduino boards, the ESP8266 NodeMcu has GPIO pins, voltage regulator, ADC, Micro-USB port (for flashing and serial output) – all on one board. On top of that the ESP8266 NodeMcu has a full WiFi that takes care of the WiFi communication to a server or client.
The ESP8266 is a System on a Chip (SoC), manufactured by the Chinese company Espressif. It consists of a Tensilica L106 32-bit micro controller unit (MCU) and a Wi-Fi transceiver. It has 11 GPIO pins* (General Purpose Input/Output pins), and an analog input as well. This means that you can program it like any normal Arduino or other microcontroller. And on top of that, you get Wi-Fi communication, so you can use it to connect to your Wi-Fi network, connect to the Internet, host a web server with real web pages, let your smartphone connect to it, etc … The possibilities are endless! It’s no wonder that this chip has become the most popular IOT device available.
It contains a built-in 32-bit low-power CPU, ROM and RAM. It is a complete and self-contained Wi-Fi network solution that can carry software applications as a stand-alone device or connected with a microcontroller (MCU). The module has built-in AT Command firmware to be used with any MCU via COM port. The ESP8266 can be flashed and programed using the Arduino IDE. Due to its large open source developer community, a large number of libraries for this popular microcontroller is available .
- 32 KB instruction RAM
- 80 KB user data RAM
- 16 KB ETS system data RAM
- External QSPI flash: up to 16 MB is supported (512 KB to 4 MB typically included)
- IEEE 802.11 b/g/n Wi-Fi
- Integrated TR switch, balun, LNA, power amplifier and matching network
- WEP or WPA/WPA2 authentication, or open networks
- 16 GPIO pins
- I²C (software implementation)
- I²S interfaces with DMA (sharing pins with GPIO)
- UART on dedicated pins, plus a transmit-only UART can be enabled on GPIO2
- 10-bit ADC (successive approximation ADC)
All ESP8266 variants have a ESP8266EX core processor and a Tensilica L106 32-bit micro controller unit. This is a low cost, high performance, low power consumption, easy to program, wireless SoC(System-On-Chip). It provides capabilities for 2.4 GHz Wi-Fi (802.11 b/g/n, supporting WPA/WPA2), general-purpose input/output (13 GPIO), Inter-Integrated Circuit (I²C), analog-to-digital conversion (10-bit ADC), Serial Peripheral Interface (SPI), I²S interfaces with DMA (sharing pins with GPIO), UART (on dedicated pins, plus a transmit-only UART can be enabled on GPIO2), and pulse-width modulation (PWM).
It has a build-in programmer and a voltage regulator, that allow flashing and powering the device via micro-USB. The system operates at 3.3V.
Here is an overview of the ESP8266 NodeMcu’s specifications:
- Tensilica L106 32-bit micro controller unit at 80 MHz (or overclocked to 160 MHz)
- 32 kB instruction RAM
- 80 kB user data RAM
- 16 kB ETS system data RAM
- Flash Memory 4Mb
- USB – micro USB port for power, programming and debugging
- 13 GPIO pins
- 802.11 b/g/n, supporting WPA/WPA2
- STA / AP modes support
- TCP / IP protocol stack, One socket
- TCP / UDP Server and Client
- Serial port baud rate configuration: 1200/2400/4800/9600/19200/38400/57600/74800/115200 bps
- Pin-compatible with Arduino UNO, Mega
- KEY button: modes configuration
- 32-bit hardware timer
- WiFi operation current: continuous transmission operation: ≈70mA (200mA MAX), deep sleep mode: <3mA
- Serial WiFi transmission rate: 110-460800bps
- Temperature: -40℃ ~ + 125 ℃
- Humidity: 10%-90% non-condensing
- Weight: about 20g (0.7oz)
- Pulse-Width Modulation (PWM)
- Interrupt capability
- 3.3V operating voltage, internal voltage regulator allows 5V on power input
- maximum current through GPIO pins: 12mA (source), 20mA (drain)
- available firmware for Arduino IDE
- Websocket libraries available
32-bit Tensilica Processor
The ESP8266EX microcontroller integrates a Tensilica L106 32-bit RISC processor, which achieves extra-low power consumption and reaches a maximum clock speed of 160 MHz. The Real-Time Operating System (RTOS) and Wi-Fi stack allow about 80% of the processing power to be available for user application programming and development.
Engineered for mobile devices, wearable electronics and IoT applications, ESP8266EX achieves low power consumption with a combination of several proprietary technologies. The power-saving architecture features three modes of operation: active mode, sleep mode and deep sleep mode. This allows battery-powered designs to run longer.
ESP8266EX is integrated with a 32-bit Tensilica processor, standard digital peripheral interfaces, antenna switches, RF balun, power amplifier, low noise receive amplifier, filters and power management modules. All of them are included in one small package, our ESP8266EX.
ESP8266EX is capable of functioning consistently in industrial environments, due to its wide operating temperature range. With highly-integrated on-chip features and minimal external discrete component count, the chip offers reliability, compactness and robustness.
There are a variety of development environments that can be equipped to program the ESP8266. You can go with a simple Notepad/gcc setup, or fine-tune an Eclipse environment, use a virtual machine provided by Espressif, or come up with something of your own.
Fortunately, the amazing ESP8266 community recently took the IDE selection a step further by creating an Arduino core. If you’re just getting started programming the ESP8266, this is the environment we recommend beginning with, and the one we’ll document in our projects.
This ESP8266 core for Arduino is based on the amazing work by Ivan Grokhotkov and the rest of the ESP8266 community. Check out the ESP8266 Arduino GitHub repository for more information. We provide a step-by-step instruction covering the setup of the Arduino core for the ESP8266 here.