搭建个人智能家居 7 - 空气颗粒物检测

搭建个人智能家居 7 - 空气颗粒物检测

前言

到目前为止,我们这个智能家居系统添加了4个外设,分别是:LED灯、RGB灯、DHT11温度传感器和SGP30。今天继续添加环境测量类传感器"PMS5003空气颗粒物检测传感器",可检测周围环境空气中的颗粒物浓度,比如PM2.5。

前文回顾:
搭建个人智能家居 6 -SGP30 CO₂与TVOC测量
搭建个人智能家居 5 -DHT11温湿度测量
搭建个人智能家居 4 -WS2812B-RGB灯
搭建个人智能家居 3 -第一个设备"点灯"
搭建个人智能家居 2 -安装ESPHome
搭建个人智能家居 开篇(搭建Home Assistant)

说明

步骤和前面文章一样,都是先在ESPHome仪表台编辑.yaml文件,让后在HomeAssistant的控制台看结果,一般都是这样的步骤,后续的文章就不在啰嗦的做说明了。

本次实验需要用到:ESP32开发板、PMS5003激光颗粒物检测传感器和一个电源模块。

进入主题。

PMS5003

由PMS5003的手册可知,PMS5003是通过uart串口进行通讯的,默认主动上传数据,每帧32字节,传输协议如下:


一帧数据包含了PM1.0、PM2.5和PM10这三个大小颗粒物的两种测量数据,并且还包含了大于0.3um、0.5um、1.0um等6个颗粒物大小的计数输出。由于我们是用在房间这样的室内小空间,只取大气环境下PM2.5的数据。

ESPHome

PMS5003激光颗粒物检测传感器是通过UART串口通讯的,所以我们需要用到ESP32上的UART串口,由于ESP32的串口UART0被Logger组件占用了,我们可以另外定义UART串口使用。

官方的UART组件提供了以下可修改参数:

tx_pin --- 写引脚定义

rx_pin --- 读引脚定义

baud_rate --- 波特率设置

data_bits --- 数据位

stop_bits --- 停止位

parity --- 校验位

id --- 总线ID

rx_buffer_size --- 接收缓冲区

PMS5003的UART通讯参数为"默认波特率:9600bps、校验位:无、停止位:1 位"。定义UART串口时需要主要些参数,默认是一样的不需要改。

以下是串口定义的代码:

cpp 复制代码
#UART串口定义
uart:
   tx_pin: GPIO19
   rx_pin: GPIO18
   baud_rate: 9600
   id: uart_1
    

定义的是软件UART,IO口可改,只要IO口可以正常读写高低电平就可以。

注意,id不能是数字开头

PMS5003可以输出PM1.0-PM10的数据,由于在室内使用,所以只输出大气环境下PM2.5浓度数据

PMS5003输出PM2.5数据代码:

cpp 复制代码
#PMS5003
  - platform: pmsx003
    type: PMSX003
    pm_2_5:
      name: "PM2.5 concentration"
    uart_id: uart_1

工业生产车间等环境的测量需要用标准颗粒物质量浓度值测量可以用pm_2_5_std替换掉pm_2_5这个语句,其他大小颗粒物数据输出可以按下面方法修改:

如输出大气环境下PM1.0:pm_1_0

输出0.1 升空气中直径在 2.5um 以上颗粒物个数:pm_2_5um

上面代码是传感器主动上传数据,并实时更新在HomeAssistant的,如果需要调节数据上传间隔的即传感器被动上传数据,可以在代码后面加上update_interval: +数字来控制数据更新间隔。

这里不做演示,有需要的可以自行更改。

目前项目整合代码:

cpp 复制代码
captive_portal:

#I2C总线定义
i2c:
  - id: bus_a 
    sda: GPIO12
    scl: GPIO13
    scan: true


#UART串口定义
uart:
   tx_pin: GPIO19
   rx_pin: GPIO18
   baud_rate: 9600
   id: uart_1
    


#Bin_LED    
light:
  - platform: binary
    name: "led"
    output: bin_led



#WS2812_RGB
  - platform: neopixelbus
    type: GRB
    variant: WS2812
    pin: GPIO4
    num_leds: 25
    name: "RGB_LED"




output:
  - id: bin_led
    platform: gpio
    pin: GPIO2 


#DHT11
sensor:
  - platform: dht
    pin: GPIO5
    temperature:
      name: "Current temperature"
    humidity:
      name: "Current humidity"
    model: DHT11
    update_interval: 10s


#SGP30
  - platform: sgp30
    i2c_id: bus_a
    address: 0x58
    eco2:
      name: "Roome eCO2"
      accuracy_decimals: 1
    tvoc:
      name: "Roome TVOC"
      accuracy_decimals: 1
    baseline:
      eco2_baseline: 0x86C5
      tvoc_baseline: 0x8B38
    #store_baseline: yes
    update_interval: 1s



#PMS5003
  - platform: pmsx003
    type: PMSX003
    pm_2_5:
      name: "PM2.5 concentration"
    uart_id: uart_1

编译.yaml文件,并生成.bin文件

烧录进ESP32

HomeAssistant

进入HomeAssistant控制台,怎么进入HomeAssistant控制台可参考前面的文章,这里不做赘述。

在浏览器输入相应的域名进入

进去后可以看到HomeAssistant的控制台已经把刚才添加的PMS5003的PM2.5测量实体更新输出了。

由于传感器还没连接到ESP32开发板上,所以上面的实体都没有数据或不可用,现在按.yaml文件里的定义接好线供电,重启一下即可获取数据。

我们这个智能家居系统的第5个外设添加完成,PMS5003用于其他环境、或者其他大小颗粒物的测量根据上文说的方法更改变量即可。

系统现状:(线有点乱)

结束

在前面的文章里,有收到一些小伙伴的反馈,说HomeAssistant的控制台在浏览器上打开是空白的,或者可以尝试重置浏览器看看是否能解决,这边用的是"扣扣"浏览器和"Chrome"打开正常,如果大家也有这样的问题可以换浏览器或者重置浏览器试一下。

相关推荐
武汉唯众智创2 天前
浅谈智能家居在智慧养老实训室中的作用
智能家居·养老实训室·智慧养老实训室
stm32发烧友2 天前
基于STM32的智能家居安防系统设计
stm32·嵌入式硬件·智能家居
凉开水白菜5 天前
米家通过HomeAssistant控制笔记本电脑开关机
python·电脑·智能家居·米家
脑极体5 天前
大模型,智能家居的春秋战国之交
智能家居
尘浮生5 天前
Java项目实战II基于Java+Spring Boot+MySQL的体育馆使用预约平台的设计与实现(源码+数据库+文档)
java·开发语言·数据库·spring boot·mysql·maven·智能家居
武汉唯众智创5 天前
软件工程技术专业在物联网应用开发中的关键技术与挑战
智能家居·软件工程技术·物联网应用开发
faec1136 天前
2024年双十一有什么好物推荐?双十一必买好物清单大揭秘
智能家居
远翔调光芯片^138287988726 天前
远翔升压恒流芯片FP7209X与FP7209M什么区别?做以下应用市场摄影补光灯、便携灯、智能家居(调光)市场、太阳能、车灯、洗墙灯、舞台灯必看!
科技·单片机·智能家居·能源
stm32发烧友7 天前
基于STM32的智能家居环境监测系统设计
stm32·嵌入式硬件·智能家居
lucy153027510797 天前
【青牛科技】GC2803:白色家电与安防领域中 ULN2803 的卓越替代者
科技·单片机·智能家居·能源·安防·开关电源·白色家电