Nodemcu es una placa de desarrollo de microcontrolador, algo muy parecido a Arduino MKR1000 wifi, la nodemcu tiene también conexión wifi incorporada lo que la hace una candidata excelente para desarrollar proyectos del Internet of things o internet de las cosas

NodeMCu
NodeMCu
NodeMCU top
NodeMCU top
NodeMCU bottom
NodeMCU bottom

Esta placa está basada en el módulo ESP-12E O como en este caso una nueva versión denominada ESP-12F pero que a efectos prácticos difiere bastante poco de su predecesora.

secciones del NodeMcu
secciones del NodeMcu

El manejo es igual que la anterior, el corazón de este módulo es el SOC 8266 (system on chip) este chip dispone en su interior del microcontrolador Tensilica L106, el soc8266 no tiene memoria flash interna por lo que hay que proveerle una memoria flash externa esta es incluida en el módulo ESP-12f del fabricante Espresif.

En el origen de este módulo fue diseñado para ser programado con el lenguaje LUA, más tarde se incorporaron otros lenguajes como C,microphython etc, pero la gran noticia es que después de varios años se ha conseguido poder integrar y programar este módulo con el IDE de Arduino usando el lenguaje processing-wiring.

Esto nos ahorra tener que aprender otro lenguaje que por otra parte no es muy usado.

Pues bien este módulo se inserta en una placa de desarrollo para que sea más fácil de usar en la que se dispone ya unos pines de conexión para poder usarla en protoboard.

A esta placa nodemcu v3 con el módulo ESP 12f se le pone un chip CH340G que convierte el bus usb a serie, lo que nos facilita bastante la alimentación y la programación de la placa mediante un puerto micro-usb hembra que conectaremos al puerto usb del ordenador mediante un cable.

Además esta placa de desarrollo cuenta con reguladores de tensión de 5v a 3,3v.

Una cosa importante a tener en cuenta del Nodemcu v3 es que aunque la alimentación es de 5v los puertos GPIO (puerto de entrada/salida de propósito general) son a 3,3v.

Características del ESP-12F que integra la placa Nodemcu v3.

-Módulo wifi 802.11 /b/g/n 2.4 GHz (WPA/WPA2)

-CPU de 32 bits

-Memoria 4Mb de memoria flash

-64Kb memoria Ram para instrucciones

-96Kb memoria Ram para datos

-velocidad de reloj de 80MHZ y puede llegar a trabajar hasta 160MHZ

-Convertidor analógico/digital de 10 bits

-Soporta UART/GPIO/I2C/I2S/SPI/PWM

-20µA en modo Sleep

-Pila de TCP/IP integrada

Descripción de pines NodeMcu V3 ESP-12F

NodeMCU pines
NodeMCU pines

D0-D8: Puertos GPIO funcionan a 3,3V con salida PWM salvo D0.

Los pines de los puertos GPIO dan como máximo 15mA

D9-D10: otros dos puertos GPIO mas que comparten pin con Rx (recepción serie) y Tx(transmisión serie) respectivamente.

Pines G: Son pines de Gnd o masa dispone de 5 pines de masa que nos serán muy útil para alimentar nuestros sensores.

Pines 3v: Son pines de 3,3V que nos ayudaran a alimentar nuestros sensores.

A0: Este pin es una entrada analógica, ojo la tensión a aplicar aquí es entre 0-1V el convertidor analógico/digital es de 10bits y variara de 0-1023

VU: Este pin nos da la tensión del USB es decir 5v.

S3,S2: pueden ser usados como GPIO, además de otras funciones que veremos a continuación.

S3,S2,S1,S0: Son las conexiones a una SD card y/o a la vez a su memoria flash interna.

El ESP8266 tiene la característica que cuando se pone GPIO15 durante el arranque, se cargará el programa desde la SD card y lo ejecutará.

SK: Serial Clock

SC: Chip select

S0-S3: Data lines (Quad-I/O mode)

EN: Enable chip habilitado activo a nivel alto.

RST: Reset Activo a nivel bajo, lo mismo que el pulsador de reset, No borra el código sino que reinicia el programa.

VIN: Podemos alimentar desde aquí nuestro módulo en vez de por el puerto micro usb, suministrando una tensión de 5V dc.

Led: Led indicador de carga del programa parpadea cuando se carga el programa, algunas versiones pueden usar este led para activarlo o desactivarlo por software está asociado a D0

Pulsador Flash: Sirve para cargar el programa en la memoria flash pero si lo hacemos desde el IDE de Arduino al pulsar el botón de cargar programa en el IDE ya se hace automáticamente y no tenemos que hacerlo en la propia placa.

Como curiosidad este pulsador está conectado a D3 con una resistencia de pull-up interna por lo que en estado de reposo estará a nivel alto 3,3v si conectamos hay un led veríamos que permanecería encendido.

Comunicación SPI:

Pines:

S1(MOSI)

SC(SLAVE SELECT)

S0(MISO)

SK(SCLK):Estos pines están reservados no podemos usarlos.

Pines harware SPI

D5(HSCLK)

D6(HMISO)

D7(HMOSI)

D8(HCS)

Estos pines si podemos usarlos para conectar dispositivos SPI

*MOSI master out slave in maestro transmite esclavo recibe

*MISO master in slave out maestro recibe esclavo transmite

COMUNICACIÓN I2C:

Las líneas SDA(serial data) y SCL(serial clock), las podemos definir por software.