Web Server per il controllo remoto
Indice |
Materiale
Questo progetto necessita dell'utilizzo dei seguenti componenti
# una Scheda Arduino(es. UNO, MEGA o equivalenti) Vedi esempio: http://arduino.cc/en/Main/ArduinoBoardUno # una scheda di interfaccia Ethernet Vedi esempio: http://arduino.cc/en/Main/ArduinoEthernetShield
Livello complessità: Medio
Richieste: Conoscenza del Linguaggio C++
L'obbiettivo e le possibilità
L'interesse di questo progetto riguarda l'avere il controllo da remoto di dispositivo che troviamo a Casa o al Lavoro con l'utilizzo di una interfaccia WEB, quindi visibile semplicemente su qualsiasi browser, da dove vogliamo.
A questo progetto si possono interfacciare dispositivi analogici come sonde di temperatura, o digitali come finecorsa o relè, o meglio ancora far dialogare il dispositivo con una comunicazione seriale (es. RS232) verso altri dispositivi analoghi.
Un esempio potrebbe essere il controllo di una piccola serra in giardino o in casa, monitorando la temperatura, l'umidità del terriccio e la luminosita che colpisce le piante per poi controllarne i cicli di annafiatura, ventilazione o luminosita della stessa. Il tutto lo si può fare comodamente in uffico con il PC o in mobilità con un cellulare collegato al WEB.
Potrebbe essere una idea per le faccende domestiche, per il controllo temporizzato di lavatrice o lavastoviglie tenendo sotto controllo i consumi, oppure per il monitoraggio della produzione di energia dai pannelli solari, o aumentare i risparmio di energia controllando il funzionamento della caldaia.
Funzionamento
Come premessa parlo della scheda di espansione Ethernet / uSD Questa scheda si collega alla Arduino mediante le strip di chiodi, le quali a sua volta replicano la forma della Arduino per poter sovrapporre un'altra scheda simile.
Il modo di comunicazione che permette di far funzionare la scheda Ethernet / uSD è la connessione SPI e grazie alle librerie “SPI.h”, “Ethernet.h” e “SD.h” abbiamo una serie di comandi che portano a un uso semplice del dispositivo.
Dal software di sviluppo di Arduino ( Arduino Software ) si possono reperire degli esempi, che anche noi abbiamo usato come punto di partenza per iniziare a sviluppare, tra questi c'è “Webserver” (Menu-File → Example → Ethernet → Webserver) che adesso possiamo usare per la verifica di funzionamento del dispositivo. Se preferite potere scaricare il file WebServer.ino e seguirci nel miglioramento di questo progetto.
Descrizione del Sorgente del Firmware
Il sistema di sviluppo ha lo stesso principio di programmazione in C++, e come ogni programma si possono includere dei file come in questo caso che sono stati aggiunti 2 file
#include <SPI.h> #include <Ethernet.h>
come ho specificato in precedenza questi allegati preparano dei comandi per la semplificazione dello sviluppo, poi si possono dichiarare delle variabili (globali)
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1, 177);
EthernetServer server(80);
in questo caso la prima (di tipo "bite") crea il indirizzo mac del dispositivo (obbligatori per il riconoscimento fisico) il secondo caso crea una variabile (di tipo "IPAddress") per dare un IP per la comunicazione (obbligatori per il trasferimento dati) l'ultima crea una variabile (di tipo "EthernetServer") per l'assegnazione della porta di ascolto (obbligatori per assegnarne il tipo) in seguito abbiamo una funzione per l'inizializzazione del dispositivo, che viene eseguita quando si da alimentazione o viene premuto il pulsante di RESET
void setup()
una funzione a ciclo continuo che si ripete continuamente e può essere bloccato, ma questo causerebbe l'arresto totale dell'esecuzione e il ripristino può essere fatto solo con la sospensione dell'alimentazione o la pressione del pulsante di RESET
void loop()
vedremo di seguito i listati che si eseguono...
Sorgenti
L'ultima versione aggiornata
WebServer.ino
Lo stesso file ma con estensione diversa, per i vecchi programmi di sviluppo
WebServer.pde
Se volete seguire tutti i nostri progetti o partecipare al migliramento...
WebSVN oppure con SVN "svn co svn://blah.pizzahack.eu/arduino/Seppang arduino_web_controller"
Partecipanti
- Simone Agnolini (hardware & firmware developer)
- Fabio Lovato (web interface)