Realizar proyectos para el actual escenario de Internet de las cosas, explicando de una forma muy simple, consiste en el intercambio de datos entre una placa y un destino remoto (una plataforma Cloud, por ejemplo). Pero una cosa crítica es elegir un hardware que admita los protocolos de red más comunes con el fin de insertar fácilmente en el contexto de IoT.

Para facilitar la vida de los técnicos e ingenieros, varias empresas apuntan a facilitar esta elección con módulos listos, así como ofrecen software de ejemplo y bibliotecas de fácil uso, lo que hace que la etapa de prototipado de un proyecto muy rápido. Un módulo interesante que viene en esa dirección es el Wifi ESP8266 NodeMCU, y el motivo es simple: se trata de una placa de pequeñas dimensiones donde están disponibles I / Os (Entradas y Salidas), regulación de tensión, conectividad USB donde insertamos la programación (en Luna o por el Arduino IDE), interfaces de comunicación serial y conectividad WI-FI (utilizando el ESP8266 12-E). Con eso notamos que esta placa es un óptimo punto de partida para proyectos que involucran IoT (Internet de las Cosas). En este artículo daremos nuestros primeros pasos con esta tarjeta de desarrollo, desde las principales características de hardware crear nuestro primer programa para insertar en este NodeMCU.

 

NodeMCU - principales características de hardware

   Esta placa que llamamos NodeMCU es una tarjeta de desarrollo para el chip ESP8266 12-E que se encuentra soldada en el Módulo. Es decir, toda la ejecución de la programación, gestión de memorias y conectividad WiFi quedan por cuenta del Chip ESP8266 12-E.

 

Figura 1 - placa de desarrollo NodeMCU y al lado solamente el Chip ESP8266 12-E.
Figura 1 - placa de desarrollo NodeMCU y al lado solamente el Chip ESP8266 12-E.

 

Las principales características de hardware de NodeMCU son:

- Alimentación de la tarjeta y carga de programas: hechos a través de un cable micro-USB común.

- ESP8266 12-E: en cuanto al procesamiento, el destaque es poseer un procesador 32 bits y frecuencia de operación de 80MHz (default) o 160MHz (seleccionable).

- Memoria Flash y RAM: cuenta con hasta 4MB de memoria Flash para programación (la cantidad de memoria Flash disponible depende de la versión de la tarjeta) y 128KB de memoria RAM

- Temperatura de funcionamiento: -40ºC hasta + 125ºC

- Alimentación del ESP8266 12-E: posee regulador de tensión de 5V (tensión de alimentación de la placa) a 3,3V (tensión de alimentación del ESP8266 12-E)

- WI-FI: opera en el estándar 802.11 b / g / n, en la frecuencia 2.4GHz.

- Seguridad del Wi-Fi: soporta las encriptaciones WPA y WPA2

- Antena del WI-FI: embutida / dibujada en la propia placa), sin posibilidad de utilización de antena externa.

- Actualización de software: a través del cable USB o inalámbrico (OTA - Over The Air)

- Entradas y salidas: hay 9 GPIO (D0, D1, ... D8), que pueden funcionar tanto como entradas y salidas digitales (incluidas las salidas PWM).

- Corriente máxima drenada por salida: 12mA.

- ADC: un canal, siendo la resolución de ADC igual a 10 bits.

- Proporciona un LED (conectado al GPIO D0) para el usuario.

- Interfaces seriales: 1 interfaz I²C, 1 Interfaz HSPI y 2 UART.

   Como se puede observar, presenta un hardware bastante interesante para aplicaciones IoT.

 

IMPORTANTE: el ESP8266 12-E no es tolerante a las entradas a nivel 5V, así como en sus interfaces y periféricos. Por lo tanto, todas las entradas y manipulaciones de periféricos (incluyendo comunicaciones seriales) deben ocurrir, obligatoriamente, con nivel de tensión máximo 3,3V.

 

   Programación del NodeMCU

   Las dos formas de programar el NodeMCU más populares en Internet son:

- Arduino IDE - Exactamente de la misma forma que se programa un Arduino común.

- Utilizando lenguaje LUA

   Aunque bastante interesante, el lenguaje LUA no es la mejor opción para quien quiere comenzar sus estudios y experimentos en el NodeMCU. La razón de esto es que el contenido (bibliotecas y ejemplos disponibles en Internet) involucrando la programación del NodeMCU en lenguaje LUA, es muy escaso si se compara a programarlo como un Arduino. Por lo tanto, para facilitar el aprendizaje vamos a programar utilizando el Arduino IDE

   Preparación del Arduino IDE para la programación de NodeMCU

   La preparación del Arduino IDE para la programación del NodeMCU requiere primero que se descargue e instale el Arduino IDE. El NodeMCU se puede programar en Arduino IDE de versiones igual o superiores a 1.6.7. Por lo tanto, descargue e instale la versión más reciente en el sitio oficial de Arduino: https://www.arduino.cc/en/main/software 

   Después de descargar e instalar Arduino IDE, vamos a descargar las bibliotecas necesarias para programar el NodeMCU. Recordando que "bibliotecas" son paquetes de códigos propios para que Arduino IDE envíe lo necesario para que podamos colocar nuestro primer código dentro del NodeMCU. Para ello, siga el procedimiento siguiente:

1. En el Arduino IDE, haga clic en "Archivo> Preferencias". Observe la figura 2.

 

Figura 2 - Menú Archivo> Preferencias
Figura 2 - Menú Archivo> Preferencias

 

2. En la ventana de preferencias, en el campo "URL adicionales de los gestores de tarjetas", introduzca la siguiente información:

http://arduino.esp8266.com/stable/package_esp8266com_index.json 

Hecho esto, haga clic en Aceptar.

3. Ahora, en el menú Herramientas, haga clic en la opción: "Tarjeta> Gestor de tarjetas". Observe la figura 3.

 

 

Figura 3 - Menú Herramientas> Tarjeta> Gestor de tarjetas
Figura 3 - Menú Herramientas> Tarjeta> Gestor de tarjetas

 

4. En la ventana del Administrador de tarjetas, hay un campo de búsqueda. Introduzca en este campo el texto "nodemcu" (sin las flechas) y espere. La búsqueda devolverá una única opción ("esp8266 by ESP8266 Community"). Haga clic en ella y luego en "Instalar".

Observe la figura 4.

 

Figura 4 - Gestor de placas de Arduino IDE
Figura 4 - Gestor de placas de Arduino IDE

 

5. Espere a Arduino IDE a descargar el contenido necesario y hacer automáticamente la instalación (puede tardar algunos minutos, dependiendo de su velocidad de conexión a Internet).

6. Una vez finalizada la instalación, cierre la ventana del Administrador de tarjetas

   En este punto, todos los recursos necesarios ya están instalados, lo que permite avanzar hacia la programación del NodeMCU propiamente dicha.

   

Driver para Windows

   Si utiliza Windows, dependiendo de la versión utilizada, puede que tenga que instalar manualmente el controlador para el convertidor USB-Serial presente en NodeMCU. Para ello, siga los procedimientos de este sitio aquí: https://www.robocore.net/tutoriais/como-instalar-o-driver-do-nodemcu.html 

   

Cómo hacer nuestro primer programa para el NodeMCU

¡Ha llegado la hora de hacer nuestro primer programa para el NodeMCU! Para ello, haremos el tradicional "Hello world" del mundo de los embarcados, vamos a parpadear un LED. El LED cambiará entre encendido y apagado cada segundo medio. Para ello, siga el procedimiento siguiente:

1. Compruebe que el NodeMCU está conectado a través del cable USB del ordenador.

2. En la pantalla del Arduino IDE, haga clic en "Herramientas", luego en la opción "Puerto", en el menú que aparece seleccione el puerto de su NodeMCU (si el controlador del convertidor USB-serial de NodeMCU para Windows está bien, será el único opción disponible).

3. En el menú "Herramientas", en la opción "Placa", seleccione la opción "NodeMCU 1.0 (ESP-12E Module)". Ver la figura 5.

 

Figura 5 - Selección de la tarjeta NodeMCU
Figura 5 - Selección de la tarjeta NodeMCU

 

 

4. Ahora vamos a crear nuestro primer programa. Para ello copie el siguiente código y péguelo en la sesión de código de Arduino IDE. En este código tenemos el estado del GPIO D0 (GPIO = puerto programable de entrada y salida, en nuestro caso D0 está conectado un LED) el cual contiene, en la propia placa del NodeMCU, un LED encendido) es alternado entre encendido y apagado a cada medio segundo.

En este LED, es importante resaltar lo siguiente: el LED se ha conectado de tal manera que su accionamiento es invertido en relación al estado de D0. O sea:

- Si D0 está en estado alto (HIGH), el LED se apaga.

- Si D0 está en estado bajo (LOW), el LED se enciende.

Por favor, lea atentamente los comentarios presentes en el código fuente.

 

// Header del equipo

#include

 

void setup () {

  // Configura el GPIO D0 como salida.

  // En el NodeMCU, el GPIO D0 se conecta directamente a un LED en la propia tarjeta.

  // Para el diseño del parpadeo-LED eso es óptimo, pues de esa forma no es necesario

  // ningún componente de hardware además del propio NodeMCU y el cable de

  // poder.

  pinMode (D0, OUTPUT);

}

 

void bucle () {

  // Enciende el LED y espera medio segundo

  digitalWrite (D0, LOW);

  delay (500);

  

  // Apaga el LED y espera medio segundo

  digitalWrite (D0, HIGH);

  delay (500);

}

5. Ahora necesitamos enviar este código dentro del módulo, para eso haga clic en "Cargar" (botón con una flecha a la derecha, según lo destacado en la figura 6) y espere, el Arduino IDE compilar (transformar el código en lenguaje de máquina e inserte el programa compilado en NodeMCU. Este proceso puede tardar unos segundos.

 

Figura 6 - botón de compilación y subida de programa a NodeMCU
Figura 6 - botón de compilación y subida de programa a NodeMCU

 

 

6. Finalizado el proceso, basta con observar el LED de su placa. Se parpadeará en la frecuencia programada.

Con eso terminamos el primer programa en el NodeMCU: el parpadea LED.

   

Yendo más allá

   Como se muestra, el hardware de NodeMCU ofrece muchos recursos, permitiendo la realización de muchos proyectos de complejidades diversas, ya sea en el contexto IoT o no. Una vez que esté familiarizado con Arduino IDE y la programación de NodeMCU podemos ir mucho más allá.

   Hay un montón de material de buena calidad en Internet, incluyendo el portugués, con proyectos para nodemcu. A continuación, las direcciones de algunos blogs y sitios con un buen contenido para NodeMCU:

- https://www.filipeflop.com/?s=nodemcu&post_type=post 

- https://www.embarcados.com.br/ 

- http://pedrominatel.com.br/pt/ 

 

 

Buscador de Datasheets



N° de Componente