MicroPython - crisconru/tips GitHub Wiki
La información oficial de Micropython está en su web -> Documentación Oficial
Enlaces de ayuda:
- El tutorial oficial (en inglés) está -> aquí.
- Se recomienda el tutorial en español de Python Canarias -> aquí.
Para instalar micropython en nuestra placa hay que seguir los siguientes pasos:
-
Instalar
esptool
en Python (se recomienda usar un virtualenv).pip install esptool
Con el comando
esptool.py --help
podemos ver todas las opciones. NOTA: Si estas en Windows o Mac, tienes que instalar los drivers del chip CH340 / CH341 (son los que permiten la comunicación por el USB). -
Descargar el firmware (se recomienda el último estable) -> aquí.
-
Conectar la placa por el USB y descubrir en que puerto está conectada.
-
Borrar la flash de la placa con el comando
esptool.py --port <puerto> erase_flash
Por ejemplo
esptool.py --port /dev/ttyUSB0 erase_flash
-
Flashear la placa con el firmware
esptool.py --port <port> --baud <baudios> write_flash --flash_size=detect 0 <fichero-de-firmware>
Por ejemplo
esptool.py --port /dev/ttyUSB0 --baud 115200 write_flash --flash_size=detect 0 esp8266-20190125-v1.10.bin
En algunas placas es probable que dé error y haya que añadir la opción
-fm dio
, ejemploesptool.py --port /dev/ttyUSB0 --baud 115200 write_flash --flash_size=detect -fm dio 0 esp8266-20190125-v1.10.bin
Enlaces de ayuda:
Para instalar micropython en nuestra placa hay que seguir los siguientes pasos:
-
Instalar
esptool
en Python (se recomienda usar un virtualenv).pip install esptool
Con el comando
esptool.py --help
podemos ver todas las opciones. -
Descargar el firmware (se recomienda el último estable) -> aquí.
-
Conectar la placa por el USB y descubrir en que puerto está conectada.
-
Borrar la flash de la placa con el comando
esptool.py --port <puerto> erase_flash
Por ejemplo
esptool.py --port /dev/ttyUSB0 erase_flash
-
Flashear la placa con el firmware
esptool.py --chip esp32 --port <port> --baud <baudios> write_flash -z 0x1000 <fichero-de-firmware>
Por ejemplo
esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 115200 write_flash -z 0x1000 esp32-20190125-v1.10.bin
En algunas placas es probable que dé error y haya que añadir la opción
-fm dio
, ejemploesptool.py --chip esp32 --port /dev/ttyUSB0 write_flash --baud 115200 -z 0x1000 -fm dio esp32-20190125-v1.10.bin
A la placa se puede acceder por dos medios:
- Serial
- Web
Una vez se accede a la placa, estamos en el REPL (Read-Eval-Print-Loop) de esta. A efectos prácticos es un interprete de Python y además cuenta con autocompletado. Para ver todas las opciones con las que cuenta escribimos
help()
Veremos todos los comandos y una pequeña ayuda. Los comandos más importantes son:
-
Barra espaciadora
-> Sirve para el autocompletado. -
Ctrl+C
-> Para cerrar algún script que hayamos abierto dentro de la placa. -
Ctrl+D
-> Para hacer un reset por software (soft reset). -
Ctrl+E
-> Modo pegar (de copia-pega).
También podremos usar esta función para ver con que variables/constantes + funciones cuenta cada módulo. Por ejemplo importamos el módulo esp
y vemos todo lo que tiene
import esp
help(esp)
Para ver todos los módulos disponibles en la placa se hace
help('modules')
Para poder entrar dentro de la placa, estas normalmente traen una UART (interfaz serie, como un USB dentro) accesible por los pines TX y RX. Así que con el cable usb y un programa que permita conexión serial podemos acceder a la placa. Programas con serial hay muchos, tanto con interfaz gráfica (GUI) como por terminal:
- Windows
- Mac
- Linux
También se puede acceder al REPL de la placa a través de una utilidad web, WebREPL, pero para ello debemos seguir los siguientes pasos:
-
Abrir la utilidad WebREPL en un navegador web.
-
Acceder a la placa por serial.
-
Configurar la WiFi en modo AP (Punto de Acceso). Se adjunta pequeño script de ayuda
import network # Primero activamos el interfaz AP de la placa my_wifi = 'nombre-para-la-wifi' my_password = 'contraseña-para-la-wifi' # Debe tener al menos 8 caracteres ap_lan = network.WLAN(network.AP_IF) ap_lan.active(True) # Devuelte True si la interfaz AP está activa ap_lan.config(essid=my_wifi, password=my_password) # Despues activamos el webrepl import webrepl_setup
-
Después debemos configurar el WebREPL con
import webrepl_setup
Nos saldran las instrucciones para activar el WebREPL (activarlo), hay que ponerle una contraseña de entre 4-9 caracteres y por último reiniciarlo.
-
Conectarse a la WiFi de la placa.
-
Ir a la web de WebREPL que está abierta en el navegador y darle al botón Connect (pedirá el password puesto en el paso 4.).
Cuando la placa arranca, se ejecuta un fichero interno, _boot.py
, que monta todo el sistema de ficheros (filesystem). Una vez el sistema está montado, se ejecutan dos ficheros secuencialmente (si existen):
-
boot.py
-> Equivale alsetup()
de Arduino. -
main.py
-> Equivale alloop()
de Arduino.
Las placas ESPx cuentan con dos interfaces de red:
- Station Interface -> Es para conectarse a una red WiFi.
- Access Point Interface -> Es para crear una red WiFi propia.
Las dos interfaces pueden funcionar a la vez, es decir, que estar conectada la placa a una red WiFi y a la vez generar su propia red WiFi. Para poder configurarlos necesitamos trabajar con el módulo network
.
-
Conectarse a una red WiFi:
import network red = 'nombre-de-la-red-wifi' contrasena = 'pass-de-la-wifi' sta_if = network.WLAN(network.STA_IF) sta_if.active(True) sta_if.connect(red, contrasena)
-
Crear una red WiFi:
import network red = 'nombre-para-la-wifi' contrasena = 'contrasena-para-la-wifi' ap_if = network.WLAN(network.AP_IF) ap_if.active(True) ap_if.config(red, contrasena)