Cómo Flashear el Firmware Nativo
El SenseCAP indicator tiene dos MCUs, ESP32-S3 y RP2040. Este tutorial proporciona una guía completa para ayudar a los desarrolladores a comenzar, incluyendo el flasheo del firmware nativo de fábrica listo para usar y la actualización de dispositivos enviados temprano al firmware más reciente.
La actualización del firmware es particularmente aplicable en dos escenarios:
- Si compraste un producto sin firmware OpenAI antes de junio de 2023, con versión de firmware
1.0.0, puedes descargar y actualizar al firmware más reciente que incluye funcionalidad OpenAI. El firmware más reciente se puede descargar desde aquí. - Si has desarrollado una aplicación y deseas flashear un firmware personalizado, puedes seguir el tutorial proporcionado a continuación.
Brevemente, necesitas este tutorial porque:
- Tienes un firmware que necesitas flashear en el ESP32-S3 o RP2040.
- Has modificado el código y necesitas compilarlo y flashearlo al dispositivo.
Vamos a sumergirnos en este tutorial.
Preparación
Para comenzar, todo lo que necesitas es tu SenseCAP Indicator y una computadora Windows/Mac/Linux.

Obtener el Firmware Nativo
El firmware de envío predeterminado del SenseCAP Indicator es completamente de código abierto tanto para ESP32-S3 como para RP2040.
- Código fuente: Antes de flashearlo, tienes la opción de modificar el código según tus requisitos. Necesitarás una cadena de herramientas(ESP-IDF, Arduino) para compilarlo.
- Firmware: Flashea directamente el archivo binario precompilado sin necesidad de modificación o compilación de código. Usando herramientas como Esptool y Flash Download Tools.
Código Fuente
- 🖱️Haz clic para obtener el Código Fuente del Firmware ESP32-S3
- 🖱️Haz clic para obtener el Código Fuente de ejemplos Arduino RP2040
Firmware
Para ESP32-S3
ESP-IDF
ESP-IDF (Espressif IoT Development Framework) es un marco de desarrollo de software proporcionado por Espressif Systems para diseñar firmware y aplicaciones específicamente para sus series de microcontroladores ESP32 y ESP8266. Para más información, puedes consultar la Guía de Programación ESP-IDF
Si has optado por compilar el código fuente en firmware, necesitarás el ESP-IDF para realizar el proceso de compilación.
La versión de ESP-IDF debe ser mayor que v5.0. Si estás usando una versión anterior, necesitarás actualizarla a la versión más reciente.
Para usuarios nuevos, este video puede ayudarte a entender mejor los pasos a continuación:
Instalación de la Cadena de Herramientas
- Windows
- Linux and MacOS
Documentación Oficial de Espressif: Configuración Estándar de la Cadena de Herramientas para Windows
Opción 1: Usando el Instalador Sin Conexión
Para usuarios de Windows, tienes la opción de descargar el instalador sin conexión de ESP-IDF directamente. Aquí tienes un enlace de descarga directa: 🖱️Descargar Instalador Sin Conexión v5.1.1
Opción 2: Usando el Script Recomendado
Navega a Using the Command Promp
Documentación Oficial de Espressif: Configuración Estándar de la Cadena de Herramientas para Linux y macOS
Si estás en Linux o MacOS, puedes seguir esta guía para cambiar la versión del repositorio git.
git clone --recursive https://github.com/espressif/esp-idf.git
Navegar al directorio esp-idf:
- Ejecuta
./install.sh esp32s3, para agregar soporte ESP32-S3 (necesario para SenseCAP indicator) - escribe
./export.shpara configurar las variables PATH e IDF_PATH en la sesión de terminal actual.
si quieres llamarlo en cualquier sesión de shell, puedes agregar la siguiente línea a tu archivo de configuración de shell (ej. ~/.bash_profile):
alias get_idf='. $HOME/esp/esp-idf/export.sh'
Entonces puedes usar get_idf para activar el entorno.^refer
Construir Proyecto y flashear
Si optas por compilar el código fuente en firmware, necesitarás el ESP-IDF para realizar el proceso de compilación.
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
Sin PORT, el IDF seleccionará automáticamente el puerto disponible.

Hasta este punto, escribiendo el comando idf.py -p PORT flash, el firmware ha sido flasheado exitosamente en el ESP32-S3.
Esptool
ESPtool - GitHub es una utilidad de código abierto basada en Python que proporciona una forma independiente de la plataforma para comunicarse con el bootloader ROM en chips Espressif.
Esptool puede ser usado como parte de tu script Python. En esta guía, usaremos el software empaquetado disponible en la página de releases de Esptool. Elige el software que corresponda al sistema operativo de tu computadora.
Usando Esptool para Flashear
Se proporcionan dos scripts que muestran cómo utilizar efectivamente Esptool para flashear firmware en microcontroladores ESP32-S3.
Ten en cuenta que los scripts proporcionados están adaptados para sistemas operativos Windows. Si estás usando un sistema operativo diferente, necesitarás adaptar los scripts para que se ajusten a tu entorno.
El script merge.bat es particularmente útil ya que consolida inteligentemente el bootloader, la tabla de particiones y los binarios base del indicator en un solo archivo de firmware. Una vez fusionado, este firmware puede ser flasheado sin problemas en el ESP32-S3 usando el script flash.bat. Cuando se te solicite, ingresa el puerto COM correspondiente a tu dispositivo, y el proceso de flasheo se iniciará. La operación completa se puede resumir de la siguiente manera:
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 fusionar archivos y luego flashear, puedes usar directamente el script 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 directo usando el firmware fusionado:
esptool.exe --chip esp32s3 --port COMx --baud 921600 write_flash -z 0x0 indicator_basis_v1.0.0.bin
Presta mucha atención a la dirección de inicio(0x0), especialmente cuando no fusiones binarios. Para archivos binarios separados, consulta las instrucciones en Flash Download Tools para archivos binarios separados. Seguir estas pautas 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. Este enfoque organizacional simplifica el acceso y uso.
Al emplear 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
- Fusiona los binarios usando
merge.bat. - Flashea el firmware fusionado usando
flash.bat.
Flasheando Firmware
Para flashear 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 se puede usar 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 solo archivo bin en lugar de flashear archivos separados.
Mostrar código de 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 de las series ESP8266 y ESP32. Proporcionan una interfaz gráfica de usuario (GUI) para que los usuarios puedan flashear firmware fácilmente en los microcontroladores ESP.
Sigue los pasos para flashear un firmware precompilado:
Descarga: Flash Download Tools (solo para Windows)

-
Paso 1: Haz doble clic en el archivo
.exepara entrar a la interfaz principal de la herramienta. -
Paso 2: Selecciona las siguientes opciones:
| Opción | Parámetro |
|---|---|
Chip Type | ESP32-S3 |
WorkMode | Develop |
LoadMode | UART |

-
Paso 3: Conecta el SenseCAP Indicator a tu laptop con un cable USB tipo-C.
-
Paso 4: En la pestaña SPI Download, haz clic en "..." y navega al firmware que acabas de descargar.
-
Paso 5: Configura SPI Flash:
| Opción | Parámetro |
|---|---|
SPI SPEED | 40MHz |
SPI MODE | DIO |
- Paso 6: Configura el Panel de Descarga:

- COM: Verifica los puertos en tu Device Manager, el USB-SERIAL es el correcto.
(
Aquí elegimos COM4) - Baud: 921600 (valor recomendado)
Luego haz clic en START para comenzar el flasheo.

Cuando muestre FINISH, el flasheo del firmware habrá sido completado.

Flash Download Tools para archivos binarios separados
En la guía mencionada anteriormente, el archivo binario "Default_Factory_Firmware_ESP32-S3.bin" fusiona tres binarios en uno.
Sin embargo, si estás usando ESP-IDF para construir firmware, flashear directamente un solo archivo podría resultar en errores. En su lugar, necesitarás encontrar tres archivos binarios separados que hayas construido y especificar las direcciones correctas (puedes usar tus propias direcciones) como sigue:
- bootloader.bin ----> 0x0
- partion-table.bin ----> 0x6800
- termial_demo.bin ----> 0x10000

Para RP2040
Flashear con Arduino IDE
La Herramienta de Desarrollo RP2040 aprovecha Arduino para mejorar tu experiencia de codificación.
El Arduino IDE es software gratuito para codificar placas Arduino. Con su interfaz fácil de usar, puedes escribir y subir código fácilmente. Basado en una versión más simple de C++, ofrece librerías y ejemplos, haciéndolo excelente para principiantes.
Descarga:
-
Paso 1: Instala Arduino IDE
-
Paso 2: Agrega la Placa Raspberry Pi Pico
Abre tu Arduino IDE, haz clic en Arduino IDE > Preferences, y copia la siguiente URL en Additional Boards Manager URLs:
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
![]() | ![]() |
Haz clic en Tools > Board > Board Manager.

Busca "indicator" e instala "Raspberry Pi Pico/RP2040" en el Board Manager

- Paso 3: Agregar Librerías
- Sensirion Core: Librería Sensirion Arduino Core
- PacketSerial : Protocolo de comunicación serial
- Sensirion I2C SGP40 : Librería del sensor TVOC SGP40
- Sensirion I2C SCD4x : Librería del sensor CO2 SCD41
- Sensirion Gas Index Algorithm : Librería de índice de transferencia
- Seeed_Arduino_AHT20 : Librería del sensor de temperatura y humedad AHT20
En el Arduino IDE, puedes buscarla en el Library Manager, por ejemplo Seeed_Arduino_AHT20, y luego instalarla.
Haz clic para ver la instalación sin conexión
Para instalarla sin conexión, puedes descargar el zip del repositorio desde GitHub, navegar a Sketch -> Include Library -> Add .ZIP Library, luego seleccionar las librerías que descargaste.

-
Paso 4: Conecta el dispositivo a tu PC con el cable USB Tipo-C proporcionado.
-
Paso 5: Selecciona la placa y el puerto
Busca "Indicator" y selecciona la placa Seeed INDICATOR RP2040 y selecciona el Puerto Serial usbmodem.
![]() |
![]() |
- Paso 6: Abre el archivo de código de ejemplo
File -> Open, luego selecciona el archivo de código de ejemplo (archivo .ino).
Proporcionamos un archivo de código de ejemplo, puedes modificar el código según tus necesidades.

- Paso 7: Verifica y Sube el archivo.
![]() |
![]() |
![]() |
Aquí, hemos completado la construcción y flasheo (descarga) del firmware en el RP2040.
Flashear el archivo .uf2
- Paso 1: Conecta el dispositivo a tu PC
Mantén presionado este botón interno usando una aguja, luego conecta el dispositivo a tu PC con el cable USB tipo-C proporcionado, suelta el botón una vez conectado.

- Paso 2: Flash del Firmware
Después de que la conexión sea exitosa, tu PC mostrará un disco.

Copia el archivo .uf2 al disco, luego el disco se desconectará.

La actualización se ejecutará automáticamente.
Protocolo de Comunicación ESP32 & RP2040
ESP32 y RP2040 utilizan comunicación por puerto serie, usando el protocolo de comunicación cobs. La lista de comandos utilizados en la demostración es la siguiente:
El formato del comando consiste en el tipo de paquete y los parámetros del paquete.

Recursos
SenseCAP Indicator RP2040 Demo
FAQ
¿Cómo distinguir el puerto serie?
- Windows
- MacOS
Verifica el puerto en tu Device Manager
- "USB Serial Device(COMx)" o "USB 串行设备" es para RP2040
- "USB-SERIAL CH340" es para ESP32 En resumen, el puerto CH340 es para ESP32.

- "/dev/cu.usbmodem" es para RP2040

Actualizaciones Recientes
- 2023-11-17
- Se eliminó la sección de parcheo
- 2023-08-25
- Se hizo más clara la sección de Parcheo
- 2023-07-25
- Se agregó contenido para flashear firmware usando Esptool
- 2023-05-29
- Se agregó la sección de Parcheo
Soporte Técnico
¿Necesitas ayuda con tu SenseCAP Indicator? ¡Estamos aquí para asistirte!






