MAJOR LAUNCH: HUSKYLENS 2 6 TOPS LLM MCP AI Vision Sensor is now available. Buy Now →


XBoard without the Headers installed


#include <Client.h>
#include <Ethernet.h>
#include <Server.h>
#include <Udp.h>
#include <SPI.h>
/*
* Web Server
*
* A simple web server: Displays a button to open/close
* a door and door status
*/
//-----------------------BEGIN Variable setup -------------------------------
String readString = String(30); //string for fetching data from address
boolean LEDON = false; //LED status flag
int state;
int val=0;
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = {
192, 168, 0, 177 }; //Change your IP Address here
Server server(80); //Standard HTTP server port
//-----------------------END Variable setup-------------------------------
void setup()
{
pinMode(4, OUTPUT);
Ethernet.begin(mac, ip);
server.begin();
delay(100);
Serial.begin(57600); //XBee module Baud rate
delay(100);
}
void loop()
{
//---------------Web Server initialization------------------------------
Client client = server.available();
if (client) {
boolean current_line_is_blank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (readString.length() < 100)
{
readString += c;
}
///////////Check button status to determine actions to take for submit button///////////////
if(readString.indexOf("IO=1") >0){ // If door open request sent;
// send instruction to remote arduino
if (LEDON== false){ //Ensure it only send the info once
//led has to be turned ON
LEDON = true; //Change LED state to print on the page
Serial.print('G'); //Send command to remote Arduino
}
}
if(readString.indexOf("IO=0") >0){//Same as above but not used in
//this application
if (LEDON== true){
//led has to be turned OFF
LEDON = false;
Serial.print('K');
}
}
///////////////Finish checking and actions for submit button//////////////////
//------------------Standard web Server Jargon-------------------------------
if (c == 'n' && current_line_is_blank) {
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: html");
client.println();
client.println("<html>");
client.println("<head>");
client.println("<title>Xboard interface--Door control</title>");
client.println("</head>");
client.println("<body>");
client.print("welcome to DFRobot"); //Print your own message here
client.println("<br />");
client.print("//*************************************");
client.println("<br />");
client.println("<br />");
client.print("//*************************************");
client.println("<br />");
client.println("<br />");
client.print("<form>");
client.print("<input type=radio name=IO value=1 /> Open<br />");
client.print("<input type=submit value=Submit </form><br />");
client.println("</body>");
break;
}
if (c == 'n') {
// we're starting a new line
current_line_is_blank = true;
}
else if (c != 'r') {
// we've gotten a character on the current line
current_line_is_blank = false;
}
}
}
//------------------END Standard web Server Jargon-------------------------------
//-----------------Print door status on web page and auto refresh----------------
if (LEDON){
//printing LED status
client.print("<font size='5'>DOOR status: ");
client.println("<font color='green' size='5'>OPEN");
client.println("<META HTTP-EQUIV=REFRESH CONTENT=2;url=http://192.168.0.177/>"); //Autorefresh
//Auto-refresh the site after 2 seconds to reset the door status to closed
}
else{
client.print("<font size='5'>DOOR status: ");
client.println("<font color='grey' size='5'>CLOSED");
}
client.println("<hr />");
client.println("<hr />");
client.println("</body></html>");
//clearing string for next read
readString="";
//-----------------END Print door status on web page and auto refresh----------------
client.stop();
}
/*Routine to read response from remote Arduino
*and light local LED on PIN4
*/
if (Serial.available() > 0) {
val = Serial.read();
if (val == 'H') { //These values ('H')can be changed to what ever you want
//just make sure you change them in both the server
//program and the client program
digitalWrite(4, HIGH);
delay (20);
}
if (val == 'L') {
digitalWrite(4, LOW);
delay (20);
}
}
}/*
This example code is in the public domain.
*/
const int RELAY=2;
int val;
void setup() {
pinMode(RELAY, OUTPUT);
pinMode(13, OUTPUT);
Serial.begin(57600);
delay(500);
Serial.print('L');
digitalWrite(13, HIGH); //indicates locked positon
}
void loop() {
if (Serial.available() > 0) {
val = Serial.read();
if (val == 'G') //If a 'G' is received unlock the door
{
Serial.print('H');//respond to server with aknowledgement
digitalWrite(13, LOW); //indicates an unlock
digitalWrite(RELAY, HIGH);//actuate relay to unlock the door
delay (500);
digitalWrite(RELAY,LOW); //disengage relay
digitalWrite(13, HIGH); //turn on LED to indicate locked mode
Serial.print('L'); //respond to server notifying door is locked
}
}
}
/* Note: you could add functionality to your project by adding a button on the outside of the door to function as a door bell.
additionally you would need some sort of notifier either on the Xboard (Spkr or LED or both) or on the webserver (blinking text).
*/