用esp8266+DHT11實現小愛同學查看家中溫溼度

接着上一次做的小愛同學脫離局域網控制三路開關,我還找到另外一個好玩的項目,,接下來我講解一下項目過程

用到的東西和上一次差不多,有esp8266nodemcu、點燈科技app、Arduino IDE,但是還需加上一個DHT11模塊

如果是直接看到這篇文章的小夥伴,如果沒有配置好Arduino IDE,建議去看一下博主這個專欄的上一個文章,裏面有詳細介紹使用Arduino IDE開發esp8266所需要的設置

還有我們需要在Arduino IDE裏添加DHT11的庫文件,在文章裏提供下載鏈接

下載以後找到自己軟件的安裝目錄,找到libraries文件夾,解壓放入
在這裏插入圖片描述

那麼現在我們直接來上代碼:

#define BLINKER_WIFI
#define BLINKER_MIOT_SENSOR   //小愛同學定義爲傳感器設備
 
#include <Blinker.h>
#include <DHT.h>
 
char auth[] = "點燈app獲取的設備密鑰";
char ssid[] = "WiFi名稱";
char pswd[] = "WiFi密碼";
 
BlinkerNumber HUMI("humi");    //定義溼度數據鍵名
BlinkerNumber TEMP("temp");    //定義溫度數據鍵名
  
#define DHTPIN 5      //定義DHT11模塊連接管腳io5
 
#define DHTTYPE DHT11   // 使用DHT 11溫度溼度模塊 
//#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)
 
DHT dht(DHTPIN, DHTTYPE);    //定義dht
 
float humi_read = 0, temp_read = 0;
 
void heartbeat()
{
    HUMI.print(humi_read);        //給blinkerapp回傳溼度數據
    TEMP.print(temp_read);        //給blinkerapp回傳溫度數據
}

void miotQuery(int32_t queryCode)      //小愛同學語音命令反饋
{
    BLINKER_LOG("MIOT Query codes: ", queryCode);

            int humi_read_int=humi_read;     //去掉溼度浮點
            BlinkerMIOT.humi(humi_read_int);     //小愛接收溼度
            BlinkerMIOT.temp(temp_read);      //小愛接收溫度
            BlinkerMIOT.print();

}


void setup()
{
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);
    BLINKER_DEBUG.debugAll();
 
    Blinker.begin(auth, ssid, pswd);   
    Blinker.attachHeartbeat(heartbeat);
    dht.begin();
    BlinkerMIOT.attachQuery(miotQuery);
}
 
void loop()
{
    Blinker.run();
 
    float h = dht.readHumidity();
    float t = dht.readTemperature();
 
    if (isnan(h) || isnan(t))
    {
        BLINKER_LOG("Failed to read from DHT sensor!");
    }
    else
    {
        BLINKER_LOG("Humidity: ", h, " %");
        BLINKER_LOG("Temperature: ", t, " *C");
        humi_read = h;
        temp_read = t;
    }

 
    Blinker.delay(2000);
}

在代碼的註釋內容下我們可以很容易的找到用esp8266接收數據的引腳是哪一個

但是在這裏指的是GPIO5,並不是我們esp8266d nodemcu的D5
在這裏插入圖片描述這裏我爲大家提供了編號裝換圖,與是得知,我設置的gpio5是我們開發板上的D1

OK,我們開始


1、打開Arduino IDE寫入代碼,編譯上傳,燒錄程序:

2、硬件連接:

我們的DHT11模塊有三個引腳:VCC、GND以及DATA

DATA就是我們的數據傳輸引腳,接在我們程序設置好的GPIO5,也就是esp8266 nodemcu的D1引腳上
VCC接esp8266 nodemcu 3V供電端口即可
GND接esp8266 nodemcu G接地端口即可

3、重啓開發板,我們可以看到點燈app上設備在線,我們還可以設置點燈app內的組件設置,在點燈app內查看溫度溼度:

我們可以這樣添加組件


例如我們的溼度數據,數據鍵名爲代碼前定義的humi,顯示文本爲溼度,單位爲%,最大值爲100

我已經設置好了,大家可以看到效果

4、最後我們使用小愛同學控制,在米家中綁定點燈平臺,在小愛訓練中添加訓練即可,具體訓練過程可以看看我的小愛脫離局域網控制小燈

好啦,感興趣的可以去試一試,成本很低,收穫很大。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章