3-2温度传感器

家庭自动化项目中文版目录
有很多温度传感器可以使用,但对于这个项目,我们将使用一个非常常见的,DTH22 。它可以测量温度和湿度 。
以下是 DHT22 的特点:
DHT22可以作为单独的传感器或面包板元件 。最好购买面包板元件版,因为它还有 4k7 上拉电阻和一个电容 。如果你更喜欢单独的传感器这就是引脚:
DHT22
【3-2温度传感器】这里:
不要忘记在DATA和VCC引脚之间添加4K7上拉电阻 。用于与燃气炉或其他加热元件的连接,将在GPIO 12上添加一个继电器 。确保您有一个良好的电源,因为继电器将消耗一些电能 。
在这种情况下,我们的设置将是:
Finalfor
添加了两个LED,一个RED LED显示加热正在进行,一个GREEN LED显示系统有电 。只有当红色LED不亮时,绿色LED才会亮起 。
在继电器板上,仅当GPIO 12为高电平且正在进行加热时,才存在C(公共)和NO(常开)之间的连接 。
信息:对220V电力感到满意,并确保我们选择能够保持消耗功率的继电器 。
基本上恒温器将测量温度,如果它高于所需的温度,它将关闭继电器,如果它低于它,它将打开继电器开始加热 。
如果我们按照这样的逻辑,恒温器会经常打开和关闭继电器,所以我们需要在加热的开始和停止之间添加一个偏移量(delta) 。在商用恒温器上,可以对这个偏移进行编程(在0.1℃ 递增到到1℃)或者可以固定为 0.5℃
在我们的系统中,偏移量将设置为 0.4%℃ 。这意味着,如果我们所需的温度是 22.0℃,加热器将在21.69℃时开始并在22.4℃时停止 。
为了在我们的恒温器上设置所需的温度,我们将向主题/set 发送 MQTT 消息,其中包含所需温度的内容(例如23.2);系统将借助将值保存在文件中,并将其与从 DHT22 传感器读取的当前温度进行比较 。如果发生电源故障,将从配置文件中读取所需的温度,以使其不会丢失 。
当恒温器第一次通电时,所需温度硬编码至22℃ 。恒温器将定期在/get主题上发布DHT22检测到的温度 。
为了使用 DHT22 传感器,您需要一些库 。安装( 统一传感器),然后按照与第1章,入门相同的步骤安装 DHT 传感器库 。

3-2温度传感器

文章插图
在库管理器中对进行搜索:
在库管理器中对 DHT22 进行搜索:
我们安装了两个库之后现在我们有了所有必要的头如下:
#include #include #include #include
稍后将在我们的代码中使用的常量如下 。确保您具有正确的值:
const char* ssid = "YOUR_WIFI_SSID";const char* password = "YOUR_WIFI_PASSWORD";const char* mqtt_server = "YOUR_MQTT_SERVER";const char* mqtt_user = "YOUR_MQTT_USER";const char* mqtt_passwd = "YOUR_MQTT_PASSWORD";const int mqtt_port = 1883; //你的 MQTT PORT
继电器模块连接到 GPIO 12 ,DHT22 连接到引脚 4,LEDs 和GPIO 13 、GPIO 15 连接,如下:
#define RELAY_PIN 12#define DHTTYPE DHT22#define DHTPIN 4#define GREEN_LED 15#define RED_LED 13
我们的全局对象和偏移和所需温度的默认值:
WiFiClient espClient;PubSubClient client(espClient);DHT dht(DHTPIN, DHTTYPE, 11);long lastMsg = 0;float offset_temp = 0.4;float desired_temp = 22.0;float humidity, temp_f;// 从传感器读取的值
() 从DHT22传感器获取 温度 和 湿度,并将它们保存到全局变量的和 中 。如果你需要华氏温度,请用 true 作为一个参数去调用dht.() 函数,像这样(true);: