Tutorial Arduino: How to check and adjust room temperature from browser
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:
When the temperature chosen is the same as the actual one:
When the temperature chosen is lower than the actual one:
When the temperature chosen is higher than the actual one:
The sketch:
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