Web server
Powered by Marco Carega
This presentation is a property of Marco Carega, all rights reserved.
Ethernet Shield
Arduino è in grado di utilizzare le funzionalità di rete attraverso l’Ethernet Shield, una scheda aggiuntiva con dei circuiti che permettono la trasmissione e la ricezione di dati attraverso un cavo UTP.
Funzionamento
L’Ethernet Shield, per funzionare, utilizza i Pin 10, 11, 12 e 13. Il Pin 4 è riservato al lettore Micro SD, quando utilizzato [figure verdi].
Oltre al collegamento hardware, c’è anche bisogno di determinate istruzioni.
Istruzioni: librerie e variabili
Prima di tutto bisogna inserire le librerie:
- #include<Ethernet.h>;
- #include<SPI.h>;
In seguito si dichiarano MAC (scritto sotto la scheda), IP (con la stessa classe) e la porta di trasmissione:
- byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
Se vogliamo collegare Arduino ad un router (secondo schema), bisogna anche inserire gli indirizzi IP del gateway e del server DNS:
byte ip[] = {192,168,2,33};
- byte gateway[]={192,168,2,1};
- byte DnsServer[]={8,8,8,8};
- EthernetServer server(80);
Istruzioni: setup e loop
A questo punto inizia la connessione dell’Ethernet e del server:
- Ethernet.begin(mac, ip);
- server.begin();
Nel caso in cui Arduino è collegato ad un router, l’istruzione è questa:
Ethernet.begin(mac,ip,gateway,DnsServer);
Dopo l’inizializzazione, il server incomincia la ricerca dei client:
EthernetClient client = server.available();
Se la connessione è avvenuta con successo, il server invia al client la pagina web.
HTML
HTML è un linguaggio che permette la costruzione di pagine web.
Una pagina HTML inizia con <html> e finisce con </html>. È inoltre divisa in due parti:
- Head: parte che riguarda l’intestazione, lo stile e varie informazioni sulla pagina web;
- Body: il corpo effettivo della pagina web.
HTML e Arduino
HTML può anche interfacciarsi con Arduino in due modi:
- Scrivere l’intera pagina web
È anche possibile stampare i valori dei componenti montati su Arduino o creare dei pulsanti.
Riassunto di TPS 3-3: Arduino Web-Server
Arduino è in grado di utilizzare le funzionalità di rete attraverso l’Ethernet Shield, una scheda aggiuntiva con dei circuiti che permettono la trasmissione e la ricezione di dati attraverso un Cavo Ethernet.
Ethernet Shield
Descrizione
Fisicamente l’Ethernet Shield mostra una porta Ethernet, un lettore MicroSD e la stessa piedinatura di Arduino. Per quanto riguarda il funzionamento e la ricetrasmissione, la scheda utilizza i pin 10, 11, 12, 13; il pin 4 è riservato al lettore MicroSD, quando utilizzato. Alcuni Tipi Di Arduino hanno l’Ethernet Shield Integrato (Arduino Yun, ecc.).
Codice
Setup
Per poter utilizzare l’Ethernet Shield, bisogna inserire nell’IDE le seguenti librerie:
#include<SPI.h> #include<Ethernet.h>
È anche necessario inserire l’indirizzo MAC (scritto sotto la scheda Ethernet) ed un indirizzo IP compatibile con la rete.
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; byte ip[] = { 192,168,2, 130 };
Con la funzione EthernetServer inizializziamo il server con la porta da utilizzare:
EthernetServer server(80);
Se vogliamo collegare Arduino ad un router e non direttamente al computer, bisogna dichiarare anche l’indirizzo IP del gateway ed il Server DNS:
byte gateway[] = { 192,168,2,254 }; byte DnsServer[] = { 8,8,8,8 };
Si inizia la connessione col server:
Ethernet.begin(mac, ip); server.begin(); Serial.print("server is at "); Serial.println(Ethernet.localIP());
Loop
Inizia la ricerca di eventuali client:
EthernetClient client = server.available(); if (client) { Serial.println("new client");
Finisce le richieste HTTP (porta 80) con una linea vuota:
while (client.connected()) { while (client.available()) { char c = client.read(); Serial.write(c); }
Caricamento della pagina Web
Per caricare una pagina web su Arduino, vi sono due modi:
- Scrivere l’intera pagina HTML nel programma, utilizzando dei “client.println()”.
- Caricare la pagina in una MicroSD e richiamarla nel programma con apposite istruzioni.
Esempio:
client.println(<html>); . . . client.println(</html>)
Lettore MicroSD
L’Ethernet Shield di Arduino ha installato un lettore MicroSD che può supportare una capacità massima di 2 GB, è solitamente utilizzato per richiamare pagine web dalla memoria.
Istruzioni
Per poter utilizzare il Lettore MicroSD, bisogna dichiarare la seguente libreria:
#include<SD.h>
Dichiariamo una variabile che utilizza il pin 4, quello riservato al LettoreMicroSD:
const int chipSelect = 4;
Se la Scheda MicroSD è presente, verrà inizializzata:
if (!SD.begin(chipSelect)) { return; } }
Dopo che il server si è connesso col client, Arduino aprirà dalla MicroSD la pagina web:
File dataFile = SD.open("index.htm"); if (dataFile) { while (dataFile.available()) { client.write(dataFile.read()); }