La nuova scheda Arduino Nano Matter per l’automazione e la domotica

Arduino

Dall’unione di Arduino con Silicon Labs, sfruttando Matter, il protocollo standard di connettività IoT, nasce Arduino Nano Matter, un nuovo potente hardware di piccole dimensioni. In questo articolo, descriveremo la scheda Arduino Nano Matter, le sue enormi potenzialità tecniche e le possibili applicazioni nel settore della domotica e della gestione degli edifici intelligenti.

Introduzione

Arduino Nano Matter integra il potente microcontrollore MGM 240S ad alte prestazioni prodotto da Silicon Labs, che include direttamente lo standard avanzato Matter per la connettività Internet of Things (IoT). La struttura compatta e robusta di Arduino Nano Matter è perfetta per progetti che richiedono efficienza energetica e una vasta gamma di opzioni di connettività, come Bluetooth Low Energy (BLE) e Open Thread. Grazie alla sua semplicità e versatilità, Arduino Nano Matter può interfacciarsi agevolmente con qualsiasi dispositivo compatibile con il protocollo Matter e sfruttare l'ampia gamma di periferiche e I/O dell'ecosistema Arduino per migliorare la connettività dei dispositivi e le capacità di progettazione. Le aree di applicazione di Arduino Nano Matter includono IoT, domotica, automazione professionale, monitoraggio ambientale e climatizzazione. Questa scheda è una porta d'ingresso verso l'innovazione in vari settori, dalla semplificazione dei processi produttivi alla creazione di ambienti di vita e di lavoro reattivi e confortevoli.

Tra le innumerevoli applicazioni, di seguito sono elencati vari casi d’uso della scheda.

Case intelligenti: ovvero la trasformazione degli spazi residenziali in ambienti intelligenti con la tecnologia Nano Matter.

Casa intelligente a comando vocale: Arduino Nano Matter può essere integrata nelle piattaforme di assistenza vocale come Amazon Alexa o Google Assistant, consentendo ai residenti di controllare i dispositivi domestici intelligenti, come le luci, termostati o interruttori, utilizzando semplici comandi vocali, migliorando il comfort e l'accessibilità.

Illuminazione intelligente: questa applicazione automatizza il sistema di illuminazione domestica con Arduino Nano Matter utilizzato per regolare la luminosità in base all'occupazione, all'ora del giorno o ai livelli di luce ambientale, risparmiando energia e garantendo condizioni di illuminazione ottimali in ogni stanza.

Automazione degli oscuranti: Arduino Nano Matter controlla la motorizzazione di tende e tapparelle della casa per regolarle automaticamente in base all'esposizione alla luce solare, all'occupazione della stanza o ad orari specifici della giornata, creando l'atmosfera perfetta e migliorando l'efficienza energetica e il comfort.

Monitoraggio dello stato ambientale domestico: viene impiegato Arduino Nano Matter per connettere sensori ambientali, monitorare le condizioni ambientali interne come pressione atmosferica, umidità e temperatura, e mantenere un ambiente di vita sano fornendo informazioni utili per il comfort ed il benessere.

Automazione degli edifici: con Arduino Nano Matter, è possibile ottimizzare la gestione degli edifici per migliorare il comfort delle persone e l'efficienza energetica. Ad esempio, la scheda si presta a creare sistemi per controllare e monitorare gli impianti  di climatizzazione in diverse zone, regolandone il funzionamento in base alle condizioni ambientali o a impostazioni predefinite.

Gestione dell'energia: in quest’altra applicazione viene utilizzata la connettività di Arduino Nano Matter per il controllo dei misuratori di energia e degli elettrodomestici intelligenti per la gestione ottimale del consumo energetico di un edificio. In questo modo, vengono implementate automaticamente azioni di risparmio energetico, riducendo i costi e l’impatto ambientale.

Rilevamento della presenza e utilizzo dello spazio: con i sensori compatibili con il protocollo Matter gestiti da Arduino Nano Matter, si ottengono informazioni dettagliate sull'effettiva occupazione dell'edificio e si utilizzano questi dati per regolare i sistemi di illuminazione e climatizzazione, garantendo un uso efficiente dello spazio e delle risorse.

Automazione industriale: con Arduino Nano Matter viene sfruttato tutto il potenziale della produzione moderna. Progettato per una perfetta integrazione in ambienti industriali, esso semplifica le operazioni attraverso l’interoperabilità macchina-macchina mediante la quale viene migliorata la produzione attraverso la supervisione dinamica tra le macchine. Se una macchina inizia a produrre parti difettose a causa di un malfunzionamento, le macchine adiacenti vengono immediatamente allertate, interrompendo le operazioni e avvisando un operatore umano, riducendo così sprechi e tempi di fermo della produzione.

Monitoraggio dello stato della macchina: integrando Arduino Nano Matter nei sistemi industriali, può essere eseguito il monitoraggio in tempo reale di condizioni critiche delle macchine, come temperatura, pressione e umidità, garantendo manutenzione e interventi mirati tempestivi, prevenendo guasti costosi e mantenendo una qualità di produzione costante.

Ottimizzazione della sicurezza dei lavoratori: l’impiego di Arduino Nano Matter negli ambienti operativi eleva gli standard di sicurezza della struttura operativa mediante il monitoraggio in tempo reale delle condizioni ambientali ed il rilevamento della presenza del personale in aree pericolose, migliorando la sicurezza dei lavoratori e impedendo il funzionamento delle macchine quando viene rilevato un essere umano in zone pericolose.

Il protocollo Matter

Uno dei più importanti pilastri su cui si basa la potenza della nuova scheda Arduino Nano Matter è il protocollo Matter. Considerando i numerosi standard e protocolli di comunicazione disponibili nel settore della casa intelligente, è difficoltoso decidere quale utilizzare nello sviluppo di un progetto. Con la nascita cinque anni fa dello standard Matter, ora abbiamo a disposizione un protocollo standard supportato dai grandi ecosistemi come Google, Amazon ed Apple, rendendo possibile l’interoperabilità di tutti i dispositivi intelligenti supportati da Matter.

Matter è un protocollo che consente ai dispositivi intelligenti di diverse aziende di comunicare tra loro. Fondamentalmente, i dispositivi che "parlano Matter" funzionano con gli stessi comandi. È interessante sapere che non si tratta di una nuova tecnologia di rete wireless, ma piuttosto di un insieme di comandi standardizzati inviati su reti IP locali. Matter utilizza Thread, Wi-Fi ed Ethernet come tecnologie di rete sottostanti. Può utilizzare BLE per l'accoppiamento o la messa in servizio del sistema. La separazione della tecnologia di rete e del protocollo distingue Matter da tecnologie come Zigbee e Z-Wave.

Tuttavia, dal punto di vista dell’utente, la differenza più grande tra queste diverse tecnologie per la casa intelligente sono i dispositivi supportati. Molti produttori si sono impegnati a rendere alcune parti del loro portafoglio compatibili con Matter, il che è positivo, ma, a volte, è necessario un altro hub Matter. Attualmente, alcuni dispositivi compatibili con il protocollo Matter sono disponibili sul mercato, tra cui la scheda Arduino Nano Matter. Matter è una grande sfida che avrà sempre più dispositivi compatibili per lo sviluppo di progetti della casa intelligente, con Zigbee già dominante nei sistemi di controllo dell’illuminazione, Z-Wave nei sensori e nei moduli, e altre tecnologie ancora in altri campi. I progettisti, teoricamente, dovrebbero essere flessibili nella scelta tra queste tecnologie e dovrebbero progettare un sistema che ne supporti più di una.

I dispositivi Matter possono utilizzare diverse tecnologie per comunicare. Queste possono essere cablate, come Ethernet, e wireless, come Wi-Fi e Thread, diversamente da Zigbee o Z-Wave, che combinano il livello fisico, di rete e applicativo in un unico standard. Tutte queste reti sono locali, il che significa che sono governate e controllate all'interno della casa/edificio intelligente. La maggior parte degli hub Matter include un'opzione di bridging a Internet. Alcuni dispositivi Matter basati su Ethernet o Wi-Fi potrebbero tuttavia connettersi al cloud/Internet in modo non Matter e ciò potrebbe essere un rischio per la sicurezza.

La scheda Arduino Nano Matter

Incentrata sul potente microcontrollore MGM240S, un Arm Cortex-M33 a 32 bit di Silicon Labs, la scheda Arduino Nano Matter ha un'architettura compatta ad alta efficienza che integra un modulo wireless ad alte prestazioni ottimizzato per le esigenze di connettività dei dispositivi IoT alimentati a batteria e della rete mesh a 2,4 GHz. La Figura 1 mostra il layout della scheda Arduino Nano Matter.

Arduino

Figura 1: Layout della scheda Arduino Nano Matter

Nell’immagine di Figura 1 sono indicati i principali componenti della scheda.

Architettura

Come possiamo rilevare dallo schema a blocchi semplificato illustrato nella Figura 2, il nucleo dell’architettura della scheda Arduino Nano Matter è rappresentato dal microcontrollore MGM240SD22VNA.

Arduino

Figura 2: Architettura della scheda Arduino Nano Matter

Al microcontrollore sono collegate diverse periferiche: periferiche di comunicazione UART, SPI e I2C; periferiche I/O, PWM, convertitori ADC e DAC. La scheda integra anche un pulsante e un LED RGB a disposizione dell'utente per i propri test e progetti.

Caratteristiche tecniche

Le caratteristiche tecniche della scheda Arduino Nano Matter, riportate nella tabella di Figura 3, si basano sulla potenza e sulle potenzialità di connettività del microcontrollore multiprotocollo MGM240S, che è il cuore di Arduino Nano Matter e controller principale della scheda.

Arduino

Figura 3: Caratteristiche tecniche della scheda Arduino Nano Matter

Alimentazione

La scheda Arduino Nano Matter può essere alimentata tramite una delle seguenti interfacce:

  • Porta USB-C integrata: la scheda viene alimentata utilizzando un cavo o adattatore USB-C standard.
  • Alimentazione esterna a +5 VCC: in questo caso, l’alimentatore deve essere collegato al pin “+5V IN” o al pin VIN del connettore della scheda, come indicato nella disposizione dei pin. Riguardo al pin VIN, per abilitare l'alimentazione tramite questo pin occorre che il ponticello relativo a VIN sia cortocircuitato. La scheda Arduino Nano Matter assorbe tipicamente una corrente di 16 mA, ma la corrente operativa può variare in funzione dell'applicazione. Inoltre, si consideri che la scheda può essere impostata in modalità “Low-Power”, ossia per un basso consumo energetico, ma per questo tipo di funzionamento la scheda deve essere alimentata esclusivamente tramite il pin “+5V IN”. Le condizioni operative tipiche e i limiti di progettazione della scheda Arduino Nano Matter prevedono una tensione di alimentazione di +5 V al connettore d’ingresso USB e una tensione di alimentazione compresa tra +5 V e +5,5 V in ingresso al pin VIN.

Una interessante caratteristica della scheda Arduino Nano Matter è data dalla sua doppia faccia e dai suoi pin passanti lungo i bordi della scheda, ciò consente di montare e saldare componenti SMD su un supporto personalizzato costituito da una delle facce della scheda. Per scoprire tutti i dettagli tecnici di Arduino Nano Matter, è disponibile la sezione dedicata di Arduino Docs, che include lo User Manual.

Un esempio di applicazione con la scheda Arduino Nano Matter

In questo esempio, vedremo come utilizzare Arduino Nano Matter come dispositivo smart IoT per controllare con Alexa di Amazon il LED RGB integrato nella scheda. Prima di andare all’applicazione, occorre installare la scheda Arduino Nano Matter nell’IDE di Arduino di cui scaricherete l’ultima versione dal sito ufficiale www.arduino.cc. Il core Nano Matter di Silicon Labs contiene le librerie e gli esempi necessari per lavorare con i componenti della scheda, come il protocollo Matter, Bluetooth Low Energy (BLE) e I/O. Per installare il core Nano Matter, aprite l’IDE di Arduino. Selezionate File > Impostazioni e nella casella “URL aggiuntive per il gestore schede” aggiungete il link seguente (preceduto da una virgola se ci sono già altre URL): https://siliconlabs.github.io/arduino/package_arduinosilabs_index.json. Successivamente, andate su Strumenti > Scheda > Gestione schede e nella casella di ricerca digitate “Nano Matter”. Apparirà “Silicon Labs”, come mostrato in Figura 4, quindi installate l'ultima versione del core di Silicon Labs.

Figura 4: Installazione del core di Nano Matter di Silicon Labs

Controllo del LED RGB della scheda Arduino Nano Matter con Alexa

In questa applicazione, utilizzeremo la scheda Arduino Nano Matter come lampadina LED mediante il LED RGB integrato nella scheda stessa. Il codice di questa applicazione si trova nei file di esempio dell’IDE di Arduino. Quindi, aprite l’IDE e andate su File > Esempi > Matter e aprite lo sketch chiamato “nano_matter_lightbulb_color”. Di seguito, è riportato il codice completo.

#include <Matter.h>
#include <MatterLightbulb.h>

#define LED_R LED_BUILTIN
#define LED_G LED_BUILTIN_1
#define LED_B LED_BUILTIN_2

MatterColorLightbulb matter_color_bulb;

void update_led_color();
void led_off();
void handle_button_press();
volatile bool button_pressed = false;

void setup()
{
Serial.begin(115200);
Matter.begin();
matter_color_bulb.begin();
matter_color_bulb.boost_saturation(51); // Boost saturation by 20 percent

// Set up the onboard button
pinMode(BTN_BUILTIN, INPUT_PULLUP);
attachInterrupt(BTN_BUILTIN, &handle_button_press, FALLING);

// Turn the LED off
led_off();

Serial.println("Arduino Nano Matter - color lightbulb");

if (!Matter.isDeviceCommissioned()) {
Serial.println("Matter device is not commissioned");
Serial.println("Commission it to your Matter hub with the manual pairing code or QR code");
Serial.printf("Manual pairing code: %s\n", Matter.getManualPairingCode().c_str());
Serial.printf("QR code URL: %s\n", Matter.getOnboardingQRCodeUrl().c_str());
}
while (!Matter.isDeviceCommissioned()) {
delay(200);
}

Serial.println("Waiting for Thread network...");
while (!Matter.isDeviceThreadConnected()) {
delay(200);
}
Serial.println("Connected to Thread network");

Serial.println("Waiting for Matter device discovery...");
while (!matter_color_bulb.is_online()) {
delay(200);
}
Serial.println("Matter device is now online");
}

void loop()
{
// If the physical button state changes - update the lightbulb's on/off state
if (button_pressed) {
button_pressed = false;
// Toggle the on/off state of the lightbulb
matter_color_bulb.toggle();
}

// Get the current on/off state of the lightbulb
static bool matter_lightbulb_last_state = false;
bool matter_lightbulb_current_state = matter_color_bulb.get_onoff();

// If the current state is ON and the previous was OFF - turn on the LED
if (matter_lightbulb_current_state && !matter_lightbulb_last_state) {
matter_lightbulb_last_state = matter_lightbulb_current_state;
Serial.println("Bulb ON");
// Set the LEDs to the last received state
update_led_color();
}

// If the current state is OFF and the previous was ON - turn off the LED
if (!matter_lightbulb_current_state && matter_lightbulb_last_state) {
matter_lightbulb_last_state = matter_lightbulb_current_state;
Serial.println("Bulb OFF");
led_off();
}

static uint8_t hue_prev = 0;
static uint8_t saturation_prev = 0;
static uint8_t brightness_prev = 0;
uint8_t hue_curr = matter_color_bulb.get_hue();
uint8_t saturation_curr = matter_color_bulb.get_saturation_percent();
uint8_t brightness_curr = matter_color_bulb.get_brightness_percent();

// If either the hue, saturation or the brightness changes - update the LED to reflect the latest change
if (hue_prev != hue_curr || saturation_prev != saturation_curr || brightness_prev != brightness_curr) {
update_led_color();
hue_prev = hue_curr;
saturation_prev = saturation_curr;
brightness_prev = brightness_curr;
}
}

// Updates the color of the RGB LED to match the Matter lightbulb's color
void update_led_color()
{
if (!matter_color_bulb.get_onoff()) {
return;
}
uint8_t r, g, b;
matter_color_bulb.get_rgb(&r, &g, &b);
// If our built-in LED is active LOW, we need to invert the brightness values
if (LED_BUILTIN_ACTIVE == LOW) {
analogWrite(LED_R, 255 - r);
analogWrite(LED_G, 255 - g);
analogWrite(LED_B, 255 - b);
} else {
analogWrite(LED_R, r);
analogWrite(LED_G, g);
analogWrite(LED_B, b);
}
Serial.printf("Setting bulb color to > r: %u g: %u b: %u\n", r, g, b);
}

// Turns the RGB LED off
void led_off()
{
// If our built-in LED is active LOW, we need to invert the brightness values
if (LED_BUILTIN_ACTIVE == LOW) {
analogWrite(LED_R, 255);
analogWrite(LED_G, 255);
analogWrite(LED_B, 255);
} else {
analogWrite(LED_R, 0);
analogWrite(LED_G, 0);
analogWrite(LED_B, 0);
}
}

void handle_button_press()
{
static uint32_t btn_last_press = 0;
if (millis() < btn_last_press + 200) {
return;
}
btn_last_press = millis();
button_pressed = true;
}

Di questo codice spieghiamo le funzioni principali.

Nella funzione setup(), Matter viene inizializzato con Matter.begin() insieme alle configurazioni iniziali della scheda per gestire i diversi input e output.

La messa in servizio, o attivazione (commissioning) del dispositivo viene verificata con Matter.isDeviceCommissioned() per mostrare all'utente le credenziali di accoppiamento di rete, se necessario, e la connessione viene confermata con la funzione Matter.isDeviceThreadConnected(). In questo esempio, Nano Matter comunica con i dispositivi (e/o hub) compatibili Matter attraverso la rete certificata 802.15.4 Thread.

Con la funzione matter_color_bulb.is_online() si conferma che il dispositivo è online e raggiungibile dall'app coordinatrice.

Nella funzione loop(), il LED RGB viene controllato (acceso o spento) con la funzione matter_color_bulb.set_onoff(state); lo stato corrente del LED RGB viene recuperato con matter_color_bulb.get_onoff(), mentre lo stato del pulsante viene letto al fine di controllare manualmente il LED RGB.

Con la funzione update_led_color(), il colore definito nell'app viene recuperato utilizzando la funzione matter_color_bulb.get_rgb(&r, &g, &b) che memorizza il codice colore richiesto nelle variabili di formato RGB.

Programmazione della scheda

Collegate la scheda al computer e aprite l’IDE di Arduino. Selezionate la scheda con Strumenti > Scheda: “Nano Matter”. Poi selezionate la porta COM dove è connessa la scheda (ad esempio la COM9) cliccando su Strumenti > Porta: “COM9”. Infine, occorre selezionare il protocollo Matter con Strumenti > Stack di protocolli > Matter. Ora, copiate il codice riportato sopra e incollatelo in un nuovo sketch. Prima di caricare il codice nella scheda, verificatelo cliccando sul pulsante “Verifica“ e se è privo di errori procedete alla programmazione della scheda cliccando su “Carica”. Dopo aver caricato il codice, aprite il monitor seriale dell’IDE di Arduino e resettate la scheda premendo il pulsante di reset per avviare il programma. Nel monitor seriale saranno indicate le credenziali per connettere il dispositivo Matter alla rete, ovvero, un codice per l’accoppiamento manuale e un URL per generare il codice QR per accoppiare automaticamente il dispositivo. Per fare l’accoppiamento automatico aprite l'URL in un browser per generare il codice QR che utilizzerete in seguito. Per mettere in servizio la scheda Arduino Nano Matter, aprite l'app Alexa, cliccate sul simbolo “+” in alto a destra, selezionate “dispositivo”, poi, nell’elenco dei dispositivi selezionate “Altro”, come mostrato nell’immagine di Figura 5.

Arduino

Figura 5: Commissioning di Arduino Nano Matter con Alexa

Dopo aver selezionato “Altro”, apparirà una schermata con alcuni loghi. Selezionate il logo “Matter”. Si aprirà una serie di schermate di configurazione del dispositivo. Nella schermata di riconoscimento del codice QR del dispositivo cliccate su “Scansiona codice QR”. Nella pagina seguente scansionate il codice QR che avete generato in precedenza. In Figura 6 sono riportate le schermate del processo di configurazione del dispositivo.

Arduino

Figura 6: Schermate del processo di configurazione del dispositivo

Successivamente, selezionate la rete Thread disponibile e attendete che il dispositivo venga messo in servizio e aggiunto all'app Alexa. A questo punto, sarete in grado di controllare (accendere, spegnere e regolare colore e luminosità) il LED RGB integrato nella scheda Arduino Nano Matter che può essere considerata a tutti gli effetti un dispositivo IoT smart nativo.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend