bclose

Instalar MicroPython en NodeMCU

Micropython en esp8266 / Nodemcu
tienda online prometec

Programando NODEMCU con Arduino IDE

 

 

    • Vamos a cargar el firm de micropython. para el esp8266 a nuestro NodemCU.
    • Veremos como instalar el entorno Python 2.7 para ello(Windows).
    • Descargaremos algunas utilizades adicionales y veremos como configurar el entorno.

 

Material requerido.

Node MCU board Node MCU V2 o V3

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

MicroPython

 

Es bien conocida la afición que en esta casa sentimos por el lenguaje Python. No renunciamos a C++ porque hay cosas para las que hay que bajar a las trincheras y mancharse barro de arriba abajo, pero también es verdad que el enésimo error de que me falta un punto y coma en alguna línea, hay veces que consigue agriar nuestro habitual buen carácter (Y perpetúa sonrisa).

Por otra parte Python es una solución rápida y cómoda para programar cositas en nuestros micros y por eso llevaba tiempo buscando alguna manera de programar Arduino con Python, y en concreto con una variante de reciente aparición llamado MicroPython, que está pensada para correrla en micro controladores de este estilo.

MicroPython es un desarrollo de un intérprete de Python 3, pensado para correr en micro controladores con pocos recursos comparados con un PC, y por eso han hecho algunas concesiones como no incluir muchas de las librerías estándar que el Python 3 normal incluye, pero que pueden ser cargadas con import cuando se requieran y que además incluye librerías que se pueden importar para acceder al hardware de forma cómoda, muy al estilo de lo que vimos con la Raspberry Pi.

Logo

Pero no os equivoquéis el lenguaje es idéntico que la versión completa y lo de MicroPython no viene porque sea una versión reducida, sino de que es una versión para micro controladores.

No he sido capaz de encontrar hasta hoy una versión de MicroPython para Arduino (Por falta de potencia y memoria probablemente, aunque tengo que ver si quizás con el DUE hay algo,,,) pero hete ahí que en un momento dado empiezo a ver que si existe para mi querido NodeMCU y los chips de Espressif de la familia ESP8266, que a poco que hayáis venido por esta casa os serán sin duda familiares.

Y claro no he podido resistirme a probar este MicroPython en los NodeMCU (Que son uno de mis Arduino favoritos, a pesar de no ser estrictamente un Arduino) y la sesión que vamos a tener a continuación va precisamente de esto: Vamos a montar MicroPython en un NodeMCU con el esp8266 y vamos a ver qué tal va la cosa.

A mí me ha encantado y espero poderos transmitir m entusiasmo en poco tiempo, porque la combinación de un controlador rápido (Entre 80 y 160 MHz) con WIFI integrado  y programado en Python por menos de 15 euros, es un caramelo demasiado goloso como para no probarlo.

De paso aprovecho para comentaros, que instalar el entorno microPython como es debido en mi Nodemcu, ha sido como bailar en un campo de minas, porque aunque he encontrado mucha información por ahí, ninguna funcionaba a la primera y me ha costado un numero despropocionado de horas lograr juntar todas las piezas.

Así que espero que esta humilde guía os sirva para que los lectores del idioma de Cervantes puedan hallar un método sencilla de como instalar todo (Octubre 2017), que no es para tanto, pero que parece que hace falta una guía clara y sobre todo probada en estos momento, porque la pinta es que el tema esta variando con rapidez y lamentablemente la documentación no le sigue con la misma velocidad.

 

Instalando el entorno de trabajo en NodeMCU

 

La familia de procesadores ESP8266 es un viejo favorito de la casa y de nuestros esforzados lectores (Que me sigue sorprendiendo que nos aguanten) y de toda la familia el modelo que más me gusta es el NodeMCU por varias razones:

 
  • Es de poco dinero (Importante) y de una potencia mas que respetable.
  • Va un todo integrado con USB y no hay que hacer películas para programarlo como con los modelos independientes.
  • Gestiona el ciclo de programar/ ejecutar de forma transparente, algo que suele marear mucho a los que empiezan con los modelos como el ESP-01
  • Siempre os recomiendo comprar el NodeMCU en versión V2 o V3 (No hay diferencias dignas de mención entre ellos) y no nos hacéis mucho caso, pero en fin. 

Por otro lado si habéis seguido algunos de los tutoriales sobre el ESP8266, ya sabéis que podemos volcarle diferentes firmwares y cambiar la forma de comportarse del chip. Podemos por ejemplo volcar un firm y que nos atienda mediante comandos AT.

Pero también podemos programarlo mediante un pluggin Arduino que lo convierte en uno de mis Arduinos favoritos porque incluye procesador rápido y WIFI, y si alguno habéis investigado un poco sabréis que los NodeMCU suelen venir programados con un lenguaje más o menos extraño llamado LUA y que podemos recuperar sin más que flashear el NodeMCU con el firm correspondiente.

La idea es que según el firmware que le volquemos a la flash, variamos el comportamiento y la manera de interactuar con el NodeMCU, y por eso algunos de esos genios anónimos que tanto abundan por internet, han generado un firmware que si se lo cargamos nos permite disponer de un intérprete de MicroPython en nuestro NodeMCU ¿Qué os parece?

 
  • Si leéis un poco por Internet sobre MicroPython y el ESP8266 encontrareis muchas referencias a como descargar un entorno de trabajo en el que podáis compilar vuestro propio MicroPython, pero por favor ni se os ocurra.
  • Aquí vamos a descargar una imagen ya compilada (Que para eso hay buena gente que se molesta) y se la volcaremos a nuestro micro, ¿De acuerdo? Lo otro es para Freakys sin obligaciones sociales y aquí no hay de eso.  

Para poder flashear nuestro NodeMCU vamos a necesitar crear un entorno de trabajo adecuado, con unos cuantos programas necesarios (En mi caso desde Windows 10), y conviene que lo hagamos en orden:

 
  • Instalar Python 2.7: Si. Aunque MicroPython es Python 3.0, algunas de las utilidades precisas requieren la versión 2.7 (O eso dicen, que no lo he probado)
  • Instalar pip o comprobar que esta disponible.
  • Instalar esptool.
  • Descargar la imagen que vamos a flashear
  • Volcarla a nuestro micro.[/fancy-ul] 

Conviene aquí que vayamos con un poco de orden porque me he dado unos cuantos cabezazos por internet, debido a información y guías desactualizadas que no funcionaban casi nunca (Y que han conseguido cabrearme con bastante frecuencia)

 

Instalar Python 2.7 en Wiindows 10

 

Vamos a la página oficial de Python y descargamos la versión 2.7:  . Cuando termina la descarga basta con que ejecutéis el fichero.

Os hará varis preguntas tontas que podéis responder con intro  y cuando finalice deberías tener instalado todo en C:\Python27

La versión que he instalado es la 2.7.14 y me ha dejado un par de bombas puestas que me han dado bastantes problemas. EL primero es que no me ha establecido las variables de entorno en path del sistema por lo que no me encontraba Python

Comprobad que el path apunta a Python. Para ello , escribe “entorno” en la ventana de búsqueda:

modificando la variable path

Elige la primera opción y obtendrás algo así:

Propiedades del sistema

Elige variables de entorno y busca Path:

Editar variable de entrono path

Pincha en editar para ver los valores de path:

Añadir valores a path

Como puedes ver, no ha incluido el path a los directorios de Python con lo que vamos a tener problemas cuando queramos ejecutar algo. Tenemos que añadir un par de líneas al path:

C:\Python27
C:\Python27\Scripts

Para ello usa el botón Nuevo y añade las dos líneas hasta que quede así:

Añadir el path de python

Dale aceptar y aceptar y ya deberían estar establecidas.

  • Otra bomba es que no te pone un icono con Python 2.7 en el escritorio y tienes que sacarlo tu mismo. Puedes ir a botón de inicio\todos los programas\python 2.7 y saca el IDLE que es el entorno gráfico.

 

Comprobar la instalación de python y pip

 

Podemos lanzar el entorno grafico de Python 2.7 desde el menú de aplicaciones, pero también nos interesa tener instalado pip que es algo así como un instalador estándar de paquetes en Python.

Abrid una consola de comandos en Windows, escribiendo cmd en la barra de búsqueda y dad [intro]:

CMD Vamos a comprobar que tenemos instalado Python y en el path. Escribe Python + [Intro]:

Deberíamos recibir el prompt de Python (Fíjate en el >>>) y si es así la cosa marcha. Para salir pulsa [CTRL] + Z e [Intro]. Escribe pip [Intro], para asegurarnos de que está instalado, y si recibes un chorro de opciones sin error, es que si y ya podemos seguir.

Si alguno de los pasos no funciona tienes que volver a empezar para ver donde está el problema.

 

Instalando esptool

 

La utilidad esptool sirve para volcar el firmware de MicroPython a nuestro ESP8266 / NodeMCU y aunque hay algunas utilidades gráficas que son más cómodas, me han dado bastantes más problemas así que prefiero usar esptool. Escribe en la consola:

Pip install esptool
instalacion

Si recibes el mensaje de “successfully instalaed” en la última linea, esto ya está.

 

Descargando la imagen de microPython

 

Si has llegado aquí, ya tenemos instalado un entorno Python adecuado para flashear nuestro NodeMCU o esp8266, y ahora tenemos que descargar la imagen que vamos a volcar. Para ello vamos a la página de descargas de MicroPython

Podeis ver que hay muchos micro controladores soportados además del que nos ocupa, y por ello busca la sección: “Firmware for ESP8266 boards” y descarga la última versión estable disponible. En mi caso:

esp8266-20170823-v1.9.2.bin (elfmap) (latest)
 
  • Conviene aquí tener en cuenta que dependiendo del esp8266 que tengas puede tener 512K o 1024 K de memoria RAM.
  • Si tienes un NodeMCU o cualquier modelo con un ESP12, ESP12E no vas a tener problemas y puedes descargarte el firm de 1024, pero muchos otros modelos de esp son de 512K y tendrás que buscar la imagen adecuada. 

Bájate la imagen que te corresponda (Y asegúrate de que sabes donde está) y ya podemos pasar a volcarla a nuestro NodeMCU.

 

Volcando la imagen a nuestro micro

 

Ahora es buen momento para conectar nuestro NodeMCU al USB y determinar el puerto serie que levanta.  Para ello, pulsa la tecla [Windows] +X y se abrirá un menú especial. Elige administrador de dispositivos:

determinando el puerto com

Revisa tus puertos Com y LPT y veras que puerto com1 se ha creado, en mi caso el COM7 para el USB del NodeMCU, y ya podemos empezar.

El fabrícante recomienda borrar la memoria flash actual de nuestro micro y nosotros somos de lo más obedientes, Abre una consola de comandos y escribe:

esptool.py –port COM7 erase_flash
erasing flash

Recuerda cambiar com7 por tu puerta USB.

Veras que el mensaje termina con “chip erased completed successfully” y ahora ya podemos volcar la imagen que hemos descargado a nuestro micro. Vete al directorio donde te la hayas descargado (Normalmente el de descargas).

Si has abierto el cmd desde la barra de tareas deberías estar en tu directorio de usuario y por tanto con cd downloads deberías pasar a descargas y ahora puedes escribir:

esptool.py --port com7 --baud 460800 write_flash --flash_size=detect -fm dio 0 esp8266-20170823-v1.9.2.bin

Donde com7 es mi puerta USB y esp8266-20170823-v1.9.2.bin es el fichero que me he descargado, asegúrate de escribir los nombres correctos para lo que te corresponda.

Volcando firmware

Verás como el firm se va volcando mientras la luz de comunicación de tu esp8266 va parpadeando y si todo ha ido bien ya tenemos instalado MicroPython en NodeMCU. ¡Enhorabuena a todos! Ya solo falta comprobarlo.

 
  • La instruccion de arriba vuelca el firm a 460800 baudios, lo que es una velocidad mas que respetable, pero he visto que con algunos cables largos me daba problemas, por lo que si os ocurre lo mismo o veis cosas raras, podeis disminuir la velocidad hasta 115200, por ejemplo. 

 

Probando la instalación de micropython

 

Lo primero es conectar a nuestro NodeMCU mediante la puerta serie y un programa de terminal como putty o TeraTerm  que últimamente me está gustando, y comprobar la comunicación, pon estos parámetros en \\setup\serialport:

Setup Las primeras veces que corras tu terminal seguro que veras chinitos típicos de velocidad incorrecta, pero tranquilo se corregirán cuan pongas a 115200 baud, pero al principio siempre sale algo de basurilla. Debieras ver algo así:

PAntalla inicial

No he conseguido eliminar esa porquería de la pantalla pero fíjate que la última línea es nuestro familiar promt de >>> y esto es lo importante. Escribe:

[intro] Print(“Hello world”)

Hello world

O alguna operación como 23 elevado a 43:

23**43
Probando operaciones

Lo que indica que ya estamos con la instalación lista y nuestro MicroPython dispuesto a trabajar.

Vamos a dejarlo aquí, que esta sesión ya se ha alargado un poco mas de la cuenta, y en la próxima empezaremos a ver comandos y librerías disponibles para nuestro pequeño mundo de arduineros. Hasta entonces

 

 

Resumen de la sesión

 

 
    • Hemos instalado el entorno Python 2.7 en windows.
    • Descargamos e instalamos varias aplicaciones requeridas como pip o esptool.
    • Flasheamos nuestro Nodemcu con el firm de microPython y hemos comprobado que funciona.