0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用DHT11和ESP8266将传感器数据发送到Firebase数据库

科技观察员 来源:circuitdigest 作者:Abhimanyu Pandit 2022-09-20 15:53 次阅读

微控制器的内部存储器很小,不足以长时间保存传感器生成的数据,要么您必须使用一些外部存储设备,要么可以使用互联网将数据保存在某些云上。此外,当传感器部署在人无法到达或难以频繁访问的极端条件站点时,有时会变得难以管理。为了纠正这类问题,我们总是研究我们希望从任何地方实时监控传感器数据的方式,而无需任何物理存在。

实时数据库可以用在这种情况下,我们只需要连接一些可以连接到互联网并能够与云服务器交换数据的控制器。服务器数据可用于监控实时系统行为、数据库分析、统计分析和处理以及未来用例的解释。有许多物联网硬件平台和云平台可用于实现此目的。

我们将使用温度和湿度传感器 DHT11和NodeMCU ESP8266 模块在 Google 的 Firebase 数据库服务器上实时记录温度和湿度。

我们将项目分为两个部分。首先,我们将从组装硬件组件并将固件上传到其中开始。其次,我们将使用 Firebase 与 NodeMCU 进行设置以交换实时数据。如果您是 ESP8266 或 Firebase 的新手,请按照我们之前使用 Firebase 控制 LED教程进行操作。

所需组件

NodeMCU ESP8266 模块

DHT11温湿度传感器

电路原理

pYYBAGMpcH-AdsfSAACAcFQv4L4617.png

DHT11温湿度传感器

DHT11 模块具有带校准数字信号输出的湿度和温度复合体,这意味着 DHT11 传感器模块是用于感测湿度和温度的组合模块,可提供校准的数字输出信号。DHT11 为我们提供了非常精确的湿度和温度值,并确保了高可靠性和长期稳定性。该传感器具有电阻型湿度测量元件和 NTC 型温度测量元件,内置 8 位微控制器,具有快速响应和成本效益,采用 4 针单排封装。

poYBAGMpcICANctRAAMINK7ELUY803.png

我们之前使用ESP12E 更新网络服务器上的 DHT11 读数,除此之外,您可以检查所有基于 DHT11 的项目,我们使用 DHT11 与许多其他微控制器(如 ArduinoPIC、Raspberry 和使用它们构建的气象站)进行接口

编程 NodeMCU ESP8266 实时温度和湿度监测

最后给出了带有工作视频的完整程序。在这里,我们将解释代码的几个重要部分。

首先包括使用 ESP8266 和 firebase 的库。

#include 

按照以下链接下载并安装库:

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

https://github.com/bblanchon/ArduinoJson

编译时,如果您收到未安装 ArduinoJson.h 库的错误,请使用上面给出的链接安装它。

我们将对 NodeMCU 进行编程,使其每隔 5 秒从 DHT11 传感器读取读数并将其推送到 Firebase。我们将设置推送数据的路径。现在有两个参数,即。湿度和温度在相同的父路径和不同的子路径中发送。

这两个参数对于与 firebase 通信非常重要。设置这些参数将启用 ESP8266 和 firebase 之间的数据交换。要为您的项目查找这些参数,请按照我们之前关于Firebase 设置的教程进行操作。

#define FIREBASE_HOST "your-project.firebaseio.com" // 来自 firebase id 的项目名称地址
#define FIREBASE_AUTH "Uejx9ROxxxxxxxxxxxxxxxxxxxxxxxxxxxfQDDkhN" // 从 firebase 生成的密钥

成功找到凭据后,只需在上面的代码中替换即可。

输入您的 Wi-Fi SSID 和密码以连接您的网络。

#define WIFI_SSID "network_name" // 输入你的家庭或公共wifi名称
#define WIFI_PASSWORD "password" //wifi ssid的密码

在 NodeMCU 中定义 DHT 数据引脚。您可以在 NodeMCU 中使用任何数字 GPIO 引脚。

#define DHTPIN D4

DHT 库适用于所有 DHT 变体,并带有您想要用于 DHT11 或 DHT22 的 DHT 传感器的选项。只需选择正确的 DHT 传感器并继续。

#define DHTTYPE DHT11 // 选择 dht 类型为 DHT 11 或 DHT22 
DHT dht(DHTPIN, DHTTYPE);

连接到所选的 Wi-Fi 网络并连接到 firebase 数据库服务器。

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

开始读取 NodeMCU 的 D4 引脚。

dht.begin();          

从 DHT 传感器获取湿度和温度读数并保存为浮点值。

浮动 h = dht.readHumidity(); // 读取温度或湿度大约需要 250 毫秒!
  浮动 t = dht.readTemperature(); // 将温度读取为摄氏度(默认值)

只需检查 DHT 传感器是否正确接线或未损坏,控制器可以从中读取读数。如果读数未显示,则可能传感器已损坏,只需显示错误消息并返回再次检查,而不继续进行。

  if (isnan(h) || isnan(t)) { // 检查是否有任何读取失败并提前退出(重试)。
    Serial.println(F("读取 DHT 传感器失败!")); 
    返回; 
  }

在串行监视器中打印传感器数据以进行调试,并以字符串形式保存温度和湿度值以将其发送到 Firebase。另请注意,来自 DHT11 传感器的两次读数之间所需的最小延迟为 2 秒,因此请始终使用大于 2 秒的延迟。要了解有关 DHT11 的更多信息,您可以查看官方数据表。

  Serial.print("湿度:"); 序列号.print(h); 
  String fireHumid = String(h) + String("%"); //将整数湿度转换为字符串湿度
  Serial.print("% Temperature: "); 序列号.print(t); Serial.println("°C"); 
  String fireTemp = String(t) + String("°C");   
延迟(4000);

最后,将温度和湿度数据发送到路径“your-project.firebaseio.com/DHT11/Humidity/”的firebase。

  Firebase.pushString("/DHT11/Humidity", fireHumid); //设置路径并发送读数
Firebase.pushString("/DHT11/Temperature", fireTemp); //设置路径并发送读数
您可以查看您的 Firebase 帐户中的所有数据。只需转到Firebase中“我的控制台”中“您的项目”中的“数据库”部分。pYYBAGMpcHmAOVA9AAD9GkrQJMM213.png

/* 将传感器数据发送到 Firebase 数据库 */


#include // esp8266 库

#include // firebase 库

#include // dht11 温湿度传感器库


#define FIREBASE_HOST "your-project.firebaseio.com" // 来自 firebase id 的项目名称地址

#define FIREBASE_AUTH "Uejx9ROxxxxxxxxxxxxxxxxxxxxxxxxxxxfQDDkhN" // 从 firebase 生成的密钥


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

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



#define DHTPIN D4 // 我们连接的数字引脚

#define DHTTYPE DHT11 // 选择 dht 类型作为 DHT 11 或 DHT22

DHT dht(DHTPIN, DHTTYPE);


无效设置(){

序列.开始(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(); //开始读取dht传感器

}


无效循环(){

浮动h = dht.readHumidity();// 读取温度或湿度大约需要 250 毫秒!

浮动 t = dht.readTemperature(); // 将温度读取为摄氏度(默认值)



if (isnan(h) || isnan(t)) { // 检查是否有任何读取失败并提前退出(重试)。

Serial.println(F("读取 DHT 传感器失败!"));

返回;

}



Serial.print("湿度:"); 序列号.print(h);

String fireHumid = String(h) + String("%"); //将整数湿度转换为字符串湿度

Serial.print("% 温度:"); 序列号.print(t); Serial.println("°C");

String fireTemp = String(t) + String("°C"); //将整数温度转换为字符串温度

延迟(4000);



Firebase.pushString("/DHT11/Humidity", fireHumid); //设置路径并发送读数

Firebase.pushString("/DHT11/Temperature", fireTemp); //设置路径并发送读数



}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据库
    +关注

    关注

    7

    文章

    3646

    浏览量

    63748
  • DHT11湿度传感器

    关注

    0

    文章

    12

    浏览量

    4760
  • NODEMCU
    +关注

    关注

    13

    文章

    289

    浏览量

    21087
收藏 人收藏

    评论

    相关推荐

    请问esp8266机智云输出dht11数据到手机怎么弄?

    esp8266机智云输出dht11数据到手机app代码
    发表于 07-29 03:58

    基于DHT11ESP8266如何去实现温湿度数据无线传输

    DHT11模块是怎么进行接线的?使用ESP8266模块有哪些需要注意的事项?基于DHT11ESP8266如何去实现温湿度数据无线传输?
    发表于 08-11 06:07

    如何通过NodeMCU传感器数据存储到MySQL数据库

    本文演示如何通过 基于 ESP8266 的 NodeMCU,把通过 DHT11 传感器搜集到的温、湿度数据通过 MQTT 协议将其存储到
    发表于 11-03 08:34

    如何通过NodeMCU和DHT11收集温湿度

    broker。DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,Node MCU 底层集成了 ESP8266, 能提供完整且自成体系的Wi-Fi网络解决方案,
    发表于 11-24 08:08

    怎样使用ESP8266模块采集的数据发送到手机APP上位机监测

    此工程文件包括了温湿度,光照,二氧化碳等数据的采集,温湿度使用DHT11传感器,光照采用BH1750芯片,二氧化碳采用MH-Z14A传感器,屏幕采用0.96寸四针OLED 屏幕,通过串
    发表于 02-21 06:03

    NUC980采集数据通过MQTT发送到消息服务并打印显示步骤分享

    1、MQTT通信测试AT指令控制ESP8266连接WIFI接入互联网,NUC980采集DHT11温湿度传感器数据,通过MQTT发送到消息服务
    发表于 06-06 15:27

    使用DHT11传感器创建ESP8266 Web服务数据记录

    同的板创建了许多网络服务。在这里,我们还将使用 DHT11 传感器创建 ESP8266 Web 服务
    发表于 06-23 06:39

    ESP8266如何连接mysql数据库

    各位大神,我试图用ESP8266 连接mysql ,温湿度传感器数据,写入数据库。mysql数据库
    发表于 01-12 09:22

    数据从Arduino Mega 2560发送到ESP8266的最佳方式?

    大家好。我正在使用 Arduino Mega 2560 上的运动传感器制作游戏。当其中一个传感器检测到运动时,用户会得到一个分数,依此类推。我想要做的是这些点数发送到我的 Andro
    发表于 02-24 06:36

    esp8266读取BME280并通过wifi数据发送到InfluxDB,读数都是零的原因?

    大家好=)。到目前为止,我已经使用 esp8266 完成了许多成功的项目,并且非常喜欢它。但是现在有点莫名其妙。我正在成功运行新代码,读取 BME280 并通过 wifi 数据发送到
    发表于 02-27 09:10

    是否可以通过SoftAP模式数据从MIT app发送到ESP8266

    顾名思义,是否可以通过SoftAP模式数据从MIT app发送到ESP8266?我的想法是让用户使用 MIT 应用程序输入数据(在本例中为
    发表于 06-02 08:50

    如何使用ESP8266DHT11传感器检索温度和湿度?

    我尝试使用 ESP8266DHT11 传感器检索温度和湿度。但我一直收到类似“ ”的错误 如果可能的话,任何人都可以指出这段代码中的其他潜在错误吗?我的代码如下所示: 代码:全选pin
    发表于 06-05 07:42

    使用带有ESP8266DHT11传感器检索湿度和温度,遇到了编译错误怎么解决?

    我尝试使用带有 ESP8266DHT11 传感器检索湿度和温度。但是,我遇到了编译错误,例如“lua:4: unexpected symbol near \',\'”。如果可能的话,任何人
    发表于 06-08 06:25

    使用ESP 01将DHT11测量的温度和湿度数据发送到服务器

    电子发烧友网站提供《使用ESP 01将DHT11测量的温度和湿度数据发送到服务器.zip》资料免费下载
    发表于 01-03 11:12 0次下载
    使用<b class='flag-5'>ESP</b> 01将<b class='flag-5'>DHT11</b>测量的温度和湿度<b class='flag-5'>数据</b><b class='flag-5'>发送到</b>服务器

    使用ESP8266驱动DHT11温湿度传感器

    DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度综合传感器,在Arduino提高篇中已对其进行了介绍,本篇使用ESP8266来驱动IOT Kit板载
    的头像 发表于 05-19 14:20 5260次阅读
    使用<b class='flag-5'>ESP8266</b>驱动<b class='flag-5'>DHT11</b>温湿度<b class='flag-5'>传感器</b>