<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. arduino上傳完程序后不在線怎么解決??串口有數據流

        作者:奮斗し | 更新時間:2019-04-20 | 瀏覽量:1573

        #include <aJSON.h>
        #include <SPI.h>
        #include <Wire.h>
        #include <dht11.h>

        //=============  此處必須修改============
        String DEVICEID = "10509"; // 你的設備編號   ==
        String  APIKEY = "1adb68719"; // 設備密碼==
        //String INPUTID1 = "9398"; //接口ID==============
        String INPUTID2 = "9398"; //接口ID==============
        String INPUTID3 = "9399"; //接口ID==============
        //String INPUTID4 = "1590"; //接口ID==============
        //=======================================
        unsigned long lastCheckInTime = 0; //記錄上次報到時間
        unsigned long lastUpdateTime = 0;//記錄上次上傳數據時間
        const unsigned long postingInterval = 40000; // 每隔40秒向服務器報到一次
        const unsigned long updateInterval = 10000; // 數據上傳間隔時間10秒
        String inputString = "";//串口讀取到的內容
        boolean stringComplete = false;//串口是否讀取完畢
        boolean CONNECT = true; //連接狀態
        boolean isCheckIn = false; //是否已經登錄服務器
        char* parseJson(char *jsonString);//定義aJson字符串
        ///****************************************************
        dht11 DHT11;
        #define DHT11PIN 2
        /////////////PM2.5
        int measurePin = 1; //Connect dust sensor to Arduino A1 pin
        int ledPower = 3; //Connect 3 led driver pins of dust sensor to Arduino D3
        float voMeasured = 0;
        float calcVoltage = 0;
        float dustDensity = 0;
        int samplingTime = 280;
        int deltaTime = 40;
        int sleepTime = 9680;
        ///////////////////PM2.5
        /////******************************************************
        int val;//MQ_2
        float valTemperature;//定義變量
        float valHumidity;//定義變量
        void update1(String did, String inputid, float value);
        void setup() {
          Serial.begin(115200);//ESP 8266 工作波特率
          Wire.begin();
          int chk = DHT11.read(DHT11PIN);
          pinMode(ledPower, OUTPUT);
          delay(5000);
        }
        void loop() {
          if (millis() - lastCheckInTime > postingInterval || lastCheckInTime == 0) {
            checkIn();
          }
          val = analogRead(0);
          valTemperature = (float)DHT11.temperature;
          valHumidity = (float)DHT11.humidity;
          digitalWrite(ledPower, LOW);
          delayMicroseconds(samplingTime);
          voMeasured = analogRead(measurePin); // read the dust value
          delayMicroseconds(deltaTime);
          digitalWrite(ledPower, HIGH); // turn the LED off
          delayMicroseconds(sleepTime);

          calcVoltage = voMeasured * (5.0 / 1024.0);

          dustDensity = 0.17 * calcVoltage - 0.1;
          if ((millis() - lastUpdateTime >= updateInterval) && isCheckIn)
          {
            //update1(DEVICEID, INPUTID1, val); //MQ_2
            update1(DEVICEID, INPUTID2, valTemperature);
            update1(DEVICEID, INPUTID3, valHumidity);
           // update1(DEVICEID, INPUTID4, dustDensity);
            ///************************
          }
          serialEvent();
          if (stringComplete) {
            inputString.trim();
            //Serial.println(inputString);
            if (inputString == "CLOSED") {
              Serial.println("connect closed!");
              CONNECT = 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);
                aJson.deleteItem(msg);
              }
            }
            // clear the string:
            inputString = "";
            stringComplete = false;
          }
        }
        void checkIn() {//定時簽到,防止離線
          if (!CONNECT) {
            isCheckIn = false;
            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();
            isCheckIn = true;
          }
        }
        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;
          String C = content->valuestring;
          String F_C_ID = client_id->valuestring;
          if (M == "say") {
            if (C == "play") {
              // digitalWrite(LED, HIGH);
              sayToClient(F_C_ID, "LED on!");
            }
            if (C == "stop") {
              //  digitalWrite(LED, LOW);
              sayToClient(F_C_ID, "LED off!");
            }
            if (C == "wendu") {
              sayToClient(F_C_ID, String(valTemperature));
            }
            if (C == "shidu") {
              sayToClient(F_C_ID, String(valHumidity));
            }
            if (C == "mq2") {
              sayToClient(F_C_ID, String(val));
            }
            if (C == "pm") {
              sayToClient(F_C_ID, String(dustDensity));
            }
          }
        }
        void sayToClient(String client_id, String content) { //命令回復
          Serial.print("{\"M\":\"say\",\"ID\":\"");
          Serial.print(client_id);
          Serial.print("\",\"C\":\"");
          Serial.print(content);
          Serial.print("\"}\r\n");
          lastCheckInTime = millis();
        }
        void serialEvent() {
          while (Serial.available()) {
            char inChar = (char)Serial.read();
            inputString += inChar;
            if (inChar == '\n') {
              stringComplete = true;
            }
          }
        }
        //上報數據  拼接json
        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 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();
        }


        評論:共6條

        799243768 評論于:2019-04-20 15:47:14
        硬件連接圖是怎么樣的
        奮斗し 回復于:2019-04-21 01:33:51
        回復 @799243768:就是0.1Wi-Fi 2dht11用的uno板,其他沒接
        799243768 回復于:2019-04-21 13:08:17
        回復 @奮斗し:WiFi模塊有配置好連上路由器并設置為cilent嗎
        奮斗し 評論于:2019-04-21 21:07:53
        我發現每次重連必須設置一遍透傳
        alilong1200 評論于:2019-04-24 17:47:40
        能加下您的QQ嗎,我目前也做這個,不過用的esp8266
        奮斗し 評論于:2019-04-24 23:59:27
        用這個代碼就好了
        返回頂部

        <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. 免费高清视频