In queste slide si parlerà di come iniziare a utilizzare Arduino partendo dalla progettazione di un semplice circuito e via via estenderlo fino a comandarlo tramite un'appicazione web ospitata su Azure.
Arduino + Azure: Dal circuito allo sketch e controllo remoto con una app web su azure
1. ARDUINO + AZURE
Dal circuito allo sketch e controllo remoto con una app web su Azure
Cramarossa Giuseppe
Microsoft Student Partner
I.I.S.S «G. Marconi» Bari
6 Novembre 2015
2. 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
3. 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
4. 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
5. COMUNICAZIONE CON L’ESTERNO
• Modi differenti di comunicazione con l’esterno
• Pin
• Seriale
• SPI
• Shield esterne
• Bluetooth
• Ethernet
• …
• Qui si vedranno
• Seriale
• Pin
• Ethernet
6. 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
7. 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
10. • 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
11. • 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)
12. • 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)
13. • 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)
14. • 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)
16. …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
17. 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()
19. 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
20. 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
22. 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
23. 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
24. 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
25. 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
26. 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
27. 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
29. 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