0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用DHT11和ESP8266將傳感器數(shù)據(jù)發(fā)送到Firebase數(shù)據(jù)庫(kù)

科技觀察員 ? 來(lái)源:circuitdigest ? 作者:Abhimanyu Pandit ? 2022-09-20 15:53 ? 次閱讀

微控制器的內(nèi)部存儲(chǔ)器很小,不足以長(zhǎng)時(shí)間保存傳感器生成的數(shù)據(jù),要么您必須使用一些外部存儲(chǔ)設(shè)備,要么可以使用互聯(lián)網(wǎng)將數(shù)據(jù)保存在某些云上。此外,當(dāng)傳感器部署在人無(wú)法到達(dá)或難以頻繁訪問(wèn)的極端條件站點(diǎn)時(shí),有時(shí)會(huì)變得難以管理。為了糾正這類問(wèn)題,我們總是研究我們希望從任何地方實(shí)時(shí)監(jiān)控傳感器數(shù)據(jù)的方式,而無(wú)需任何物理存在。

實(shí)時(shí)數(shù)據(jù)庫(kù)可以用在這種情況下,我們只需要連接一些可以連接到互聯(lián)網(wǎng)并能夠與云服務(wù)器交換數(shù)據(jù)的控制器。服務(wù)器數(shù)據(jù)可用于監(jiān)控實(shí)時(shí)系統(tǒng)行為、數(shù)據(jù)庫(kù)分析、統(tǒng)計(jì)分析和處理以及未來(lái)用例的解釋。有許多物聯(lián)網(wǎng)硬件平臺(tái)和云平臺(tái)可用于實(shí)現(xiàn)此目的。

我們將使用溫度和濕度傳感器 DHT11和NodeMCU ESP8266 模塊在 Google 的 Firebase 數(shù)據(jù)庫(kù)服務(wù)器上實(shí)時(shí)記錄溫度和濕度。

我們將項(xiàng)目分為兩個(gè)部分。首先,我們將從組裝硬件組件并將固件上傳到其中開(kāi)始。其次,我們將使用 Firebase 與 NodeMCU 進(jìn)行設(shè)置以交換實(shí)時(shí)數(shù)據(jù)。如果您是 ESP8266 或 Firebase 的新手,請(qǐng)按照我們之前使用 Firebase 控制 LED教程進(jìn)行操作。

所需組件

NodeMCU ESP8266 模塊

DHT11溫濕度傳感器

電路原理

pYYBAGMpcH-AdsfSAACAcFQv4L4617.png

DHT11溫濕度傳感器

DHT11 模塊具有帶校準(zhǔn)數(shù)字信號(hào)輸出的濕度和溫度復(fù)合體,這意味著 DHT11 傳感器模塊是用于感測(cè)濕度和溫度的組合模塊,可提供校準(zhǔn)的數(shù)字輸出信號(hào)。DHT11 為我們提供了非常精確的濕度和溫度值,并確保了高可靠性和長(zhǎng)期穩(wěn)定性。該傳感器具有電阻型濕度測(cè)量元件和 NTC 型溫度測(cè)量元件,內(nèi)置 8 位微控制器,具有快速響應(yīng)和成本效益,采用 4 針單排封裝。

poYBAGMpcICANctRAAMINK7ELUY803.png

我們之前使用ESP12E 更新網(wǎng)絡(luò)服務(wù)器上的 DHT11 讀數(shù),除此之外,您可以檢查所有基于 DHT11 的項(xiàng)目,我們使用 DHT11 與許多其他微控制器(如 Arduino、PIC、Raspberry 和使用它們構(gòu)建的氣象站)進(jìn)行接口

編程 NodeMCU ESP8266 實(shí)時(shí)溫度和濕度監(jiān)測(cè)

最后給出了帶有工作視頻的完整程序。在這里,我們將解釋代碼的幾個(gè)重要部分。

首先包括使用 ESP8266 和 firebase 的庫(kù)。

#include 

按照以下鏈接下載并安裝庫(kù):

https://github.com/FirebaseExtended/firebase-arduino/blob/master/src/Firebase.h

https://github.com/bblanchon/ArduinoJson

編譯時(shí),如果您收到未安裝 ArduinoJson.h 庫(kù)的錯(cuò)誤,請(qǐng)使用上面給出的鏈接安裝它。

我們將對(duì) NodeMCU 進(jìn)行編程,使其每隔 5 秒從 DHT11 傳感器讀取讀數(shù)并將其推送到 Firebase。我們將設(shè)置推送數(shù)據(jù)的路徑?,F(xiàn)在有兩個(gè)參數(shù),即。濕度和溫度在相同的父路徑和不同的子路徑中發(fā)送。

這兩個(gè)參數(shù)對(duì)于與 firebase 通信非常重要。設(shè)置這些參數(shù)將啟用 ESP8266 和 firebase 之間的數(shù)據(jù)交換。要為您的項(xiàng)目查找這些參數(shù),請(qǐng)按照我們之前關(guān)于Firebase 設(shè)置的教程進(jìn)行操作。

#define FIREBASE_HOST "your-project.firebaseio.com" // 來(lái)自 firebase id 的項(xiàng)目名稱地址
#define FIREBASE_AUTH "Uejx9ROxxxxxxxxxxxxxxxxxxxxxxxxxxxfQDDkhN" // 從 firebase 生成的密鑰

成功找到憑據(jù)后,只需在上面的代碼中替換即可。

輸入您的 Wi-Fi SSID 和密碼以連接您的網(wǎng)絡(luò)。

#define WIFI_SSID "network_name" // 輸入你的家庭或公共wifi名稱
#define WIFI_PASSWORD "password" //wifi ssid的密碼

在 NodeMCU 中定義 DHT 數(shù)據(jù)引腳。您可以在 NodeMCU 中使用任何數(shù)字 GPIO 引腳。

#define DHTPIN D4

DHT 庫(kù)適用于所有 DHT 變體,并帶有您想要用于 DHT11 或 DHT22 的 DHT 傳感器的選項(xiàng)。只需選擇正確的 DHT 傳感器并繼續(xù)。

#define DHTTYPE DHT11 // 選擇 dht 類型為 DHT 11 或 DHT22 
DHT dht(DHTPIN, DHTTYPE);

連接到所選的 Wi-Fi 網(wǎng)絡(luò)并連接到 firebase 數(shù)據(jù)庫(kù)服務(wù)器。

WiFi.begin(WIFI_SSID, WIFI_PASSWORD);  
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);        

開(kāi)始讀取 NodeMCU 的 D4 引腳。

dht.begin();          

從 DHT 傳感器獲取濕度和溫度讀數(shù)并保存為浮點(diǎn)值。

浮動(dòng) h = dht.readHumidity(); // 讀取溫度或濕度大約需要 250 毫秒!
  浮動(dòng) t = dht.readTemperature(); // 將溫度讀取為攝氏度(默認(rèn)值)

只需檢查 DHT 傳感器是否正確接線或未損壞,控制器可以從中讀取讀數(shù)。如果讀數(shù)未顯示,則可能傳感器已損壞,只需顯示錯(cuò)誤消息并返回再次檢查,而不繼續(xù)進(jìn)行。

  if (isnan(h) || isnan(t)) { // 檢查是否有任何讀取失敗并提前退出(重試)。
    Serial.println(F("讀取 DHT 傳感器失敗!")); 
    返回; 
  }

在串行監(jiān)視器中打印傳感器數(shù)據(jù)以進(jìn)行調(diào)試,并以字符串形式保存溫度和濕度值以將其發(fā)送到 Firebase。另請(qǐng)注意,來(lái)自 DHT11 傳感器的兩次讀數(shù)之間所需的最小延遲為 2 秒,因此請(qǐng)始終使用大于 2 秒的延遲。要了解有關(guān) DHT11 的更多信息,您可以查看官方數(shù)據(jù)表。

  Serial.print("濕度:"); 序列號(hào).print(h); 
  String fireHumid = String(h) + String("%"); //將整數(shù)濕度轉(zhuǎn)換為字符串濕度
  Serial.print("% Temperature: "); 序列號(hào).print(t); Serial.println("°C"); 
  String fireTemp = String(t) + String("°C");   
延遲(4000);

最后,將溫度和濕度數(shù)據(jù)發(fā)送到路徑“your-project.firebaseio.com/DHT11/Humidity/”的firebase。

  Firebase.pushString("/DHT11/Humidity", fireHumid); //設(shè)置路徑并發(fā)送讀數(shù)
Firebase.pushString("/DHT11/Temperature", fireTemp); //設(shè)置路徑并發(fā)送讀數(shù)
您可以查看您的 Firebase 帳戶中的所有數(shù)據(jù)。只需轉(zhuǎn)到Firebase中“我的控制臺(tái)”中“您的項(xiàng)目”中的“數(shù)據(jù)庫(kù)”部分。pYYBAGMpcHmAOVA9AAD9GkrQJMM213.png

/* 將傳感器數(shù)據(jù)發(fā)送到 Firebase 數(shù)據(jù)庫(kù) */


#include // esp8266 庫(kù)

#include // firebase 庫(kù)

#include // dht11 溫濕度傳感器庫(kù)


#define FIREBASE_HOST "your-project.firebaseio.com" // 來(lái)自 firebase id 的項(xiàng)目名稱地址

#define FIREBASE_AUTH "Uejx9ROxxxxxxxxxxxxxxxxxxxxxxxxxxxfQDDkhN" // 從 firebase 生成的密鑰


#define WIFI_SSID "network_name" // 輸入您的家庭或公共 wifi 名稱

#define WIFI_PASSWORD "password" //wifi ssid 的密碼



#define DHTPIN D4 // 我們連接的數(shù)字引腳

#define DHTTYPE DHT11 // 選擇 dht 類型作為 DHT 11 或 DHT22

DHT dht(DHTPIN, DHTTYPE);


無(wú)效設(shè)置(){

序列.開(kāi)始(9600);

延遲(1000);

WiFi.begin(WIFI_SSID, WIFI_PASSWORD); //嘗試連接wifi

Serial.print("Connecting to ");

Serial.print(WIFI_SSID);

while (WiFi.status() != WL_CONNECTED) {

Serial.print(".");

延遲(500);

}

Serial.println();

Serial.print("連接到");

Serial.println(WIFI_SSID);

Serial.print("IP 地址為:");

Serial.println(WiFi.localIP()); //打印本地IP地址

Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH); // 連接到火力基地

dht.begin(); //開(kāi)始讀取dht傳感器

}


無(wú)效循環(huán)(){

浮動(dòng)h = dht.readHumidity();// 讀取溫度或濕度大約需要 250 毫秒!

浮動(dòng) t = dht.readTemperature(); // 將溫度讀取為攝氏度(默認(rèn)值)



if (isnan(h) || isnan(t)) { // 檢查是否有任何讀取失敗并提前退出(重試)。

Serial.println(F("讀取 DHT 傳感器失敗!"));

返回;

}



Serial.print("濕度:"); 序列號(hào).print(h);

String fireHumid = String(h) + String("%"); //將整數(shù)濕度轉(zhuǎn)換為字符串濕度

Serial.print("% 溫度:"); 序列號(hào).print(t); Serial.println("°C");

String fireTemp = String(t) + String("°C"); //將整數(shù)溫度轉(zhuǎn)換為字符串溫度

延遲(4000);



Firebase.pushString("/DHT11/Humidity", fireHumid); //設(shè)置路徑并發(fā)送讀數(shù)

Firebase.pushString("/DHT11/Temperature", fireTemp); //設(shè)置路徑并發(fā)送讀數(shù)



}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)庫(kù)
    +關(guān)注

    關(guān)注

    7

    文章

    3799

    瀏覽量

    64388
  • DHT11濕度傳感器
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    4784
  • NODEMCU
    +關(guān)注

    關(guān)注

    13

    文章

    289

    瀏覽量

    21403
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    請(qǐng)問(wèn)esp8266機(jī)智云輸出dht11數(shù)據(jù)到手機(jī)怎么弄?

    esp8266機(jī)智云輸出dht11數(shù)據(jù)到手機(jī)app代碼
    發(fā)表于 07-29 03:58

    基于DHT11ESP8266如何去實(shí)現(xiàn)溫濕度數(shù)據(jù)無(wú)線傳輸

    DHT11模塊是怎么進(jìn)行接線的?使用ESP8266模塊有哪些需要注意的事項(xiàng)?基于DHT11ESP8266如何去實(shí)現(xiàn)溫濕度數(shù)據(jù)無(wú)線傳輸?
    發(fā)表于 08-11 06:07

    如何通過(guò)NodeMCU傳感器數(shù)據(jù)存儲(chǔ)到MySQL數(shù)據(jù)庫(kù)

    本文演示如何通過(guò) 基于 ESP8266 的 NodeMCU,把通過(guò) DHT11 傳感器搜集到的溫、濕度數(shù)據(jù)通過(guò) MQTT 協(xié)議將其存儲(chǔ)到
    發(fā)表于 11-03 08:34

    怎樣使用ESP8266模塊采集的數(shù)據(jù)發(fā)送到手機(jī)APP上位機(jī)監(jiān)測(cè)

    此工程文件包括了溫濕度,光照,二氧化碳等數(shù)據(jù)的采集,溫濕度使用DHT11傳感器,光照采用BH1750芯片,二氧化碳采用MH-Z14A傳感器,屏幕采用0.96寸四針OLED 屏幕,通過(guò)串
    發(fā)表于 02-21 06:03

    NUC980采集數(shù)據(jù)通過(guò)MQTT發(fā)送到消息服務(wù)并打印顯示步驟分享

    1、MQTT通信測(cè)試AT指令控制ESP8266連接WIFI接入互聯(lián)網(wǎng),NUC980采集DHT11溫濕度傳感器數(shù)據(jù),通過(guò)MQTT發(fā)送到消息服務(wù)
    發(fā)表于 06-06 15:27

    使用DHT11傳感器創(chuàng)建ESP8266 Web服務(wù)數(shù)據(jù)記錄

    同的板創(chuàng)建了許多網(wǎng)絡(luò)服務(wù)。在這里,我們還將使用 DHT11 傳感器創(chuàng)建 ESP8266 Web 服務(wù)
    發(fā)表于 06-23 06:39

    數(shù)據(jù)從Arduino Mega 2560發(fā)送到ESP8266的最佳方式?

    大家好。我正在使用 Arduino Mega 2560 上的運(yùn)動(dòng)傳感器制作游戲。當(dāng)其中一個(gè)傳感器檢測(cè)到運(yùn)動(dòng)時(shí),用戶會(huì)得到一個(gè)分?jǐn)?shù),依此類推。我想要做的是這些點(diǎn)數(shù)發(fā)送到我的 Andro
    發(fā)表于 02-24 06:36

    是否可以通過(guò)SoftAP模式數(shù)據(jù)從MIT app發(fā)送到ESP8266?

    顧名思義,是否可以通過(guò)SoftAP模式數(shù)據(jù)從MIT app發(fā)送到ESP8266?我的想法是讓用戶使用 MIT 應(yīng)用程序輸入數(shù)據(jù)(在本例中為
    發(fā)表于 06-02 08:50

    怎樣DHT11濕度傳感器ESP8266和ThingSpeak連接并監(jiān)控數(shù)據(jù)

    DHT11是一款低成本的濕度和溫度傳感器。由于它同時(shí)具有溫度和濕度傳感器DHT11傳感器足以實(shí)現(xiàn)您的第一個(gè)物聯(lián)網(wǎng)氣象監(jiān)測(cè)系統(tǒng)。
    的頭像 發(fā)表于 07-29 14:20 ?1.4w次閱讀

    通過(guò) NodeMCU (ESP8266) 傳感器數(shù)據(jù)存儲(chǔ)到 MySQL 數(shù)據(jù)庫(kù)

    本文演示如何通過(guò) 基于 ESP8266 的 NodeMCU,把通過(guò) DHT11 傳感器搜集到的溫、濕度數(shù)據(jù)通過(guò) MQTT 協(xié)議將其存儲(chǔ)到
    發(fā)表于 10-28 10:36 ?24次下載
    通過(guò) NodeMCU (<b class='flag-5'>ESP8266</b>) <b class='flag-5'>將</b><b class='flag-5'>傳感器</b><b class='flag-5'>數(shù)據(jù)</b>存儲(chǔ)到 MySQL <b class='flag-5'>數(shù)據(jù)庫(kù)</b>

    51單片機(jī)DHT11溫濕度ESP8266WiFi手機(jī)APP顯示設(shè)計(jì)

    、系統(tǒng)方案DHT11溫濕度傳感器采集數(shù)據(jù)傳送給單片機(jī),單片機(jī)數(shù)據(jù)處理之后通過(guò)ESP8266Wi
    發(fā)表于 11-04 16:21 ?119次下載
    51單片機(jī)<b class='flag-5'>DHT11</b>溫濕度<b class='flag-5'>ESP8266</b>WiFi手機(jī)APP顯示設(shè)計(jì)

    使用 NodeMCU 和 DHT11 傳感器通過(guò) MQTT 上傳溫濕度數(shù)據(jù)

    broker。DHT11數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號(hào)輸出的溫濕度復(fù)合傳感器,Node MCU 底層集成了 ESP8266, 能提供完整且自成體系的Wi-Fi網(wǎng)絡(luò)解決方案,
    發(fā)表于 11-16 10:06 ?29次下載
    使用 NodeMCU 和 <b class='flag-5'>DHT11</b> <b class='flag-5'>傳感器</b>通過(guò) MQTT 上傳溫濕度<b class='flag-5'>數(shù)據(jù)</b>

    使用ESP 01DHT11測(cè)量的溫度和濕度數(shù)據(jù)發(fā)送到服務(wù)

    電子發(fā)燒友網(wǎng)站提供《使用ESP 01DHT11測(cè)量的溫度和濕度數(shù)據(jù)發(fā)送到服務(wù).zip》資料免
    發(fā)表于 01-03 11:12 ?0次下載
    使用<b class='flag-5'>ESP</b> 01<b class='flag-5'>將</b><b class='flag-5'>DHT11</b>測(cè)量的溫度和濕度<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>發(fā)送到</b>服務(wù)<b class='flag-5'>器</b>

    使用ESP8266驅(qū)動(dòng)DHT11溫濕度傳感器

    DHT11數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號(hào)輸出的溫濕度綜合傳感器,在Arduino提高篇中已對(duì)其進(jìn)行了介紹,本篇使用ESP8266來(lái)驅(qū)動(dòng)IOT Kit板載
    的頭像 發(fā)表于 05-19 14:20 ?6423次閱讀
    使用<b class='flag-5'>ESP8266</b>驅(qū)動(dòng)<b class='flag-5'>DHT11</b>溫濕度<b class='flag-5'>傳感器</b>

    Arduino Nano 和 NodeMCU ESP8266 讀取 DHT11 環(huán)境溫濕度數(shù)據(jù)及 OLED顯示

    Arduino Nano 和 NodeMCU ESP8266 讀取 DHT11 環(huán)境溫濕度數(shù)據(jù)及 OLED顯示
    的頭像 發(fā)表于 08-13 18:04 ?1169次閱讀
    Arduino Nano 和 NodeMCU <b class='flag-5'>ESP8266</b> 讀取 <b class='flag-5'>DHT11</b> 環(huán)境溫濕度<b class='flag-5'>數(shù)據(jù)</b>及 OLED顯示