Tutorial Arduino: How to check and adjust room temperature from browser

Scritto da Alessandra De Rosa on . Postato in Formazione, Prodotti, Progetto Leonardo da Vinci, Servizi, Tutorials Arduino

This tutorial will explain how this project works and its code. It is based on the last project but this time we’ll having more control of the leds, temperature and relay.

Components:

  • 1 Arduino
  • 1 Ethernet Shield
  • 1 BreadBoard
  • 3 Leds
  • 3 Resistances
  • 1 Temperature sensor

In this project, we’re able to check the temperature in the room that the temperature sensor is located and write the temperature we want it to be, depending on the temperature we want and the real one, there’s a text saying if it is equal, too low or too high.

We simulate the Air conditioning with leds that turn on.

Here’s how it looks:

 arduino_air_conditioning1

When the temperature chosen is the same as the actual one:

arduino_airconditioning

When the temperature chosen is lower than the actual one:

arduino_airconditioning2

When the temperature chosen is higher than the actual one:

arduino_airconditioning3

The sketch:

arduino_air_conditioning8

The code we used:

#include <String.h>
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // mac address
byte ip[] = { 
  192, 168, 1, 25 }; // ip arduino internet in
byte subnet[] = { 
  255, 255, 255, 0 }; //subnet mask
EthernetServer server(80); //server port

int outPin = 9; // pin 
String readString; //string
boolean LEDON = false; // flag status 

float vrif = 1.1; // for the temperature

void setup()
{
  Ethernet.begin(mac, ip, subnet);
  pinMode(outPin, OUTPUT);
  analogReference(INTERNAL); //lowers the voltage reference

  Serial.begin(9600);
}

void loop()
{
  // Temperature:
  float x=0, x2= 0;
  float from_sv=0;
  x = analogRead(5);


  x2 += (95.0 * vrif * x) / 1024.0;
  Serial.println(x2);


  /*inizio client*/

  EthernetClient client = server.available();
  if (client) {
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        readString.concat(c); 
        //if HTTP request has ended
        if (c == '\n' && currentLineIsBlank) {
          Serial.print(readString);

          if(readString.indexOf("L=1") > 0) {
            digitalWrite(outPin, HIGH); 
            LEDON = true;
            Serial.print("ON pin ");
            Serial.println(outPin);
          }
          else
          {
            if(readString.indexOf("L=0") > 0){
              digitalWrite(outPin, LOW);
              LEDON = false;
              Serial.print("OFF pin ");
              Serial.println(outPin);
            }
            if(readString.indexOf("T=") > 0)
            }
            // Web Page html
            client.println("HTTP/1.1 200 OK.....");
          client.println("Content-Type: text/html");
          client.println();


          client.print("<html> <style> table ,th, dt{ border:1px solid black; border-collapse:collapse;}"); // creates the table and costumizes the border for the temperature
          client.println("th, dt {padding:5px;}</style>"); // also border costumization

            client.println("<head><title>ARDUINO Led Control</title><meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' ><a href=""https://www.hydrasolutions.it""><img src=""https://2.bp.blogspot.com/-p5i_N2bHBOk/U7b48Dwy_tI/AAAAAAAAABY/IEIbQcWPJRQ/s1600/logotr.png"" alt=""Hydra Icon/></a><br><br></head><body>");

          client.print("<p><a href='/?L=1'>ACCENDI</a> | <a href='/?L=0'>SPEGNI</a></p>");

          client.println("<table><tr><th>Led status:</th>");
          client.print("<th>");
          if (LEDON) {
            client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
          }
          else
          {
            client.println("<span style='color:grey; font-weight:bold;'>OFF</span></font>");
          }
          client.print("</th>");
          client.print("<tr><th>Reference Temperature</th>"); 
          client.print("<th> <form action="" method=""get""><input type=""text"" name=""T"" value=""Insert value""><input type=""submit"" value=""check""><?phpif(!isset($_GET['temp']))$var_1 = "";else$var_1 = $_GET['temp'];$_SESSION['data'] = $var_1;?></th>");
          client.println("<th><?PHP echo $_SESSION['data'];?> </th></tr>");
          client.println("<tr><th>Temperature of the room</th>");
          client.print("<th>");     
          client.print(x2);   
          client.println("</th>"); 
          client.println("</body></html>");
          readString="";
          client.stop();

        } 
      }
    }




  } // fine loop
}


23 of July 2014

Alexandre Leitao

Gonçalo Neto

Google+