<noscript id="mmkmi"><source id="mmkmi"></source></noscript>
  • <noscript id="mmkmi"><kbd id="mmkmi"></kbd></noscript>
  • <table id="mmkmi"><source id="mmkmi"></source></table>
  • 【smartconfig】直接用ESP8266上傳溫濕度給貝殼服務器(不需要arduino)

    作者:chenyuechi | 更新時間:2016-05-07 | 瀏覽量:4978

    本設備是不需要arduino等其他MCU,直接一個ESP8266就可以上傳溫濕度,使用的溫濕度模塊是DHT11

    前提是大家會用arduino IDE給8266燒寫程序

    不會的話,可以先看一下下面兩篇帖子:

    http://www.arduino.cn/thread-17895-1-1.html

    http://www.arduino.cn/forum.php?mod=viewthread&tid=17896&page=1&extra=#pid148026

    #include <ESP8266WiFi.h>
    WiFiClient client;
    int temp;//溫度
    int humi;//濕度
    int tol;//校對碼
    int j;
    unsigned int loopCnt;
    int chr[40] = {0};//創建數字數組,用來存放40個bit
    unsigned long time1;
    const char *ssid     = "******";//這里是我的wifi,你使用時修改為你要連接的wifi ssid
    const char *password = "********";//你要連接的wifi密碼
    const char *host = "121.42.180.30";//貝殼物聯IP
    const int httpPort =8181;
    
    #define pin 2//將dht11的data口接在8266的GPIO2上
    //char *ssid="";
    //char *password="";
    /*void smartConfig()
    {
      WiFi.mode(WIFI_STA);
      Serial.println("\r\nWait for Smartconfig");
      WiFi.beginSmartConfig();
      while (1)
      {
        Serial.print(".");
        //digitalWrite(relay1, 0);
        //delay(500);
        //digitalWrite(relay1, 1);
        //delay(500);
        if (WiFi.smartConfigDone())
        {
          Serial.println("SmartConfig Success");
          Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());
          Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());
          strcpy(ssid, WiFi.SSID().c_str());
          strcpy(password, WiFi.psk().c_str());
          break;
        }
      }
    }*/  
    void setup()
    {
      Serial.begin(115200);
      delay(10);
      //pinMode(relay1,INPUT);
      // We start by connecting to a WiFi network
       
      Serial.println();
      Serial.println();
      Serial.print("Connecting to ");
      //Serial.println(ssid);
      
      WiFi.begin(ssid, password);
      
      while (WiFi.status() != WL_CONNECTED) {
        delay(500);
         //smartConfig();
        Serial.print(".");
      }
    
      Serial.println("");
      Serial.println("WiFi connected");  
      Serial.println("IP address: ");
      Serial.println(WiFi.localIP());
      
      while (!client.connect(host, httpPort)) {
        Serial.println("connection failed");
        //return;
        delay(1000);
      }
      Serial.print("connecting to ");
      Serial.println(host);
      client.write("{\"M\":\"checkin\",\"ID\":\"**\",\"K\":\"******\"}\r\n");//登陸設備,修改成自己的ID和KEY
      delay(100);
    }
    void loop()
    {
      bgn:
      delay(2000);
    //設置2號接口模式為:輸出
    //輸出低電平20ms(>18ms)
    //輸出高電平40μs
      pinMode(pin,OUTPUT);
      digitalWrite(pin,LOW);
      delay(20);
      digitalWrite(pin,HIGH);
      delayMicroseconds(40);
      digitalWrite(pin,LOW);
    //設置2號接口模式:輸入
      pinMode(pin,INPUT);
      //高電平響應信號
      loopCnt=10000;
      while(digitalRead(pin) != HIGH)
      {
        if(loopCnt-- == 0)
        {
    //如果長時間不返回高電平,輸出個提示,重頭開始。
          Serial.println("HIGH");
          goto bgn;
        }
      }
      //低電平響應信號
      loopCnt=30000;
      while(digitalRead(pin) != LOW)
      {
        if(loopCnt-- == 0)
        {
    //如果長時間不返回低電平,輸出個提示,重頭開始。
          Serial.println("LOW");
          goto bgn;
        }
      }
    //開始讀取bit1-40的數值  
        for(int i=0;i<40;i++)
      {
        while(digitalRead(pin) == LOW)
        {}
    //當出現高電平時,記下時間“time”
        time1 = micros();
        while(digitalRead(pin) == HIGH)
        {}
    //當出現低電平,記下時間,再減去剛才儲存的time
    //得出的值若大于50μs,則為‘1’,否則為‘0’
    //并儲存到數組里去
        if (micros() - time1  >50)
        {
          chr[i]=1;
        }else{
          chr[i]=0;
        }
      }
       
    //濕度,8位的bit,轉換為數值
    humi=chr[0]*128+chr[1]*64+chr[2]*32+chr[3]*16+chr[4]*8+chr[5]*4+chr[6]*2+chr[7];
       
    //溫度,8位的bit,轉換為數值
    temp=chr[16]*128+chr[17]*64+chr[18]*32+chr[19]*16+chr[20]*8+chr[21]*4+chr[22]*2+chr[23];
      //校對碼,8位的bit,轉換為數值
    //tol=chr[32]*128+chr[33]*64+chr[34]*32+chr[35]*16+chr[36]*8+chr[37]*4+chr[38]*2+chr[39];
    //輸出:溫度、濕度、校對碼
      Serial.print("temp:");
      Serial.println(temp);
     
      String str1="{\"M\":\"update\",\"ID\":\"**\",\"V\":{\"**\":\"";//修改成你自己的ID和數據接口ID1存溫度
      str1+=temp;
      str1+="\",\"**\":\"";//修改成你自己的數據接口ID2存濕度
      str1+=humi;
      str1+="\"}}\n";
     
     client.print(str1);
       Serial.print(str1);
      Serial.print("humi:");
      Serial.println(humi);
      
    
    while(client.available()){
        String line = client.readStringUntil('\r');
         Serial.print(line);}
    delay(3000);
    }

    廣播軟件.zip



    評論:共16條

    貝殼物聯 評論于:2016-04-15 19:21:31
    不錯,學習了。。。
    ridxqqqq 評論于:2016-04-18 09:59:28
    濕度這塊我不太懂 用用DHT22通用嗎
    chenyuechi 回復于:2016-04-20 12:05:14
    回復 @ridxqqqq:好像是通用,我也沒試過
    simonc 評論于:2016-04-28 20:45:05
    為什么我連上路由后把3處的id和key都加上去了,但是網絡沒有任何顯示。還有下面那個廣播軟件怎么用的,連上同一個路由?
    chenyuechi 回復于:2016-05-04 13:46:20
    回復 @simonc:手機要連在通過一個路由
    simonc 回復于:2016-05-06 20:44:32
    回復 @chenyuechi:嗯,我根據你的代碼加了一個火焰傳感器,但是不能連上wifi了,怎么解決
    simonc 回復于:2016-05-06 23:16:37
    回復 @chenyuechi:不會返回update等個人信息
    chenyuechi 回復于:2016-05-07 21:18:24
    回復 @simonc:我改了一下代碼,看好多人都不用,不用廣播軟件了,直接上程序里設置wifi的賬號密碼
    木子李 評論于:2016-05-25 12:44:30
    成功了!太厲害了,我之前的接口一直弄不對,用這個就成功了
    client.print(str1);這個是上傳數據嗎?
    chenyuechi 回復于:2016-05-25 17:34:33
    回復 @木子李:繼續加油!
    我 姓林 回復于:2017-05-31 16:01:49
    回復 @chenyuechi:如果用uno板的話,dht11的data線接uno的D4,那直接把程序的PIN2改成PIN4就可以了嗎?還要改別的嗎?感覺跟UNO差不多,就是接線不一樣
    qqrr111 評論于:2017-01-05 22:04:29
    const char *host = "121.42.180.30";//貝殼物聯IP,這個不好使,改成“www.eqytg.org”,可以用了!!!
    評論于:2017-05-14 10:30:09
    為什么在loop()函數里,接口2(GPIO2)設置為輸出模式后又設置為輸入模式呢?
    HENRY223 評論于:2018-07-10 11:08:44
    連接上過后還沒到一天就斷線了,不知道斷線后怎么自動上線,這是什么原因呢?謝謝解答@chenyuechi
    deng 評論于:2020-06-01 14:16:32
    我程序下載進去,串口一直顯示low誒
    deng 評論于:2020-06-01 14:18:21
    請問,貝殼物聯平臺里的接口選擇是模擬量還是數字量?
    返回頂部
    <noscript id="mmkmi"><source id="mmkmi"></source></noscript>
  • <noscript id="mmkmi"><kbd id="mmkmi"></kbd></noscript>
  • <table id="mmkmi"><source id="mmkmi"></source></table>
  • 三上悠亚在线观看