<em id="ri2my"></em>
  • <em id="ri2my"></em>
    <em id="ri2my"><label id="ri2my"><nav id="ri2my"></nav></label></em>
  • <em id="ri2my"><label id="ri2my"></label></em>
    <div id="ri2my"></div>
    1. <em id="ri2my"><label id="ri2my"></label></em>
    2. <em id="ri2my"><ol id="ri2my"></ol></em>
      <em id="ri2my"></em>

      1. 溫濕度監測

        溫濕度監測的詳細介紹

        創作者: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(); 

        }


        <em id="ri2my"></em>
      2. <em id="ri2my"></em>
        <em id="ri2my"><label id="ri2my"><nav id="ri2my"></nav></label></em>
      3. <em id="ri2my"><label id="ri2my"></label></em>
        <div id="ri2my"></div>
        1. <em id="ri2my"><label id="ri2my"></label></em>
        2. <em id="ri2my"><ol id="ri2my"></ol></em>
          <em id="ri2my"></em>

          1. 免费高清视频