Il controllo remoto delle luci è ottenuto grazie
all’utilizzo della scheda aggiuntiva di Arduino chiamata “Ethernet Shield”.
Impostando l’indirizzo IP del router a cui è collegato Arduino, ci si potrà ,
grazie ad una connessione internet e un browser, collegare al sistema e comandare l’accensione e lo spegnimento
delle luci all’interno della casa.
Grazie al controllo remoto è
possibile controllare la nostra abitazione anche a distanza, ad esempio chi
possiede una casa in montagna può attivare il riscaldamento a distanza in modo
da trovare una temperatura accogliente una volta raggiunta la destinazione.
#include
<SPI.h>
#include
<Ethernet.h>
byte
mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte
ip[] = {192, 168, 9, 55 };
byte
subnet[] = {255, 255, 255, 0 };
EthernetServer
server(80);
String readString;
byte
out_1 = 7;
byte
out_2 = 6;
byte
out_3 = 5;
byte
out_4 = 4;
byte
out_5 = 3;
void
setup()
{
Ethernet.begin(mac, ip);
pinMode (out_1, OUTPUT);
pinMode
(out_2, OUTPUT);
pinMode
(out_3, OUTPUT);
pinMode
(out_4, OUTPUT);
pinMode
(out_5, OUTPUT);
}
void
loop()
{
EthernetClient client = server.available();
if (client) {
boolean currentLineIsBlank = true;
while
(client.connected()) {
if (client.available())
{
char
c = client.read();
readString.concat(c);
if
(c == '\n' && currentLineIsBlank) {
if(readString.indexOf("on_1")
> 0) {
digitalWrite(out_1, HIGH);
delay(325);
digitalWrite(out_1,
LOW);
}
if(readString.indexOf("off_1") > 0) {
digitalWrite(out_1,
HIGH);
delay(325);
digitalWrite(out_1,
LOW);
}
if(readString.indexOf("on_2")
> 0) {
digitalWrite
(out_2, HIGH);
delay
(325);
digitalWrite
(out_2, LOW);
}
if(readString.indexOf ("off_2") > 0) {
digitalWrite
(out_3, HIGH);
delay
(325);
digitalWrite
(out_3, LOW);
}
if(readString.indexOf ("on_3") > 0) {
digitalWrite
(out_3, HIGH);
delay
(325);
digitalWrite
(out_3, LOW);
}
if(readString.indexOf ("off_3") > 0) {
digitalWrite
(out_4, HIGH);
delay
(325);
digitalWrite
(out_4, LOW);
}
if(readString.indexOf ("on_4") > 0) {
digitalWrite
(out_4, HIGH);
delay
(325);
digitalWrite
(out_4, LOW);
}
if(readString.indexOf ("off_4") > 0) {
digitalWrite
(out_4, HIGH);
delay
(325);
digitalWrite
(out_4, LOW);
}
if(readString.indexOf ("on_5") > 0) {
digitalWrite
(out_5, HIGH);
delay (325);
digitalWrite
(out_5, LOW);
}
if(readString.indexOf ("off_5") > 0) {
digitalWrite
(out_5, HIGH);
delay(325);
digitalWrite
(out_5, LOW);
}
Parte dedicata al rilevamento della selezione dalla pagina HTML all'azionamento vero e proprio dell'azione fisica, accensione/spegnimento luci.
client.println("HTTP/1.1 200 OK");
client.println
("Content-Type: text/html");
client.println
();
client.print
("<html><head><title>CASA
DOMOTICA</title><meta http-equiv='Content-Type' content='text/html;
charset=iso-8859-1' ></head><body>");
client.print("<BR><BR>");
client.print
("<h2>Controllo remoto</h2>");
client.print
("<p>");
client.print
("<br>");
if
(digitalRead(2)== true)
client.print ("<a
href=/?off_1><strong>PULSANTE</strong>");
else
client.print ("<a
href=/?on_1><strong>PULSANTE</strong>");
client.print
("<-- LUCE BAGNO");
client.print
("<br>");
if (digitalRead(3)==
true) client.print
("<a
href=/?off_2><strong>PULSANTE</strong>");
else
client.print ("<a
href=/?on_2><strong>PULSANTE</strong>");
client.print
("<-- LUCE CORRIDOIO");
client.print
("<br>");
if
(digitalRead(4)== true)
client.print ("<a
href=/?off_3><strong>PULSANTE</strong>");
else
client.print ("<a
href=/?on_3><strong>PULSANTE</strong>");
client.print
("<-- LUCE CAMERA");
client.print
("<br>");
if
(digitalRead(5)== true)
client.print ("<a
href=/?off_4><strong>PULSANTE</strong>");
else
client.print ("<a
href=/?on_4><strong>PULSANTE</strong>");
client.print
("<-- LUCE CUCINA");
client.print
("<br>");
if (digitalRead(6)==
true) client.print
("<a
href=/?off_5><strong>PULSANTE</strong>");
else
client.print ("<a
href=/?on_5><strong>PULSANTE</strong>");
client.print
("<-- LUCE SALOTTO");
client.print
("<br>");
client.println("</body></html>");
readString="";
delay(5);
client.flush();
client.stop();
}
}
}
}
Parte di programma utilizzata per la creazione della pagina HTML, visualizzabile dal browser, per l'accensione e lo spegnimento delle luci da remoto. Il risultato ottenuto è questo: