『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 8227|回复: 53

[基础教程] 低成本自制温湿度、二氧化碳、PM2.5三合一空气质量检测设备

  [复制链接]

6

主题

64

帖子

705

积分

高级会员

Rank: 4

积分
705
金钱
636
HASS币
20
发表于 2022-4-26 21:42:09 | 显示全部楼层 |阅读模式
本帖最后由 huahuazi1990 于 2022-5-10 21:20 编辑

自制温湿度、二氧化碳、PM2.5三合一空气质量检测装置

家里新风一直都没有用,一直都想把新风弄起来,无奈自己实在是太懒了,懒得去开,果然懒才是一切的原动力,本篇文章仅仅是把传感器做好了,后续加新风的设备再再另开一个篇幅来说。
很多人对于多合一空气检测器的一个需求还有把显示屏加进来,我个人觉没有特别大必要,因为智能家居系统的最终目的就是让系统帮你实现自己手动的开关,那最终传感器的数值就是一个开关,你只需要设定好数值,最终让机器帮你执行什么时候打开新风,什么时候关闭新风即可。
首先
一、硬件准备:
温湿度传感器:SHTC3(10元左右)
微信图片_202204262022142.jpg
二氧化碳传感器:MH-Z19(80元左右,淘宝可以认真找找,还有几款BCD,其实都差不多,随意选择,主要是使用年限的区别,还有些复刻款更加便宜)
微信图片_202204262022141.jpg
PM2.5传感器:PMS7003(50元)
微信图片_20220426202238.jpg
芯片:Esp8266(12.8元)
微信图片_202204262022381.jpg
成本总计:150元上下,可以说是非常有性价比的一个选择

辅料还需要准备电烙铁、杜邦线、1.27mm贴片排母
微信图片_20220426202637.jpg
这个就是贴片排母 主要是用来把PMS7003的引脚接出来,方便焊接
我使用的ESPHOME的系统,这三个都是支持的。

二、硬件部分:
ESP8266.PNG

ESP8266的板子一共有一个5V的输出口,3个3.3V,这三个设备中有两个设备是5V的设备,MH-Z19和PMS7003,这两个要正极要接到VU口,GND接地。
1.PNG 2.jpg

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的使用年限只有一年,休眠之后可以使用更久。
接口图我放在下面,大家有不知道的可以再问我。
微信图片_202204262022382.jpg 微信图片_202204262022383.jpg
再来说下SHTC3的接口
3.png
引脚说明
1、VDD    供电 3.3~5.5V DC
2、GND    接地,电源负极
3、SDA     串行数据,双向口
4、SCL      串行时钟,输入口

其中3、4接口分别接D2、D1。1、2分别接3.3V的电源口和GND
efbc0db6fa2745d0a4c40c2ca1edce6a.png

这样 整体的接线部分就算完成了。

三、软件部分
首先刷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

四、最终效果
效果如下图
效果.PNG


最后还要补充一下,开机之后需要在室外稳定运行20分钟之后,然后调用一次mhz19_calibrate_zero服务进行校准。不然CO2数据会不准。



评分

参与人数 4金钱 +50 HASS币 +20 收起 理由
firewater + 10 膜拜大神!
bainiu + 10 感谢楼主分享!
+ 20 + 20 大神666!
dscao + 10 厉害了word楼主!

查看全部评分

回复

使用道具 举报

6

主题

64

帖子

705

积分

高级会员

Rank: 4

积分
705
金钱
636
HASS币
20
 楼主| 发表于 2022-4-27 09:33:13 | 显示全部楼层
感谢@along群友的支持, 还有@CT大佬对部分问题的解答。
回复

使用道具 举报

23

主题

660

帖子

3108

积分

论坛元老

Rank: 8Rank: 8

积分
3108
金钱
2448
HASS币
10
发表于 2022-4-27 11:15:59 | 显示全部楼层
加个有点高啊。。。买个M1更划算吧
回复

使用道具 举报

3

主题

295

帖子

2853

积分

金牌会员

Rank: 6Rank: 6

积分
2853
金钱
2558
HASS币
0
发表于 2022-4-27 13:03:13 | 显示全部楼层
感谢,正好想自己做一个,如果能加上墨水屏就完美了
回复

使用道具 举报

6

主题

64

帖子

705

积分

高级会员

Rank: 4

积分
705
金钱
636
HASS币
20
 楼主| 发表于 2022-4-27 13:59:11 | 显示全部楼层
wshc1216 发表于 2022-4-27 11:15
加个有点高啊。。。买个M1更划算吧

M1 只有甲醛,温湿度还有PM2.5,没有二氧化碳,贵在了二氧化碳。
回复

使用道具 举报

6

主题

64

帖子

705

积分

高级会员

Rank: 4

积分
705
金钱
636
HASS币
20
 楼主| 发表于 2022-4-27 14:00:25 | 显示全部楼层
iamhyde 发表于 2022-4-27 13:03
感谢,正好想自己做一个,如果能加上墨水屏就完美了

可以用一个oled屏幕来做,效果是一样的。在esphome里面加一条display的代码就可以了
回复

使用道具 举报

14

主题

249

帖子

1980

积分

金牌会员

Rank: 6Rank: 6

积分
1980
金钱
1726
HASS币
50
发表于 2022-4-27 14:32:20 | 显示全部楼层
感谢您的分享,很有用!
回复

使用道具 举报

54

主题

887

帖子

3804

积分

论坛元老

Rank: 8Rank: 8

积分
3804
金钱
2917
HASS币
0
发表于 2022-4-27 15:15:06 | 显示全部楼层
收藏了,下次也做做看,代码很详细,很适合新手。

esp8266:
  board: esp01_1m
这个地方如果改成
esp8266:
  board: nodemcuv2
会有区别吗?
回复

使用道具 举报

3

主题

295

帖子

2853

积分

金牌会员

Rank: 6Rank: 6

积分
2853
金钱
2558
HASS币
0
发表于 2022-4-27 15:31:30 | 显示全部楼层
我看PMS7003都是70块左右,PMS7003T带温湿度80多,可以节约一个SHTC3?不知道两者温湿度的准确性相差大不
回复

使用道具 举报

6

主题

64

帖子

705

积分

高级会员

Rank: 4

积分
705
金钱
636
HASS币
20
 楼主| 发表于 2022-4-27 16:19:33 | 显示全部楼层
iamhyde 发表于 2022-4-27 15:31
我看PMS7003都是70块左右,PMS7003T带温湿度80多,可以节约一个SHTC3?不知道两者温湿度的准确性相差大不 ...

可以用的 准确度我没去看 我自己用了单独的就没去看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-19 21:01 , Processed in 0.108444 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表