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

相关推荐
三佛科技-134163842123 小时前
迷你取暖器MCU方案,迷你暖风机方案分析
单片机·嵌入式硬件·智能家居·pcb工艺
商业数据派4 天前
从IFA展会看MOVA的“全维进阶”如何重新定义智能家居边界
智能家居
DS小龙哥5 天前
基于STM32F103C8T6的智能家居健康环境监测系统
stm32·嵌入式硬件·智能家居
MYZR15 天前
智能家居芯片:技术核心与创新突破
人工智能·智能家居
殷忆枫5 天前
基于STM32的智能家居环境监控系统设计
智能家居
CC呢6 天前
基于单片机智能家居环境检测系统/室内环境检测设计
stm32·单片机·嵌入式硬件·物联网·智能家居
极客小张6 天前
【项目思路】基于STM32+ZigBee的智能家居--浴室场景设计
c语言·python·stm32·智能家居·课程设计·项目设计·企业项目
CC呢7 天前
基于单片机智能家居语音控制系统
单片机·嵌入式硬件·智能家居·单片机设计
殷忆枫7 天前
基于STM32的智能家居语音控制系统设计
stm32·嵌入式硬件·智能家居
点灯小铭9 天前
基于STM32单片机智能家居声音人体防盗GSM短信报警系统设计
stm32·单片机·毕业设计·智能家居·课程设计