Skip to content

El bootloader DFU de ESPOS, convertido en librería, para que cualquiera que quiera implementar un arranque DFU en su código, lo pueda hacer de forma fácil y rápida

License

Notifications You must be signed in to change notification settings

espos-project/espos-dfu-bootloader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Bootloader DFU para ESP32

Este proyecto implementa un bootloader DFU (Device Firmware Update) para un ESP32, permitiendo la actualización remota del firmware a través de un servidor web. El bootloader se activa cuando se encuentra un flag en la memoria EEPROM que indica que el dispositivo debe iniciar en modo DFU.

Características

  • Modo DFU: El ESP32 puede arrancar en un modo especial (DFU) donde se permite cargar un archivo de firmware .bin a través de una interfaz web.
  • Punto de acceso WiFi: El dispositivo crea un punto de acceso WiFi con un nombre personalizado.
  • Actualización del firmware: Los usuarios pueden cargar un nuevo firmware desde una página web y el ESP32 lo aplicará directamente.
  • EEPROM: Utiliza la memoria EEPROM del ESP32 para almacenar un flag que determina si el dispositivo debe arrancar en modo DFU o no.

Requisitos

  • ESP32
  • Arduino IDE con soporte para ESP32
  • Biblioteca WiFi.h y EEPROM.h de ESP32
  • Servidor web para gestionar la carga de archivos .bin

Instalación

  1. Clonar el repositorio:

    git clone https://github.com/espos-project/espos-dfu-bootloader
    cd dfu_bootloader
  2. Configurar el proyecto en el Arduino IDE:

    • Abre el archivo dfu_bootloader.ino en el Arduino IDE.
    • Asegúrate de tener instalada la plataforma ESP32 en el IDE de Arduino.
    • Conecta tu ESP32 y selecciona el puerto correspondiente.
  3. Cargar el firmware en tu ESP32:

    • Compila y carga el proyecto en tu dispositivo ESP32.

Uso

Iniciar en Modo DFU

El dispositivo arranca en modo DFU cuando encuentra que el flag de la EEPROM está activado. Para poner el dispositivo en modo DFU, puedes configurar el flag en la memoria EEPROM de la siguiente manera:

  1. Activar el modo DFU:

    • Cuando el ESP32 arranca y encuentra que la flag en la EEPROM está activada, el dispositivo iniciará un punto de acceso WiFi con el nombre especificado.
    • En el código, el nombre del AP se define como "ESP_DFU_Update", pero puedes cambiarlo pasando un nombre personalizado al método startDFUMode().
    String apName = "Mi_Punto_De_Acceso";
    startDFUMode(apName);  // Activa el modo DFU con el nombre del AP personalizado
  2. Acceder a la página web DFU:

    • Una vez que el dispositivo esté en modo DFU, conecta tu ordenador al punto de acceso WiFi creado por el ESP32.
    • Accede a http://192.168.4.1/ desde el navegador.

Cargar un Firmware Nuevo

  1. En la página web de DFU, verás un formulario donde podrás elegir un archivo .bin para cargar.
  2. Haz clic en "Subir actualización" para iniciar la carga del firmware.
  3. El dispositivo recibirá el archivo, lo escribirá en la memoria y reiniciará automáticamente cuando termine.

Salir del Modo DFU

  • Si deseas salir del modo DFU y regresar al funcionamiento normal, puedes hacerlo desde la página web haciendo clic en "Salir del modo DFU".
  • Esto desactivará el flag en la EEPROM y reiniciará el dispositivo.

Consideraciones sobre la EEPROM

  • El valor de la flag en la EEPROM se lee y se escribe en la dirección definida en el código: EEPROM_ADDR_DFU.
  • Si la flag está activa (1), el ESP32 arrancará en modo DFU. Si está desactivada (0), el ESP32 arrancará normalmente.

Flujos de Funciones

  • startDFUMode(apName): Inicia el modo DFU y establece el nombre del punto de acceso WiFi.
  • handleDFURoot(): Muestra la página de inicio de DFU en el servidor web.
  • handleUpload(): Maneja la subida del archivo .bin para actualizar el firmware.
  • handleExitDFU(): Permite salir del modo DFU y reiniciar el dispositivo.

Personalización

  1. Nombre del punto de acceso (AP):

    • El nombre del AP creado en el modo DFU se puede personalizar modificando el parámetro apName en el método startDFUMode().
  2. Tamaño de la EEPROM:

    • El tamaño de la EEPROM puede ser configurado en el código según las necesidades del proyecto. Actualmente, el tamaño de la EEPROM se ha definido como 512 bytes.

Contribuciones

Si tienes mejoras o correcciones que proponer, no dudes en hacer un pull request o abrir un issue en el repositorio.

Licencia

Este proyecto está bajo la licencia GNU GPLv3. Puedes usarlo, modificarlo y distribuirlo de acuerdo con los términos de la licencia.

About

El bootloader DFU de ESPOS, convertido en librería, para que cualquiera que quiera implementar un arranque DFU en su código, lo pueda hacer de forma fácil y rápida

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages