🛠 Mettre à jour le firmware du module radio (piège de désynchronisation)
Objetivos
El módulo LoRa incorpora un segundo microcontrolador (STM32L0) cuyo firmware AT evoluciona independientemente del núcleo SAMD. La trampa clásica: «Firmware version mismatch» cuando una biblioteca MKRWAN reciente se encuentra con un firmware antiguo (issue #126). Este tutorial actualiza el módulo correctamente.
Material
- 1 Arduino MKR WAN 1300
- Ya sea el ejemplo MKRWANFWUpdate_standalone (los binarios del firmware están pegados en el sketch), o un segundo Arduino para el FWUpdaterBridge
- Biblioteca MKRWAN + repositorio arduino/mkrwan1300-fw (referencia)
Código completo
// Etape 1 — lire la version courante :
#include <MKRWAN.h>
LoRaModem modem;
void setup {
Serial.begin(115200); while (!Serial) {}
if (!modem.begin(EU868)) {
Serial.println("Module muet : firmware corrompu ?"); while (1) {}
}
Serial.print("firmware actuel = ");
Serial.println(modem.version); // comparer aux releases du depot fw
}
void loop {}
// Etape 2 — mise a jour :
// Ouvrir File > Examples > MKRWAN > MKRWANFWUpdate_standalone,
// coller les binaires du firmware dans l'onglet, televerser, ouvrir le
// moniteur et suivre la progression. Alternative : FWUpdaterBridge avec
// un second Arduino cable en SPI sur le module.
Verificación esperada
Tras la actualización, modem.version muestra la versión actual y los mensajes «Failed to start module» / «Firmware version mismatch» desaparecen. Los ejemplos OTAA vuelven a funcionar con normalidad.
Errores frecuentes
- Actualizar la biblioteca sin el firmware (o viceversa): desincronización — siempre alinear ambos.
- Bug conocido de arduino_read en MKRWANFWUpdate_standalone (issue #134): si el progreso se bloquea, recablear o usar FWUpdaterBridge.
- Binario de banda incorrecto (EU vs US): el módulo se reinicia en bucle.
- Confundirlo con el bootloader SAMD: aquí solo se flashea el STM32L0 del módulo.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
emission-p2p.inoArduinoreception-p2p.inoArduinoreglage-sp.inoArduinometeo-lora.inoArduinotrame-crc.inoArduinorelais-radio.inoArduino