Come utilizzare l’Arduino cloud

Nello scorso articolo abbiamo capito come attivare la Arduino sim e come configurare l’Arduino MKR GSM 1400. Inoltre abbiamo visto come sia possibile inviare dati alla scheda utilizzando il Network Monitor.

In questo articolo andremmo a creare un elemento Thing utilizzando l’Arduino Cloud e a scrivere il codice per la MKR GSM 1400 in modo da poter inviare dei dati sul cloud.

Seguiamo questo indirizzo https://create.arduino.cc/iot/. Nella home dell’Arduino Cloud (al momento ancora in versione beta) possiamo creare un nuovo Thing, ovvero un contenitore di oggetti grafici che hanno il compito di visualizzare dati provenienti dalla scheda oppure di inviarli.

add new thing

Cliccando sul bottone Add New Thing verrà caricata una pagina in cui inserire il nome del Thing e la scheda da associare nostro progetto IoT.

add new thing form

Nel combobox Select Board selezioneremmo la scheda GSM 1400 che abbiamo configurato nel precedente articolo. Clicchiamo ora sul pulsante CREATE.

Ci ritroveremo nella pagina principale del Thing che abbiamo appena creato.

arduino Thing

Attualmente sono disponibili 4 Tab. Nel tab Properties verranno elencate tutte le variabili del Thing. Queste variabili potranno essere richiamate nello sketch. Nal tab Dashboard verranno rappresentate le variabili sotto forma di oggetti grafici, pulsanti e indicatori. Nel tab Webhooks possiamo scambiare dati con altri servizi. Nel tab Board sarà possibile associare una scheda al Thing, questa associazione è molto importante perchè va a mettere in relazione la scheda selezionata con la chiave memorizzata nel crypto chip della GSM 1400. Se la chiave del crypto chip non coincide con la chiave della scheda che abbiamo caricato nel Device Manager, la comunicazione non potrà avvenire.

Creare delle proprietà

Torniamo nel tab Properties e clicchiamo sul bottone ADD PROPERTY. Verrà caricata una nuova pagina contenente un form come quello in figura:

add property at thingh

Nel campo Name inseriamo un nome identificativo per la proprietà, questo nome sarà copiato anche sul campo Variable Name. Se lo riteniamo opportuno possiamo cambiare il Variable Name. Il nome inserito nel campo Variable Name, sarà utilizzato all‘interno del codice dello sketch.

Inseriamo per esempio il nome “temperatura”.

Nella combobox Type selezioniamo la voce Temperature sensor (Celsius). Vengono visualizzati due nuovi campi dove inserire il valore minimo e massimo che la variabile temperatura dovrà avere. Inseriamo come valore minimo 0°C e come valore massimo 100°C.

Temperature

Compiliamo anche la sezione Permission, Update  e History.

Nella sezione Permission possiamo scegliere Read Only se il dato viene inviato dal dispositivo al cloud Arduino, mentre sceglieremo Read & Write se abbiamo la necessita di aggiornare la variabile temperature dall’Arduino cloud.

La sezione Update ci permette di ricevere i dati a tempi prestabiliti (utilizzando la textbox per indicare un tempo) oppure riceverli quando il dato ha una variazione rispetto al dato precedentemente inviato.

La sezione history crea un grafico utilizzando uno storico dei dati inviati dalla scheda.

thing Paraeters

Ora non ci resta che cliccare sul bottone ADD PROPERTY per confermare la nostra proprietà.

Riepilogo temperatura

Andiamo nel tab Dashboard è osserviamo la presenza di un elemento che visualizzerà il dato proveniente dalla scheda.

Dashboard proprieta

Per il momento non aggiungiamo nessun’altra proprietà e dedichiamoci alla scrittura del codice.

Installazione delle librerie

Apriamo l’Arduino IDE e creiamo un nuovo sketch. Importiamo tutte le librerie per lavorare con l’Arduino cloud. Da Gestore Librerie (combinazione di tasti Ctrl+Maiusc+i) cerchiamo la libreria ArduinoIotCloud:

Aggiungi libreria iot

procediamo con l’installazione cliccando sul pulsante Installa. Il gestore delle librerie indicherà che sono indispensabili delle librerie aggiuntive:

dipendenze librerie

Installiamole tutte come richiesto.

Scrivere il codice per la scheda MKR GSM 1400

Il codice seguente mostra come collegarsi all’Arduino Cloud e come aggiornare la variabile temperatura definita precedentemente nel Thing:

//Includo le librerie seguenti
#include <ArduinoIoTCloud.h>
#include <Arduino_ConnectionHandler.h>

//creo una costante dove contenere il think_id
//questo dato possiamo ottenerlo andando nel pannello di controllo
//dell'arduino cloud
const char THING_ID[]      = "a42be6ce-3158-4843-a29b-a36e1c90256f";

//in queste costanti inserisco i dati relativi alla sim arduino
const char GPRS_APN[]      = "prepay.pelion";
const char PINNUMBER[]     = "0000";
const char GPRS_LOGIN[]    = "arduino";
const char GPRS_PASSWORD[] = "arduino";

//questa è la variabile temperatura che abbiamo definito nelle proprietà del Thing
CloudTemperature temperatura;

//creo la connessione all'arduino cloud usando la rete gsm
GSMConnectionHandler ArduinoIoTPreferredConnection(PINNUMBER, GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD);

void setup() {
  // inizializzo la seriale
  Serial.begin(9600);
  //attendo che tutto sia pronto
  delay(1500);
  
  //inizializzo con l'id del clous
  ArduinoCloud.setThingId(THING_ID);
  //specifico la variabile che ho inserito nel thing e le sue caratteristiche
  ArduinoCloud.addProperty(temperatura, READ, ON_CHANGE, NULL);

  //inizializzo la connessione con la'rduino cloud
  //specificando il canale di comunicazione
  ArduinoCloud.begin(ArduinoIoTPreferredConnection);
  
  //attivo i messaggi di debug
  setDebugMessageLevel(2);
  ArduinoCloud.printDebugInfo();
}

void loop() {
  //trigghero l'arduino cloud
  ArduinoCloud.update();

  //genero dei valori casuali per la variabile temperatura
  temperatura = random(0, 100);
  //visualiazzo sul serial monitor il valore della variabile
  Serial.print("send data ");
  Serial.println(temperatura);
  attendo 10 s tra gli aggiornamenti
  delay(10000);

}

I commenti che ho inserito nel codice descrivono il lavoro svolto dalle istruzioni.

Compiliamo e carichiamo il codice sulla Arduino GSM 1400. Terminato il caricamento apriamo il Serial monitor e osserviamo le fasi che portano a stabilire la connessione con l’Arduino Cloud.

Serial monitor output

Sul serial monitor osserviamo la stringa Device ID, questo valore deve essere identico a quello riportato nel tab Board. La stringa Thing ID invece deve essere identica a quella che viene indicata sulla pagina del Thing che abbiamo creato.

Apriamo una finestra del browser e colleghiamoci all’Arduino Cloud andando sulla dashboard del Thing. Osservando l’elemento grafico temperatura, dovremmo riscontrare gli stessi valori che la scheda sta trasmettendo.

In questo articolo abbiamo visto come configurare l’Arduino cloud e come trasmettere dei dati usando la MKR GSM 1400. Vedremo prossimamente anche come inviare dati dall’Arduino cloud alla scheda.