<noscript id="mmkmi"><source id="mmkmi"></source></noscript>
  • <noscript id="mmkmi"><kbd id="mmkmi"></kbd></noscript>
  • <table id="mmkmi"><source id="mmkmi"></source></table>
  • 溫濕度監測

    溫濕度監測的詳細介紹

    創作者:Tracis | 更新日期:2016-07-20 | 在線時長:4時
    實時監測溫濕度

    功能介紹

    實時監測溫濕度

    硬件組成

    arduino r3 + ESP8266-01 + DHT11 


    代碼說明

    鏈接:http://pan.baidu.com/s/1o8zresE 密碼:494i

    //需導入DHTstable庫和aJson庫

    #include <aJSON.h>

    #include <dht.h>

    dht DHT;

    #define DHT11_PIN 5 //定義DHT11的數據接入引腳

    String DEVICEID="xxxx"; // 你的設備ID=======

    String APIKEY="xxxxx"; // 設備密碼==

    String INPUTID1="zzzzz";

    String INPUTID2="zzzzz";//接口ID==============

    //=======================================

    unsigned long lastCheckInTime = 0; //記錄上次報到時間

    unsigned long lastUpdateTime = 0;//記錄上次上傳數據時間

    const unsigned long postingInterval = 40000; // 每隔40秒向服務器報到一次


    String inputString = "";//串口讀取到的內容

    boolean stringComplete = false;//串口是否讀取完畢

    boolean CONNECT = true; //連接狀態

    boolean isCheckIn = false; //是否已經登錄服務器

    char* parseJson(char *jsonString);//定義aJson字符串

    void setup() {

      Serial.begin(115200);

      delay(10000);


      //Serial.println("Type,\tstatus,\tTemperature (C)");  

    }

    void loop() {

      if(millis() - lastCheckInTime > postingInterval || lastCheckInTime==0) {

        checkIn();

      }

      // READ DATA

      int chk = DHT.read11(DHT11_PIN);

      if(chk==DHTLIB_OK){

       double data1=DHT.temperature;//溫度

       double data2=DHT.humidity;//濕度

       update1(DEVICEID, INPUTID1,data1);

       delay(4000);

       //update2(DEVICEID,INPUTID1,data1, INPUTID2,data2);

       //delay(4000);

       update1(DEVICEID, INPUTID2,data2);

        delay(4000);

      }

      serialEvent();

        if (stringComplete) {

          inputString.trim();

          //Serial.println(inputString);

          if(inputString=="CLOSED"){

            Serial.println("connect closed!");

            CONNECT=false;   

            isCheckIn=false;     

          }else{

            int len = inputString.length()+1;    

            if(inputString.startsWith("{") && inputString.endsWith("}")){

              char jsonString[len];

              inputString.toCharArray(jsonString,len);

              aJsonObject *msg = aJson.parse(jsonString);

              processMessage(msg);//處理接收到的Json數據

              aJson.deleteItem(msg);          

            }

          }      

          inputString = "";

          stringComplete = false;

      }

    }

    void checkIn() {

      if (!CONNECT) {

        Serial.print("+++");

        delay(500);  

        Serial.print("\r\n"); 

        delay(1000);

        Serial.print("AT+RST\r\n"); 

        delay(6000);

        CONNECT=true;

        lastCheckInTime==0;

      }

      else{

        Serial.print("{\"M\":\"checkin\",\"ID\":\"");

        Serial.print(DEVICEID);

        Serial.print("\",\"K\":\"");

        Serial.print(APIKEY);

        Serial.print("\"}\r\n");

        lastCheckInTime = millis();

      }

    }

    void processMessage(aJsonObject *msg){

      aJsonObject* method = aJson.getObjectItem(msg, "M");

      aJsonObject* content = aJson.getObjectItem(msg, "C");     

      aJsonObject* client_id = aJson.getObjectItem(msg, "ID");  

      //char* st = aJson.print(msg);

      if (!method) {

        return;

      }

        //Serial.println(st); 

        //free(st);

        String M=method->valuestring;

        if(M=="checkinok"){

          isCheckIn = true;

        }

    }

    void update1(String did, String inputid, float value){

      Serial.print("{\"M\":\"update\",\"ID\":\"");

      Serial.print(did);

      Serial.print("\",\"V\":{\"");

      Serial.print(inputid);

      Serial.print("\":\"");

      Serial.print(value);

      Serial.println("\"}}");

      lastCheckInTime = millis();

      lastUpdateTime= millis(); 

    }

    void serialEvent() {

      while (Serial.available()) {

        char inChar = (char)Serial.read();

        inputString += inChar;

        if (inChar == '\n') {

          stringComplete = true;

        }

      }

    }

    //同時上傳兩個接口數據調用此函數

    void update2(String did, String inputid1, float value1, String inputid2, float value2){

      Serial.print("{\"M\":\"update\",\"ID\":\"");

      Serial.print(did);

      Serial.print("\",\"V\":{\"");

      Serial.print(inputid1);

      Serial.print("\":\"");

      Serial.print(value1);

      Serial.print("\",\"");

      Serial.print(inputid2);

      Serial.print("\":\"");

      Serial.print(value2);

      Serial.println("\"}}");

      lastCheckInTime = millis();

      lastUpdateTime= millis(); 

    }


    <noscript id="mmkmi"><source id="mmkmi"></source></noscript>
  • <noscript id="mmkmi"><kbd id="mmkmi"></kbd></noscript>
  • <table id="mmkmi"><source id="mmkmi"></source></table>
  • 三上悠亚在线观看