check-firmware.ino

Arduino MKR WiFi 1010 · Archivo : check-firmware.ino · Lenguaje : Arduino · Uso : Vérifier et mettre à jour le firmware du WINC1500

Muchas desilusiones WiFi de la MKR WiFi 1010 vienen de un firmware WINC1500 demasiado antiguo: este sketch lee la versión, la compara con el mínimo de la librería WiFi101 e imprime el procedimiento de actualización. También saca la dirección MAC, útil para filtros DHCP.

Hardware

Una Arduino MKR WiFi 1010 (microcontrolador SAMD21, módulo Wi-Fi WINC1500, sin Bluetooth, alimentación USB o LiPo en J6). MKR WiFi 1010 y conexión a Internet en el PC para la subida del firmware.

Cableado

Sin cableado; la actualización pasa por el ejemplo SketchFWUpdate, que hace al módulo descargar el firmware.

Funcionamiento

WiFi.firmwareVersion() devuelve una cadena comparable; librería/firmware deben ir a la par (0.16.x exige 19.6.3). macAddress lee el identificador grabado de fábrica.

Ejecución

Instala Arduino SAMD Boards y la librería WiFi101, selecciona la placa y carga. El Wi-Fi funciona solo en 2,4 GHz: comprueba que tu punto de acceso no sea solo de 5 GHz.

Variantes

En producción, registra la versión en cada arranque para detectar placas que perdieron la actualización (borrado de flash raro pero real).

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

← Volver a la ficha