Hi i am working on my project to read the sensor value using arduino uno board using Ethernet shield and store the sensor values in to mysql data base ,i am doing it well with arduino web-client. I want to control a relay using web-server and I don't know where am struck.... i will b thankful for your help....
#include <SPI.h>
#include <Time.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 2, 151 };
byte gateway[] = { 192, 168, 2, 1 };
byte subnet[] = { 255, 255, 255, 0 };
byte myserver[] = { 192, 168, 2, 235 };
EthernetServer server(80);
EthernetClient client;
String readString;
String HTTP_req; // stores the HTTP request
boolean LED_status = 0; // state of LED, off by default
float cur;
void setup()
{
pinMode(8, OUTPUT);
Ethernet.begin(mac, ip, gateway, subnet);
delay(1000);
server.begin();
Serial.begin(9600);
Serial.println("hi");
requestTime();
//setTime(00,00,00,01,01,2011);
}
void loop()
{
Serial.println("hi1");
int sec = second();
if(sec == 0)
{
cur = analogRead(0);
Serial.print("\nARDUINO: Current: ");
Serial.println(cur);
Serial.print("ARDUINO: attempting to connect... ");
if(client.connect(myserver, 84))
Serial.println("connected...");
Serial.println("ARDUINO: forming HTTP request message");
client.print("GET /arduino/add.php?");
client.print("cur=");
client.print(cur);
client.print("&time=");
print_time(now());
client.println(" HTTP/1.1");
client.println("Host: 192.168.2.235");
;
client.println();
Serial.println("ARDUINO: HTTP message sent");
delay(3000);
if(client.available())
{
Serial.println("ARDUINO: HTTP message received");
Serial.println("ARDUINO: printing received headers and script response...\n");
while(client.available())
{
char c = client.read();
Serial.print(c);
}
}
else
{
Serial.println("ARDUINO: no response received / no response received in time");
}
client.stop();
}
else
{
Serial.println("connection failure1");
}
EthernetClient client = server.available(); // try to get client
Serial.println("hi2");
if (client) { // got client?
boolean currentLineIsBlank = true;
Serial.println("hi3");
while (client.connected()) {
if (client.available()) { // client data available to read
char c = client.read(); // read 1 byte (character) from client
HTTP_req += c; // save the HTTP request 1 char at a time
// last line of client request is blank and ends with \n
// respond to client only after last line received
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("Connection: close");
client.println();
// send web page
client.println("<!DOCTYPE html>");
client.println("<html>");
client.println("<head>");
client.println("<title>Arduino RELAY Control</title>");
client.println("</head>");
client.println("<body>");
client.println("<h1>LED</h1>");
client.println("<p>Click to switch RELAY on and off.</p>");
client.println("<form method=\"get\">");
ProcessCheckbox(client);
client.println("</form>");
client.println("</body>");
client.println("</html>");
Serial.print(HTTP_req);
HTTP_req = ""; // finished with request, empty string
break;
}
// every line of text received from the client ends with \r\n
if (c == '\n') {
// last character on line of received text
// starting new line with next character read
currentLineIsBlank = true;
}
else if (c != '\r') {
// a text character was received from client
currentLineIsBlank = false;
}
}
}
}
}
// switch RELAY and send back HTML for Relay checkbox
void ProcessCheckbox(EthernetClient cl)
{
if (HTTP_req.indexOf("RELAY2=2") > -1) { // see if checkbox was clicked
// the checkbox was clicked, toggle the Relay
if (RELAY_status) {
RELAY_status = 0;
}
else {
RELAY_status = 1;
}
}
if (RELAY_status) { // switch RELAY on
digitalWrite(8, HIGH);
// checkbox is checked
cl.println("<input type=\"checkbox\" name=\"RELAY2\" value=\"2\" \
onclick=\"submit();\" checked>RELAY2");
}
else { // switch RELAY off
digitalWrite(8, LOW);
// checkbox is unchecked
cl.println("<input type=\"checkbox\" name=\"RELAY2\" value=\"2\" \
onclick=\"submit();\">RELAY2");
}
}
void print_time(time_t t)
{
client.print(year(t));
if(month(t) < 10)
{
client.print("0");
client.print(month(t));
}
else
{
client.print(month(t));
}
if(day(t) < 10)
{
client.print("0");
client.print(day(t));
}
else
{
client.print(day(t));
}
if(hour(t) < 10)
{
client.print("0");
client.print(hour(t));
}
else
{
client.print(hour(t));
}
if(minute(t) < 10)
{
client.print("0");
client.print(minute(t));
}
else
{
client.print(minute(t));
}
if(second(t) < 10)
{
client.print("0");
client.print(second(t));
}
else
{
client.print(second(t));
}
}
void requestTime()
{
Serial.println("please enter year (e.g. 2011): ");
while(Serial.available() < 4){ /*loop until 4 bytes received */ }
int y = (Serial.read() - '0');
y = (10 * y) + (Serial.read() - '0');
y = (10 * y) + (Serial.read() - '0');
y = (10 * y) + (Serial.read() - '0');
Serial.println("please enter month (00-31): ");
while(Serial.available() < 2){ /*loop until 2 bytes received */ }
int mon = (Serial.read() - '0');
mon = (10 * mon) + (Serial.read() - '0');
Serial.println("please enter day (00-31): ");
while(Serial.available() < 2){ /*loop until 2 bytes received */ }
int d = (Serial.read() - '0');
d = (10 * d) + (Serial.read() - '0');
Serial.println("please enter hours (00-23): ");
while(Serial.available() < 2) { /*loop until 2 bytes received */ }
int h = (Serial.read() - '0');
h = (10 * h) + (Serial.read() - '0');
Serial.println("please enter minutes (00-59: ");
while(Serial.available() < 2) { /*loop until 2 bytes received */ }
int m = (Serial.read() - '0');
m = (10 * m) + (Serial.read() - '0');
Serial.println("please enter seconds (00-59): ");
while(Serial.available() < 2) { /*loop until 2 bytes received */ }
int s = (Serial.read() - '0');
s = (10 * s) + (Serial.read() - '0');
setTime(h,m,s,d,mon,y);
if(timeStatus() == timeSet)
{
Serial.println("thankyou. Time is set");
}
}