
In questo corso impareremo a collegare Arduino alla rete per inviare e ricevere dati. Il corso è formato da una trentina di lezioni con teoria e pratica. Gli sketch e le slide sono aggiunte ad ogni lezione
Per seguire le lezioni è consigliabile utilizzare una scheda Arduino Nano 33 IoT con connettività WiFi e prezzo accessibile.
Serviranno anche dei componenti "base" come breadboard, jumper, resistori, LED, trimmer e pulsanti.
In questa lezione spiego brevemente cosa sono gli indirizzi IP e come funzionano i protocolli di base per internet e le reti.
Parliamo di porte e servizi: un sistema ideato per permettere ad un solo server di fornire più servizi differenti.
Il protocollo HTTP è utilizzato per visualizzare pagine su Internet e scambiare risorse. In questa lezione affrontiamo le sequenze di comandi per richiedere risorse o pagine a un server (GET) e il sistema di invio dati utilizzando POST.
Installiamo un server locale per poter creare alcune pagine php che utilizzeremo come servizi. In alternativa possiamo utilizzare un hosting online (es. Aruba)
XAMMP: https://www.apachefriends.org/it/index.html
Apache: https://httpd.apache.org/
Editor
Atom: https://atom.io/
Brackets: https://brackets.io/
Link:
https://www.zeppelinmaker.it/corsoarduino/page1.html
Creiamo un form per inviare dati in GET e una pagine che riceve i dati.
https://www.zeppelinmaker.it/corsoarduino/form1.html
Creiamo un form per inviare dati in POST e una pagine che riceve i dati.
https://www.zeppelinmaker.it/corsoarduino/formpost.html
Creiamo un servizio in php che riceve qualsiasi dato inviato in GET e lo salva in un file di testo. Il "servizio" ci servirà per provare le chiamate in GET con Arduino.
https://www.zeppelinmaker.it/corsoarduino/service.php
https://www.zeppelinmaker.it/corsoarduino/dati.txt
Configuriamo la scheda Arduino IoT 33 installando l'ambiente di sviluppo in Arduino IDE ed eventualmente aggiornando il firmware WiFiNina
Creiamo un primo Client con Arduino IoT che si collega al WiFi e chiede una pagina al server utilizzando il metodo GET.
Modifichiamo il client web per collegarsi anche a server in HTTP. Carichiamo un certificato SSL a bordo di Arduino.
Leggiamo una pagina web, con il Client, sviluppato nelle precedenti lezioni, analizzando la risposta riga per riga.
Creiamo una pagina dinamica in php sul nostro server che determini se il LED collegato sulla scheda Arduino debba essere acceso o spento. Arduino interrogherà periodicamente la pagine web e accenderà o spegnerà il LED di conseguenza al valore trovato.
Realizziamo un semplice Web Server a bordo di Arduino. Interrogando la scheda con un browser collegato sulla stessa rete, otterremo una pagina HTML di risposta.
Modifichiamo il WebServer su Arduino creando più pagine associate alle richieste in GET.
Modifichiamo una pagina del Web Server con Arduino così da presentare dei dati ricavati da sensori collegati alla scheda.
Creiamo una pagina dinamica a bordo del server Web di Arduino com un pulsante che possiamo usare per accendere o spegnere un LED.
In questa lezione invieremo dati in GET da Arduino a un server (utilizzando il servizio in php che abbiamo sviluppato).
In questa lezione invieremo dati in POST da Arduino a un server (modificando il servizio in php che abbiamo sviluppato).
In questa lezione invieremo dati in GET da un browser ad Arduino.
In questa lezione invieremo dati in POST da un browser ad Arduino.
Creiamo un semplice access point per permettere a un dispositivo di collegarsi ad Arduino.
Arduino Iot 33 può effettuare una scansione radio e riportare il nome delle reti presenti.
Creiamo un prototipo più complesso che: si accende emettendo un access point e quindi una rete WiFi. Collegandoci alla rete e aprendo un browser potremo specificare il nome di una rete a cui la scheda si potrà collegare. La scheda riavvierà il WiFi, spegnendo l'access point e collegandosi alla rete indicata (trasmettendo dei dati)
Che cos'è JSON? A che cosa serve?
JSON permette di descrivere dati e informazioni in modo sintetico e comprensibile agli esseri umani ma anche digeribile dai computer.
Elaboriamo delle informazioni in JSON con Arduino e la libreria ArduinoJson: leggeremo dati in json e li produrremo partendo da delle strutture in memoria (parsing e serializzazione).
Link alla pagina json Formatter: https://jsonformatter.curiousconcept.com/#
Che cos'è XML? A che cosa serve?
XML permette di descrivere dati e informazioni in modo sintetico e comprensibile agli esseri umani ma anche digeribile dai computer.
Vediamo come utilizzare le connessioni "cablate" con Ethernet e cosa cambia negli sketch.
Realizziamo una stazione meteo con display OLED che riceve i dati in json da un servizio pubblicato dal sito openweathermap.
Utilizziamo la piattaforma Arduino IoT Cloud per creare dei progetti connessi. Arduino IoT Cloud permette di costruire delle dashboard online per ricevere e visualizzare i dati trasmessi da Arduino.
Conclusione del corso: consigli e saluti.
Sempre più spesso oggi utilizziamo e ci aspettiamo di trovare oggetti connessi in Rete. I dispositivi prendono e inviano dati dalla rete creando applicazioni più complesse e sofisticate.
Anche i nostri prototipi realizzati con Arduino possono collegarsi alla rete per inviare e ricevere informazioni. Nelle lezioni del corso apprenderai a inviare e ricevere dati utilizzando il protocollo HTTP tramite Arduino. Invieremo dati in POST e GET a delle pagine di prova realizzate in php.
Vedremo come trasformare Arduino in un server web in grado di ricevere dati in GET e POST e realizzeremo anche un Access Point per potersi collegare in autonomia al nostro dispositivo.
Nella parte iniziale del corso troverai una breve introduzione teorica alle tecnologie di rete: indirizzi IP, protocolli TCP/IP e HTTP.
Le lezioni tratteranno anche il formato JSON e XML. Affronteremo varie soluzioni costruite partendo da zero e anche il sistema Arduino IoT Cloud per realizzare rapidamente prototipi connessi a Internet.
Per poter seguire le lezioni è consigliabile utilizzare una scheda Arduino nano IoT 33 (o MKR WiFi 1010). Utilizzeremo alcuni componenti come LED, pulsanti e resistori con breadboard e jumper.
Il corso è destinato a chi ha già una conoscenza (intermedia) di Arduino e della programmazione in C/C++.