Reading view

There are new articles available, click to refresh the page.

打造可识别静态人体的人体传感器——使用效果


以下方法经本人验证通过,环境如下:

群晖 DS918+ DSM 6.2.4

mosquitto version 2.0.11

Home Assistant 0.91.4


前言:大部分人入门智能家居之处,最早接触的就是人体传感器,实现简单的如人来开灯,人走关灯的需求。我也不例外,家里各个房间布满了小米或绿米的人体传感器。

但市面上这类传感器因工作原理的原因,实际根本无法识别静态的人体。所以这类传感器只能叫人体移动传感器,算不上是真正意义上的人体存在传感器,导致在很多场景下具有天然的缺陷。

举例说明:人坐在书房看书,保持一段时间禁止后,就会被识别为无人状态,然后灯就关了!同理厕所蹲的时候也会有这种尴尬,人工智能变智障。

网上各种解决方案也有,但都治标不治本,不是我想要的完美方案。因此,我决定自己创造一个!

在之前的文章中,我描述了自己是如何构思设计,选择硬件并编码实现的,这篇文件简要介绍下实际是如何使用的

先上效果

第一步:连接本地网络和MQTT服务

首先,最终的人体传感器如下图所示,是一个小方盒子,尺寸是45mm * 47mm * 36mm 。盒子的正面(传感器一方)有状态指示灯的位置,我做了个小小的LOGO。一边的侧面是电源接口及重置按钮。

接入电源后,系统启动,首次使用时候,系统会自动生成一个WIFI热点,名称以FEEUS_开头,无密码。使用手机连接该WIFI后会打开设置页面。如果没有自动打开设置页面,也可以通过手机的浏览器,在地址栏输入 192.168.4.1 打开。打开后页面如下图所示

点击“网络设置”进入设置页面,如下图所示

页面上方会列出当前范围内可连接的WIFI,如果没有出现你需要连接的WIFI,可将人体传感器靠近家中的路由器后点击“刷新WIFI列表”即可

然后点选要连接的WIFI名称,该名称会自动填写到WIFI SSID处,输入该WIFI的密码

在下方的MQTT设置中,输入你的MQTT服务端地址,端口。如果你和我一样是支持匿名登陆的,用户名密码置空即可,否则,输入有效的用户名和密码。

最后,自定义设置你的主题,最好能标识该设备的位置,例如“study”或者“toilet”之类的。

设置完成后,点击保存按钮。系统会提示保存成功并重启。重启后系统会自动连接你设置的WIFI和MQTT服务。

如果因设置错误连接失败,或者你更改了网络环境需要重新配置,设备会闪灯提示网络连接异常。此时可长按(5秒)重置按钮,系统会清除原有设置,重新生成WIFI热点,再次连接后按上述方法重设即可。

第二步:如何配置HomeAssistant(可选)

在HomeAssistant配置文件中按如下配置即可

binary_sensor:
  - platform: mqtt
    name: "human_sensor_study"
    state_topic: "study"
    payload_on: "1"
    payload_off: "0"
  • name : 自定义一个名称
  • state_topic :这个要填写你在第一步中配置的“主题”

保存配置后重启服务,即可看到该二元传感器及状态

第三步:如何配置Node-Red(可选)

拖入一个mqtt输入节点,双击后可添加新的mqtt-broker节点

在编辑页面输入节点的名称,服务端地址,端口,如果不支持匿名登陆,则在安全选项卡中填入用户名密码

保存后选择刚刚添加的mqtt服务,填入主题,这个主题就是你在第一步配置的“主题”,例如“study”

保存后,即可看到连接状态,如果需要展示接收到的信息,添加一个debug输出即可。

第四步:Node-Red中常用的联动设置(可选)

这里我以最常用的控制灯光为例写了一个流,供参考

思路为:当收到传感器信息后,判断是有人还是无人,如果有人,开灯,同时将一个变量设置为有人;当收到传感器信息为无人时,先将变量改为无人,然后等待48秒(人离开时候,传感器确认无人约需1分12秒。设置为48秒的意思就是人离开2分钟后自动关灯),48秒后如果变量还是无人,那么就关灯。如果在等待过程中有人进入,那就触发了上一个流程,变量变为了有人,自然就不会关灯了。

  • 至此,我整个DIY人体存在传感器的过程就结束了,该小设备我放在书桌前已经稳定运行了3个月,从此再也不会出现静止看书的时候关灯的情况了
  • 如果你也有兴趣DIY一个,可参考我的文章,如果你不想自己花时间或设备不足,也可以直接使用我制作的成品,地址是:淘宝链接 感谢你的支持!

如果您喜欢这篇文章,或者它给您带来了帮助,您可以请我们喝一杯咖啡,我们将非常感谢您的支持!

打造可识别静态人体的人体传感器——软件部分


以下方法经本人验证通过,环境如下:

Arduino IDE 1.8.15

PubSubClient 2.8.0

WiFiManager 2.0.4


前言:大部分人入门智能家居之处,最早接触的就是人体传感器,实现简单的如人来开灯,人走关灯的需求。我也不例外,家里各个房间布满了小米或绿米的人体传感器。

但市面上这类传感器因工作原理的原因,实际根本无法识别静态的人体。所以这类传感器只能叫人体移动传感器,算不上是真正意义上的人体存在传感器,导致在很多场景下具有天然的缺陷。

举例说明:人坐在书房看书,保持一段时间禁止后,就会被识别为无人状态,然后灯就关了!同理厕所蹲的时候也会有这种尴尬,人工智能变智障。

网上各种解决方案也有,但都治标不治本,不是我想要的完美方案。因此,我决定自己创造一个!

第一步:选择所需软件库

在之前的文章打造可识别静态人体的人体传感器——方案设计中,我列举了对软件方面的需求。同时,在上一篇文章 打造可识别静态人体的人体传感器——硬件部分 中,我结合需求,MCU选择了ESP-01S。结合自己想要达到的目标,选择了Arduino的以下库,在此对原作者表示感谢:

第二步:编码

这里我使用的是原生的 Arduino IDE 进行编码,参考WiFiManager的示例程序,完成了WiFi的配置、MQTT服务器参数以及主题的配置并将配置保存在ESP闪存中,确保断电有效。同时支持长按微动开关可清除所有配置。

MQTT部分利用PubSubClient连接到本地的mosquitto (如何在本地搭建MQTT服务可参考这篇文章)进行消息发布

接着根据微波雷达模块的通讯协议,写了一个解析函数,在状态发生改变时候(有人变无人或无人变有人)通过MQTT发布消息到服务端。

部分编码

第三步:测试和优化环节

写好的代码进行反复多次测试,对发现的问题进行修复,确保稳定

第四步:汉化和个性化调整

初始的配置界面为英文界面,因此在系统调试完毕后,做手对界面进行了汉化,以及增加了部分个性化调整,例如将WiFi的名称调整为以FEEUS为前缀等

最后完成的界面如下:

配置页面

  • 接下来,写一篇使用说明以及实际效果演示,感谢关注!

如果您喜欢这篇文章,或者它给您带来了帮助,您可以请我们喝一杯咖啡,我们将非常感谢您的支持!

打造可识别静态人体的人体传感器——硬件部分

前言:大部分人入门智能家居之处,最早接触的就是人体传感器,实现简单的如人来开灯,人走关灯的需求。我也不例外,家里各个房间布满了小米或绿米的人体传感器。

但市面上这类传感器因工作原理的原因,实际根本无法识别静态的人体。所以这类传感器只能叫人体移动传感器,算不上是真正意义上的人体存在传感器,导致在很多场景下具有天然的缺陷。

举例说明:人坐在书房看书,保持一段时间禁止后,就会被识别为无人状态,然后灯就关了!同理厕所蹲的时候也会有这种尴尬,人工智能变智障。

网上各种解决方案也有,但都治标不治本,不是我想要的完美方案。因此,我决定自己创造一个!

第一步: 硬件准备

在上一篇文章打造可识别静态人体的人体传感器——方案设计中,对所需硬件进行了分析,最终结合软件需求,选择了如下硬件模块:

  • 主传感器使用一块存在感应的微波雷达模块
  • MCU选择了满足需求下尺寸较小的ESP-01S
  • 供电模块使用 MICRO USB母座 转DIP2.54mm直插模块
  • 重置按钮选用一个6*6*5mm的微动开关

先来个合影:

从左到右:微波雷达模块,ESP,微动开关,MICRO USB模块

第二步:可行性测试验证

这一步主要是对微波雷达模块进行测试,依据厂家提供的产品规格说明书,我使用CP2012USB转串口模块连接电脑后进行了调试,确保该模块可达到对动态及静态人体的识别和通讯。由于不同的模块规格和协议不同,此处就不单独展开说明了。

此外,对ESP-01S、供电方案也进行了测试,确保该方案可行。

第三步:外壳设计建模

外壳上,按方案使用3D建模软件做成了小方盒的样式,对所有硬件进行简单建模后,进行摆放设置,由于自己使用的是一台入门的FDM 3D打印机,精度一般般,前前后后做了十几个版本,最终形成了一个基本达到要求的模型。

人体存在传感器外壳设计
人体存在传感器外壳设计
人体存在传感器外壳打印

第五部:愉快的手工环节

由于所有模块都是单独购买来DIY,所以免不了手工环节。作为一个老小孩,这个环节是我最喜欢的,万用表、焊台、热熔胶枪齐上阵

焊接模块

最终成品效果如下,虽然3D打印的效果无法达到完美,和工业生产确实有一定差距,但总体来说还是令我满意的:

完成效果
  • 下一篇就是磨人的编码和调试环节,感谢持续关注!

如果您喜欢这篇文章,或者它给您带来了帮助,您可以请我们喝一杯咖啡,我们将非常感谢您的支持!

打造可识别静态人体的人体传感器——方案设计

前言:大部分人入门智能家居之处,最早接触的就是人体传感器,实现简单的如人来开灯,人走关灯的需求。我也不例外,家里各个房间布满了小米或绿米的人体传感器。

但市面上这类传感器因工作原理的原因,实际根本无法识别静态的人体。所以这类传感器只能叫人体移动传感器,算不上是真正意义上的人体存在传感器,导致在很多场景下具有天然的缺陷。

举例说明:人坐在书房看书,保持一段时间禁止后,就会被识别为无人状态,然后灯就关了!同理厕所蹲的时候也会有这种尴尬,人工智能变智障。

网上各种解决方案也有,但都治标不治本,不是我想要的完美方案。因此,我决定自己创造一个!

一: 人体存在感应技术选型

要做这个存在传感器,最最核心的,自然就是如何判断人体存在(含静止状态),经过研究后,决定选择毫米波雷达传感技术的芯片

二:通讯协议的选择

获取到人体存在的信息后,如何通知家庭的智能中枢,以实现和其他设备的联动呢,蓝牙?还是Zigbee?显然都不如物联网通用的MQTT协议更优,配合WIFI,无论是Homeassistant、Node-red还是其他软件,都可轻松实现接入。

三:供电方案

考虑到芯片耗电量,采用电池供电会导致待机不足。加上传感器一般都是固定位置,没有太强的移动需求,因此最后决定使用电子设备通用的直流5V供电,接口采用比较常见的MICRO USB。这样随便一个常规的充电头加一根充电线即可给设备供电。

四:外壳设计

外壳初步考虑采用方形设计,以便于随处摆放。使用3D建模软件结合硬件设计后,使用3D打印机打印。

五:软件需求

软件方面需求就比较多了,简单梳理下来有如下几点

  • 应该支持支持AP模式,这样初始化的时候,可以通过手机直连设备的wifi,进行配置
  • 可配置的内容应该保存WIFI网络(ssid,密码),MQTT参数(包括服务地址,端口,用户,密码,以及用于发布是否有人状态的主题)应该支持MQTT的匿名登陆
  • 配置完毕后应该可存储在设备内,重启和断电后无须再次配置
  • 配置完毕后,会自动根据配置连接WIFI和MQTT服务
  • 设备启动后,会不断循环的监控人体存在的情况,状态变化时,通过MQTT服务发布消息
  • 如果网络环境发生了变化,应该可以重置之前的配置,并重新启动AP模式供更新配置
  • 如果当前网络无法连接或MQTT服务连接不上,可通过指示灯闪烁的方式进行提醒

整体方案如下:

Feeus人体存在传感器设计思维导图
  • 接下来结合方案选择硬件,进行初步的可行性测试后设计外壳

如果您喜欢这篇文章,或者它给您带来了帮助,您可以请我们喝一杯咖啡,我们将非常感谢您的支持!

❌