check-firmware.ino
Beaucoup de déconvenues WiFi de la MKR WiFi 1010 viennent d'un firmware WINC1500 trop ancien : ce croquis lit la version, la compare au minimum requis par la bibliothèque WiFi101, et affiche la procédure de mise à jour. Il sort aussi l'adresse MAC, utile pour les filtres DHCP.
Matériel requis
Une Arduino MKR WiFi 1010 (microcontrôleur SAMD21, module Wi-Fi WINC1500, pas de Bluetooth, alimentation USB ou LiPo sur J6). MKR WiFi 1010 et connexion Internet sur le PC pour le téléversement du firmware.
Câblage
Aucun câblage ; la mise à jour passe par l'exemple SketchFWUpdate qui fait télécharger le firmware au module.
Fonctionnement
WiFi.firmwareVersion() renvoie une chaîne comparable ; le couple bibliothèque/firmware doit suivre (0.16.x exige 19.6.3). macAddress lit l'identifiant gravé en usine.
Exécution
Installez Arduino SAMD Boards et la bibliothèque WiFi101, sélectionnez la carte, téléversez. Le Wi-Fi fonctionne en 2,4 GHz uniquement : vérifiez que votre point d'accès n'est pas en 5 GHz seul.
Variantes
En production, journalisez la version à chaque démarrage pour repérer les cartes qui ont perdu leur mise à jour (effacement flash rare mais réel).
check-firmware.ino
// Firmware WINC1500 : verifier la version minimale (WiFi101 0.16+).
#include <SPI.h>
#include <WiFi101.h>
void setup() {
Serial.begin(9600);
while (!Serial);
if (WiFi.status() == WL_NO_MODULE) {
Serial.println(F("Pas de WINC1500 detecte"));
while (true);
}
String v = WiFi.firmwareVersion();
Serial.println("Firmware courant : " + v);
if (v < "19.6.3") {
Serial.println(F("MISE A JOUR NECESSAIRE :"));
Serial.println(F(" 1. IDE > Outils > WiFi101 Firmware Updater"));
Serial.println(F(" 2. Exemple WiFi101 > SketchFWUpdate, televerser"));
Serial.println(F(" 3. Relancer ce controle apres redemarrage"));
} else {
Serial.println(F("Firmware OK, connexion possible"));
}
Serial.print(F("Adresse MAC : "));
uint8_t mac[6];
WiFi.macAddress(mac);
for (int i = 5; i >= 0; i--) {
if (mac[i] < 0x10) Serial.print('0');
Serial.print(mac[i], HEX);
if (i) Serial.print(':');
}
Serial.println();
}
void loop() {}