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


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

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为前缀等

最后完成的界面如下:

配置页面

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

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

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

16 + 16 =