+ All Categories
Home > Education > Arduino + Azure: Dal circuito allo sketch e controllo remoto con una app web su azure

Arduino + Azure: Dal circuito allo sketch e controllo remoto con una app web su azure

Date post: 12-Feb-2017
Category:
Upload: giuseppe-cramarossa
View: 215 times
Download: 0 times
Share this document with a friend
30
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
Transcript

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

LA RISPOSTA

PROGETTAZIONE DEL CIRCUITO - FRITZING

• 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)

COMBINIAMO LE FUNZIONI DI BASE…

…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()

UNA POSSIBILE SOLUZIONE

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

METTIAMO IN PRATICA

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

LO SKETCH DI 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

CONCLUSIONE• Domande e risposte• GRAZIE PER L’ATTENZIONE


Recommended