Manage your house with Arduino

domotic

Explanation of the real project and applied in a house

 

How can you easily make a magic box as big as a hand to manage the whole house with a msartphone, turn on and off the light bulb, the ventialeurs, heaters, know the state of the weather, is it raining? is it cold? know the indoor and outdoor temperature and humidity.


Objects used for this project:
1. mp3 player (WTD020SD or DFPlayer Mini)
2. Distance detector (HC-SR04 sensor)
3. Arduino Mega
4. SD memory card
5. Relay 4 ports
6. Mini Oled Screen 32
7. 2 temperature and humidity detectors module
8. Small speaker
9. Peezo (beeper)
10. Optional: rain detector, Carbon CO detector, sound detector.

Full html javascript web source code:

  < table style="margin:0 auto" >
    < tbody >
        < tr >
            < td >< strong >Inside:< /strong > 
                Temp: 
                < h2 id="temp1" id="Disabled" style="display:inline;" >...< /h2 >
                Hum: 
                < h2 id="hum1" id="Disabled" style="display:inline;">...< /h2 >
            < /td >
            < td colspan="2" >< strong >Outide:< /strong > 
                Temp: 
                < h2 id="temp2" id="Disabled" style="display:inline;" >...< /h2 >
                Hum: < h2 id="hum2" id="Disabled" style="display:inline;" >...< /h2 >
            < /td >
        < /tr >
        < tr >
            < td >Beep ON< /td >
            < td >Server OFF< /td >
            < td >Play Music 1< /td >
        < /tr >
        < tr >
            < td >Led OFF< /td >
            < td >Led2 OFF< /td >
            < td >Play Music 2< /td >
        < /tr >
        < tr >
            < td >in1 LOW< /td >
            < td >in2 LOW< /td >
            < td >Stop Music< /td >
        < /tr >
        < tr >
            < td >in3 LOW< /td >
            < td >in4 LOW< /td >
            < td >reboot< /td >
        < /tr >
    < /tbody >
< /table >
< script >
$.ajax({
    type: "GET",
    url: 'http://yourwebsiteOrIP:port',
    data:{pin:"99"},
    async:true,
    jsonpCallback: 'GotFromDoor',
    dataType : 'jsonp',   //you may use jsonp for cross origin request
    crossDomain:true,
    success: function(data) {
        //$('#results2').text(data);
        console.log(dataArray);
        var dataArray = jQuery.parseJSON(data);
        console.log(dataArray);
        $('#3').text(dataArray["peez"]);
        $('#7').text(dataArray["led"]);
        $('#25').text(dataArray["server"]);
        $('#temp').text(dataArray["t"]);
        $('#hum').text(dataArray["h"]);
        $('#temp2').text(dataArray["t2"]);
        $('#hum2').text(dataArray["h2"]);
        if( dataArray["in1"]=="1") $('#77').text("in1 HIGH"); else if( dataArray["in1"]=="0")  $('#77').text("in1 LOW");
        if( dataArray["in2"]=="1") $('#88').text("in2 HIGH"); else if( dataArray["in2"]=="0")  $('#88').text("in2 LOW");
        console.log(dataArray["in1"]+' - '+dataArray["in2"]);
    },
    error : function(jqXHR, textStatus, errorThrown) {
        $('#results2').text(errorThrown);
    }
});
$(".led").click(function(){
    var p = $(this).attr('id');
     $.ajax({
        type: "GET",
        url: 'http://yourwebsiteOrIP:port',
        data:{pin:p},
        async:true,
        jsonpCallback: 'GotFromDoor',
        dataType : 'jsonp',   //you may use jsonp for cross origin request
        crossDomain:true,
        success: function(data) {
            console.log(data);
            if(data=="41"){$('#41').text("Music 1 Playing");$('#42').text("Play Music 2");}
            else if(data=="42"){$('#41').text("Play Music 1");$('#42').text("Music 2 Playing");}
            else if(data=="44"){$('#41').text("Play Music 1");$('#42').text("Play Music 2");}
            else if(data=="46"){}
            else $('#'+p).text(data);
            $('#results2').text(data);
        },
        error : function(jqXHR, textStatus, errorThrown) {
            $('#results2').text(errorThrown);
        }
    });
});
< /script >

 

Complete Arduino source code:


#include < SPI.h >
#include < Wire.h >
#include < Adafruit_GFX.h >
#include < Adafruit_SSD1306.h >
#include "DHT.h"
#include < UIPEthernet.h >
#include < Keypad.h >
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
#include "Stepper.h"

/***** stepper **********************/
#define STEPS  32 

// Setup of proper sequencing for Motor Driver Pins
// In1, In2, In3, In4 in the sequence 1-3-2-4
Stepper small_stepper(STEPS, 17, 16, 15, 14);
int  Steps2Take; 
int state=0;
String success_code="56B#";
/****************** internet ********************************/
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xCD };
int ip1 = 192, ip2 = 168, ip3 = 10, ip4 = 104;
int serverPort = 80;
IPAddress ip(ip1, ip2, ip3, ip4);
EthernetServer server(serverPort);
EthernetClient client;

boolean dopeez = false, doled = true, doserver = true;
String keyp="";
int sip1 = 88, sip2 = 175, sip3 = 140, sip4 = 65;
IPAddress serverIP(sip1, sip2, sip3, sip4);
char serverName[] = "www.yourserver.com";
int ledpin = 36,ledpin2 = 34, buzzer = 38;
#define in1 9
#define in2 8
#define in3 7
#define in4 6
int pins[] = {ledpin, buzzer};
int makedelay=0;

/******************** temp & hum ********************************************/
#define DHTTYPE DHT11   // DHT 11
#define DHTPIN 2
#define DHTPIN2 3

DHT dht(DHTPIN, DHTTYPE);
DHT dht2(DHTPIN2, DHTTYPE);

/******************** keypad ********************************************/
const byte Rows= 4; //number of rows on the keypad i.e. 4
const byte Cols= 3; //number of columns on the keypad i,e, 3

//we will definne the key map as on the key pad:

char keymap[Rows][Cols]={
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};
byte rPins[Rows]= {43,41,39,37}; //Rows 0 to 3
byte cPins[Cols]= {35,33,31}; //Columns 0 to 2
Keypad keypad = Keypad(makeKeymap(keymap), rPins, cPins, Rows, Cols);

/************************* OLED ***************************************/

#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

#if (SSD1306_LCDHEIGHT != 32)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif
/***********************************************************************/
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
/*********************************************************************/
void setup()   {
  Serial.begin(9600);
  
  Serial.println("setup");
  pinMode(in1, OUTPUT);pinMode(in2, OUTPUT);pinMode(in3, OUTPUT);pinMode(in4, OUTPUT);
  digitalWrite(in1, LOW);digitalWrite(in2, LOW);digitalWrite(in3, LOW);digitalWrite(in4, LOW);
  pinMode(buzzer, OUTPUT);pinMode(ledpin, OUTPUT);pinMode(ledpin2, OUTPUT);
  digitalWrite(buzzer,LOW); digitalWrite(ledpin,LOW);digitalWrite(ledpin2,LOW);
  dht.begin(); dht2.begin();
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3D (for the 128x64)
 
  mySoftwareSerial.begin(9600);  
  Serial.println();
  Serial.println(F("DFRobot DFPlayer Mini Demo"));
  Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));
  
  if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with mp3.
    Serial.println(F("Unable to begin:"));
    Serial.println(F("1.Please recheck the connection!"));
    Serial.println(F("2.Please insert the SD card!"));
    while(true);
  }
  Serial.println(F("DFPlayer Mini online."));
  
  myDFPlayer.volume(25);  //Set volume value. From 0 to 30
  //myDFPlayer.play(1);  //Play the first mp3
  StartDHCPNetwork();
  //StartStaticIP();
  /*
   small_stepper.setSpeed(500);
   Steps2Take  =  2048;
   small_stepper.step(Steps2Take);
   */
}
bool checkConnection(){
    if (client.connect(serverIP, serverPort)) {
      return true;
   }else{
      return false;
   }
}
void StartDHCPNetwork() {
  Serial.println("StartDHCPNetwork");
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.clearDisplay();
  display.setCursor(0, 0);
  display.print("Connecting...");
  display.setCursor(0, 12);
  display.print("Trying DHCP");
  display.display();

  // for DHCP connection:
  if (Ethernet.begin(mac) == 0) {
    buzzerbeep(1, 300);
    display.clearDisplay();
    display.setTextSize(1);
    display.setCursor(0, 0);
    display.print("Failed with DHCP");
    display.display();
    delay(2000);
    StartStaticIP();
    // no point in carrying on, so do nothing forevermore:
    /*for (;;)
      ;*/
  }
  else {
    buzzerbeep(2, 100);
    Serial.println("my ip:");
    Serial.println(Ethernet.localIP());
    Serial.print("MAC: ");
    for (byte i = 0; i < 6; ++i) {
      Serial.print(mac[i], HEX);
      if (i < 5) Serial.print(':');
    }
    Serial.println("");
    char macAddr[18];
    sprintf(macAddr, "%2X:%2X:%2X:%2X:%2X:%2X", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);

    display.clearDisplay();
    display.setCursor(0, 0);
    display.print("Connected 1, Mac/ip:");
    display.setCursor(0, 12);
    display.print(macAddr);
    display.setCursor(0, 22);
    display.print(Ethernet.localIP());
    display.display();
    server.begin();
  }
  delay(3000);
}
void StartStaticIP() {
  Serial.println("Trying Static IP");
  display.setTextSize(1);
  display.setCursor(0, 12);
  display.print("Trying Static IP");
  display.display();
  Ethernet.begin(mac, ip);
  // start de Ethernet verbinding en de server:
  server.begin();
  IPAddress ip = Ethernet.localIP();
  String ipAddress;
  ipAddress += ip[0];
  ipAddress += ".";
  ipAddress += ip[1];
  ipAddress += ".";
  ipAddress += ip[2];
  ipAddress += ".";
  ipAddress += ip[3];
  
  Serial.println(ipAddress);
  
  Serial.print("MAC: ");
  for (byte i = 0; i < 6; ++i) {
    Serial.print(mac[i], HEX);
    if (i < 5) Serial.print(':');
  }
  char macAddr[18];
  sprintf(macAddr, "%2X:%2X:%2X:%2X:%2X:%2X", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
  
  display.clearDisplay();
  display.setCursor(0, 0);
  display.print("Connected 2, Mac/ip:");
  display.setCursor(0, 12);
  display.print(macAddr);
  display.setCursor(0, 22);
  display.print(ipAddress);
  display.display();
  delay(3000);
}
void blinkled(int number, int timee) {
  for (int j = 0; j < number; j++) {
    digitalWrite(ledpin, HIGH);
    delay(timee);
    digitalWrite(ledpin, LOW);
    delay(timee);
  }
}
void blinkled2(int number, int timee) {
  for (int j = 0; j < number; j++) {
    digitalWrite(ledpin2, HIGH);
    delay(timee);
    digitalWrite(ledpin2, LOW);
    delay(timee);
  }
}
void buzzerbeep(int number, int timee) {
  for (int j = 0; j < number; j++) {
    digitalWrite(buzzer, HIGH);
    delay(timee);
    digitalWrite(buzzer, LOW);
    delay(timee);
  }
}
void software_reboot()
{
  asm volatile ("  jmp 0");
}
void loop() {
  makedelay=0;
  char keypressed = keypad.getKey();
  if (keypressed != NO_KEY){
      Serial.print("keyp0="); Serial.print(keyp); Serial.println();
      buzzerbeep(1, 100);
      if(keypressed=='0'){
          display.clearDisplay();
          display.setTextSize(1);
          display.setTextColor(WHITE);
          display.setCursor(0,0);
          display.println("Checking connection?");
          display.setCursor(0, 12);
          display.print("Validate with #");
          display.display();
          delay(1200);
      }
      else if(keypressed=='9'){
          display.clearDisplay();
          display.setTextSize(1);
          display.setTextColor(WHITE);
          display.setCursor(0,0);
          display.println("Start a connection?");
          display.setCursor(0, 12);
          display.print("8 for static or Validate with #");
          display.display();
          delay(1200);
      }
      if(keypressed=='#'){
        makedelay=1;
        Serial.print("keyp="); Serial.print(keyp); Serial.println();
        Serial.print("keypressed="); Serial.print(keypressed);Serial.println();
        if(keyp=="0"){
          display.clearDisplay();
          display.setCursor(0, 0);
          display.print("Checking connection");
          display.display();
          if(checkConnection()==true){
            display.clearDisplay();
            display.setCursor(0, 0);
            display.print("Checking connection");
            display.setCursor(0, 12);
            display.print("Connected");
            display.display();
          }else{
            display.clearDisplay();
            display.setCursor(0, 0);
            display.print("Checking connection");
            display.setCursor(0, 12);
            display.print("NOT Connected");
            display.display();
          }
         }
        else if(keyp=="9"){  StartDHCPNetwork();}
        else if(keyp=="98"){  StartStaticIP();}
        else if(keyp=="1") { digitalWrite(in1, !digitalRead(in1));}
        else if(keyp=="2") { digitalWrite(in2, !digitalRead(in2));}
        else if(keyp=="3") { digitalWrite(in3, !digitalRead(in3));}
        else if(keyp=="4") { digitalWrite(in4, !digitalRead(in4));}
        else if(keyp=="7") { digitalWrite(ledpin, !digitalRead(ledpin));}
        else if(keyp=="8") { digitalWrite(ledpin2, !digitalRead(ledpin2));}
        
        keyp="";
        delay(1000);
      }else {
        keyp=keyp+String(keypressed);
        if(keyp=="14"){ 
          display.clearDisplay();
          display.setTextSize(1);
          display.setTextColor(WHITE);
          display.setCursor(0,0);
          display.println("choose a song?");
          display.setCursor(0, 12);
          display.print("1, 2, 3.. * to stop: Validate with #");
          display.display();
          delay(2000);
       }
       else if(keyp=="14*"){
          myDFPlayer.pause();
          display.clearDisplay();
          display.setTextSize(1);
          display.setTextColor(WHITE);
          display.setCursor(0,0);
          display.println("stop music");
          display.display();
          delay(1000);
         }
        else if(keyp=="141"){
          myDFPlayer.pause();
          display.clearDisplay();
          display.setTextSize(1);
          display.setTextColor(WHITE);
          display.setCursor(0,0);
          display.println("playing song 1");
          display.display();
          myDFPlayer.play(1);
          delay(2000);
          }
        else if(keyp=="142"){
          myDFPlayer.pause();
          display.clearDisplay();
          display.setTextSize(1);
          display.setTextColor(WHITE);
          display.setCursor(0,0);
          display.println("playing song 2");
          display.display();
          myDFPlayer.play(2);
          delay(2000);
          }
        else if(keyp=="143"){
          myDFPlayer.pause();
          display.clearDisplay();
          display.setTextSize(1);
          display.setTextColor(WHITE);
          display.setCursor(0,0);
          display.println("playing song 3");
          display.display();
          myDFPlayer.play(3);
          delay(2000);
          }
         else if(keyp=="46"){
            display.clearDisplay();
            display.setTextSize(1);
            display.setTextColor(WHITE);
            display.setCursor(0,0);
            display.println("rebooting...");
            display.display();
            delay(1000);
            software_reboot();
         }
      }
  }
  client = server.available();
  boolean sendserv = true, ringing = false;
  if (client) {
    buzzerbeep(1, 100);
    makedelay=1;
    int pinNumber = 0;
    display.clearDisplay();
    display.setTextSize(1);
    display.setTextColor(WHITE);
    display.setCursor(0,0);
    display.println("web connection");
    display.display();
   // delay(3000);
    
    delay(2000);
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        //Serial.println(c);
        // look for the string "pin=" in the browser/client request
        if (client.find("pin=")) {
          pinNumber = (client.read() - 48);
         
          int secondNumber = (client.read() - 48);
          String pinState;
          if (secondNumber >= 0 && secondNumber <= 9)
          {
            pinNumber *= 10;
            pinNumber += secondNumber;
          }
          display.clearDisplay();
          display.setTextSize(1);
          display.setTextColor(WHITE);
          display.setCursor(0,0);
          display.println("pinNumber");
          display.setCursor(0, 12);
          display.print(pinNumber);
          display.display();
          Serial.println(pinNumber);
          if (pinNumber == 40) { //Serial.println("get now ring");
            pinState = "Sonnerie ON";
            if (dopeez) buzzerbeep(15, 200);
            if (doled) blinkled(20, 200);
            if (doserver) ringing = true;
          }
          if (pinNumber == 20) {
            pinState = "ALERT ON";
            if (dopeez) buzzerbeep(10, 200);
            if (doled) blinkled(10, 200);
            if (doserver) sendserv = true;
          }
          else if (pinNumber == 21) {
            pinState = "Alert OFF";
            if (dopeez) buzzerbeep(2, 100);
            if (doled) blinkled(2, 100);
          }
          else if (pinNumber == 25) {
            doserver = (doserver == true) ? false : true;
            if (doserver) pinState = "Server OFF"; else pinState = "Server ON";
          }
          else if (pinNumber == ledpin) {
            doled = (doled == true) ? false : true;
            if (doled) pinState = "LED OFF"; else pinState = "LED ON";
            blinkled(2, 100);
          }
          else if (pinNumber == ledpin2) {
            doled = (doled == true) ? false : true;
            if (doled) pinState = "LED2 OFF"; else pinState = "LED2 ON";
            blinkled2(2, 100);
          }
          else if (pinNumber == buzzer) {
            dopeez = (dopeez == true) ? false : true;
            if (dopeez) pinState = "Beep OFF"; else pinState = "Beep ON";
            buzzerbeep(2, 100);
          } else if (pinNumber == 77) {
             display.clearDisplay();
             display.setCursor(0,0);
             display.println("Light 1");
             display.setCursor(0, 12);
            if( digitalRead(in1) ){digitalWrite(in1, LOW);pinState = "in1 LOW"; display.print("LOW");}
            else {digitalWrite(in1, HIGH);pinState = "in1 HIGH";display.print("HIGH");}
            display.display();
            buzzerbeep(2, 100);
          }else if (pinNumber == 88) {
            display.clearDisplay();
            display.setCursor(0,0);
            display.println("Light 2");
            display.setCursor(0, 12);
            if( digitalRead(in2) ){digitalWrite(in2, LOW);pinState = "in2 LOW";display.print("LOW");}
            else {digitalWrite(in2, HIGH);pinState = "in2 HIGH";display.print("HIGH");}
            display.display();
            buzzerbeep(2, 100);
          }else if (pinNumber == 66) {
            display.clearDisplay();
            display.setCursor(0,0);
            display.println("Light 3");
            display.setCursor(0, 12);
            if( digitalRead(in3) ){digitalWrite(in3, LOW);pinState = "in3 LOW";display.print("LOW");}
            else {digitalWrite(in3, HIGH);pinState = "in3 HIGH";display.print("HIGH");}
            display.display();
            buzzerbeep(2, 100);
          }else if (pinNumber == 55) {
            display.clearDisplay();
            display.setCursor(0,0);
            display.println("Light 4");
            display.setCursor(0, 12);
            if( digitalRead(in4) ){digitalWrite(in4, LOW);pinState = "in4 LOW";display.print("LOW");}
            else {digitalWrite(in4, HIGH);pinState = "in4 HIGH";display.print("HIGH");}
            display.display();
            buzzerbeep(2, 100);
          }else if (pinNumber == 44) {
            pinState = "44";
            myDFPlayer.pause();
            display.clearDisplay();
            display.setTextSize(1);
            display.setTextColor(WHITE);
            display.setCursor(0,0);
            display.println("stop music");
            display.display();
            delay(1000);
          }else if (pinNumber == 41) {
            pinState = "41";
            myDFPlayer.pause();
            display.clearDisplay();
            display.setTextSize(1);
            display.setTextColor(WHITE);
            display.setCursor(0,0);
            display.println("playing song 1");
            display.display();
            myDFPlayer.play(1);
            delay(2000);
          }else if (pinNumber == 42) {
            pinState = "42";
            myDFPlayer.pause();
            display.clearDisplay();
            display.setTextSize(1);
            display.setTextColor(WHITE);
            display.setCursor(0,0);
            display.println("playing song 2");
            display.display();
            myDFPlayer.play(2);
            delay(2000);
          }else if (pinNumber == 43) {
            pinState = "43";
            myDFPlayer.pause();
            display.clearDisplay();
            display.setTextSize(1);
            display.setTextColor(WHITE);
            display.setCursor(0,0);
            display.println("playing song 3");
            display.display();
            myDFPlayer.play(3);
            delay(2000);
          }else if (pinNumber == 46) {
            pinState = "46";
            display.clearDisplay();
            display.setTextSize(1);
            display.setTextColor(WHITE);
            display.setCursor(0,0);
            display.println("rebooting...");
            display.display();
            delay(1000);
            software_reboot();
          }
          else {
            Serial.print("problem with pinNumber: "); Serial.println(pinNumber);
            /*
              pinState = "Pin ";
              pinState+=pinNumber;
              pinState+=" is ";
              if(digitalRead(pinNumber)) {pinState+="ON";}
              else{pinState+="OFF"; }*/
          }
          //Serial.println(pinNumber);
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: application/json");
          client.println();

          // output the value of each analog input pin as a json-p object
          client.print("GotFromDoor");
          if (pinNumber != 99) {
            Serial.print("pinState: "); Serial.println(pinState);
            client.print("('");
            client.print("" + pinState + "");
            client.println("')");
          } else {
            client.print("('{");
            client.print("\"server"); client.print("\": ");
            if (doserver) client.print("\"Server OFF\""); else client.print("\"Server ON\"");
            client.print(",");
            client.print("\"led"); client.print("\": ");
            if (doled) client.print("\"LED OFF\""); else client.print("\"LED ON\"");
            client.print(",");
            client.print("\"peez"); client.print("\": ");
            if (dopeez) client.print("\"Beep OFF\""); else client.print("\"Beep ON\"");
            client.print(",");
            float h = dht.readHumidity();
            float h2 = dht2.readHumidity();
            // Read temperature as Celsius
            float t = dht.readTemperature();
            float t2 = dht2.readTemperature();
            // Read temperature as Fahrenheit
            //float f = dht.readTemperature(true);
            // Check if any reads failed and exit early (to try again).
            if (isnan(h) || isnan(t)) {
              client.print("\"t"); client.print("\": ");
              client.print("\"1000\"");
              client.print(",");
              client.print("\"t2"); client.print("\": ");
              client.print("\"1000\"");
              client.print(",");
              client.print("\"h"); client.print("\": ");
              client.print("\"1000\"");
              client.print(",");
              client.print("\"h2"); client.print("\": ");
              client.print("\"1000\"");
            } else {
              client.print("\"t"); client.print("\": ");
              client.print("\""); client.print(t); client.print("\"");
              client.print(",");
              client.print("\"t2"); client.print("\": ");
              client.print("\""); client.print(t2); client.print("\"");
              client.print(",");
              client.print("\"h"); client.print("\": ");
              client.print("\""); client.print(h); client.print("\"");
              client.print(",");
              client.print("\"h2"); client.print("\": ");
              client.print("\""); client.print(h2); client.print("\"");
            }
            client.print(",");
            client.print("\"in1"); client.print("\": "); client.print("\"");
            if( digitalRead(in1) ) client.print( "1" );
            else client.print( "0" );
            client.print("\"");
            client.print(",");
            client.print("\"in2"); client.print("\": "); client.print("\"");
            if( digitalRead(in2) ) client.print( "1" );
            else client.print( "0" );
            client.print("\"");
            
            client.println("}')");
          }
          //Serial.print(pinNumber);
          /*client.print("('{");
            for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
            client.print("\"A");
            client.print(analogChannel);
            client.print("\": ");
            client.print(analogRead(analogChannel));
            if (analogChannel != 5) {
              client.print(",");
            }
            }
            client.println("}')");
          */
          break;
        }
      }
    }
    if (ringing) {
      client.stop(); client = server.available();
      if (client.connect(serverIP, serverPort)) {
        //Serial.println("->rin Connected");Serial.print("->pin=");Serial.println(pinNumber);
        // Make a HTTP request:
        client.print( "GET /arduino/door/index.php?");
        client.print("secret=");
        client.print( "354198jhg54" );
        client.print("&");
        client.print("t=");
        client.print(millis());
        client.print("&");
        client.print("gate=");
        client.print( "2" );
        client.println( " HTTP/1.1");
        client.print( "Host: " );
        client.println(serverIP);
        client.println( "Connection: close" );
        client.println();
        client.println();
      }
      else {
        //Serial.println("--> connection failed/n");
      }
    }
    else if (sendserv && (pinNumber == 40 || pinNumber == 20 || pinNumber == 21)) {
      client.stop(); client = server.available();
      if (client.connect(serverIP, serverPort)) {
        //Serial.println("->sendserv Connected");Serial.print("->pin=");Serial.println(pinNumber);
        // Make a HTTP request:
        client.print( "GET /arduino/door/index.php?");
        client.print("secret=");
        client.print( "354198jhg54" );
        client.print("&");
        client.print("gate=");
        client.print( "1" );
        client.println( " HTTP/1.1");
        client.print( "Host: " );
        client.println(serverIP);
        client.println( "Connection: close" );
        client.println();
        client.println();
        delay(500);
      }
      else {
        //Serial.println("--> connection failed/n");
      }
    }
    // give the web browser time to receive the data
    delay(1);
    client.stop();
    //Serial.println("client disonnected");
  }
 

  display.clearDisplay();   // Clear the buffer.
  
  float h = dht.readHumidity();
  float t = dht.readTemperature();
   float h2 = dht2.readHumidity();
  float t2 = dht2.readTemperature();
  float f = dht.readTemperature(true);
  float f2 = dht2.readTemperature(true);
  
  if (isnan(h) || isnan(t) || isnan(f)) { // Check if any reads failed and exit early (to try again).
    Serial.println("Failed to read from DHT1 sensor!");
    display.clearDisplay();
    display.setTextSize(1);
    display.setTextColor(WHITE);
    display.setCursor(0,0);
    display.println("Failed to read from DHT1 sensor");
    display.display();
    return;
  }else if (isnan(h2) || isnan(t2) || isnan(f2)) { // Check if any reads failed and exit early (to try again).
    Serial.println("Failed to read from DHT2 sensor!");
    display.clearDisplay();
    display.setTextSize(1);
    display.setTextColor(WHITE);
    display.setCursor(0,0);
    display.println("Failed to read from DHT2 sensor");
    display.display();
    return;
  }
  else if(makedelay==0){
    display.setTextSize(1);
    display.setTextColor(WHITE);
    display.setCursor(0,0);
    display.println("Temp1=");
    display.setCursor(40,0);
    display.println((int)t);
  
    display.setCursor(70,0);
    display.println("Hum1=");
    display.setCursor(105,0);
    display.println((int)h);
  
    display.setCursor(0,12);
    display.println("Temp2=");
    display.setCursor(40,12);
    display.println((int)t2);
  
    display.setCursor(70,12);
    display.println("Hum2=");
    display.setCursor(105,12);
    display.println((int)h2);
    
    display.display();
    display.clearDisplay();
  }
  delay(1);
}

Tags

HC-SR04 sensor   Arduino Mega   Oled Screen   rain detector   Carbon CO detector   sound detector  
(0)
FREE
Developer Information
Submitted by ISN Services
83 rue nationale, Tavaux,