当前位置: 首页 > news >正文

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

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

  • 前言
  • 说明
  • PMS5003
  • ESPHome
  • HomeAssistant
  • 结束

前言

到目前为止,我们这个智能家居系统添加了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串口时需要主要些参数,默认是一样的不需要改。
以下是串口定义的代码:

#UART串口定义
uart:tx_pin: GPIO19rx_pin: GPIO18baud_rate: 9600id: uart_1

定义的是软件UART,IO口可改,只要IO口可以正常读写高低电平就可以。
注意,id不能是数字开头
PMS5003可以输出PM1.0-PM10的数据,由于在室内使用,所以只输出大气环境下PM2.5浓度数据
PMS5003输出PM2.5数据代码:

#PMS5003- platform: pmsx003type: PMSX003pm_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: +数字来控制数据更新间隔。
这里不做演示,有需要的可以自行更改。

目前项目整合代码:

captive_portal:#I2C总线定义
i2c:- id: bus_a sda: GPIO12scl: GPIO13scan: true#UART串口定义
uart:tx_pin: GPIO19rx_pin: GPIO18baud_rate: 9600id: uart_1#Bin_LED    
light:- platform: binaryname: "led"output: bin_led#WS2812_RGB- platform: neopixelbustype: GRBvariant: WS2812pin: GPIO4num_leds: 25name: "RGB_LED"output:- id: bin_ledplatform: gpiopin: GPIO2 #DHT11
sensor:- platform: dhtpin: GPIO5temperature:name: "Current temperature"humidity:name: "Current humidity"model: DHT11update_interval: 10s#SGP30- platform: sgp30i2c_id: bus_aaddress: 0x58eco2:name: "Roome eCO2"accuracy_decimals: 1tvoc:name: "Roome TVOC"accuracy_decimals: 1baseline:eco2_baseline: 0x86C5tvoc_baseline: 0x8B38#store_baseline: yesupdate_interval: 1s#PMS5003- platform: pmsx003type: PMSX003pm_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”打开正常,如果大家也有这样的问题可以换浏览器或者重置浏览器试一下。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【.NET全栈】ASP.NET开发Web应用——站点导航技术
  • 操作系统发展简史(Unix/Linux 篇 + DOS/Windows 篇)+ Mac 与 Microsoft 之风云争霸
  • 【BUG】已解决:raise KeyError(key) from err KeyError: (‘name‘, ‘age‘)
  • 学习SQL权限管理的基础知识
  • 查询优化 -- UNION 用法
  • 路由数据获取及封装方法
  • 数据结构(Java):力扣牛客 二叉树面试OJ题(一)
  • FFmpeg学习(五)-- libswresample使用说明及函数介绍
  • C# 4.List
  • Linux——多路复用之select
  • 深度解析:在 React 中实现类似 Vue 的 KeepAlive 组件
  • Apache BookKeeper 一致性协议解析
  • CTF-Web习题:[HFCTF2021]Unsetme
  • uniapp踩坑之项目:uni-table垂直居中和水平居中
  • 计算机视觉8 图像增广
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 【刷算法】求1+2+3+...+n
  • Flex布局到底解决了什么问题
  • github指令
  • python docx文档转html页面
  • python_bomb----数据类型总结
  • React16时代,该用什么姿势写 React ?
  • SQLServer之索引简介
  • 今年的LC3大会没了?
  • 每天一个设计模式之命令模式
  • 你真的知道 == 和 equals 的区别吗?
  • 前端面试总结(at, md)
  • 实现简单的正则表达式引擎
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 微信公众号开发小记——5.python微信红包
  • 我感觉这是史上最牛的防sql注入方法类
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • ​14:00面试,14:06就出来了,问的问题有点变态。。。
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ‌U盘闪一下就没了?‌如何有效恢复数据
  • # 移动硬盘误操作制作为启动盘数据恢复问题
  • (Java入门)抽象类,接口,内部类
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (NSDate) 时间 (time )比较
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (二)Linux——Linux常用指令
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (十一)图像的罗伯特梯度锐化
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • .bashrc在哪里,alias妙用
  • .htaccess配置重写url引擎
  • .mysql secret在哪_MySQL如何使用索引
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .net快速开发框架源码分享