Skip to main content

Cómo Flashear el Firmware Nativo

El SenseCAP Indicator tiene dos microcontroladores: ESP32-S3 y RP2040. Este tutorial proporciona una guía completa para que los desarrolladores puedan comenzar, incluyendo cómo flashear el firmware nativo de fábrica y actualizar los dispositivos enviados antes a la versión más reciente.

La actualización del firmware aplica especialmente en dos escenarios:

  1. Si compraste un producto sin firmware de OpenAI antes de junio de 2023, con la versión de firmware 1.0.0, puedes descargar y actualizar al firmware más reciente que incluye funcionalidades de OpenAI. Descárgalo desde aquí.
  2. Si has desarrollado una aplicación propia y deseas flashear un firmware personalizado, puedes seguir el tutorial que se muestra más abajo.

Necesitas este tutorial si:

  1. Tienes un firmware que necesitas cargar en el ESP32-S3 o RP2040.
  2. Has modificado el código y necesitas compilarlo y cargarlo en el dispositivo.

¡Vamos con el tutorial!

Preparación

Para comenzar, solo necesitas tu SenseCAP Indicator y una computadora con Windows, macOS o Linux.

Obtener el Firmware Nativo

El firmware predeterminado que viene con el SenseCAP Indicator es completamente de código abierto tanto para el ESP32-S3 como para el RP2040.

Tienes dos opciones para obtener el firmware original de fábrica:
  • Código fuente: Puedes modificarlo antes de flashearlo, según tus necesidades. Necesitarás una cadena de herramientas (ESP-IDF, Arduino) para compilarlo.
  • Firmware: Puedes flashear directamente el archivo binario precompilado sin necesidad de modificar o compilar el código. Utiliza herramientas como Esptool o Flash Download Tools.

Código fuente

Firmware

Para ESP32-S3

ESP-IDF

ESP-IDF (Espressif IoT Development Framework) es un framework de desarrollo proporcionado por Espressif Systems para diseñar firmware y aplicaciones específicas para sus series de microcontroladores ESP32 y ESP8266. Para más información, consulta la Guía de programación de ESP-IDF

Si decides compilar el código fuente en firmware, necesitarás ESP-IDF para realizar el proceso de compilación.

Nota:

La versión de ESP-IDF debe ser superior a la v5.0. Si estás usando una versión anterior, deberás actualizarla a la más reciente.

Para nuevos usuarios, este video puede ayudarte a entender mejor los pasos:

Instalación del toolchain

Documentación oficial de Espressif: Configuración estándar para Windows

Opción 1: Usar el instalador offline

Para usuarios de Windows, puedes descargar directamente el instalador offline del ESP-IDF:
🖱️Descargar Offline Installer v5.1.1

Opción 2: Usar el script recomendado

Consulta la sección Usando la línea de comandos

Compilar y flashear el proyecto

Si optas por compilar el código fuente, necesitarás ESP-IDF para llevar a cabo el proceso.

Para construir, flashear y monitorear tu proyecto, ejecuta el siguiente comando:

cd  <your_sdk_path>/examples/indicator_basis/
idf.py -p PORT build flash monitor
tip

Si no defines PORT, el IDF seleccionará automáticamente un puerto disponible.

En este punto, al ejecutar el comando idf.py -p PORT flash, el firmware se habrá cargado correctamente al ESP32-S3.

Esptool

ESPtool - GitHub es una utilidad de código abierto basada en Python que proporciona una forma independiente de plataforma para comunicarse con el bootloader ROM en chips Espressif.

Esptool puede usarse como parte de tus scripts en Python. En esta guía, utilizaremos el software empaquetado disponible en la página de lanzamientos de Esptool. Elige el software que corresponda al sistema operativo de tu computadora.

Uso de Esptool para flashear

Se proporcionan dos scripts que muestran cómo utilizar Esptool de forma efectiva para flashear firmware en microcontroladores ESP32-S3.

Nota:

Ten en cuenta que los scripts proporcionados están diseñados para sistemas operativos Windows. Si usas otro sistema operativo, deberás adaptar los scripts para que funcionen en tu entorno.

El script merge.bat es especialmente útil, ya que consolida inteligentemente el bootloader, la tabla de particiones y los binarios base del indicador en un único archivo de firmware. Una vez fusionado, este firmware puede ser flasheado fácilmente al ESP32-S3 usando el script flash.bat. Cuando se te solicite, ingresa el puerto COM correspondiente a tu dispositivo y el proceso de flasheo comenzará. El proceso completo puede resumirse así:

merge.bat
esptool.exe --chip esp32s3 ^
merge_bin -o sensecap_indicator_basis_v1.0.0.bin ^ # Target file name
--flash_mode dio ^
--flash_size 8MB ^
0x0 ../../build/bootloader/bootloader.bin ^
0x8000 ../../build/partition_table/partition-table.bin ^
0x10000 ../../build/indicator_basis.bin

Alternativamente, si prefieres flashear archivos binarios individuales en lugar de fusionarlos antes de flashear, puedes usar directamente el script just_flash.bat:

just_flash.bat
esptool.exe --chip esp32s3 --port COMx --baud 921600 write_flash -z ^
0x0 ../../build/bootloader/bootloader.bin ^
0x8000 ../../build/partition_table/partition-table.bin ^
0x10000 ../../build/indicator_basis.bin

Y para un proceso de flasheo sencillo usando el firmware fusionado:

flash.bat
esptool.exe --chip esp32s3 --port COMx --baud 921600 write_flash -z 0x0 indicator_basis_v1.0.0.bin

Presta especial atención a la dirección inicial (0x0), especialmente cuando no se fusionan los binarios. Para archivos binarios separados, consulta las instrucciones en Herramientas de descarga para archivos binarios separados. Seguir estas indicaciones asegura un flasheo sin errores.

Para utilizar estos scripts, guarda el código en archivos de texto separados llamados merge.bat y flash.bat dentro de la carpeta del proyecto. Esta organización facilita el acceso y uso.

Al usar estos scripts, optimizas tanto la preparación del firmware como las etapas de flasheo, contribuyendo a un proceso más fluido y confiable.

├── indicator_basis
│ ├── CMakeLists.txt
│ ├── build
│ ├── docs
│ ├── main
│ ├── partitions.csv
│ ├── sdkconfig
│ └── .defaults
│ └── flash.bat
│ └── merge.bat
  1. Fusiona los binarios usando merge.bat.
  2. Flashea el firmware fusionado usando flash.bat.

Flasheo de Firmware

Para flashear el firmware, puedes usar el script flash.bat proporcionado. Este script está diseñado para simplificar el proceso de flashear tu firmware en el microcontrolador ESP32-S3.

Mostrar código flash.bat
@echo off
setlocal
cd /d "%~dp0"
:: Set Chip
set chip=esp32s3
:: Set Baud
set baud=921600
:: List COM ports
echo Available ports and devices:
echo.
for /F "tokens=* delims=" %%A in ('wmic path Win32_PnPEntity get Name ^| findstr /C:"COM" ^| findstr /C:"CH340"') do (
echo %%A
)
:: Prompt for port
:chooseport
echo.
echo Please enter the COM port to use (e.g., COM5):
set /p port=
:: Check if chosen port is valid and contains "CH340"
for /F "tokens=* delims=" %%A in ('wmic path Win32_PnPEntity get Name ^| findstr /C:"%port%" ^| findstr /C:"CH340"') do (
set device=%%A
goto :flash
)
echo Port %port% not found
goto :chooseport
:flash:: Print chosen parameters
echo.
echo You have chosen:
echo Chip: %chip%
echo Port: %port% - %device%
echo Baud: %baud%
@REM echo Press any key to continue to...
@REM pause >nul
:: Run esptool for the single file
esptool.exe --chip %chip% --port %port% --baud %baud% write_flash -z 0x0 indicator_basis_v1.0.0.bin
if ERRORLEVEL 1 (
echo Flashing with the single file failed with error %ERRORLEVEL%.
goto :end
)
:: End of script
:end
endlocal

Fusión de binarios

El script merge.bat proporcionado puede usarse para fusionar los archivos binarios necesarios en un solo archivo de firmware. Este script simplifica el proceso y asegura una fusión correcta para un flasheo exitoso, lo que te permite flashear un único archivo binario en lugar de flashear archivos separados.

Mostrar código merge.bat
@echo off
SETLOCAL
SET CurrentDir=%cd%
SET ScriptDir=%~dp0
SET CurrentDir=%CurrentDir:~0,-1%
SET ScriptDir=%ScriptDir:~0,-1%
IF NOT "%CurrentDir%"=="%ScriptDir%" (
cd /d "%ScriptDir%"
)
esptool.exe --chip esp32s3 ^
merge_bin -o indicator_basis_v1.0.0.bin ^
--flash_mode dio ^
--flash_size 8MB ^
0x0 ../../build/bootloader/bootloader.bin ^
0x8000 ../../build/partition_table/partition-table.bin ^
0x10000 ../../build/indicator_basis.bin
ENDLOCAL

Flash Download Tools (solo Windows)

Flash Download Tools se utilizan para programar o flashear firmware en microcontroladores ESP8266 y ESP32. Proporcionan una interfaz gráfica (GUI) para que los usuarios puedan flashear firmware fácilmente en los microcontroladores ESP.

Sigue estos pasos para flashear un firmware precompilado:

Descarga:
Flash Download Tools (solo para Windows)

  • Paso 1: Haz doble clic en el archivo .exe para abrir la interfaz principal de la herramienta.

  • Paso 2: Selecciona las siguientes opciones:

OpciónParámetro
Tipo de chipESP32-S3
Modo de trabajoDevelop
Modo de cargaUART
  • Paso 3: Conecta el SenseCAP Indicator a tu computadora portátil con un cable USB tipo C.

  • Paso 4: En la pestaña SPI Download, haz clic en "..." y navega hasta el firmware que acabas de descargar.

  • Paso 5: Configura la SPI Flash:

OpciónParámetro
Velocidad SPI40MHz
Modo SPIDIO
  • Paso 6: Configura el panel de descarga:
  • COM: Revisa los puertos en el Administrador de dispositivos, el USB-SERIAL es el correcto.
    (Aquí seleccionamos COM4)
  • Baud: 921600 (valor recomendado)

Luego haz clic en START para iniciar el flasheo.

Cuando aparezca FINISH, el flasheo del firmware se habrá completado.

Flash Download Tools para archivos binarios separados

En la guía anterior, el archivo binario "Default_Factory_Firmware_ESP32-S3.bin" fusiona tres binarios en uno solo.

Sin embargo, si usas ESP-IDF para construir el firmware, flashear un solo archivo directamente puede causar errores. En su lugar, necesitarás encontrar tres archivos binarios separados que hayas construido y especificar las direcciones correctas (puedes usar las tuyas propias) como sigue:

  • bootloader.bin ----> 0x0
  • partition-table.bin ----> 0x6800
  • terminal_demo.bin ----> 0x10000

Para RP2040

Flasheo con Arduino IDE

La herramienta de desarrollo RP2040 aprovecha Arduino para mejorar tu experiencia de programación.

Arduino IDE es un software gratuito para programar placas Arduino. Con su interfaz amigable, puedes escribir y cargar código fácilmente. Basado en una versión simplificada de C++, ofrece librerías y ejemplos, ideal para principiantes.

Descarga:

  • Paso 1: Instala Arduino IDE

  • Paso 2: Añade la placa Raspberry Pi Pico

Abre Arduino IDE, ve a Arduino IDE > Preferencias y copia esta URL en Gestor de URLs adicionales de tarjetas:

https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

Luego ve a Herramientas > Placa > Gestor de Placas.

Busca "indicator" e instala "Raspberry Pi Pico/RP2040" en el Gestor de Placas.

  • Paso 3: Añade las librerías necesarias
Librerías para referencia

En Arduino IDE, busca estas librerías en el Gestor de Librerías e instálalas, por ejemplo Seeed_Arduino_AHT20.

Vista previa de instalación offline

Para instalar offline, descarga el repositorio en formato zip desde GitHub, luego en Arduino IDE ve a Sketch -> Incluir librería -> Añadir librería .ZIP y selecciona los archivos descargados.

  • Paso 4: Conecta el dispositivo a tu PC con el cable USB tipo C provisto.

  • Paso 5: Selecciona la placa y puerto

Busca "Indicator" y selecciona la placa Seeed INDICATOR RP2040 y el puerto serial usbmodem.

  • Paso 6: Abre el código ejemplo

Ve a Archivo -> Abrir y selecciona el archivo de ejemplo (.ino file).

Puedes modificar este código según tus necesidades.

  • Paso 7: Verifica y sube el código.

Con esto habrás terminado de compilar y flashear (descargar) el firmware en el RP2040.

Flashear el archivo .uf2

  • Paso 1: Conecta el dispositivo a tu PC

Mantén presionado el botón interno con una aguja, conecta el dispositivo a tu PC con el cable USB tipo C, y suelta el botón una vez conectado.

  • Paso 2: Flasheo del firmware

Cuando la conexión sea exitosa, tu PC mostrará un disco extraíble.

Copia el archivo .uf2 al disco, luego el disco se expulsará automáticamente.

La actualización se ejecutará automáticamente.

Comunicación entre ESP32 y RP2040

ESP32 y RP2040 se comunican por puerto serial, usando el protocolo de comunicación COBS.
El formato de comando consiste en el tipo de paquete y parámetros del paquete.

Recursos

SenseCAP Indicator ESP32 SDK
SenseCAP Indicator RP2040 Demo

Preguntas frecuentes (FAQ)

¿Cómo distinguir el puerto serial?

Revisa el puerto en el Administrador de dispositivos:

  • "USB Serial Device(COMx)" o "USB 串行设备" es para RP2040
  • "USB-SERIAL CH340" es para ESP32
    En resumen, el puerto CH340 es para ESP32.

Actualizaciones recientes

  • 2023-11-17
    • Se eliminó la sección de parcheo
  • 2023-08-25
    • Se aclaró la sección de parcheo
  • 2023-07-25
    • Se agregó contenido para flashear firmware con Esptool
  • 2023-05-29
    • Se agregó la sección de parcheo

Soporte técnico

¿Necesitas ayuda con tu SenseCAP Indicator? ¡Estamos aquí para asistirte!

Loading Comments...