Tutorial Arduino: control of temperature and light with a buzzer – Controllo della temperature e della luminosità con l’aggiunta di un buzzer

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

For this tutorial consists on controlling the light using a buzzer and controlling the temperature.

Here are the components we used:

  • 1 Arduino
  • 1 Ethernet Shield
  • 1 Relay
  • 1 Temperature sensor
  • 1 Light sensor
  • 3 Leds
  • 3 Resistors
  • 1 Buzzer

The web page has one table for the temperature with a text box and the actual temperature and one simple table for the light.

Depending on the values we put comparing with the temperature, above the table appears text saying when to turn on/off the air conditioner.

For the light, depending on the light sensor gets, if the light level is 10% higher/lower than the internal reference temperature the buzzer makes sound (in the video it is set to 60%).

How it looks:

arduino temperature and light control refresh with buzzer

Same temperature:

arduino temperature and light control refresh with buzzer

Lower temperature:

arduino temperature and light control refresh with buzzer

Higher temperature:

arduino temperature and light control refresh with buzzer

Code:

#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
String readString; //string
String string;
int temp1=0 , temp2=0;
int vrif = 1.1;
int Rele = 0, lastlight=0;
int Ref_light=60;

void setup(){
  Ethernet.begin(mac, ip, subnet);
  analogReference(INTERNAL); //lowers the voltage reference
  pinMode(8,OUTPUT); //cold
  pinMode(9,OUTPUT); // hot
  pinMode(7,OUTPUT); // rele
  pinMode(6,OUTPUT);
  pinMode(5,INPUT);
  pinMode(0,INPUT);

  Serial.begin(9600);
}
void loop()
{
  /*Client*/

  int i=0; //y1 = temperatura e light = light level from user
  long int Rlight=0;
  float TempAverage=0;
  int y1=0, light=0, dif=0; // references posted by the user!
  EthernetClient client = server.available();

  TempAverage=analogRead(5);
  Rlight=analogRead(0);

  TempAverage = (90.0 * vrif * TempAverage) / 1024.0;

  Rlight*=100;
  Rlight/=1024;

  if (client) {
    boolean currentLineIsBlank = true;
    //tone(13,960,1000);
    while (1) 
    {
      if (client.available()) {

        char c = client.read();

        readString.concat(c); 
        //Serial.println(readString);
        //if HTTP request has ended
        if (c == '\n' &&  currentLineIsBlank) 
        {
          Serial.println(readString);
          string = readString;
          if(readString.indexOf("T=") > 0)
          {
            for(i=0;string[i];i++)
            {
              if(string[i] == 'T' && string[i+1] == '=' && string[i+2] >=48  && string[i+2] <=57 && string[i+3] >= 48 && string[i+3] <= 57) 
              {
                switch(string[i+2])
                {                                                                                                       
                case 48: 
                  y1+= 0; 
                  break;
                case 49: 
                  y1+=10; 
                  break;
                case 50: 
                  y1+=20; 
                  break;
                case 51: 
                  y1+=30; 
                  break;
                case 52: 
                  y1+=40; 
                  break;
                case 53: 
                  y1+=50; 
                  break;
                case 54: 
                  y1+=60; 
                  break;
                case 55: 
                  y1+=70; 
                  break;
                case 56: 
                  y1+=80; 
                  break;
                case 57: 
                  y1+=90; 
                  break;
                }
                switch(string[i+3])
                {
                case 48: 
                  y1+= 0; 
                  break;
                case 49: 
                  y1+=1; 
                  break;
                case 50: 
                  y1+=2; 
                  break;
                case 51: 
                  y1+=3; 
                  break;
                case 52: 
                  y1+=4; 
                  break;
                case 53: 
                  y1+=5; 
                  break;
                case 54: 
                  y1+=6; 
                  break;
                case 55: 
                  y1+=7; 
                  break;
                case 56: 
                  y1+=8; 
                  break;
                case 57: 
                  y1+=9; 
                  break;
                }
              }
            }
          }
          break;
        }
      }
    }

    Serial.println(y1);
    Serial.println(light);



    if(temp1 < (int)TempAverage && temp1 != 0)
    {
      Rele=1;
    }
    if(temp1 > (int)TempAverage && temp1 != 0)
    {
      Rele=1; 
    }
    if(temp1 == (int)TempAverage && temp1 != 0)
    {
      Rele=0;
    }
    if(Rele == 1)
    TempAverage-=12;

    // Web page:
    client.println("<!DOCTYPE html>");
    client.println("<?php session_start(); ?>");
    client.println("<html> "); 
    client.println("<table><tr><th>");
    client.println(" <tr><td><table border=""><tr><th>Reference Temperature </th>");
    client.println("<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("<tr></tr><th>Reference temperature set to </th><th>");
    if(y1 == 0)
      client.print(temp1);
    else
      client.print(y1);



    client.print("</th><tr>");
    client.println("<tr><th>Temperature of the room   </th><th>");
    if(Rele == 1)
      TempAverage-=12;
    else
    {
    }
    client.println(TempAverage);
    client.print("</th></tr>");
    client.println("</table></td>");
    client.println("<td></td><td><table border="">");
    client.println("<tr><th>Light leven of the room    </th><th>");
    client.print(Rlight);
    client.print("%</th></tr></table></td></tr>");
    client.println("</table>");
    if(temp1 < (int)TempAverage && temp1 != 0)
    {
      client.println("<p>Turn heater ON!</p>");
      digitalWrite(7,HIGH); // RELE
      digitalWrite(8,LOW); // blue
      digitalWrite(9,HIGH); // reed
    }
    if(temp1 > (int)TempAverage && temp1 != 0)
    {
      client.println("<p>Turn Air conditioner ON!</p>");
      digitalWrite(7,HIGH); // RELE
      digitalWrite(8,HIGH); // blue
      digitalWrite(9,LOW); // reed
    } 
    if(temp1 == (int)TempAverage && temp1 != 0)
    {
      client.println("<p>Teperature OK!</p>");
      digitalWrite(7,LOW); // REL
      digitalWrite(8,LOW); // green
      digitalWrite(9,LOW); // reed
    }  
    client.println("</body></html>");
    readString="";
    if(y1 != temp1 && y1 != 0)
      temp1=y1;
    if(light != temp2 && light != 0)
      temp2=light;
    client.stop();
   delay(2000);
    if(light > Ref_light+10)
    {
      tone(6,960,1000);
      delay(500);
    }
    if(light < Ref_light-10)
    {
      tone(6,960,1000);
      delay(500);
    }
  }
}


30 of July 2014

Alexandre Leitao

Gonçalo Neto

Google+