当前位置: 华文星空 > 财经

铺设智能家居,有哪些传感器和感应器是值得安装的?

2021-04-20财经

前边的esphome教程里讲过怎么使用esp-01s制作智能开关、智能彩灯控制器、温湿度检测仪、土壤湿度检测仪等等,今天呢我们再讲讲人体传感器。

目前主流的人体传感器检测元件不外呼红外和微波两种,像安防系统中用到的双鉴探头、多元三鉴探头,都是用的这个。下图就是被动红外模块和微波模块。

PS:讲解下被动红外的概念,探测器本身不发射任何能量而只被动探测、接收来自环境的红外辐射。一旦有人体红外线辐射进来,经光学系统聚焦后热释电器件就会产生突变电信号。与被动红外相对应的是主动红外,安防中用的红外对射就是主动红外。

该红外传感器是5V-12V供电,输出3.3V高电平(切记不要使用3.3V供电,会带不起来),它有两种触发模式:

1、当检测到有人活动时,会持续输出高电平,等延时时间一结束就变为低电平(公共区域的感应照明就是这个模式);

2、当检测到有人活动时,会输出高电平,在延时时间段内,如果有人体在其感应范围活动,将一直保持高电平输出,直到人体离开检测范围,才输出低电平(感应模块检测到人体的每一次活动后会自动顺延一个延时时间段,并且以最后一次活动的时间为延时时间的起始点)。

PS:我们需要用到的是模式2,原理:通过ESP 监测模块输出引脚,当有高电平时(即有人活动时),触发相应动作(比如控制一个灯开启;夜间触发报警)。

话不多说,上代码:

esphome: name: pir_sensor ##这里的名称一定要与你建立这个模块时的名称相同; platform: ESP8266 ##这里不能变; board: esp01_1m ##这里不能变; wifi: ssid: "test-wifi" ## wifi账号; password: "12345678" ## wifi密码; manual_ip: static_ip: 192.168.123.198 ##固定此设备IP地址为192.168.123.198; gateway: 192.168.123.1 ##路由器、网关地址; subnet: 255.255.255.0 ##子网掩码; # Example configuration entry debug: # Logger must be at least debug (default) logger: level: debug # Enable Home Assistant API api: password: "1" ## api密码,用于链接ha验证; ota: password: "1" ## ota密码,用于后续在线升级; web_server: ## web控制,添加了这2行,就可以在网页端打开设备ip; port: 80 switch: - platform: gpio name: "PIR light relay" pin: GPIO2 ##使用GPIO-0 id: relay binary_sensor: - platform: gpio pin: GPIO0 ##使用GPIO-0 name: "PIR Sensor" device_ class: motion ##传感器类型 id: pir_motion ##设置传感器ID on_press: ##如果触发,则执行继电器开合的动作 - switch.turn_on: relay - platform: template ##引入自动化模板 name: temp_motion ##模板名称 lambda: 'return id(pir_motion).state;' filters: - delayed_off: 2min ##若触发红外传感器,则延时2min后关闭继电器 on_release: - switch.turn_off: relay

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

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

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

下面以if_else代码为例:

##前面配置部分省略 switch: - platform: gpio name: "PIR light relay" pin: GPIO2 ##使用GPIO-0 id: relay binary_sensor: - platform: gpio pin: GPIO0 ##使用GPIO-0 name: "PIR Sensor" device_ class: motion ##传感器类型 id: pir_motion ##设置传感器ID on_press: ##如果触发,则执行继电器开合的动作 - switch.turn_on: relay - platform: template ##引入自动化模板 name: temp_motion ##模板名称 on_press: then: - if: condition: lambda: 'return id(pir_motion).state;' then: - logger.log: "Detected somebody activity" - switch.turn_on: relay ##这里也可以加延时语句,这样就跟上面的一样了 else: - logger.log: "There is no one around" - switch.turn_off: relay


如果只是单纯当人体传感器,用来当安防探头用的话,直接这样写就好:

binary_sensor: - platform: gpio pin: GPIO0 ##使用GPIO-0 name: "PIR Sensor" device_ class: motion

PS:当然你按最后这个写,然后在homeassistant的自动化中再关联灯也是可以的。总之「条条大道通罗马」。

烧录及homeassistant中的操作见前边的文章。下边为homeassistant中的显示情况。

PS:上述模块,可单用一个,也可以两个都有(两个都用会更准确,减少误报率)。

本人实际使用中,发现蹲厕所时,总是要动一下才行。本来出个恭,结果顺带打了一套太极拳;这种事情「是可忍,孰不可忍也」。于是我又用了下边这个模块,毫米波雷达。

PS:人体存在感应器就用的这玩意儿,不过那个频率更高,79G的(人体存在感应器就是人在微动的情况下就能检测到,比如呼吸时)。

涂鸦智能和绿米是有成品卖的,价格在400多。不过这个模块也不便宜,见下图。

PS:关于esphome系列,目前先讲到这里吧;如果后续有太另类的东西,再开讲吧。

-- -- -- -- -- -- END -- -- -- -- -- --

我是小白,智能家居爱好者、一卡通行业从业者、曾经的建筑智能化从业者。致力为开源智能家居平台添砖加瓦。