搭建个人智能家居 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"打开正常,如果大家也有这样的问题可以换浏览器或者重置浏览器试一下。

相关推荐
唯创知音1 天前
人体红外感应模块推荐:智能家居、电子门锁、洗浴设备方案
智能家居
三佛科技-134163842122 天前
FT32F103系列与APM32F103,STM32F103之间的对比,能否替换?
单片机·嵌入式硬件·物联网·智能家居·pcb工艺
深念Y2 天前
状态缓存与TTL:给每个设备状态贴一张“保质期”
数据库·缓存·智能家居·时间·时间戳·智能电视·ttl
电子科技圈2 天前
SmartDV展示完整的边缘与连接IP解决方案,以高速和低功耗特性赋能移动、物联网和媒体处理设备创新
人工智能·嵌入式硬件·mcu·物联网·智能家居·智能硬件·iot
唯创知音4 天前
主动红外和被动红外在智能家居中如何选择?
人工智能·智能家居
电子科技圈4 天前
芯科科技2026 Tech Talks技术讲座启航聚焦无线与边缘 AI,共绘智能物联新蓝图
人工智能·嵌入式硬件·mcu·物联网·智能家居·智能硬件·iot
cici158746 天前
智能家居室内WIFI报警系统设计
智能家居
hoiii1876 天前
智能家居继电器控制与蓝牙4.0开发
智能家居
点灯小铭6 天前
基于单片机的智能家居门铃系统设计
单片机·嵌入式硬件·毕业设计·智能家居·课程设计·期末大作业
天泽恒晟8 天前
适老化到适我化—摄像头的选择
科技·信息可视化·生活·智能家居·交互