Objetivos
Material requerido.
Node MCU V2 o V3 | |
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.
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:
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?
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:
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:
Elige la primera opción y obtendrás algo así:
Elige variables de entorno y busca Path:
Pincha en editar para ver los valores de 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í:
Dale aceptar y aceptar y ya deberían estar establecidas.
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]:
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
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 (elf, map) (latest)
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:
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
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.
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.
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:
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í:
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:
Print(“Hello world”)
O alguna operación como 23 elevado a 43:
23**43
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