很久没更新博客了,最近发生了很多事情,又经常加班,断更是不会断更的,博客会一直更新下去。


本篇文章介绍如何使用最便宜的ESP01 + SR501人体红外传感器,接入HomeAssistant ,实现APP/Siri 控制、识别。成本不到10块钱 = =、

SR501 就是下面图片这种,带透镜,可以多方位180度感应。
101093750.jpg

 这种传感器是5V供电,输出3.3V高电平,它有两种触发模式:

  • 1、当检测到有人活动时,会持续输出高电平,等延时时间一结束就变为低电平,(楼梯电灯就是这个模式);
  • 2、当检测到有人活动时,会输出高电平,在延时时间段内,如果有人体在其感应范围活动,将一直保持高电平输出,直到人体离开检测范围,才输出低电平。感应模块检测到人体的每一次活动后会自动顺延一个延时时间段,并且以最后一次活动的时间为延时时间的起始点,(电梯的红外感应就是这种模式

这里需要使用第2种模式,原理是:通过ESP 监测模块输出引脚,当有高电平时(即有人活动时),触发相应动作,比如控制一个电灯开启。有的朋友搞这个模块的时候会遇到频繁触发的问题,其实就是选错了模式。

话不多说,上代码:

此处内容需要评论回复后(审核通过)方可阅读。

上面程序用到自动化模板控件Template,它的作用在于触发红外传感器时,能够自动将继电器打开 ,延时一段时间后自动关闭,如果光使用relay,是达不到自动关闭的效果的。

目前只测试了下自动延时的效果,其实还可以改成if_elsewhilewait_until的触发模式,也就是说,不需延时,只要检测到人体就一直保持触发状态,让继电器一直闭合(这里需要将红外模块设置成连续触发模式)

这个可以用于卫生间、起床小夜灯的场景,当检测到人体活动时,一直保持触发状态,让灯一直开着。

下面以if_else代码为例:

此处内容需要评论回复后(审核通过)方可阅读。

(注:这段代码我没有测试验证,写得比较匆忙,待验证 = =)

最后提个醒,红外模块最低供电电压是5v3.3V是带不动的,ESP01需要3.3V供电,所以转换一下电压才能接上去。

接入HA的图忘了截,回头补上

最后修改:2020 年 05 月 15 日
您的支持就是我持续更新的动力!