NodeMCU una plataforma para IOT de código abierto
¿Qué es NodeMCU ?
NodeMCU es una plataforma de código abierto basada en ESP8266 que puede conectar objetos y permitir la transferencia de datos utilizando el protocolo Wi-Fi. Además, al proporcionar algunas de las características más importantes de los microcontroladores como GPIO, PWM, ADC, etc., puede resolver muchas de las necesidades del proyecto por sí solo.
Las características generales de esta placa son:
- Es Fácil de usar
- Programabilidad con los lenguajes Arduino IDE o IUA
- Disponible como punto de acceso o estación practicable en aplicaciones de API impulsadas por eventos
- Tener una antena interna
- Contiene 13 pines GPIO, 10 canales PWM, I2C, SPI, ADC, UART, y 1-Wire
- NodeMCU es un firmware de código abierto basado en LUA y desarrollado para el chip wifi ESP8266. Al explorar la funcionalidad con el chip ESP8266, el firmware de NodeMCU viene con la placa/kit de desarrollo ESP8266, es decir, la placa de desarrollo NodeMCU ESP8266. Perfectamente para utilizar con proyectos destinados al IOT o Internet de las Cosas
- Dado que NodeMCU es una plataforma de código abierto, su diseño de hardware está abierto para edición/modificación/construcción. NodeMCU Dev Kit/board consiste en el chip ESP8266 habilitado para wifi. El ESP8266 es un chip Wi-Fi de bajo coste desarrollado por Espressif Systems con protocolo TCP/IP.
- El ESP8266 es un chip Wi-Fi de bajo coste con pila TCP/IP completa y capacidad de microcontrolador producido por el fabricante chino Espressif, con sede en Shanghai.
- El Kit o placa de Desarrollo de NodeMCU consiste en un chip wifi ESP8266. El chip ESP8266 tiene pines GPIO, protocolo de comunicación en serie, etc.
- ESP8266 es un chip Wi-Fi de bajo costo desarrollado por Espressif Systems con el protocolo TCP/IP. Para obtener más información sobre ESP8266, puede consultar el módulo WiFi ESP8266.
- Las características de ESP8266 se extraen en la tarjeta de desarrollo NodeMCU. NodeMCU (firmware basado en LUA) con la tarjeta/kit de desarrollo que consiste en el chip ESP8266 (chip habilitado para wifi) combina la tarjeta de desarrollo NodeMCU que lo convierte en un dispositivo autónomo en aplicaciones de IO.
Lo que vas a aprender en este artículo
- Información general sobre NodeMCU
- Cómo instalar placas basadas en ESP8266 en el IDE de Arduino
- Cómo programar NodeMCU en el IDE de Arduino
- Introduciendo tablas que pueden ser usadas en lugar de NodeMCU
Comparamos y vemos las Diferencias entre las distintas versiones de la placa NodeMCU
Veamos la Primera versión del NodeMCU Dev Kit y su pinout como se muestra en las siguientes imágenes.
Ahora la Segunda versión del NodeMCU Dev Kit y como se muestra en las siguientes imágenes.
Podemos marcar la diferencia en la 1ª y 2ª versión de la placa de desarrollo de NodeMCU por el diseño de sus placas y los módulos ESP en ella.
- En la 1ª versión de NodeMCU Dev Kit v0.9, se utiliza el convertidor CH341SER USB to Serial mientras que en la 2ª versión de NodeMCU Dev Kit v1.0, se utiliza el convertidor CP2102 USB to Serial.
- La 1ª versión usa ESP-12 y la 2ª versión usa ESP-12E (versión mejorada).
- 6 pines adicionales (MTDO, MTDI, SD_3, MTMS, MTCK, SD_2) sacados en la versión ESP-12E de los módulos ESP-12 como se muestra en la siguiente figura. Aunque los pines SPI cuádruples son sacados, se usan internamente para el acceso a la memoria flash.
- Además, hay una ligera diferencia en el diseño de la antena en las versiones ESP-12 como ESP12-E y ESP-12F como se muestra en la siguiente figura.
¿Cómo empezar con NodeMCU?
Cómo hemos visto más arriba, la tarjeta de desarrollo NodeMCU cuenta con capacidad wifi, pin analógico, pines digitales y protocolos de comunicación serie.
Para empezar a usar NodeMCU para aplicaciones IoT primero necesitamos saber cómo escribir/descargar el firmware de NodeMCU en las Placas de Desarrollo de NodeMCU. Y antes de eso donde este firmware de NodeMCU llegará según nuestro requerimiento.
Hay desarrollos personalizados en línea de NodeMCU disponibles usando las cuales podemos obtener fácilmente nuestro firmware personalizado de NodeMCU de acuerdo a nuestro requerimiento.
Como programar Nodemcu con Arduino
Después de configurar el ESP8266 con el firmware de Node-MCU, veamos el IDE (Integrated Development Environment) necesario para el desarrollo de NodeMCU.
NodeMCU con ESPlorer IDE
Los scripts Lua se utilizan generalmente para codificar el NodeMCU. Lua es un lenguaje de programación de código abierto, ligero e integrable construido sobre el lenguaje de programación C.
NodeMCU con Arduino IDE
He aquí otra forma de desarrollar NodeMCU con un IDE bien conocido, es decir, Arduino IDE. También podemos desarrollar aplicaciones en NodeMCU usando el entorno de desarrollo de Arduino. Esto hace que sea más fácil para los desarrolladores de Arduino que aprender un nuevo lenguaje e IDE para NodeMCU.
Ejemplo de código
- Instala el IDE actual de Arduino en el nivel 1.8 o superior. La versión actual se encuentra en el sitio web de Arduino.
- Inicia Arduino y abre la ventana de Preferencias.
- Ingresa https://arduino.esp8266.com/stable/package_esp8266com_index.json en el campo Additional Board Manager URLs. Puedes agregar múltiples URLs, separándolas con comas.
Después de completar
- Cable de datos de su teléfono móvil. Se utiliza para conectar el ESP8266 MCU NODE con el PC.
- Después de instalar los controladores si es necesario.
- Comprueba qué número está asignado a tu tarjeta.
- Abre el IDE de Arduino.
- Administrador de placas abiertas desde Herramientas > Plataforma Modelos esp8266 y seleccione la placa NodeMCU 1.0 (Módulo ESP-12E) desde Herramientas .
- Cargar usando : Serial
- Frecuencia de CPU: 80Mhz
- Tamaño del flash: 4M
- Velocidad de subida: 115200
- PUERTO : Seleccione Asignar sólo puerto.
Ejemplo de carga:
//In NODEMCU pin Number D0,D1,D2,...Dn. #define LED D0 void setup() { pinMode(LED, OUTPUT); } void loop() { digitalWrite(LED, HIGH); delay(1000); digitalWrite(LED, LOW); delay(1000); }
Diferencia en el uso de ESPlorer y Arduino IDE
Bueno, hay una diferencia en el lenguaje de programación que podemos decir mientras desarrollamos la aplicación para NodeMCU usando ESPlorer IDE y Arduino IDE.
Necesitamos codificar en lenguaje de programación C\C++ si estamos usando Arduino IDE para desarrollar aplicaciones NodeMCU y en lenguaje Lua si estamos usando ESPlorer IDE.
Básicamente, NodeMCU es Lua Interpreter, por lo que puede entender el script Lua fácilmente. Cuando escribimos scripts Lua para NodeMCU y los enviamos/cargamos a NodeMCU, entonces se ejecutarán secuencialmente. No creará un archivo de firmware binario de código para que NodeMCU lo escriba. Enviará el script Lua tal cual a NodeMCU para que se ejecute.
En Arduino IDE cuando escribimos y compilamos código, la cadena de herramientas ESP8266 en segundo plano crea un archivo binario de firmware del código que escribimos. Y cuando lo subimos a NodeMCU, entonces destellará todo el firmware de NodeMCU con el nuevo código binario de firmware generado. De hecho, escribe el firmware completo.
Esa es la razón por la que NodeMCU no acepta más scripts/código Lua después de que Arduino IDE lo está flasheando. Después de ser flasheado por el sketch/código de Arduino, ya no habrá más intérprete de Lua y tendremos un error si intentamos subir scripts de Lua. Para empezar de nuevo con el script Lua, necesitamos flashearlo con el firmware de NodeMCU.
Como Arduino IDE compila y sube/escribe firmware completo, lleva más tiempo que ESPlorer IDE.
Especificación de NodeMCU DEVKIT 1.0:
- Desarrollador: ESP8266 Opensource Community
- Tipo : Microcontrolador de una placa
- Sistema operativo XTOS
- CPU : ESP8266
- Memoria: 128kBytes
- Almacenamiento: 4MBytes
- Alimentación Por : USB
- Voltaje de energía: 3v ,5v (usado con el regulador de 3.3v que está incorporado en el tablero usando el Pin VIN)
- Código : Arduino Cpp
- Ide usado: Arduino IDE
- GPIO : 10
Ventajas
- Bajo consumo de energía
- Soporte integrado para la red WIFI
- Tamaño reducido de la placa
- Bajo Coste
Desventajas
- Necesidad de aprender un nuevo idioma e IDE
- Menos pinout
NODEMCU PINOUT datasheet
Pines PWM
Notarás que algunos de los pines digitales vienen con la funcionalidad de Modulación de Ancho de Pulso, o PWM. Esto nos proporciona un medio de simular una señal analógica usando una serie rápida de pulsos digitales. Cuanto más larga sea la parte «on» de estos ciclos, más fuerte parecerá la señal.
Así que, si enciendes y apagas un LED rápidamente, cuanto más largo sea el ciclo de encendido, más brillante parecerá el LED.
Las señales PWM también se usan comúnmente para controlar motores. Cuanto más alta sea la función PWM, más potencia se transmitirá al motor.
Se podría hacer esto usando cualquiera de las salidas digitales de la MCU escribiendo un ciclo de código que haga un ciclo rápido de encendido y apagado de un pin determinado, pero esto interferiría con el programa principal y consumiría recursos valiosos. Una mejor solución es usar una de las salidas PWM separadas, que se encargará de todos los ciclos por ti una vez que hayan recibido un valor.
Puedes escribir un valor en un PWM usando la función analogWrite(). Asegúrate de que has seleccionado una salida compatible con PWM. En el NodeMCU, estos son D2, D5, D6 y D8.
Comunicación
El NodeMCU soporta los tres principales protocolos de comunicación en serie que se encuentran en el Arduino (y una gama de otros dispositivos equipados con MCU). Estos son:
UART
UART, o Receptor/Transmisor Asíncrono Universal, es una forma de comunicación en serie que depende de que un solo cable vaya en cualquier dirección. Dado que el formato es asíncrono, no hay necesidad de enviar una señal de reloj por un cable separado: los datos se transmiten simplemente a una velocidad predeterminada (la velocidad en baudios), con los dispositivos conectados desempaquetando los datos a medida que llegan al otro extremo. En el NodeMCU, la UART se hace a través de los pines Rx y Tx, que se utilizan respectivamente para recibir y transmitir.
I2C
El circuito integrado tiene una señal de reloj separada, pero usa un solo cable para la transmisión de datos. Es genial para conectar un único dispositivo maestro a múltiples esclavos, cada uno de los cuales tiene una dirección separada.
I2C también se llama ‘TWI’, o ‘interfaz de dos cables’. Los pines SCL y SDA están en los pines digitales D1 y D2. Como su nombre lo indica, I2C es genial para conectar circuitos integrados entre sí.
SPI
Nuestra tercera variedad de comunicación en serie es SPI, o «interfaz periférica en serie». Se usa comúnmente para conectar microcontroladores y otros circuitos integrados, como el I2C, pero usa tres pines en lugar de sólo dos. También es full-dúplex, lo que significa que cada operación de lectura es capaz de coincidir con una operación de escritura que viaja en la otra dirección. A diferencia del I2C, sólo el dispositivo maestro de una cadena SPI es capaz de modificar la velocidad del reloj. En el NodeMCU, SPI utiliza tres pines: D5 es el CLK; D6 es el Master In Slave Out (o MISO); D7 es el Master Out Slave In (MOSI).
¿Cómo se usa?
En Arduino IDE, UART se conoce simplemente como «serial». Cuando lo uses, no podrás leer o escribir otros voltajes digitales en los pines de RX y TX.
Puedes iniciar el comportamiento en serie usando el comando Serial.begin(), donde la velocidad en baudios se sitúa entre los paréntesis. Necesitarás igualar la tasa de baudios entre los dispositivos, o no podrán «hablar» entre ellos.
En ciertos protocolos, como MIDI, todos los dispositivos deben adherirse a una velocidad en baudios predefinida compartida por toda una industria. Por lo tanto, si usas tu NodeMCU para activar notas en un sintetizador, estarás usando una velocidad en baudios de 31250bps.
Entonces podrás usar un rango de comandos diseñados para este tipo de comunicación en serie. Si utiliza UART para recibir datos, le recomendamos que utilice el monitor serial de Arduino IDE, que encontrará en el menú de herramientas.
Asegúrate de que has configurado la velocidad en baudios a la que está usando, y podrá ver los eventos seriales entrantes en texto ASCII. Esto hace que la solución de problemas sea más sencilla.
Las otras formas de comunicación en serie son un poco más complicadas. Para usar I2c, por ejemplo, necesitarás usar wire.h en tu dibujo. Esta biblioteca te permite comunicarte fácilmente con dispositivos compatibles.
Ten en cuenta que sólo hay un búfer de 32 bytes en la biblioteca, por lo que cualquier transmisión mayor que ésta no se enviará correctamente. Cada bit más allá del buffer será cortado, resultando en un flujo de datos incomprensibles. Para muchas aplicaciones, esto no es un gran problema; si realmente necesitas enviar muchos datos, entonces encuentra una forma elegante de dividirlos en trozos más pequeños, y envíalos uno tras otro.
Finalmente, consideremos el SPI. Este protocolo está diseñado para la conexión de múltiples dispositivos, e incorpora 3 cables comunes a cada dispositivo de la cadena, y una conexión adicional de «selección de esclavo» única para cada dispositivo esclavo. Al tirar del pin SS de un dispositivo esclavo hacia abajo, le indicará que envíe y reciba información a lo largo de los otros 3 cables. Para usar SPI, querrás descargar la biblioteca SPI del IDE de Arduino.
¿Cuál es la diferencia entre NodeMCU y esp8266?
El ESP8266 es un microcontrolador con capacidad WiFi. Requiere una memoria flash externa y alguna antena para funcionar. Hay diferentes módulos y tarjetas de desarrollo con este sistema. Algunas tarjetas de desarrollo usan módulos básicos de esp8266 y otras integran el chip, la memoria flash y la antena en el PCB.
NodeMcu es una tarjeta de desarrollo con esp8266 y un firmware con el mismo nombre. En la foto hay una placa de desarrollo NodeMcu con un módulo esp-12F esp8266 soldado al PCB del NodeMcu. La placa de desarrollo añade los circuitos necesarios alrededor del módulo – pull-up y pull-down de la configuración de arranque y habilita el pull-up de los pines. En la placa hay un chip USB para conectar el esp8266 al USB y un circuito de reinicio automático para permitir que la herramienta de carga ponga el esp8266 en modo intermitente. La alimentación de 3,3 V para el esp8266 se convierte a partir de los 5 V del USB.
El firmware de NodeMcu es un intérprete del lenguaje Lua y no tiene nada que ver con Arduino, pero la placa de desarrollo NodeMcu puede ser usada como cualquier otra placa de desarrollo esp8266.
Características del ESP8266
- Código abierto
- Interactivo
- Programable
- Bajo coste
- Sencillo
- Inteligente
- Habilitado para WI-FI
- USB-TTL incluido
- Plug & Play
Especificaciones del ESP8266
- Voltaje : 3.0 ~ 3.6V
- Corriente: 80mA
- CPU Tensilica Xtensa LX106 de 32 bits RISC que funciona a 80 MHz
- 16 Pines GPIO
- SPI
- I2C
- I2S
- UART – 2x TX y 1x RX
- 1x 10bit ADC
- Temperatura de funcionamiento : -40°C ~ 125°C
- Rango de frecuencia: 2400 ~ 2483.5MHz
Hay una versión 2 (V2) disponible para el kit de desarrollo de NodeMCU, es decir, la tarjeta de desarrollo de NodeMCU v1.0 (versión 2), que normalmente viene en color negro.
- El kit de desarrollo de NodeMCU tiene pines analógicos (es decir, A0) y digitales (D0-D8) en su placa.
- Soporta protocolos de comunicación serie como UART, SPI, I2C, etc.
- Usando tales protocolos seriales podemos conectarlo con dispositivos seriales como la pantalla LCD habilitada para I2C, el magnetómetro HMC5883, el girómetro MPU-6050 + el acelerómetro, los chips RTC, los módulos GPS, las pantallas táctiles, las tarjetas SD, etc.
WIFI NODEMCU ESP8266 y Blynk | Controla tus Proyectos desde Internet Muy Facil
Ejemplos de uso de NodemCu
¿Qué otros tableros puedo usar en lugar de NodeMCU?
Hay varios factores importantes para elegir el tipo de placa para un sistema IOT, como el número de pines GPIO, protocolos de comunicación, incluyendo una antena, etc.
Además, hay diferentes tablas y plataformas, cada una con sus características específicas. Aquí los hemos comparado basándonos en las características más importantes requeridas para los proyectos de IOT.
Placa | Precio en € |
Voltaje | GPIO | ADC | PWM | UART | SPI | I2C | Antena interna | Características especiales |
Nodemcu | 8.39 | 5 | 13 | 1 | 10 | 2 | Sí | Sí | Sí | LED de usuario – Botones RESET y FLASH |
Módulo Esp8266-01 | 4.55 | 3.3 | 2 | 1 | 0 | 1 | No | No | Sí | – |
Wemos D1 mini | 2.04 | 5 | 11 | 1 | 10 | 3 | Sí | Sí | Sí | Botones RESET y FLASH |
Witty Cloud | 16.50 | 5 | 9 | 1 – conectado a LDR | 9 | 1 | Sí | Sí | Sí | LDR – RGB – 3x Botones – LED de usuario |
Módulo Esp8266-12 | 4.99 | 3.3 | 13 | 1 | 12 | 3 | Sí | Sí | Sí | – |
Módulo ESP8266-12E | 4.50 | 3.3 | 17 | 1 | 4 | 2 | Sí | Sí | Sí | – |
ESP-201 | 6.59 | 3.3 | 15 | 1 | 15 | 2 | Sí | Sí | Sí | – |
Adafruit HUZZAH | 11.99 | 5 | 9 | 1 | 9 | 2 | Sí | Sí | Sí | Botones de RESET y de usuario – LED de usuario |
BRKWSO1 | 23.88 | 3.3 | 9 | – | – | 1 | . | – | No | – |
Última actualización el 2023-05-17 / Enlaces de afiliados / Imágenes de la API para Afiliados
Debe estar conectado para enviar un comentario.