🛠 Mettre à jour le firmware du module radio (piège de désynchronisation)
Objectifs
Le module LoRa embarque un second microcontrôleur (STM32L0) dont le firmware AT évolue indépendamment du cœur SAMD. Le piège classique : « Firmware version mismatch » quand une bibliothèque MKRWAN récente rencontre un firmware ancien (issue #126). Ce tuto met le module à jour proprement.
Matériel
- 1 Arduino MKR WAN 1300
- Soit l'exemple MKRWANFWUpdate_standalone (les binaires de firmware sont collés dans l'esquisse), soit un second Arduino pour le FWUpdaterBridge
- Bibliothèque MKRWAN + dépôt arduino/mkrwan1300-fw (référence)
Code complet
// 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 à 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.
Vérification attendue
Après mise à jour, modem.version affiche la release courante et les messages « Failed to start module » / « Firmware version mismatch » disparaissent. Les exemples OTAA repartent normalement.
Erreurs fréquentes
- Mettre à jour la bibliothèque sans le firmware (ou l'inverse) : désynchronisation — toujours aligner les deux.
- Bug connu de arduino_read dans MKRWANFWUpdate_standalone (issue #134) : si la progression bloque, re-câbler ou passer par FWUpdaterBridge.
- Mauvais binaire de bande (EU vs US) : le module redémarre en boucle.
- Confondre avec le bootloader SAMD : ici on ne flashe que le STM32L0 du module.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
emission-p2p.inoArduinoreception-p2p.inoArduinoreglage-sp.inoArduinometeo-lora.inoArduinotrame-crc.inoArduinorelais-radio.inoArduino