check-firmware.ino

Arduino MKR WiFi 1010 · Fichier : check-firmware.ino · Langage : Arduino · Usage : Vérifier et mettre à jour le firmware du WINC1500

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() {}

← Retour à la fiche