bclose

Programando NODEMCU con Arduino IDE

Los NodeMCU y Arduino
tienda online prometec

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

 

 

(78) Comments

  • Hola ,algún tutorial para manejar la placa NodeMCU vía WiFi.

    • Hola Luis, de momento tenemos para subir datos a una Web desde el nodemcu, pero intentaremos hacer aluna para controlar el Nosemcu desde una página en cuanto podamos. Un saludo.

    • Bon Su

    Buenas es para saber si en el pin *Vin* del NodeMCU ESP8266 puede recirbir entradas de 12V y el se encargaria de regularlo, o hasta que voltaje aceptaria, disculpen mi ignorancia.No se me da bien bien en cuestiones de electronica.

    • No, no metas 12v o tendras problemas

  • Se que no viene al caso, pero me dieron esa placa NodeMCU ESP8266 para un trabajo y no soy buena en electronica. Tengo dos dudas:
    1. El pin *Vin* es para alimentarlo cierto? en ese caso
    2. El pin *Vin* de la placa NodeMCU, cuanto voltaje puede recibir como máximo.
    😅😅😅Soy muy nueva en esto y de verdad necesito una respuesta. No quiero quemar por mi ignorancia la placa,porfavor se le agradece.

    • Hola Bon, el pin Vin puede ser usado para alimentar tu nodemcu y esta conectado a la entrada del USB, es decir es la tension de entrada

      No he probado directamente esto pero deberia ser igual a la tension de entrada del USB es decir 5V, pero asegurate de ello porque el nodemcu funciona a 3,3v

  • Muchas gracias por el tutorial, me ha servido un montón. Saludos!

    • Hola Diego, gracias a ti por seguirnos. Un saludo.

  • Hola, he leído en algún lado, la verdad que he buscado pero no se donde lo leí, dos cosas que me generan dudas sobre la Wemos D1:
    1. compatible con librería de Arduino WiFi.h ¿no lo entiendo? Si no pones su propia librería no funciona.
    2. compatible con NodeMCU, ¿como esta eso? porque si compatible porque no se selecciona una de las dos versiones NodeMCU ¿no? y se selecciona la placa Wemos D1. Parece que es otro error ¿no?.

    A ver si alguien lo puede aclarar….gracias

    • Fabrizio

    hola!!! estoy haciendo proyectos con arduino, pero no puedo conectar mi placa a internet y no se por que, alguien me puede apoyar??

    • Albert

    Veo q el nodemcu tiene los botones de flah y reset…se deben usar cuando se usa el IDE de arduino???

    • No necesitamos usar el flash. El reset lo que hace es reiniciar el modulo.

    • Adrian

    que tal, oye tengo la nodemcu V3 lolin, ya tiene cargado el micropython y lo trabajo con puttyn, pero no puedo acceder a transmision via wifi, es decir comunicarme con un telefono movil, que puedo hacer pues con el ide de arduino no reconoce mi tarjeta y tambien como puedo saber la ip de mi tarjeta, gracias, saludos

    • Hola Adrian, si tienes cargado el micropython no podras programarlo con tu entorno arduino. Para ello tienes que instalar el firm que te indicamos en la pagina ¿Vale?

  • Hola Mario, tengo una placa nodemcu y la he instalado el firmware de Lua, la pregunta es si puedo usarla con el ide de arduino o me tengo que pasar a lua. Como le instalo el firmware de arduino?

    • Juan

    Hola, tengo un esp8266 v2, y no logro hacerlo andar con un pn532 V3, los ejemplos que traen me dan error. Alguien sabe si es compatible?
    Tiene algun codigo sencillo para leer las tarjetas?

    • No hemos trabajado con el pn532 V3, a ver si alguien puede ayudarte.

    • Luis

    Me podrían ayudar a saber como poder montarle una pagina web a este modulo para poder controlarlo desde un smartphone desde el navegador? no necesito sacarlo al Internet, solo local

    • Hola Luis,
      Todos los programas que hay para el esp8266 en nuestra pagina deberían funcionar sin modificaciones en tu Nodemcu y el ejemplo que mencionas creo recordar que esta hecho en la web de prometec

    • Carlos

    Hola! gracias por el tutorial, todo está muy bien explicado y todo fue chévere hasta que intenté subir el sketch, me dio error, este fue el mensaje.

    Uploading 226352 bytes from C:\Users\Guarrod\AppData\Local\Temp\arduino_build_841717/Blink.ino.bin to flash at 0x00000000
    error: failed sending 1072 bytes
    .error: failed sending 1044 bytes
    .error: failed sending 1040 bytes
    .error: failed sending 1040 bytes
    .error: failed sending 1070 bytes
    .error: failed sending 1083 bytes
    .error: failed sending 1069 bytes
    .error: failed sending 1080 bytes
    warning: espcomm_send_command: didn’t receive command response
    warning: espcomm_send_command(FLASH_DOWNLOAD_DATA) failed
    warning: espcomm_send_command: wrong direction/command: 0x01 0x03, expected 0x01 0x04
    error: espcomm_upload_mem failed
    error: espcomm_upload_mem failed

    Eso si lo subo a 9600, pero si intento con las otras velocidades disponibles si hace el proceso de los punticos hasta llegar al 100% pero no prende ningún led =(

    Que pudo haber sido??
    Ademas tengo otra duda, cuando lo conecto al USB no prende o parparea algun led como respuesta, como hace el arduino, lo acabo de comprar empiezo a creer que no sirve =(

    • Hola Carlos, en principio debería parpadearte un LED cuando conectes el nodemcu. Por el mensaje si parece que pueda estar estropeado.

  • Hola buenas,
    Genial y muy completo tutorial.
    Tengo la placa NodeMCU V3 (versión V1.0) y mi duda es: ¿Es posible usar los pines SD2 (GPIO9 ), SD3 (GPIO10), D9 (GPIO3 ) y D10 (GPIO1) simplemente como entradas o salidas digitales? Y de ser así, ¿Como se configura desde el IDE de Arduino?.

    Muchas gracias de antemano 🙂

    • Hola Iván, yo he probado a usar el SD1 como salida de esta forma pinMode(10, OUTPUT); y no he tenido ningún problema.

      • Muchas gracias por la respuesta.
        En ese caso creo que te refieres al pin SD3 ¿no?. De todas maneras, he intentado hacer un simple blink con un LED conectado a cualquiera de los 4 pines que comenté y no consigo realizarlo. La salida siempre parece que está a nivel alto y el LED luce continuamente.
        El programa es una chorradilla:

        void setup(){
        pinMode(10, OUTPUT);
        }

        void loop() {
        digitalWrite(10, HIGH);
        delay(2000);
        digitalWrite(10, LOW);
        delay(2000);
        }

        No se si el problema está en la definición de la función del Pin o en que simplemente no se puede hacer y no hay más.

  • Buenas tardes, es posible correr un programa en un NodeMCU V 0.9, tengo cargado un programa que hace posible la detección de CO a través de la App Blynk, Solo quisiera saber si es posible ejecutar el código o una parte del código sin tener conexión a Internet. Es decir, en caso de que por alguna razón fallara el Internet y que de alguna manera pueda ejecutarse la lectura del sensor. Lo he intentado pero al parecer sin Internet no hace nada, no realiza ninguna instrucción. Saludos!!

    • Hola Mario, lamento no poder ayudarte pero no he utilizado App Blynk nunca y no tengo ni idea de cómo funciona.

      • Alfredo

      Mario, Blynk necesita internet si o si, ahora, revisa tu codigo, muchas veces el codigo de ejemplo tiene alguna instruccion while(1){} que hace que el ESP no haga nada cuando es incapaz de conectarse a alguna red. Te recomiendo que utilices la libreria WifiManager.

      • Luis

      Hola Mario, puedes llegar a programar a través de Blynk sin Internet instalando el servidor en una Raspberry Pi. Es muy aconsejable ya que el servicio de Blynk es de pago y si utilizas el gratuito he tenido problemas de conexión. También puedes montar el servidor en otro ordenador que no sea Blynk en un Windows por ejemplo.

Give a Reply

WordPress Anti-Spam by WP-SpamShield