Ovvero, Arduino collegato ad Internet tramite Ethernet Shield, dotato di pagina web propria all'indirizzo 192.168.1.105, dove visualizzerà la temperatura e l'umidità di casa ed un tasto con il quale farà partire, tramite infrarosso, il robot aspirapolvere Samsung Navibot.
Prima di tutto bisogna scaricare la libreria per l'infrarosso di Shirriff:
http://www.righto.com/2009/08/multi-protocol-infrared-remote-library.html
Per quanto riguarda la parte hardware, bisogna collegare un led emettitore IR sul pin3, in questo sketch recupererò anche la temperatura ambientale e l'umidità tramite il sensore DHT (http://playground.arduino.cc/Main/DHTLib) per uso futuro (prima o poi collegherò Arduino alla caldaia, per poter accendere/spegnere il riscaldamento da remoto)...
Questo lo sketch:
#include <SPI.h>#include <Ethernet.h>#include <IRremote.h>#include <dht.h>#define dht_dpin A0dht DHT;int valori[5]; //Array in cui ci salvi i valori lettiint T_campionamento;int somma;float temperaturamedia;float umido;IRsend irsend;int pos = 0;byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };IPAddress ip(192, 168, 1, 105);IPAddress gateway(192, 168, 1, 1);IPAddress subnet(255, 255, 255, 0);EthernetServer server(80);String readString;void setup() {delay(500);Serial.begin(9600);Ethernet.begin(mac, ip, gateway, subnet);server.begin();Serial.print("Il WebServer è all'indirizzo ");Serial.println(Ethernet.localIP());lettura();}void loop() {EthernetClient client = server.available();if (client) {while (client.connected()) {if (client.available()) {char c = client.read();//read char by char HTTP requestif (readString.length() < 100) {//store characters to stringreadString += c;}//if HTTP request has endedif (c == '\n') {Serial.println(readString); //print to serial monitor for debugingclient.println("HTTP/1.1 200 OK"); //send new pageclient.println("Content-Type: text/html");client.println();client.println("<HTML>");client.println("<HEAD>");client.println("<meta name='apple-mobile-web-app-capable' content='yes' />");client.println("<meta name='apple-mobile-web-app-status-bar-style' content='black-translucent' />");client.println("<link rel='stylesheet' type='text/css' href='http://randomnerdtutorials.com/ethernetcss.css' />");client.println("<TITLE>Smartgatto domotic house</TITLE>");client.println("</HEAD>");client.println("<BODY>");client.println("<H1>Smartgatto domotic house</H1>");client.println("<hr />");client.println("<br />");client.println("<H2>Avvia ciclo di pulizia con Navibot</H2>");client.println("<br />");client.println("<a href=\"/?button1on\"\">Avvia pulizia casa</a>");client.println("<br />");client.println("<br />");client.println("<br />");client.println("<H3>Home temperature is: ");client.println(temperaturamedia);client.println("C");client.println("<br />");client.println("Humidity is: ");client.println(umido);client.println("%");client.println("<br /></H3>");client.println("<br />");client.println("<br />");client.println("<p>Creato da Smartgatto 2015</p>");client.println("<br />");client.println("</BODY>");client.println("</HTML>");client.stop();//controls the Arduino if you press the buttonsif (readString.indexOf("?button1on") >0){inviair();}//clearing string for next readreadString="";}}}}}void inviair() {unsigned int Auto[68] = {4590, 4590, 590, 1690, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590,590, 590, 1690, 590, 1690, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 1690, 590, 590, 590, 1690, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 1690, 590, 590, 590, 1690, 590, 1690, 590, 1690, 590, 1690, 590, 1690, 590, 1690, 590, 65750};irsend.sendRaw(Auto, 68, 38);Serial.print("Codice infrarosso inviato");}void lettura() {for(int i=0; i<5; i++){DHT.read11(dht_dpin);umido = DHT.humidity;valori[i] = DHT.temperature;delay(500); //se vuoi fare una lettura ogni tot millisecondi//non è necessario}somma = 0; // devi essere sicuro che il primo valore sia zero, altrimenti poi sballa tuttofor(int i=0; i<5; i++)somma = somma + valori[i];temperaturamedia = somma / 5;}