Web Server per il controllo remoto

Da Blah Hacklab, GNU/Linux e software libero.
Arduino-Uno-R3.jpg
Arduino-ethernet-shield-sch.jpg

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