El firmware de nanoFramework es la imagen que instala el nanoCLR en el microcontrolador para que pueda ejecutar nuestras aplicaciones C#.
Hasta ahora tenemos un entorno de desarrollo en nuestro PC y un microcontrolador conectado por USB. Aún falta conseguir que hablen el mismo idioma.
Tu ESP32 (o STM32) probablemente venga de fábrica hablando “AT Commands” o tenga restos de un programa antiguo de Arduino. Para que pueda entender C# y ejecutar nuestro código .NET, necesitamos instalarle el nanoCLR.
Este proceso se llama flashear el firmware y es parecido a instalar el sistema operativo de un ordenador.
Para ello, vamos a usar la herramienta de línea de comandos nanoff que instalamos en la entrada anterior. Se encarga de descargar la imagen correcta y escribirla en la placa.
El nanoCLR (Common Language Runtime) es la máquina virtual que se ejecutará dentro del chip. Se encarga de gestionar la memoria, los hilos y traducir tu código C# compilado a instrucciones que el procesador entienda.
Identificar el puerto serie (COM)
Lo primero es saber dónde está conectado nuestro dispositivo.
Conecta tu placa al USB.
En Windows, haz clic derecho en el botón de Inicio y abre el Administrador de Dispositivos.
Despliega la sección Puertos (COM y LPT).
Deberías ver algo como Silicon Labs CP210x USB to UART Bridge (COM3) o USB-SERIAL CH340 (COM4).
Quédate con ese número: COM3 (en mi caso). Ese es el DNI de tu placa ahora mismo.
Usar nanoff con ESP32
El ESP32 es el dispositivo más sencillo de flashear porque todo se hace a través del mismo cable USB.
Abre una terminal (PowerShell, CMD o la terminal integrada de Visual Studio) y prepárate.
Indicar la plataforma y el target
nanoff necesita que le indiquemos el target compatible con nuestra placa. Primero podemos consultar los targets disponibles:
nanoff --listtargets --platform esp32Verás nombres como ESP32_REV0, ESP32_PICO o los targets específicos de las distintas variantes. Usa siempre el nombre que aparezca en la lista, porque puede cambiar a medida que se incorporan placas nuevas.
- Si tienes un ESP32 normal (DevKit V1): Usa
ESP32_REV0. - Si tienes un ESP32 con PSRAM (WROVER): Usa
ESP32_PSRAM_REV0. - Si tienes un ESP32-S3: Usa
ESP32_S3.
Una vez elegido, el comando queda así:
nanoff --target ESP32_REV0 --serialport COM3 --update--target ESP32_REV0: indica la imagen concreta que vamos a instalar.--serialport COM3: selecciona el puerto de la placa (cámbialo por el tuyo).--update: descarga la última versión disponible y la instala.
Al terminar deberías ver el mensaje Firmware update ended successfully.
¿Error de conexión? ¡Pulsa el botón BOOT!
Algunas placas ESP32 no entran en modo programación automáticamente. Si ves que nanoff se queda “Connecting…” y da error:
- Mantén pulsado el botón BOOT de la placa.
- Ejecuta el comando.
- Cuando veas que empieza a borrar (“Erasing…”), suelta el botón.
Configurar el Wi-Fi durante el flasheo
Durante el flasheo también podemos guardar la configuración de la red Wi-Fi. Así evitamos escribir la contraseña directamente en el código de la aplicación.
Simplemente añade los flags --ssid y --password:
nanoff --target ESP32_REV0 --serialport COM3 --update --ssid "MiCasa_WiFi" --password "supersecreto123"El dispositivo guardará estos datos en su bloque de configuración no volátil. No debemos asumir que están cifrados: para un producto real hay que proteger tanto el acceso físico como las credenciales utilizadas.
Usar nanoff con STM32
Para las placas STM32 (como las Nucleo o Discovery), el proceso suele hacerse a través del programador ST-LINK que viene integrado en la placa.
En STM32 también debemos seleccionar el target exacto. Podemos localizarlo con:
nanoff --listtargets --platform stm32Después ejecutamos la actualización indicando el target. Según la placa, nanoff utilizará las herramientas y el programador disponibles.
nanoff --target NOMBRE_DEL_TARGET --updateSi tienes una placa STM32 que se conecta por USB directo (modo DFU), necesitarás usar el flag --dfu.
Verificar la instalación
Una vez que la consola te diga que ha terminado con éxito, toca verificarlo en Visual Studio.
Desconecta y vuelve a conectar el USB de la placa (para forzar un reinicio).
Abre Visual Studio.
Abre la ventana Device Explorer (Ver > Otras ventanas > Device Explorer).
Ahora, tras unos segundos escaneando, deberías ver tu dispositivo en la lista, mostrando información como:
- Name: ESP32_REV0 @ COM3
- Version: la versión de nanoCLR instalada
Si aparece ahí… ¡Felicidades! Tienes un dispositivo .NET listo para recibir órdenes.
Si aparece el dispositivo pero dice “desconectado” o no responde, prueba a darle al botón de Reset (EN) de la placa mientras tienes el Device Explorer abierto.
Solución de problemas frecuentes
- Permission Denied / Access Denied: Cierra cualquier otro programa que esté usando el puerto serie (como el Monitor Serie de Arduino IDE o Putty).
- Wrong Target: Si flasheas un
ESP32_S3en unESP32normal, el proceso fallará o el chip no arrancará. Asegúrate bien de tu modelo. - Bucle de reinicio: Si tras flashear, el LED de la placa parpadea muy rápido o el Device Explorer se conecta y desconecta, es posible que la fuente de alimentación (el USB) no dé suficiente corriente o hayas elegido un target incompatible.
Ya tenemos el hardware elegido, el entorno instalado y el firmware flasheado. Hemos superado la parte más “árida” de la configuración. A partir de ahora, todo es crear código 💛.