Este proyecto está diseñado para configurar de manera rápida y sencilla un ESP32 o ESP8266 con MicroPython.
- Python 3
esptool
para flashear el firmware de MicroPython- Firmware de MicroPython para ESP32
-
Clonar el repositorio:
git clone https://github.com/usuario/mi_proyecto.git cd mi_proyecto
-
Crear y activar el entorno virtual:
python -m venv env # En Windows .\env\Scripts\activate # En macOS y Linux source env/bin/activate
-
Instalar dependencias:
pip install -r requirements.txt
Para detectar los puertos disponibles en el sistema, se puede ejecutar el siguiente comando:
py ./tools/ports.py
Al ejecutar el comando, se mostrará una lista con los puertos disponibles en el sistema. Esto se hace utilizando la libreria pyserial
de Python.
Ejemplo de salida:
Puertos disponibles:
COM3: Silicon Labs CP210x USB to UART Bridge (COM3)
Para descargar el firmware de MicroPython visitar el siguiente enlace oficial de Micropython, para este proyecto nos enfocaremos en el ESP32 con la versión WROOM.
Y para para el ESP8266 visitar el siguiente enlace oficial de Micropython, para este proyecto nos enfocaremos en el ESP8266 con la versión esp8266-20240602-v1.23.0.bin
.
En este proyecto descargamos el Firmware más reciente hasta la fecha de este tutorial
12/08/2024
, por lo cual se descargó el archivoesp32-idf4-20200812-v1.12.bin
, y este se encuentra ubicado en la carpetafirmware
del proyecto.
Para borrar la memoria flash del ESP32 o ESP8266, se puede ejecutar el siguiente comando:
py ./tools/erase_flash.py
No hay necesidad de indicar el puerto dado que el script detecta automáticamente los puertos disponibles en el sistema, ni el tipo de board Esp32 o Esp8266, pero solo se puede conectar estos dos tipos de board y que esté conectado al puerto USB de la computadora.
Puede que al ejecutar el comando, no se limpie la memoria flash de la Board automaticamente, por lo que puede aparecer un mensaje de conección como:
Connecting...................
Por lo que deberá presionar el botón de BOOT
del Esp32 o de la Esp8266 para que se limpie la memoria flash.
El mensaje anterior indica que su EPS32 esta no está en modo
Flash
Para flashear el firmware de MicroPython de la board, se puede ejecutar el siguiente comando:
py ./tools/flash.py [--erase]
Ejemplo:
py ./tools/flash.py --erase
--erase
es un argumento opcional que se puede utilizar para borrar la memoria flash antes de flashear el firmware.
Nota: Recuerde que el firmware de MicroPython debe estar en la carpeta firmware
del proyecto y para este proyecto se descargó el archivo ESP32_GENERIC-20240602-v1.23.0.bin
. Y si necesita otra versión del firmware, puede descargarlo del siguiente enlace Micropython.
No hay necesidad de indicar el puerto dado que el script detecta automáticamente los puertos disponibles en el sistema. Pero si es necesario que el Esp32/Esp8266 esté conectado al puerto USB de la computadora. Además puede que la Esp32/Esp8266 no este en modo
Flash
, por lo que deberá presionar el botón deBOOT
del Esp32/Esp8266 para que se limpie la memoria flash.
Para conectarse al REPL del Esp32/Esp8266, se connecta por medio de PUTTY
debido a que este proyecto se ejecuta en un sistema operativo Windows. Debe validar el puerto en el que se encuentra conectado el Esp32/Esp8266, y luego si hacer una conexión serial con el puerto y una velocidad de 115200 baudios.
Detectar Puertos
Conexión Serial con Putty
Ejemplo de Conexión
Dispositivo
Vea este video para más información Video del Canal de Youtube de RealPython.
Para transferir archivos al Esp32/Esp8266, se puede utilizar ampy
. Para instalar ampy
, documentación, para este proyecto se instala con el siguiente comando:
pip install adafruit-ampy
Para transferir un archivo al Esp32/Esp8266, se puede ejecutar el siguiente comando:
ampy --port <puerto> --baud <velocidad> --delay <tiempo-en-segundos> put <archivo-origen> <archivo-destino>
Ejemplo
ampy --port COM3 --baud 115200 --delay 0.5 put .\scripts\main.py /main.py
Para ejecutar un archivo en el Esp32/Esp8266, se puede ejecutar el siguiente comando:
ampy --port <puerto> --baud <velocidad> --delay <tiempo-en-segundos> run --no-output <archivo>
El argumento
--no-output
se utiliza para ejecutar el archivo en la Esp32/Esp8266
Para listar los archivos en el Esp32/Esp8266, se puede ejecutar el siguiente comando:
ampy --port <puerto> --baud <velocidad> --delay <tiempo-en-segundos> ls
Para eliminar un archivo en el Esp32/Esp8266, se puede ejecutar el siguiente comando:
ampy --port <puerto> --baud <velocidad> --delay <tiempo-en-segundos> rm <archivo>
Para obtener el contenido de un archivo en el Esp32/Esp8266, se puede ejecutar el siguiente comando:
ampy --port <puerto> --baud <velocidad> --delay <tiempo-en-segundos> get <archivo>
Para crear un directorio en el Esp32/Esp8266, se puede ejecutar el siguiente comando:
ampy --port <puerto> --baud <velocidad> --delay <tiempo-en-segundos> mkdir <directorio>
Para copiar un directorio en el Esp32/Esp8266, se puede ejecutar el siguiente comando:
ampy --port <puerto> --baud <velocidad> --delay <tiempo-en-segundos> put adafruit_driver <directorio>
Para obtener más información sobre
ampy
puede visitar la documentación oficial en el siguiente enlace Documentación.
Puede hacer simulaciones de circuitos con el Esp32/Esp8266 en la plataforma de WORKI.
Puede guiarse con el siguiente tutorial para configurar su Esp32/Esp8266 con MicroPython Tutorial del Canal de Youtube de Sam.
Puede ver la documentación oficial de MicroPython en el siguiente enlace Documentación.
- Hacer un fork del repositorio.
- Crear una nueva rama (
git checkout -b feature-nueva-funcionalidad
). - Hacer commit de los cambios (
git commit -am 'Agregar nueva funcionalidad'
). - Hacer push a la rama (
git push origin feature-nueva-funcionalidad
). - Crear un Pull Request.
Este proyecto está bajo la Licencia MIT.