Getting Started with ESP8266 NodeMCU Programming Using Arduino IDE.

NodeMCU is an open source IoT platform that includes Lua based firmware running on the ESP8266 WiFi SoC from Espressif Systems, and hardware based on the ESP-12 module. ESP8266 NodeMCU boards are ideal for IoT and other wireless connection applications.

In this tutorial I will give an introduction to ESP8266 NodeMCU development boards including the hardware and pinout structure and how to begin programming these boards with Arduino IDE.

Hardware Overview of the ESP8266 NodeMCU.

The ESP8266 NodeMCU boards come in different versions. The first version was NodeMCUV0.9 by Amica which was based on ESP-12. However, this board is no longer manufactured mainly because its width was not breadboard friendly.

NodeMCUV1.0 also by Amica is the second generation of NodeMCU and is the most popular one. This board upgraded from ESP-12 to ESP-12E giving it extra pins and is also narrower and fits on a breadboard.

NodeMCU V3 version was invented by Lolin and has the same pinout structure as V1.0 but uses a CH340G USB to TTL converter chip instead of the Silabs CP2102 from V1.0. Also, this board is slightly larger than the V1.0

ESP8266 NodeMCU hardware overview

ESP8266 NodeMCU boards have Tensilica Xtensa 32-bit LX106 RISC processor. This microprocessor supports Real Time Operating System (RTOS) and operates at 80MHz to 160 MHz adjustable clock frequency. There is 128 KB RAM and 4MB of Flash memory to store data and programs with in-built Wi-Fi / Bluetooth and Deep Sleep Operating features.

ESP8266 NodeMCU module pinout.

The diagram below shows the pinout of the ESP8266 NodeMCU board.

ESP8266 NodeMCU pinout

Power Pins These include VIN pin and three 3.3V pins.

  • VIN pin can be used to directly supply power to the NodeMCU board and its peripherals, if you have a regulated 5V voltage source. The board can also be powered through the micro-USB port.
  • The 3.3V pins are the output of an on-board voltage regulator. These pins can be used to supply power to external components.

GND is a ground pin of ESP8266 NodeMCU development board.

I2C Pins – There is only one I2C which is realized via software programming with a maximum clock frequency of 100kHz. It used to connect with other microcontrollers and other components like sensors. Both I2C Master and I2C Slave are supported. It should be noted that I2C clock frequency should be higher than the slowest clock frequency of the slave device.

GPIO Pins – There are 17 GPIO pins which can be assigned to various functions by programming the appropriate registers. These pins can be multiplexed with other functions such as I2C, I2S, UART, PWM, and IR Remote Control.

ADC – ESP8266 NodeMCU is embedded with a 10-bit precision SAR ADC at pin6 (TOUT). This ADC can perform the functions below but they cannot be implemented at the same time;

  • Measuring the power supply voltage of VDD3P3 (Pin3 and Pin4)
  • Measuring the input voltage of TOUT (pin6).

UART Pins – ESP8266 NodeMCU has two UART interfaces, that is, UART0 and UART1. Data transmission speed via UART interfaces can go up to 4.5 Mbps.

SPI Pins – There are two SPIs (SPI and HSPI) in slave and master modes. SPI mode can be implemented via software programming with maximum clock frequency of 80 MHz when working as a master and 20 MHz when working as a slave.

SDIO Pins – This is the Secure Digital Input/Output Interface (SDIO) used for interfacing SD cards. It supports 25 MHz SDIO v1.1 and 50 MHz SDIO v2.0, and 1 bit/4-bit SD mode and SPI mode.

PWM Pins – The board has four of Pulse Width Modulation (PWM) output interfaces whose functionality can be implemented via software programming. The PWM frequency range is between 100Hz to 1kHz and can be used for driving digital motors and LEDs.

Control Pins are used to control ESP8266. These pins include Chip Enable pin (EN), Reset pin (RST) and WAKE pin.

IR Remote Control – ESP8266 currently supports one infrared remote control interface using GPIO14 and GPIO5 for IR TX and IR Rx respectively.  This functionality can be implemented via software programming and supports NEC coding, modulation and demodulation. The frequency of modulated carrier signal is 38 kHz, while the duty ratio of the square wave is 1/3.

More details regarding pinout specifications for ESP8266 NodeMCU pinout can be got form the ESP8266 datasheet from Expressif Systems.

Preparing Arduino IDE for programming ESP8266 NodeMCU.

Before you can program ESP8266 NodeMCU using Arduino IDE, you need to configure the Arduino IDE with the necessary packages to handle the corresponding hardware by following the steps below.

Installing the NodeMCU package for Arduino IDE.

First open the Arduino IDE and go to Files and click on the Preference. You should get a dialogue box as shown below.

Paste the URL below in the Additional boards Manager
Installing ESP8266 package in Arduino IDE

Installing the ESP8266 Boards manager package.

Next go Tools > Board > Boards Manager to access the Boards Manager and there you search for ‘esp8266 by ESP66 Community’ and click Install.

Installing ESP8266 boards manager in Arduino IDE

Specifying the type of NodeMCU board being used.

Plug your ESP8266 NodeMCU into your computer using micro-B USB cable.

In the Arduino IDE go to Tools>Board>ESP866 Boards and select the type of NodeMCU that you are using for example in my case it is NodeMCU 1.0(ESP-12E Module).

Selecting the type of NodeMCU being used

Now plug your NodeMCU board into your computer.

Under Tools make sure you select the correct COM port being used by the NodeMCU module and the Upload Speed of 115200 otherwise you may get errors when uploading code sketches if these settings are not properly configured.

Checking NodeMCU upload speed and COM port

Drivers for CP2102 or CH340G USB to TTL Converter.

One of the challenges you may encounter with NodeMCU boards is the necessary drivers for the USB to TTL converter of the board you are using either not being available or not functioning properly with your computer’s operating system.

Usually, Windows 10 will automatically recognize CP2102 chip and activate the appropriate drivers but CH340G drivers require separate installation. I have a separate tutorial on how to install these drivers which you can refer to using the link below.

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

We have detected that you are using extensions to block ads. Please disable the Ad Blocker to support creators of content for this site.