0% found this document useful (0 votes)
7 views11 pages

New Text Document

The document contains code for an Arduino-based smart home system that utilizes various sensors including flame, gas, temperature, and motion detectors, along with an ESP8266 for Wi-Fi connectivity. It features an LCD display for real-time data and a web interface for remote control of connected devices. The system is designed to monitor environmental conditions and provide alerts while allowing users to control home appliances through a web server.

Uploaded by

atommen490
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views11 pages

New Text Document

The document contains code for an Arduino-based smart home system that utilizes various sensors including flame, gas, temperature, and motion detectors, along with an ESP8266 for Wi-Fi connectivity. It features an LCD display for real-time data and a web interface for remote control of connected devices. The system is designed to monitor environmental conditions and provide alerts while allowing users to control home appliances through a web server.

Uploaded by

atommen490
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 11

#include <LiquidCrystal_I2C.

h>
#include <SoftwareSerial.h>
#include "DHT.h"
#include <Servo.h>
#define DHTTYPE DHT11
#define Esp8266 Serial1
#define Debug Serial
//******************** declaration des variables
***************************
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
/*---- Capteur ----*/
int flamePin = A0;
int gazPin = A1;
int dhtPin = 12;
int pirPin = 3;
int speaker = 10;

/*---- Leds ------*/


int flameled = 23;
int gazled = 22;
int greenled = 24;

/*----- Var ------*/


long lecture_echo ;
long cm ;
int Pirr ;
int flame = 0;
int gaz = 0;
String tram ="";
float t, h ;
String recu="" , ip="" , ssid="" ;

DHT dht(dhtPin, DHTTYPE);


void setup() {

Debug.begin(9600);
Esp8266.begin(9600);
dht.begin();

pinMode(flamePin,INPUT);
pinMode(gazPin,INPUT);
pinMode(pirPin,INPUT);
pinMode(dhtPin,INPUT);
// ----Define OUTPUT pins

pinMode(greenled, OUTPUT);
pinMode(flameled, OUTPUT);
pinMode(gazled, OUTPUT);
pinMode(speaker, OUTPUT);
pinMode(pirPin, OUTPUT);
lcd.begin(16,2);
lcd_game(400);
delay(4000);
}
void loop() {
capteurs();
}
void capteurs(){
Flame_test();
Gaz_test();
dht_test();
Pir_test();
Debug.println();
Esp8266.print(tram);
Debug.print(tram);
Debug.println();
delay(1000);
tram= "";
}
/**************************************************************************
**
*
* Capteur de Temperature
*

***************************************************************************
/
void dht_test(){
float h = dht.readHumidity();
float t = dht.readTemperature();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temperature:");
lcd.setCursor(13, 0);
lcd.print((int)t);
lcd.print("C");

lcd.setCursor(0,1);
lcd.print("Humidite: ");
lcd.setCursor(13,1);
lcd.print((int)h);
lcd.print("%");

tram+=(String)t+"|";
tram+=(String)h+"|";
}
/**************************************************************************
**
*
* Detecteur de mouvement
*

***************************************************************************
/
void Pir_test(){
Debug.print("mouvement detecte : ");
Pirr=digitalRead(pirPin);
Debug.println(Pirr);
delay(100);

tram+=Pirr;
tram+="|";
}
/**************************************************************************
**
*
* Gapteur de flame
*
***************************************************************************
/
void Flame_test(){
int fval = analogRead(flamePin);
int stat= 0;
if (fval <=80) {
stat= 1;
Debug.println(" Warning Fire is On");
tone(speaker, 750, 200);
digitalWrite(flameled, HIGH);
digitalWrite(greenled, LOW);
lcd.clear();
lcd.print("Attention !!");
lcd.setCursor(0,1);
lcd.print("!! Feu !!");
delay(500);
lcd.clear();
}

else {
stat= 0;
noTone(speaker);
digitalWrite(flameled, LOW);
digitalWrite(greenled, HIGH);
}
Debug.print("fire distance is :");
Debug.println(fval);
tram+=stat;
tram+="|";
}
/**************************************************************************
**
*
* Captteur de gaz
*

***************************************************************************
/
void Gaz_test(){
int gval=analogRead(gazPin);
int stat= 0;

if (gval >=250 ){
stat= 2;
Debug.println("Gaz opened");
tone(speaker, 600, 300);
digitalWrite(gazled, HIGH);
digitalWrite(greenled, LOW);
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Attention !!");
lcd.setCursor(0,1);
lcd.print("!!! -Gaz- !!!");
delay(500);
lcd.clear();
}

else{
stat= 0;
noTone(speaker);
digitalWrite(gazled, LOW);
digitalWrite(greenled, HIGH);
}
Debug.print("gaz distance is :");
Debug.println(gval);
tram+=stat;
tram+="|";
}
/**************************************************************************
**
*
* LCD
*

***************************************************************************
/
void lcd_game(int delai){
// Quick 3 blinks of backlight
for(int i = 0; i< 3; i++)
{
lcd.backlight();
delay(200);
lcd.noBacklight();
delay(200);
}
lcd.backlight();

lcd.setCursor(0,0);
lcd.print("PFE :");
lcd.setCursor(6,0);
lcd.print(" Domotique");
delay(3000);
lcd.setCursor(0,1);
lcd.print("A");delay(150);
lcd.setCursor(1,1);
lcd.print("c");delay(150);
lcd.setCursor(2,1);
lcd.print("t");delay(150);
lcd.setCursor(3,1);
lcd.print("i");delay(150);
lcd.setCursor(4,1);
lcd.print("v");delay(150);
lcd.setCursor(5,1);
lcd.print("a");delay(150);
lcd.setCursor(6,1);
lcd.print("t");delay(150);
lcd.setCursor(7,1);
lcd.print("i");delay(150);
lcd.setCursor(8,1);
lcd.print("o");delay(150);
lcd.setCursor(9,1);
lcd.print("n");delay(150);
for(int s=10;s<17;s++)
lcd_print('.',s,1);

for(int s=0;s<11;s++)
lcd_print('.',s,1);
lcd.setCursor(10,1);
lcd.print("active");
delay(3000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("connection ");
while (!(Esp8266.available() > 0 )){
for(int i=1; i<17 ; i++){
lcd_print('>' ,i,1);
delay(1);
int j =i-1;
lcd_print(' ' ,j,1);
delay(50);
}

for(int i=16; i>=1 ; i--){


lcd_print('<' ,i,1);
delay(1);
int j= i+1;
lcd_print(' ' ,j,1);
delay(50);}

}
recu= Esp8266.readString();
Debug.print(recu);

ssid = getStr(recu,1);
ip = getStr(recu,2);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("ssid: ");
lcd.setCursor(7,0);
lcd.print(ssid);
lcd.setCursor(0,1);
lcd.print("ip: ");
lcd.setCursor(3,1);
lcd.print(ip);
delay(1000);

void lcd_print(char a ,int c,int l){


lcd.setCursor(c,l);
lcd.print(a);
delay(100);
}
//*************** Read recieved data ***********************************
String getStr(String data, int index)
{
int stringData = 0;
String dataPart = "";
for(int i = 0; i<data.length()-1; i++){
if(data[i]=='|'){
stringData++;}
else if(stringData==index){
dataPart.concat(data[i]);}

else if(stringData>index){
return dataPart;
break;
}
} return dataPart;
}

Le code de l’ESP 8266 12E :

##include <ESP8266WiFi.h>
#include <Servo.h>
/***************** Déclaration des variables ****************/
Servo porte;
String tram="";
const char* ssid = "Eloctro-lab";
const char* password = "12345678";
int led1=16;
int led2=5;
int led3=4;
int led4=0;
int led5=2;
int pos =0;
WiFiServer server(80);
void setup(){

Serial.begin(9600);
delay(10);
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(led4,OUTPUT);
pinMode(led5,OUTPUT);

digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
porte.attach(14);
porte.write(pos);
Serial.print("|");
Serial.print(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
}
server.begin();
Serial.print("|");
Serial.print(WiFi.localIP());
Serial.print("|");
}
void loop() {
WiFiClient client = server.available();
if (!client) {
return;
}
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("");
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<head>");
client.println("<title>Domotique</title>");
client.println("<meta charset=\"utf-8\">");
client.println("<meta http-equiv=\"refresh\" content=\"20\">");
client.println("<meta name=\"viewport\" content=\"width=device-width,
initial-scale=1\">");
client.println("<link rel=\"stylesheet\"
href=\"http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css
\">");
//------- JavaScript -------
client.println("</div></div>");
client.println("<script
src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js\"><
/script>");
client.println("<script
src=\"http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js\">
</script>");
client.println("<script
type=\"text/javascript\">$(document).ready(function(){$
('a[datatoggle=\"tab\"]').on"
"('show.bs.tab',function(e){localStorage.setItem('activeTab',
$(e.target).attr('href'));});"
"var activeTab = localStorage.getItem('activeTab');if(activeTab){$('#myTab
a[href=\"' + activeTab + '\"]').tab('show');}});</script>");
//------ CSS ---------------
client.println("<style type=\"text/css\">.custom{ width: 75px ; padding:
5px;}.bs-example{margin: 20px;alignment:center;}"
"pre{max-width:500px; background-color: rgba(0,0,0,0.1); color: #737373; }"
"body{position: relative;margin-left: auto;margin-right: auto;width:
100%;text-align: left;}</style>");
client.println("</head>");
client.println("<body style=\"background:
url(http://www.wallpaperup.com/uploads/wallpapers/2013/10/28/166644/a526e84
ad1dcafaa6fe06ddda28ba029.jpg) no-repeat center center fixed;\">");
client.println("<div class=\"container\" style=\"text-align:
center;\"><h3>Smart Home <a class=\"glyphicon glyphicon-education\"
href=\"#sectionC\"></a></h3></div>");
client.println("<div class=\"bs-example\"><ul class=\"nav nav-tabs\"
style=\"background-color: "
"rgba(255,255,255,0.2)\" id=\"myTab\"><li class=\"active\"
id=\"capteurs\"><a data-toggle=\"tab\" "
"href=\"#sectionA\">Capteurs</a></li><li><a data-toggle=\"tab\"
href=\"#sectionB\">Control</a></li>"
"<li><a data-toggle=\"tab\" href=\"#sectionC\">A propos</a></li></ul>");
// ------------------------------- section A -----------------------------
----------
client.println("<div class=\"tab-content\"><div id=\"sectionA\"
class=\"tab-pane fade in active\" ><h5>Capteurs</h5>");
if (Serial.available()> 0 ){
String recu="" , flame="", gaz="", humi="",temp="", us="";
recu= Serial.readString();
flame = getStr(recu,0);
gaz = getStr(recu,1);
temp = getStr(recu,2);
humi = getStr(recu,3);

//******* temperature & humidité ************


client.print("<pre style=\"background-color: rgba(0,0,0,0.1); color:
#737373;height: 80px; font-size: 120%;\" >Humidite: ");
client.print((int)humi.toFloat()); client.print("%");
client.print("</br>Temperature : ");
client.print(temp.toFloat()); client.print("°C");
client.print("</pre>");
//********** flame & gaz *********************
client.print("<pre style=\"background-color: rgba(0,0,0,0.1); color:
#737373; heigh: 40px;\" >Flame: ");
if( (int)flame.toFloat()==1)client.print("<span class=\"text-danger\">Feu
!! </span>");
else client.print("Normale");
client.print("</br>Gaz : ");
if( (int)gaz.toFloat() == 2) client.print("<span class=\"text-danger\">Gaz
ouvert !! </span>.</pre>");
else client.print(" Normale.</pre>");
}
else{
client.println("<pre style=\"background-color: rgba(0,0,0,0.1); color:
#737373;"
"height: 80px; font-size: 120%;\" >Humidite: N/A % </br>Temperature : N/A
°C </pre>");
client.println("<pre style=\"background-color: rgba(0,0,0,0.1); color:
#737373;"
" heigh: 40px;\" >Flame: N/A.</br>Gaz : N/A.</pre>");
}
client.println("</div>");
// ------------------------------- section B -----------------------------
----------
client.println("<div id=\"sectionB\" class=\"tab-pane fade\"><h5>Page de
control</h5>");
client.println("<div class=\"row\">");
client.print("&nbsp&nbsp&nbsp&nbsp<span class=\"text-danger
\"><strong>lampe 1 : "
"</strong>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp;</span>&nbsp&nbsp&nbsp;"
);
client.print("<a href=\"/L1N\" class=\"btn btn-success custom custom\"
role=\"button\">Allumer</a>&nbsp&nbsp&nbsp;");
client.print("<a href=\"/L1F\" class=\"btn btn-danger custom custom\"
role=\"button\">Etiendre</a>");
client.print("</div></br>");
client.println("<div class=\"row\">");
client.print("&nbsp&nbsp&nbsp&nbsp<span class=\"text-danger
\"><strong>lampe 2 : "
"</strong>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp;</span>&nbsp&nbsp&nbsp;"
);
client.print("<a href=\"/L2N\" class=\"btn btn-success\"
role=\"button\">Allumer</a>&nbsp&nbsp&nbsp;");
client.print("<a href=\"/L2F\" class=\"btn btn-danger\"
role=\"button\">Etiendre</a>&nbsp&nbsp&nbsp;");
client.print("</div></br>");
client.println("<div class=\"row\">");
client.print("&nbsp&nbsp&nbsp&nbsp<span class=\"text-danger
\"><strong>lampe 3 : "
"</strong>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp;</span>&nbsp&nbsp&nbsp;"
);
client.print("<a href=\"/L3N\" class=\"btn btn-success\"
role=\"button\">Allumer</a>&nbsp&nbsp&nbsp;");
client.print("<a href=\"/L3F\" class=\"btn btn-danger\"
role=\"button\">Etiendre</a>&nbsp&nbsp&nbsp;");
client.print("</div></br>");
client.println("<div class=\"row\">");
client.print("&nbsp&nbsp&nbsp&nbsp<span class=\"text-danger
\"><strong>lampe 4 : "
"</strong>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp;</span>&nbsp&nbsp&nbsp;"
);
client.print("<a href=\"/L4N\" class=\"btn btn-success\"
role=\"button\">Allumer</a>&nbsp&nbsp&nbsp;");
client.print("<a href=\"/L4F\" class=\"btn btn-danger\"
role=\"button\">Etiendre</a>&nbsp&nbsp&nbsp;");
client.print("</div></br>");
client.println("<div class=\"row\">");
client.print("&nbsp&nbsp&nbsp&nbsp<span class=\"text-danger
\"><strong>lampe 5 : "
"</strong>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp;</span>&nbsp&nbsp&nbsp;"
);
client.print("<a href=\"/L5N\" class=\"btn btn-success\"
role=\"button\">Allumer</a>&nbsp&nbsp&nbsp;");
client.print("<a href=\"/L5F\" class=\"btn btn-danger\"
role=\"button\">Etiendre</a>&nbsp&nbsp&nbsp;");
client.print("</div></br>");
client.println("<div class=\"row\">");
client.print("&nbsp&nbsp&nbsp&nbsp<span class=\"text-danger
\"><strong>PORTE : "
"</strong>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp;</span>&nbsp&nbsp&nbsp&n
bsp;");
client.print("<a href=\"/DO\" class=\"btn btn-success custom\"
role=\"button\">Ouvrir</a>&nbsp&nbsp&nbsp;");
client.print("<a href=\"/DC\" class=\"btn btn-danger custom \"
role=\"button\">Fermer</a>");
client.print("</div></br>");
client.println("</div>");
// ------------------------------- section C -----------------------------
----------
client.println("<div id=\"sectionC\" class=\"tab-pane fade\" >");
client.println("<div class=\"container\" style=\" color: #737373;\">");
client.println("<h3><span class=\"glyphicon glyphicon-console\"
href=\"#sectionC\"></span> Team work!</h3>");
client.println("<p >Projet réalisé par : </br><strong>Abdeladem
Boukoutaya</strong></br><strong>"
"Khadija El Yahiaoui</strong></br>Encadré par : </br><strong>Mr.Ouadou
Mohammed</strong></p>");
client.println("</div></div>");
client.println("</body></html>");
while(!client.available()){
delay(2000);
}
String request = client.readStringUntil('\r');
client.flush();
//------------------ LEDs -----------------------
if ((String)request == ("GET /L1N HTTP/1.1")) {
digitalWrite(led1, HIGH);
}
else if ((String)request == ("GET /L1F HTTP/1.1")) {
digitalWrite(led1, LOW);
}
else if ((String)request == ("GET /L2N HTTP/1.1")) {
digitalWrite(led2, HIGH);
}
else if ((String)request == ("GET /L2F HTTP/1.1")) {
digitalWrite(led2, LOW);
}
else if ((String)request == ("GET /L3N HTTP/1.1")) {
digitalWrite(led3, HIGH);
}
else if ((String)request == ("GET /L3F HTTP/1.1")) {
digitalWrite(led3, LOW);
}
else if ((String)request == ("GET /L4N HTTP/1.1")) {
digitalWrite(led4, HIGH);
}
else if ((String)request == ("GET /L4F HTTP/1.1")) {
digitalWrite(led4, LOW);
}
else if ((String)request == ("GET /L5N HTTP/1.1")) {
digitalWrite(led5, HIGH);
}
else if ((String)request == ("GET /L5F HTTP/1.1")) {
digitalWrite(led5, LOW);
}
//------------------ Porte -----------------------
else if ((String)request == ("GET /DO HTTP/1.1")) {
for (pos = 0; pos <= 180; pos += 1) {
porte.write(pos);
delay(5);
}
}
else if ((String)request == ("GET /DC HTTP/1.1")) {
for (pos = 180; pos >= 0; pos -= 1) {
porte.write(pos);
delay(5);
}
}
delay(20);
Serial.println("Client disonnected");
Serial.println("");
}
String getStr(String data, int index)
{
int stringData = 0;
String dataPart = "";
for(int i = 0; i<data.length()-1; i++){
if(data[i]=='|'){
stringData++;}

else if(stringData==index){
dataPart.concat(data[i]);}
else if(stringData>index){
return dataPart;
break;
}
} return dataPart;
}

You might also like