本帖最后由 huahuazi1990 于 2022-5-10 21:20 编辑
自制温湿度、二氧化碳、PM2.5三合一空气质量检测装置
家里新风一直都没有用,一直都想把新风弄起来,无奈自己实在是太懒了,懒得去开,果然懒才是一切的原动力,本篇文章仅仅是把传感器做好了,后续加新风的设备再再另开一个篇幅来说。 很多人对于多合一空气检测器的一个需求还有把显示屏加进来,我个人觉没有特别大必要,因为智能家居系统的最终目的就是让系统帮你实现自己手动的开关,那最终传感器的数值就是一个开关,你只需要设定好数值,最终让机器帮你执行什么时候打开新风,什么时候关闭新风即可。 首先 一、硬件准备: 温湿度传感器:SHTC3(10元左右) 二氧化碳传感器:MH-Z19(80元左右,淘宝可以认真找找,还有几款BCD,其实都差不多,随意选择,主要是使用年限的区别,还有些复刻款更加便宜) PM2.5传感器:PMS7003(50元) 芯片:Esp8266(12.8元) 成本总计:150元上下,可以说是非常有性价比的一个选择
辅料还需要准备电烙铁、杜邦线、1.27mm贴片排母 这个就是贴片排母 主要是用来把PMS7003的引脚接出来,方便焊接 我使用的ESPHOME的系统,这三个都是支持的。
二、硬件部分:
ESP8266的板子一共有一个5V的输出口,3个3.3V,这三个设备中有两个设备是5V的设备,MH-Z19和PMS7003,这两个要正极要接到VU口,GND接地。
PMS7003的pin口顺序是从右上角开始自上而下,自右向左,1-10口,其中NC口是空口,没有用。 接下来把MH-Z19B的VIN和PMS7003 pin1的线接在一起。然后接在VU口,两个设备的GND口的线接在一起,然后接在esp的GND任意。 然后将MH-Z19B的tx接板子rx(D7),rx接板子tx(D8),再将PMS7003的TX(pin7)接到板子另外一个rx(D9)的口子上,然后最后再将pin10的reset口接到D3口,用于PMS7003的休眠 因为PMS7003的使用年限只有一年,休眠之后可以使用更久。 接口图我放在下面,大家有不知道的可以再问我。 再来说下SHTC3的接口 引脚说明 1、VDD 供电 3.3~5.5V DC 2、GND 接地,电源负极 3、SDA 串行数据,双向口 4、SCL 串行时钟,输入口
其中3、4接口分别接D2、D1。1、2分别接3.3V的电源口和GND
这样 整体的接线部分就算完成了。
三、软件部分 首先刷ESPhome的系统
刷机教程可以参考:ESPHome刷机教程
三个传感器的接入方式链接如下:
PMS7003:PMSX003 Particulate Matter Sensor
MH-Z19: MH-Z19 CO_2 and Temperature Sensor
SHTC3: SHTCx Temperature+Humidity Sensors
esphome:
name: air-quality
esp8266:
board: esp01_1m
# Enable logging
logger:
# Enable Home Assistant API
api:
services:
- service: mhz19_calibrate_zero
then:
- mhz19.calibrate_zero: co2nongdu
ota:
password: "*"
wifi:
ssid: Leo Link
password: *****
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Air-Quality Fallback Hotspot"
password: "***"
web_server:
port: 80
captive_portal:
i2c:#定义i2cpin口
sda: 4
scl: 5
scan: True
uart:#双uart接口在每个前面定义一个id来实现
- id: pms7003
rx_pin: GPIO3
baud_rate: 9600
- id: mhz19b
tx_pin: GPIO15
rx_pin: GPIO13
baud_rate: 9600
sensor:
- platform: shtcx
temperature:
name: "Living Room Temperature"
humidity:
name: "Living Room Humidity"
address: 0x70
update_interval: 60s #获取频率
- platform: pmsx003
type: PMSX003
pm_1_0:
name: "PM 1.0"
filters:
- sliding_window_moving_average:
window_size: 15
send_every: 15
pm_2_5:
name: "PM 2.5"
filters:
- sliding_window_moving_average:
window_size: 15
send_every: 15
pm_10_0:
name: "PM 10"
filters:
- sliding_window_moving_average:
window_size: 15
send_every: 15
uart_id: pms7003
- platform: mhz19
co2:
name: "主卧CO2浓度"
filters:
- sliding_window_moving_average:
window_size: 6
send_every: 6
#temperature:
#name: "MH-Z19 Temperature"
update_interval: 10s
automatic_baseline_calibration: false
id: co2nongdu
uart_id: mhz19b
switch:
#pms休眠状态开关.
- platform: gpio
pin:
number: GPIO0
inverted: no
id: pms_set
name: "颗粒物传感器工作开关"
interval:
#pms每休眠240秒,工作60秒
- interval: 240s
then:
- switch.turn_on: pms_set
- delay: 60s
- switch.turn_off: pms_set
#获取pms传感器工作状态,延迟30秒工作,因为传感器前30秒工作时间为预热时间
binary_sensor:
- platform: template
name: "颗粒物传感器工作状态"
id: pms_awake_and_warm
lambda: |-
if (id(pms_set).state) {
return true;
} else {
return false;
}
filters:
- delayed_on: 30s
四、最终效果
效果如下图
最后还要补充一下,开机之后需要在室外稳定运行20分钟之后,然后调用一次mhz19_calibrate_zero服务进行校准。不然CO2数据会不准。
|