bclose

Programando NODEMCU con Arduino IDE

Los NodeMCU y Arduino

Programando NODEMCU con Arduino IDE

 

 

    • Volvemos a ver al ESP8266, ahora integrado en el módulo NodeMCU v1.0.
    • Descargar el plugin ESP8266 para el IDE de Arduino.
    • Configurar el entorno.
    • Nuestro primer programa con NodeMCU v1.0, blinking LED

 

Material requerido.

Node MCU board 

Node MCU V2 y V3


micro usb
Un cable USB a microUSB, como el de cualquier teléfono móvil

 

NodeMCU, un microcontrolador basado en el ESP8266

 

Ya hemos hablado anteriormente sobre el módulo WIFI ESP8266 en otras ocasiones, pero hoy vamos a hablar de una placa que está basada en él: el NodeMCU v1.0. Queremos recalcar que si queréis juguetear con él es conveniente que busquéis la versión 1.0 porque los cambios introducidos han sido enormes y para mejor.

Uno de esos cambios es que el procesador que incluye, en la versión 12E, o mejorada (del inglés Enhanced), tenemos 6 pines más, cuatro de los cuales están dedicados a la comunicación SPI, que son los CS0, MISO, MOSI y SCLK. Si no tenéis claro lo que significa SPI o no lo recordáis, podéis echar un vistazo a este otro tutorial en el que hablamos de él cuando enredábamos con displays: El bus SPI.

Podéis ver los nuevos pines en el siguiente esquema:

detalle pinout
detalle pines

En el tutorial Modelos ESP2866 ya presentamos al NodeMCU y dijimos que si se confirmaba que se podía programar como un Arduino mediante el plugin ESP8266 podría ser el Arduino que llevamos mucho tiempo esperando con WIFI incluido por un precio ridículo además.

Pues bien, ya está confirmado y gracias al grupo de benefactores de la humanidad que desarrollaron el plugin ESP2866 para el IDE Arduino, podemos utilizarlo ahora también para programar el NodeMCU desde el IDE de Arduino.

En lugar de tener que aprender a programar el dichoso módulo en LUA, podemos ahorrarnos tiempo y quebraderos de cabeza y empezar a cacharrear directamente con él usando el C que utilizamos en nuestro IDE de Arduino.

Vamos a recordar un poco las ventajas que nos ofrece el plugin del ESP2866 para programar el NodeMCU:

 
  • UNO – Puedes desarrollar con el mismo IDE que ya conoces
  • DOS – Han hecho un Cross compiler, de forma que prácticamente utilizas los mismos comandos que utilizas con Arduino, con lo que te ahorras aprender nada nuevo (Y los dolores de cabeza)
  • TRES – Dependiendo del modelo de ESP8266que tengas, dispones de más o menos pines disponibles con PWM y otras cosas más como I2C y SPI, pero para el típico  modelo ESP8266-01 ( O sea el que tienes con casi total probabilidad) solo tienes dos pines disponibles GPIO0 y GPIO2, pera ya hablaremos que hay otros modelos con todos los pines disponibles
  • CUATRO – Es decir, que puedes programar el procesador de tu ESP8266exactamente como si fuera unArduino con los mismos comandos, y en lo que se refiere a la WIFI, ya puedes olvidarte de los comandos AT, porque incluye una serie de librerías, que imitan la librería WIFI de Arduino con lo que se pueden trasplantar muchos programas.

Decíamos que NodeMcu es una iniciativa Open Source de Espressif systems  para el desarrollo de un modelo sencillo de integrar la IOT en donde haga falta. Para ello desarrollan modelos de hardware y software que facilite el desarrollo de programas y aplicaciones basados en WIFI.

Una ventaja con respecto a otros módulos que integran el ESP2866 es que todos sus pines están disponibles en el exterior, en un montaje que se puede colocar en una protoboard (síi, por fin) y además incluye un conector mini USB para programar el chip interno y comunicarse con el PC si es necesario, con lo que nos evitamos el adaptador FTDI a USB que siempre es engorroso.

 

Variantes de Nodemcu

 

Vamos a echar un ojo a los diferentes modelos de las placas NodeMCU, porque al ser un proyecto open-source existen una serie de variantes ya que cualquiera puede producir y vender placas NodeMCU.

Principalmente son tres los fabricantes: Amica, Doit/Smartduino y Lolin/WeMos. En nuestro caso hemos probado la versión NodeMCU Amica.

 

 Primera Generación, V1 (versión V0.9) 

La primera generación de placas NodeMCU, que lleva la numeración v0.9, tiene la peculiaridad de que el color de la placa suele ser amarillo y que  el formato es más ancho que el de sus sucesoras, 47 mm x 31 mm. El inconveniente de este tipo de placas es que, debido a su tamaño, cubre los diez pines de una protoboard normal haciendo que sea engorroso utilizarla para nuestros proyectos porque no deja pines libres.

vista principal
Vista superior
Descripción de los pines del NodeMCU v0.9

Descripción de los pines del NodeMCU v0.9Segunda Generación, V2 (versión V1.0)

 

 Segunda Generación, V2 (versión V1.0)  

En la segunda generación de placas ya han solucionado el problema del tamaño y podemos usar las nuevas NodeMCU v1.0 en nuestras protoboards sin incomodidades, ya que nos deja una fila de pines disponibles a cada lado. Además llevan los nuevos chips mejorados ESP12E

pinout

 

Tercera generación, V3 (versión V1.0) 

En este caso no se trata de una auténtica nueva versión ya que NodeMCU no ha sacado ninguna nueva especificación, sino una versión que LoLin se ha sacado de la manga y que presenta una serie de innovaciones menores con respecto a la versión V1.0.

En teoría el puerto USB es más robusto y LoLin ha usado uno de los pines reservados para la alimentación USB de salida y otro de los pines reservados para una conexión GND adicional.

Otra peculiaridad de esta versión es que el tamaño es más grande que el de las placas Amica y Doit. En las siguientes imágenes se puede apreciar la diferencia de tamaño entre las versiones V2 y V3.

 

detalle
vista general
version loolin

 

Ambas varinates son equivalentes ne cuanto a prestaciones, pero el menor tamaño de la version Amica puede ser una ventaja.

Bueno, vamos a dejarnos de tanta cháchara y cacharreemos ya con nuestro NodeMCU. Pero primero tenemos que instalarlo en nuestro equipo y para ello conviene que sigas los pasos que describimos en esta sesión en su día, en el caso de que aun no lo tengas instalado.

Arduino, si volvéis ahora a seleccionar las placas con  \Herramientas\Placa, veréis que ya podéis seleccionar las correspondientes al NodeMCU 1.0 (ESP-12E Module).

Selecciona nodemcu

Nos falta seleccionar el puerto en el que está instalado NodeMCU en nuestro equipo, así que navegamos a \Herramientas\Puerto y seleccionamos el que haya elegido para ello nuestro sistema operativo. En nuestro caso elegimos el puerto COM7.

Seleccionar puerto comm

Ya tenemos el NodeMCU instalado en el equipo, hemos descargado el plugin del ESP8266 para el IDE de Arduino, hemos seleccionado la tarjeta y el puerto en el que lo hemos instalado, así que ya sólo nos queda comprobar que funciona correctamente.

 

PROBANDO EL BLINKING LED

 

 

Ya sabéis que es costumbre que el primer programa que utilizamos con un micro controlador sea el blinking LED, sustituyendo a los famosos “Hola Mundo” de la programación habitual. Es verdad que se nos va a quedar muy corto y con ganas de hincarle más el diente al NodeMCU, pero por algo hay que empezar y la tradición, es la tradición.

Vamos a cargar el programa de ejemplo del blinking LED del ESP8266, que nos va a funcionar sin ningún problema en nuestro NodeMCU. Para ello iremos a \Archivo\Ejemplos\ESP8266\Blink y haremos click en el ejemplo.

cargando ejemplo
 
  • Atención: Asegúrate de cargar el ejemplo que corresponde al ESP8266, porque el LED esta en un pin diferente del habitual 13 de Arduino, y si no lo haces así no veras el parpadeo.  

Como siempre cargaremos el programa en nuestra placa haciendo click en la flecha horizontal y veremos que el LED azul de la placa ESP8266, que se encuentra en la zona de la antena, comienza a parpadear indicando que se está realizando la transferencia de datos.

transfiriendo programas

Fijate que la descarga del programa se indica con una linea de puntos suspensivos  media que avanza el volcado

Pasados unos segundos se habrá completado la transferencia y veremos que el LED de la placa del NodeMCU empieza a parpadear.

detalle del led

Si todo ha ido bien y vemos cómo parpadea el LED significará que tenemos instalado y configurado nuestro NodeMCU para que en futuras sesiones podamos emprender proyectos de mayor envergadura.

 

Resumen de la sesión

 

 

    • Hemos visto el ESP8266 desde un nuevo punto de vista, integrado en la placa NodeMCU Amica.
    • Presentamos la configuración básica del entorno para programar directamente el NodeMCU.
    • Volcamos nuestro primer programa y probamos el simple Blink LED

 

 

(18) Comments

    • Hilario gonzalez

    compre v3 pero no funciona parase que esta en corto q puedo hacerle para dejarlo funcional le agradecería su ayuda

    • Hilario, si crees que tu modulo esta defectuoso lo unico que podemos hacer es pedir que te envien otro en condiciones

      • eso tendría un costo

        no podría quitar el modulo wifi y usarlo directamente
        o diseñar un pcb

    • Sandar

    Hola! Muchísimas gracias por compartir 🙂 Explicado muy claro paso a paso para hacer la practica exitosa aun para quien tenemos cero conocimiento de electrónica y de arduino, facilitando el conocimiento con este modulo poderoso a quien queremos acercarnos a la increíble experiencia de IOT 🙂

    Si la practica fue exitosa es decir ya prendió el led, entiendo correcto que ya esta configurado el nodemcu para próximos proyectos?

    Que se hace para poder hacer otras practicas? Intento hacer otras practicas y supongo no las realiza por que esta ocupado con el parpadeo del led.

    Muchas gracias de antemano 🙂

    • Hola Sandar, funciona como un Arduino normal. Con el programa del LED sólo comprobamos que esté todo correctamente configurado; ahora ya puedes cargarle cualquier otro sketch que realices. Un saludo!

    • Buenos dias Sandar,

      Una vez que tienes funcionando ese primer programa ya puedes programar tu nodemcu como si fuese un arduino, por lo que cualquiera de las practicas que necontraras en prometec para arduino funcionaran mas o menos con el nodemc

      Digo mas o menos, porque seguramente algunas librerias daran errores, pero esto es algo que ha mejorado muchisimo en el ultimo año

  • Saludos….

    Bueno, al final no me hizo falta….. conecté el relé a los 3v del Nodemcu y funciona, aunque el relé pone 5v parece que también funciona con 3v.

    Otra pregunta para los gurús de la electrónica…..
    Tengo en cabeza un proyecto, pero necesitaría alimentar el nodemcu directamente de la red… he visto esto http://www.ebay.es/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=HLK-PM01&_sacat=0 ¿las conexiones serían los 2 pines que ponen AC a cada cable de la corriente eléctrica de la casa y -Vo sería al negativo de la placa y el +Vo al positivo? ¿el positivo iría al pin vin de la placa y el negativo al gnd que hay justo al lado?

    Gracias y perdonad por mis preguntas…. en electrónica estoy pez :S

    • Hola Chujalt, asi parece. Parece ser un transformador con rectificador y Los pines que indican AC son la entrada de alterna (Alternate Current) y los otros dos pines son la salida del rectificado positivo y GND

    • Hola Chujalt.

      Eso es una fuente conmutada de 5V y 600mA. Te sirve igualmente cualquier cargador de móvil o tablet. Los de móvil entregan entre 700mA y 1A y los de tablet normalmente 2A. Por si tienes alguno por ahí y lo puede reutilizar.

      Saludos.

  • hola, estoy con un proyecto en el que debo usar un lcd 16×2 y un keypad 4×4 con el nodemcu usando Arduino IDE, he probado con exito ambos por separado, pero al conectar ambos (keypad y lcd) al nodemcu.el keypad no funciona correctamente. Las conexiones las tengo asi LCD(4,5,vin,gnd) KEYPAD(rows{16,0,2,14} ; cols{12,13,15,10}). He estado leyendo (pero no estoy segura) que el keypad tambien debe utilizar el protocolo i2C y utilizar tambien los pines 4 y 5. Es ese el problema, y si es eso..como hago la conexion y la programción queda igual?. Si alguien puede ayudarme con esto le agradecería mucho.

    • Hola Vanelo
      El keypad no suele ser I2C porque son una matriz directa y la no tengo suficiente informacion para darte una razon sensata sobre tu problema, pero no es descartable que la capacidad de alimentar todo eso del nodemcu sea poca y lo que tengas sea un problema de alimentacion.
      Recuerda que el nodemcu dispone de mucha menos potencia que suministrar que arduino. Yo probaria a alimentar todo con un alimentador externo de 3.3 y al menos 1 amperio

  • Saludos….

    Como os dije que la electrónica no la llevo muy bien al final me he pillado esto, http://www.ebay.es/itm/161270163167?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

    Como de voltaje de entrada admite de 3 a 32 voltios y de salida de 5 a 35 voltios, me imagino que conectándolo y poniéndolo al mínimo dara una salida de 5 voltios, eso me imagino :S

    ¿es así o estoy equivocado?

    Gracias y saludos

    • Hola de nuevo.

      Te has pillado un convertidor DC-DC Boost, o dicho de otro modo, un elevador de tensión. Lo que hace ese módulo es coger un voltaje de entrada y elevarlo a la salida. En la conversión se pierde corriente para elevar el voltaje. Así, con una entrada de 3.3V 500mA, obtienes a la salida 5V unos 280mA aproximadamente (hay que restarle también el porcentaje de eficiencia del módulo). Pero eso si a la entrada tienes 500mA de corriente. Los pines GPIO del ESP8266 me temo que no entregan ni una décima parte.

      Como te comenta Admin, necesitas un transistor que utilizarías como un conmutador. Lo alimentas con 5V y conectas el motor, pero no se activa hasta que por la base del mismo entren los 3.3V del NodeMCU.

      Saludos.

    • Hola chujalt, has comprado una fuente power up que te permitira subir el vltaje de 3 a 5V, aunque andas muy en el limite. Ademas si quieres mover un motor a 5V tienes que alimentarlo a traves del nodemcu y no se que tal andara de potencia para eso

      En realidad, si estas aliemntando el nodemcu con un USB, ya tienes ahi 5V que podrias usar suponiendo que la potencia necesaria no sea excesivo y si no siempre puedes usar la tipica fuente de pc ATX para alimentar todo

  • ¿Que hay Jesús? Me alegro de “veros” de nuevo.

    Llevaba algún tiempo sin pasar por aquí. Me saturé un poco y deje estos temas por un tiempo, pero me está volviendo a picar el gusanillo.

    Gracias a ti y al admin por las respuestas… ya iré probando. 😉

  • Saludos.
    He adquirido un nodemcu V2 y ya he hecho el típico blink y también controlar el led vía web….. todo perfecto.

    El tema es que no soy un experto en electrónica y veo que si quiero conectarle mas componentes, un servo, por ejemplo, éste se alimenta a 5v y el nodemcu sólo tiene salidas de 3v….. ¿hay alguna manera sencilla de solucionar esto?

    Muchas gracias y saludos

    • Hola Chujalt, cuanto tiempo…

      Pues sí. Se llama CD4050 o HEF4050B y es un buffer no inversor, o adaptador de niveles, aunque yo lo he usado de forma inversa, o sea, utilizar módulos de 3.3V con Arduino que usa 5V, pero creo que a la inversa también funciona pues su alimentación mínima es de 3V. También existen módulos convertidores 5V-3.3V y viceversa del tamaño de una moneda, pero no sé cuanta corriene admiten. Estos sistemas más bien son para adaptar señales de control y datos.

      Otra opción es usar un transistor con su diodo de protección para cargas inductivas. Por la base del mismo, mediante resistencia calculada en base a la corriente del motor, introduces los 3.3V y al colector el motor más los 5V. Emisor a GND. El transistor puede manejar cargas de corriente importantes sin ningún problema.

      Saludos.

    • Hola Chujalt
      Lo mas sencillo que se me ocurre es usar un transistor como el 2222, pones el pin de 3.3v a la base con una resistencia de digamos 1K, le conectas 5V a la entrada y conectas la salida del transistor al servo y listo.

Give a Reply

WordPress Anti-Spam by WP-SpamShield