国内综合精彩aⅤ无码不卡_日本少妇做爰全过程_欧美性爱在线播放免费_午夜?V日韩一区二区_免费a级毛片无码免费播放_成在人线av无码喷水_亚洲精品网站色视频_国产婷婷精品成人_老师撩起裙子让我桶的视频_秋霞影院国产

【smartconfig】直接用ESP8266上傳溫濕度給貝殼服務(wù)器(不需要arduino)

作者:chenyuechi | 更新時(shí)間:2016-05-07 | 瀏覽量:6100

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

前提是大家會(huì)用arduino IDE給8266燒寫(xiě)程序

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

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;//校對(duì)碼
int j;
unsigned int loopCnt;
int chr[40] = {0};//創(chuàng)建數(shù)字?jǐn)?shù)組,用來(lái)存放40個(gè)bit
unsigned long time1;
const char *ssid     = "******";//這里是我的wifi,你使用時(shí)修改為你要連接的wifi ssid
const char *password = "********";//你要連接的wifi密碼
const char *host = "121.42.180.30";//貝殼物聯(lián)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");//登陸設(shè)備,修改成自己的ID和KEY
  delay(100);
}
void loop()
{
  bgn:
  delay(2000);
//設(shè)置2號(hào)接口模式為:輸出
//輸出低電平20ms(>18ms)
//輸出高電平40μs
  pinMode(pin,OUTPUT);
  digitalWrite(pin,LOW);
  delay(20);
  digitalWrite(pin,HIGH);
  delayMicroseconds(40);
  digitalWrite(pin,LOW);
//設(shè)置2號(hào)接口模式:輸入
  pinMode(pin,INPUT);
  //高電平響應(yīng)信號(hào)
  loopCnt=10000;
  while(digitalRead(pin) != HIGH)
  {
    if(loopCnt-- == 0)
    {
//如果長(zhǎng)時(shí)間不返回高電平,輸出個(gè)提示,重頭開(kāi)始。
      Serial.println("HIGH");
      goto bgn;
    }
  }
  //低電平響應(yīng)信號(hào)
  loopCnt=30000;
  while(digitalRead(pin) != LOW)
  {
    if(loopCnt-- == 0)
    {
//如果長(zhǎng)時(shí)間不返回低電平,輸出個(gè)提示,重頭開(kāi)始。
      Serial.println("LOW");
      goto bgn;
    }
  }
//開(kāi)始讀取bit1-40的數(shù)值  
    for(int i=0;i<40;i++)
  {
    while(digitalRead(pin) == LOW)
    {}
//當(dāng)出現(xiàn)高電平時(shí),記下時(shí)間“time”
    time1 = micros();
    while(digitalRead(pin) == HIGH)
    {}
//當(dāng)出現(xiàn)低電平,記下時(shí)間,再減去剛才儲(chǔ)存的time
//得出的值若大于50μs,則為‘1’,否則為‘0’
//并儲(chǔ)存到數(shù)組里去
    if (micros() - time1  >50)
    {
      chr[i]=1;
    }else{
      chr[i]=0;
    }
  }
   
//濕度,8位的bit,轉(zhuǎn)換為數(shù)值
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,轉(zhuǎn)換為數(shù)值
temp=chr[16]*128+chr[17]*64+chr[18]*32+chr[19]*16+chr[20]*8+chr[21]*4+chr[22]*2+chr[23];
  //校對(duì)碼,8位的bit,轉(zhuǎn)換為數(shù)值
//tol=chr[32]*128+chr[33]*64+chr[34]*32+chr[35]*16+chr[36]*8+chr[37]*4+chr[38]*2+chr[39];
//輸出:溫度、濕度、校對(duì)碼
  Serial.print("temp:");
  Serial.println(temp);
 
  String str1="{\"M\":\"update\",\"ID\":\"**\",\"V\":{\"**\":\"";//修改成你自己的ID和數(shù)據(jù)接口ID1存溫度
  str1+=temp;
  str1+="\",\"**\":\"";//修改成你自己的數(shù)據(jù)接口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



評(píng)論:共16條

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