Arduino + Azure: Dal circuito allo sketch e controllo remoto con una app web su azure
-
Upload
giuseppe-cramarossa -
Category
Education
-
view
215 -
download
0
Transcript of Arduino + Azure: Dal circuito allo sketch e controllo remoto con una app web su azure
ARDUINO + AZUREDal circuito allo sketch e controllo remoto con una app web su Azure
Cramarossa GiuseppeMicrosoft Student PartnerI.I.S.S «G. Marconi» Bari
6 Novembre 2015
COS’È ARDUINO?
• Scheda elettronica programmabile• Estensibile
• Esistono vari moduli (shield) acquistabili anche a basso prezzo• Versioni differenti che dipendono dalla complessità del progetto:
• Numero di pin • Memoria flash• Memoria SRAM
• Qui verrà utilizzato Arduino Uno• Progetti semplici
USI• Hobbistica
• Circuiti DIY • Uso a scopo didattico
• Unisce informatica ed elettronica• Hardware e software sono logicamente equivalenti (Andrew Stuart Tanenbaum)
• Internet of Things• Esempi
• Stampanti 3D• Radio IoT• Mixer di alcolici
PIN• Permettono di interagire con il circuito• Sono di vari tipi
• Digitali• Possono assumere due valori (1 o 0)• Sono identificati tramite un numero
• Analogici• Possono assumere valori da 0 a 1023• Sono identificati da una A seguita da un numero
• PWM• Possono assumere valori da 0 a 255• Studierete la modulazione PWM in telecomunicazioni
• Altri pin• Alimentazione esterna, massa, …
• Possono assumere due direzioni differenti• Input: dal circuito ad Arduino• Output: da Arduino al circuito• La direzione di alcuni pin può essere controllata via software
COMUNICAZIONE CON L’ESTERNO
• Modi differenti di comunicazione con l’esterno• Pin• Seriale• SPI• Shield esterne
• Bluetooth• Ethernet• …
• Qui si vedranno• Seriale• Pin• Ethernet
CHE COSA FAREMO• Pratica
• Ideazione di un semplice circuito• Fritzing
• Creazione di un semplice circuito di pilotaggio led• Bottone• Seriale• Remoto
• Programmazione di Arduino• Funzioni di base• Caricamento sulla scheda• Invio/ricezione dati tramite Seriale e Ethernet
LED• Giunzione PN• Vari tipi
• Monocolore• Bicolore• RGB
• Tre colori• Rosso• Verde• Blu
• Catodo comune• Anodo comune
• Infrarosso• Si può vedere l’infrarosso?
Tensioni dei led - Da Wikipedia
• Led rossi• Pulsante• Resistenze
• 320 Ohm• Non esistono resistenze da 320 Ohm, ma esistono da 100 e 220 Ohm. Quindi se si posizionassero
in un certo modo queste resistenze, si avrebbe una resistenza da 320 Ohm. Ma come?• In questo esempio si userà una resistenza da 330 Ohm per semplicità
• 10 kOhm• Jumper• Arduino Uno• Ethernet Shield
• Controllo remoto• Microsoft Azure
REALIZZIAMO IL CIRCUITO
• IDE• Arduino IDE
• Open Source• No completamento automatico• No Azure SDK
• Eclipse• Completamento automatico• Plugin Azure SDK• Plugin ADT (da non confondere con Android Development Toolkit)
• Gratuito• Macchinoso da configurare
• Visual Studio• Completamento automatico• Plugin Azure SDK• Plugin Visual Micro
• Proprietario• Versione free e a pagamento
PROGRAMMIAMO (1/2)
• Programma• Viene chiamato sketch• Linguaggio di programmazione C++
• Funzioni• Classi• Programmazione d base
• Classi che si vedranno• Serial• Ethernet
• Costanti che si vedranno• LOW• HIGH
PROGRAMMIAMO (2/2)
• Non c’è nessun main() da dichiarare• Dov’è?
• setup()• Istruzioni eseguite una sola volta• Utile per l’inizializzazione di classi e variabili• Non richiede nessun parametro
• loop()• Istruzioni eseguite all’infinito• Non richiede nessun parametro
• digitalRead()• Legge il valore di un pin digitale• Unico parametro: il pin digitale• Restituisce lo stato del pin: LOW o HIGH
FUNZIONI DI BASE (1/2)
• digitalWrite()• Abilita/disabilita un pin digitale• 2 parametri
• Il numero del pin digitale• Lo stato del pin: LOW o HIGH
• analogWrite()• Scrive un valore che va da 1 a 255 su un pin PWM e da 1 a 1023 su un pin analogico• 2 parametri
• Il numero del pin• Il valore da attribuire al pin
• Utile ad esempio per i led RGB• delay()
• Blocca l’esecuzione delle istruzioni successive• Unico parametro: il tempo da aspettare in milisecondi
• 1000 ms = 1 s
FUNZIONI DI BASE (2/2)
…E IL CIRCUITO PRENDE VITA!• Procurarsi un cavo USB tipo A/B per connettere Arduino al computer
• Cavo USB fornito generalmente con le stampanti• Caricare lo sketch sulla scheda
• È necessario installare prima i driver di Arduino sul proprio computer• Ogni IDE fornisce due bottoni per verificare/caricare il codice
• Verifica: Compila il programma senza caricarlo sulla scheda• Carica: carica lo sketch sulla scheda
• Con Arduino il caricamento sulla scheda è molto semplice• Esperienza Erasmus+ con ATMEGA1281
• E il circuito prende vita
AGGIUNGIAMO UN BOTTONE• Quadripolo• Collegamento con Arduino
• 5V: Tensione• Segnale: collegamento con Arduino• GND
• La resistenza dipende dal bottone• Si userà una resistenza di 10 kOhm
• Collegamento con il pin GND di Arduino• Creiamo un nuovo sketch che permette di accendere un led alla volta e lo deve
fare ogni volta che premiamo un tasto• Il corpo della funzione setup() non cambia• Funzioni di base viste nell’esempio precedente• Funzione digitalRead()
SERIALE• Permette di inviare/ricevere dati da e verso l’esterno
• Numeri• Stringhe• Caratteri
• Ogni Arduino ha 2 o più pin riservati al seriale• Pin di Arduino Uno
• 0 (Ricevitore)• 1 (Trasmettitore)
• Se si utilizzano i pin 0 e 1, non si potrà usare più la seriale USB• Non caricare più gli sketch via USB
• Esistono varie librerie che simulano il funzionamento della seriale• SoftSerial• AltSoftSerial• Non verranno trattati in questo contesto
USARE LA SERIALE• Ogni IDE ha un pannello seriale dove poter inviare e ricevere dati• In programmazione esiste la classe Serial
• Serial.begin()• Va dichiarata nella funzione setup()
• Deve essere dichiarato prima di ogni altro metodo della classe• Richiede un unico parametro: il baudrate
• Baudrate = velocità di trasferimento• Serial.read()
• Legge un carattere da seriale• Restituisce il carattere letto
• Serial.write()• Uno tra i tanti metodi di scrittura su serale• Accetta come parametro la stringa da scrivere
• Serial.isAvailable()• Verifica se è presente qualcosa nella seriale• Restituisce true se è presente qualcosa altrimenti false
• Creiamo un programma che, dato dei numeri in input, accendano il led corrispettivo al numero
CONNETTERE ARDUINO A INTERNET
• Esistono diverse schede per connettere Arduino ad Internet• Scheda Ethernet• Scheda wireless
• Le vecchie schede Ethernet non avevano indirizzo MAC associato• Esso veniva definito in programmazione
• Le nuove schede hanno un’etichetta con l’indirizzo MAC sul retro Ogni scheda necessita di 3 parametri per potersi connettere in Internet• Avrete visto quali sono nella certificazione Cisco R&S
• Permette di usare Arduino sia come server e sia come client• In questo caso verrà utilizzato come client
CLASSI PER IL CONTROLLO REMOTO
• Ethernet• Prima classe da utilizzare per configurare la scheda ethernet• Ethernet.begin
• Primo metodo da usare per configurare la scheda Ethernet• Un solo parametro: l’indirizzo MAC
• E gli altri?• EthernetClient
• Arduino come client• connect
• Metodo per connettersi a un server web• 2 parametri
• L’url • La porta a cui connettersi
• connected• Verifica se arduino si è connesso al sito• Restituisce true se si è connesso, altrimenti false
• stop• Chiude la connessione con il server
CREIAMO LA WEBAPP• Si creerà una webapp che permette di gestire il circuito da remoto• Per creare la WebApp, sono necessari i linguaggi di programmazione web
e un server• Uso di un linguaggio di programmazione lato server
• PHP• Non si vedrà come creare la web app
• Non è il fine di questa lezione• La webapp è liberamente scaricabile
• Il link vi verrà fornito in seguito• La web app verrà caricata su Azure
COS’È AZURE• Piattaforma di cloud computing
• Aperta• Flessibile• Scalabile
• Gratuito per gli studenti• Viene fornito attraverso dreamspark.com
• Alcuni software Microsoft possono essere scaricati gratuitamente ad uso esclusivamente didattico• È necessario un codice di verifica che dimostra il vostro status di studente• Alcuni software e servizi offerti oltre ad Azure
• Visual Studio• Varie licenze per sviluppatori (Xamarin e per Windows Store)• E molto altro
• Servizi offerti su Azure per gli studenti • App Web• Database MySQL• Visual Studio Online• Application Insights
CREIAMO UN’ APP WEB SU AZURE• Scaricare i sorgenti da http://1drv.ms/1LH7q2E• Registrarsi su dreamspark.com
• È necessario un account Microsoft per potersi registrare• Link diretto: aka.ms/joinds
• Registrarsi su Azure• Link diretto: aka.ms/a4d• È necessario il numero di telefono per verifica• Attendere fino a quando non è pronta la sottoscrizione
• Creare un App Web su Azure• Sarà il contenitore della nostra webapp• Cliccare su Nuovo (+) Web e Dispositivi Mobili App Web• Scegliere un nome per l’app web• Se necessario, creare un gruppo di risorse• Fare clic su Crea• Attendere la creazione della web app
USARE LA WEBAPP• Vari metodi per caricare la webapp su azure
• FTP• Collegare una cartella presente su uno spazio di archiviazione online (es. OneDrive)
• Andare sulla webapp appena creata e cliccare su impostazioni• Andare su distribuzione continua e scegliere lo spazio di archiviazione online• Fornire le autorizzazioni necessarie• Creare la cartella con lo stesso nome della webapp e inserire i file• Cliccare su OK e sincronizzare il contenuto
• Esploriamo le API della webapp• Sono presenti nella cartella api• accendiLed.php: permette di accndere il led• ottieniLed.php: permette di ottenere il led
• Uso esclusivo per arduino
PROPOSTE DI ESERCIZI• Simulare il funzionamento di un semaforo
• Sequenza dei colori• Colori diversi, cadute di tensione diverse, resistenze diverse
• Timing• Permettere a un pedone di attraversare la strada attraverso la pressione
di un pulsante• Il passaggio al rosso non deve essere fatto all’istante• Cosa succede se il semaforo è rosso per le macchine?• Cosa succede se il semaforo è arancione?
• Attraverso la seriale, decidere se attivare o disattivare il semaforo• Il semaforo non è attivo se il colore arancione lampeggia o è spento