Tutorial/cookbook de nivel inicial de micropython sobre todo para ESPs
José Antonio Vacas @javacasm
Micropython es una versión reducida del lenguaje python, pensado para que pueda ser ejecutado en dispositivos con menor capacidad de almacenamiento y procesamiento, como por ejemplo micro:bit o los distintos ESP
Al ser python un lenguaje interpretado lo que haremos será flasear el dispositivo con un firmware capaz de interpretarlo y al que podremos ir enviando los ficheros .py con el código python
Para flashear nuestro ESP8266 necesitamos la herramienta esptool. Nos aseguramos de tener instalado pip para python 3 con (más información sobre le herramienta pip en este enlace)
sudo apt install python3-pip
y ahora instalamos la herramienta esptool para flashear nuestro dispositivo
pip3 install esptool
Instalación del firmware micropython (Para los dispositivos esp8266 tenemos que arrancarlo con el pin GPIO00 conectado a GND)
-
Borramos la flash
esptool.py --port /dev/ttyUSB0 erase_flash
-
Descargamos el firmware (para el ESP8266) de http://micropython.org/download#esp8266 teniendo en cuenta la memoria de nuestro dispositivo (512Kb en el ejemplo)
-
Conectamos nuestra placa por USB y la flasheamos la placa con el firmware
esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect -fm dio 0 ~/Descargas/esp8266-512k-20191118-v1.11-580-g973f68780.bin
-
Accedemos al prompt de micropython para ver que todo ha ido bien
screen /dev/ttyUSB0 115200
ó
picocom /dev/ttyUSB0 -b115200
Esta forma de conexión se denomina REPL ("Read-Eval-Print-Loop"): una shell de python que nos permite trabajar y probar nuestro código de manera interactiva
Incluye algunas de utilidades a las que estamos acostumbrados en las shels, como recuperar los comandos ya usados usando las teclas del curso arriba y abajo o el completado de método y nombre con la tecla TAB. Si queremos pegar código podemos hacerlo pulsando antes Ctrl-E y más opciones
Por defecto todo dispositivo micropython crea una red wifi llamada ESSID MicroPython-xxxxxx con ip 192.168.4.1 y contraseña micropythoN (detalles)
Web_REPL nos permite acceder a una shell REPL vía wifi
Para ESP de al menos 1M (no disponible en los de 512Kb))
- Configuramos el acceso con Wep_REPL
import webrepl_setup
Contestamos que queremos activar el acceso pulsando E y establecemos una contraseña de acceso. A partir de ahora quedará activado en cada arranque.
-
Conectamos a http://micropython.org/webrepl/ para acceder al cliente
-
Nos conectamos a una red wifi llamada MicroPython_xxxxxx (donde xxxxx es parte de la MAC de nuestro ESP) (vía 192.168.4.1:8266/)
-
Pulsamos conectar en la consola de webrepl y nos pedirá la contraseña de acceso
-
Configuramos la conexión a una red wifi determinada (siguiendo las intrucciones de help() y ayudándonos de la tecla TAB para completar) Esta configuración se mantiene después de un reset. Al ser interactivo, cada línea tiene una salida indicando el resultado
import network # Importamos el modulo network completo
sta_if = network.WLAN(network.STA_IF) # Establecemos el modo punto de acceso (AP)
sta_if.active(True) # Activamos el wifi
sta_if.scan() # Escaneamos las redes disponibles
sta_if.connect("<AP_name>", "<password>") # Conectamos al AP
sta_if.isconnected() # Comprobamos si estamos conectados
sta_if.ifconfig() # Vemos la ip ('192.168.1.137', '255.255.255.0', '192.168.1.1', '87.216.1.65')
Hay que empezar diciendo que la nomenclatura de los pines utiliza la especificación del fabricante (Normalmente GPIO)
Para activar el led incluido en la placa ESP12 (conectado inversamente al GPIO2)
from machine import Pin ## Importamos la clase
p2 = Pin(2,Pin.OUT) ## Usaremos el GPIO02 como salida
p2.on() ## Activamos y se apagara el led
p2.off() ##
Vamos a usar ahora el relé del shield de wemos
pReleWemos = Pin(5,Pin.OUT)
pReleWemos.on()
pReleWemos.off()
Podemos ver el contenido del sistema de archivos con
There are two files that are treated specially by the ESP8266 when it starts up: boot.py and main.py. The boot.py script is executed first (if it exists) and then once it completes the main.py script is executed. You can create these files yourself and populate them with the code that you want to run when the device starts up.
import os
os.listdir()
Crear directorios:
os.mkdir('dir')
O borrar archivos
os.remove('data.txt')
You can use rshell, ampy, WEB_REPL, etc.
Podemos ver los módulos disponibles con
help('modules')
Y podemos obtener ayuda de objeto concreto con
help(objeto)
# Ejemplo parpadeo led incluido en la placa (que tiene el estado invertido)
import machine
led = machine.Pin(2,machine.Pin.OUT)
led.off()
led.on()
# Wemos-ESP12 Adapter
# D3 = GPIO0 High = Run Low = Flash
# D4 = GPIO2 Led BuiltIn ESP12
# D0 = GPIO16 Wake
# A0 = ADC
TX = 1
RX = 3
D1 = 5
D2 = 4
D3 = 0
D4 = 2
D0 = 16
D5 = 14
D6 = 12
D7 = 13
D8 = 15
BUILITIN_LED = 2
# Ejemplo parpadeo led incluido en la placa (que tiene el estado invertido)
import machine
led = machine.Pin(2,machine.Pin.OUT)
led.off()
led.on()
# Ejemplo parpadeo led incluido en la placa (que tiene el estado invertido)
import machine
led = machine.Pin(2,machine.Pin.OUT)
led.off()
led.on()
# Ejemplo parpadeo led incluido en la placa (que tiene el estado invertido)
import machine
led = machine.Pin(1,machine.Pin.OUT)
led.off()
led.on()
Tutorial de micropython para ESP32