Stimolato da questo incontro, ho preso qualche componente da Robot Italy (bravi e veloci), ho preso un DNS dinamico gratuito, e mi sono fatto la domotica più semplice e veloce possibile: il server della temperatura e della luce.
Il codice (che terrò aggiornato man mano che lo modifico):
/* Web Server Temp A simple web server that shows the value of the analog input pins. using an Arduino Wiznet Ethernet shield. Circuit: * Ethernet shield attached to pins 10, 11, 12, 13 * Analog inputs attached to pins A0 through A5 (optional) created 18 Dec 2009 by David A. Mellis modified 4 Sep 2010 by Tom Igoe modified 15 jan 2012 by Gaspar Torriero */ #include <SPI.h> #include <Ethernet.h> int pagine = 0; int inPin = 0; // Pin di lettura int temp = 0; // variabile temperatura int luce = 0; //variabile luce // Enter a MAC address and IP address for your controller below. // The IP address will be dependent on your local network: byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress ip(192,168,30, 177); // Initialize the Ethernet server library // with the IP address and port you want to use // (port 80 is default for HTTP): EthernetServer server(80); void setup() { // start the Ethernet connection and the server: pinMode(9, OUTPUT); Ethernet.begin(mac, ip); server.begin(); } void loop() { digitalWrite(9, LOW); // set the LED off temp = ( 5.0 * analogRead(inPin) * 100.0) / 1024.0; // Conversione voltaggio sensore in temperatura luce = (analogRead(5) * 10000.0) / 1024.0; //Conversione voltaggio sensore in Lux // listen for incoming clients EthernetClient client = server.available(); if (client) { // an http request ends with a blank line boolean currentLineIsBlank = true; while (client.connected()) { if (client.available()) { char c = client.read(); // if you've gotten to the end of the line (received a newline // character) and the line is blank, the http request has ended, // so you can send a reply if (c == '\n' && currentLineIsBlank) { // send a standard http response header client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(); client.print("<html><head><title>Gasparduino Web Server Ver. 0.3</title><meta http-equiv='Content-Type' content='text/html; charset=utf-8' ></head><body>"); // output the value of analog input pins client.print("<h1>Gaspar Torriero gone Arduino</h1><hr />"); client.println("<br />"); client.print("Temperatura corrente: "); client.print(temp); client.print("°C"); client.println("<br />"); client.print("La luce è "); if (luce > 300) { client.print("accesa."); } else { client.print("spenta."); } client.println("<br />"); pagine=pagine+1; client.print("Visite dall'ultimo riavvio: "); client.print(pagine); client.println("</body></html>"); break; } if (c == '\n') { // you're starting a new line currentLineIsBlank = true; } else if (c != '\r') { // you've gotten a character on the current line currentLineIsBlank = false; } } } // give the web browser time to receive the data delay(1); // close the connection: client.stop(); digitalWrite(9, HIGH); // set the LED on delay(300); // wait for a sec digitalWrite(9, LOW); // set the LED off delay(300); // wait for a sec } }
Hai 23 gradi in casa!!! Abbassare subito il termostato e indossare maglione!
il termostato è impostato a 21°, ma il sensore è vicino alle mie mani, devo trovargli una sistemazione più adeguata 🙂
figo. hai acceso qualcosa 5 minuti fa! 🙂 Tra qualche settimana saranno disponibili i raspberry Pi che mi piacciono altrettanto. Che tu sappia, Arduino ha progetti simili?
Presveva, ho dovuto googlare 🙂 Ho sentito che stanno per uscire queste motherboard a prezzi ridicoli, ed è una gran bella novità. Ma forse l’Arduino è una filosofia diversa: invece di schermo e tastiera, physical computing!
Per dire, uno degli esempi fatti da Tom Igoe era una interfaccia composta da una vasca di fango.