Objetivos
Material requerido
Node MCU V2 o V3 | |
Un cable USB a microUSB, como el de cualquier teléfono móvil |
Empezando con MicroPython
En la sesión anterior dejamos instalado MicroPython en nuestro ESP8266 / NodeMCU por lo que ya va siendo hora de empezar a jugar directamente desde una consola de comandos.
Como ya dijimos vamos a usar un NodeMCU como plataforma ESP porque tiene más memoria y además no da ninguno de los dolores de cabeza que suelen dar los modelos del chip montado en plataformas sin USB, y os recomendamos que hagáis lo mismo para evitar problemas innecesarios.
Lo primero que nos vamos a encontrar cuando conectemos a nuestro modulo es el REPL prompt, (Que es una manera cursi de decir Read Evaluate Print Loop o ciclo de evaluación de MicroPython), es decir el intérprete o el ambiente de trabajo.
Hay dos maneras básicas de llegar al REPL. La primera la vimos en la última sesión: conectar con una terminal a través del puerto USB (Que se suele llamar UART) y que es sin duda el sistema más fácil con diferencia.
Y luego hay otra forma, la que os va a gustar, a través de WIFI sin cables (Tranquilo todo el mundo) que me ha costado bastante más sin que este muy claro porque, y que veremos en una próxima sesión.
Empecemos conectando a nuestro modulo y una vez allí, ya podemos empezar a teclear las instrucciones Python que queráis:
print (“Bienvenidos a Prometec”)
Podemos escribir directamente operación y el REPL nos devolverá el resultado inmediatamente:
>> 100 * 3 / 6
Es decir, es un intérprete normal y corriente de Python 3. Pero siguiendo una vieja tradición de los que nos gusta enredar, hay que responder una pregunta fundamental en un nuevo entorno: ¿Cómo hago el bilnking LED? Veamos….
Si tú modulo tiene un pin unido a un led (El número 2 en NODEMCDU) basta con importar la librería que nos permite acceder al hardware:
import machine
Y luego definir alguna variable para acceder al pin 2:
pin = machine.Pin( 2, machine.Pin.OUT)
Y ahora ya podemos encender y apagar el pin:
>>> pin.on() >>> pin.off()
Veréis como se enciende el LED con el comando correspondiente
Si estas copiando los comandos, puedes pegarlos al terminal de Teraterm, apuntando a la ventana y dando botón derecho del ratón. Te aparecerá un selector que puedes usar para hacer el pegar.
Nuestro primer programa micropython
Ya, Vale. Todo muy bonito pero tengo que encender y apagar a mano. ¿Cómo hago un programa que lo mantenga parpadeando? Escribe esto:
def toggle (p) p.value(not p.value())
Con esto hemos creado una función que lee el valor del pin e invierte su estado. Ahora podemos hacer:
toggle(pin)
y veras que efectivamente estamos cambiando el estado del led. Si quieres repetir, pulsa la flecha arriba y te traerá el último comando que le has dado.
Para que la luz se quede parpadeando podemos escribir algo como esto:
>>> import time >>> while True: ... toggle(pin) ... time.sleep_ms(500) ... ... ... >>>
Donde importamos time, que es una librería que necesitamos para controlar el delay
Cuando te canses de todo esto, simplemente resetea tu NodeMCU y ya estás como al principio, o bien puedes parar la ejecución con [CTRL] + C.
El sistema interno de archivos
Seguramente lo que os apetece hacer ahora mismo es probar a crear un programa que mueva unas luces o un motor, lo grabemos en disco y …. Pero la vida es dura y hay que ir paso a paso y por eso necesitamos hablar antes del file system interno que amablemente nos crea MicroPython en la flash del Esp8266, así que vamos con ello.
Si tu dispositivo tiene por lo menos 1 Mb de memoria Flash (Mala suerte para los de ESP-01), En el primer arranque MicroPython creará un sistema de ficheros FAT interno, que podemos usar para guardar y recuperar ficheros (Tus programas por ejemplo)
¿Y cómo haceos para poder leer y escribir ficheros en ese disco FAT? Pues tan fácil como siempre en Python. La versión que corre en MicroPython para el esp8266 soporta el sistema normal de acceso a ficheros Python:
Vamos a crear un fichero sencillo en el disco:
f = open('data.txt', 'w') f.write(“Esta es la primera prueba”) f.close()
En pantalla veréis algo así:
Para leer lo que hay escrito en data.txt podemos hacer
f = open('data.txt') f.read() f.close()
Es todo muy normal si estas acostumbrados a Python 3.
Listando el contenido del disco
Si sois como yo, a los 30 segundos ya no sé cómo se llamaba el fichero que acabo de crear, así que convendría tener algún sistema para poder echar una ojeada al contenido del disco interno. Nada más fácil:
import os os.listdir()
Cuando importas la librería os, dispones de los medios necesarios para crear ficheros y directorios (os.mkdir(‘dir’)), o eliminar ficheros (os.remove(‘data.txt’)), tratar con directorios etc, etc.
Enseguida os habréis dado cuenta de que hay tenemos algunas cositas sorpresa y por eso tenemos que avrir el siguiente punto.
Ficheros del sistema
<
Como en todo buen sistema de ficheros que se precie, siempre hay algún archivo, más o menos oculto, que tiene funciones específicas asignadas. En nuestro esp8266 / NODEMCU tenemos un par de ficheros especiales que son, boot.py y main.py.
El fichero boot.py se ejecuta siempre que se arranca el modulo (Si existe) y al acabar se ejecuta el main.py si está presente.
Puedes descargar y modificar estos archivos a tu antojo, pero es recomendable no modificar el contenido de boot.py porque es donde tocan los chicos que andan modificando el firm del sistema y podrías obtener resultados raros sin fumar nada ilegal.
Pero es conveniente que sepas, que una vez veamos como pasar ficheros de programas a nuestro disco interno podemos ejecutarlos en el arranque sin más que llamarles main.py
Tambion veréis que otro fichero especial que se llama web_repl.py que usaremos cuando configuremos el acceso remoto via WIFI a nuestro modulo, pero esto es tema de la próxima sesión.
Resumen de la sesión