使用ESP8266和Blynk应用程序的远程房间恒温器

该项目可通过您的手机通过家庭WiFi或移动网络的任何地方控制您的家庭供暖单元。 基本上,它可以用远程控制器代替普通的可编程房间恒温器。 作为遥控器,它使用安装了Blynk App并配置为可以满足所有需求的智能手机。 智能手机和供暖系统之间的通信由主机提供,并将ESP8266连接到家庭WiFi。

特征:

  • 室温和湿度指示器
  • 日/夜/定时模式
  • 日/夜温度设定
  • 低温通知
  • 传感器错误通知
  • 晚上禁用所有通知
  • 图形数据视图

所需组件

GPIO

由于ESP8266的GPIO数量少,因此本项目存在一些硬件外围设备限制。

室温是由DHT22传感器测量的,尽管这些传感器不可靠,所以请留意适当的库。由于使用了特定的加热系统,因此我添加了另一个温度传感器DS18B20,该传感器可测量膨胀容器的水温,尽管它无法控制任何东西。燃油燃烧器和加热泵由BTA12三端双向可控硅开关元件驱动,并增加了缓冲电路。燃油燃烧器也有反馈信号指示燃烧器是否正在运行。

就我而言,ESP8266和OLED位于炉子的一侧,以避免额外的电气安装。另外,如果您想将OLED从主机上移开,I2C数据也不会在较长的导线上运行。

操作基础

通过App关闭系统时,循环泵和燃烧器关闭。否则,当系统处于DAY,NIGHT或TIMER操作模式时,燃烧器会加热炉中的水,因此加热系统已准备好供应热水。在定时器模式下,AM和PM定时器用于自定义所需时间段的热量。

每分钟读取一次室温,因此,如果室温低于您在App中设置的温度,则加热泵将开始通过热交换器循环热水。

您可以在代码中找到库的链接。我唯一的问题是为DHT22传感器找到合适的库,因为某些库给出错误的测量值,尤其是湿度值。因此,设计该代码是为了防止从DHT22传感器计算错误的测量值。

Blynk

多亏了安装在我智能手机上的的Blynk应用程序,该应用程序才能显示从传感器,热泵和燃油燃烧器状态收集的数据。它还可以手动或自动远程控制系统。

可以将所需的“白天”或“夜晚”温度设置为手动处理系统。在计时器模式下,两个计时器用于自动控制白天或夜晚的温度。

万一传感器读数有误,它将发送警报。当温度降到20、18和15摄氏度以下时,也会有通知。最后,一个图形绘制了前面提到的I / O的基于时间的活动。

ThingSpeak

基本操作数据已上传到私有ThingSpeak频道,可以在放置在智能手机上的IoT ThingSpeak Monitor小部件上轻松监控。因此,我不需要每次仅启动Blynk App来检查数据。每10分钟上传一次数据。

安装

以我为例,我将所有内置的硬件都放入了靠近燃油炉的适当外壳中。我还包括一个OLED,因此可以随时读取重要状态。在客厅中,只有DHT传感器位于与安装旧恒温器相同的地方。

注意:此项目经过一段时间的开发和测试,以确保所需的操作。因此,可以在App和OLED UI上记录一些过时的场景。

代码(部分)

#include <Wire.h>
#include <SPI.h>
#include <DHT.h> 
#include <OneWire.h>
#include <DallasTemperature.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <EEPROM.h>

//OTA
bool OTA = true;

#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
//end OTA

//******************************************************************************// SWITCH OLED HW & WIFI AP
//Initialize the OLED display using Wire library >
// create more fonts at http://oleddisplay.squix.ch/
// (horizontal=21 x vertical = 5 characters / charH=6px charV=9px)
// wiring (0-5): SDA>   SCK>
//         TX,    RX (3, 1)
//     or  GPIO4, GPIO5 (4, 5)
//     or GPIO2, GPIO0 (2, 0)
//also GPIO 10 can be used on ESP12F

#define displaySet 1 //SSD1306 = 0 or SH1106 = 1

#define WIFI_TX_POWER 0 //Limiting output power 0 - 20.5 dBm (Router setting = 20db)

#if displaySet == 0
  #include "SSD1306.h" 
  SSD1306 display(0x3c, 4, 5);
#else
  #include "SH1106.h"
  SH1106 display(0x3c, 4, 5);
#endif

//******************************************************************************// DEFINE GPIOs
const int DHTPIN = 12; // sensor pin GPIO
DHT dht;

OneWire DS_1(14); //define SD18B20 temperature sensor pin GPIO. other possible GPIOS (0-5): 0, 2, 4, 5. RX&TX=NO!
DallasTemperature tDS(&DS_1);

const int HEATER_AC_READY = 16; //OPTOCOUPLER input GPIO - monitor AC output from RELAY to HEATER

const int RELAYPUMP = 13; //define RELAY PUMP output GPIO
const int RELAYHEATER = 15; //define RELAY HEATER output GPIO

//******************************************************************************// DEFINE VARIABLES
float t;
float h;
int tDS_temp;
float tDS_oneDecimal;
long rssi;
int tempSetDay; //integer of DAY set temperature
int tempSetNight; //integer of NIGHT set temperature
int tempSet;
bool tRising;    //var for rising/falling temperature
float tPrev = 0; //check rising/falling temperature
int c = 0; // counting connection time
int switchMode; //read data from switch slider mode
int timerAm; //active or inactive AM programable timer
int timerPm; //active or inactive PM programable timer
int dataSensor; //set values through loops for V_DATASENSOR LED
int heaterLedState; //set 1st memory for combined Heat LED indicator
int heaterLedStateMax; //set 2nd memory for combined Heat LED indicator
int heaterStateThinkspeak; //set value for Heater graph on Thingspeak
int pumpStateThinkspeak; //set value for Pump graph on Thingspeak
bool refreshVirtualPins = true;
bool startDHTread = false; //don't read DHT on start. "setBlynkCountdown" must be > "SENSOR_INTERVAL" on loop()
unsigned int sensor_interval;

接线图

详情参阅 - 亚图跨际

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值