壁挂式人体存在雷达传感器与常见红外传感器的关键区别在于:它能探测微动(如呼吸、心跳),解决“人静止不动时误判为无人”的痛点,是实现真正的“人走断电”而非“人不动断电”的核心。以下方案基于芯步开放接口,以创客工坊为视角,完整呈现从设备配网到软件对接的全流程。
1. 背景与原理分析
在很多DIY项目和智能家居场景中,我们常常面临一个痛点:人坐在工位上不动,灯却灭了;或者明明还在卫生间,感应灯却因为感应不到大动作而熄灭。传统的红外传感器(PIR)检测的是“移动”,对静止或微动的人体无能为力。
本项目采用芯步的毫米波雷达传感器,它基于FMCW(调频连续波)技术,能够检测到人体呼吸引起的胸腔起伏。这意味着无论你是坐着敲代码、躺着休息,雷达都能精准识别“有人存在”。
核心逻辑
检测到人:继电器闭合,设备通电/保持通电。
持续无人(如30秒):继电器断开,设备断电。
特性:不依赖外部网关,直连WiFi,拥有开放的HTTP API。
2. 硬件准备与接口特性
2.1 设备选型
推荐使用芯步 “智能人体存在雷达传感器[壁挂]” 双模版或纯雷达版。与吸顶版不同,壁挂版适合安装在墙壁侧面,高度在1.5m-2m,探测范围呈扇形,角度约120°,最远可探测6米内的运动。
2.2 核心接口开放能力
芯步的这类传感器最大的优势是开放了底层API,无需复杂的嵌入式固件开发
上行(数据上报):传感器检测到有人/无人时,主动向你的服务器发送HTTP POST请求。
下行(远程控制):你的服务器可以向传感器下发指令(如重启、设置灵敏度、控制继电器通断)。
私有化部署:完全支持局域网内通信(LAN),无需暴露在公网,延迟更低(约80-120ms)。
2.3 安装接线
如果传感器带有继电器输出版,直接串联在用电设备(如3D打印机、排风扇、照明灯)的火线上。如果是纯传感版,后续我们将通过软件逻辑控制智能插座。
安装环境注意事项:雷达波能穿透石膏板,但会被金属遮挡。安装时避免对着空调外机、摇晃的窗帘或风扇,因为这些物体的摆动会产生多普勒效应,引起误判。
3. 软件设计
为了实现“将设备接入软件项目”,我们需要搭建一个中间层服务。整体架构分为三层:
传感层(设备端):壁挂雷达传感器。负责采集数据,上报状态,执行断电指令。
服务层(云端/本地服务器):核心逻辑区。
接收Webhook:接收传感器上报的“有人/无人”事件。
状态机管理:维护当前状态。例如:收到“无人”信号后,不立即断电,而是开启30秒倒计时(防抖),若倒计时结束仍无“有人”信号,则发送断电指令。
API鉴权:处理芯步的Sign签名(MD5加密)。
执行层/前端:可以是数据库记录(用于统计工位利用率),也可以是Web界面的实时状态卡片。
4. 详细对接步骤
步骤一:设备配网与注册
拿到传感器后,通过它的AP热点模式(或扫码配网),将其连接到工坊的2.4G WiFi网络。设备成功联网后,在芯步开发者后台获取两个关键凭证:
AppID:你的应用标识。
AppSecret:用于计算签名的密钥。
Device ID:这台传感器的唯一ID。
步骤二:配置上报地址(Webhook)
这一步是将传感器的“嘴”对准你的“耳朵”。在控制台设置“消息推送URL”,例如:http://你的服务器IP:8080/api/radar/callback。同时,这个设备支持设置多组WiFi和自定义服务器地址,甚至能在纯局域网下工作,适合对数据隐私要求较高的创客工坊。
当有人状态变化时,设备会向该地址发送如下格式的JSON数据:
步骤三:服务端逻辑实现(Python/Node.js示例)
你需要写一个简单的HTTP服务。以下以Python Flask为例,展示如何处理防抖逻辑。
核心难点:签名生成芯步的API安全性要求每次请求需携带签名,签名的生成规则为 md5(md5(AppSecret) + ts)。虽然接收数据不需要签名,但如果你需要服务器主动查询设备状态或下发命令,需要按照此规则生成Sign。
接收与决策逻辑(伪代码)
步骤四:人走断电的执行
既然是“人走断电”,关键在执行层。如果你购买的是带强电继电器版的传感器,执行命令非常简单:
指令下发:服务器向API接口发送POST。
地址
https://api.thingboot.com/{AppId}/device/control/?sign={sign}&ts={ts}Body
{"device":"设备ID","order":{"power":0}}(0=断电,1=通电)
如果是普通传感版,你可以配合一个支持API的智能排插(如基于ESP8266自制的排插),逻辑是一样的——服务器收到“无人”信号后,调用排插的API关闭电源。
5. 前端可视化展示(创客工坊仪表盘)
为了让软件项目看起来更完整,你可以在前端做一个简单的“工坊能量中心”看板。
5.1 实时状态映射
通过WebSocket(或简单的定时轮询)将服务器状态推送到前端界面。
当状态为 Occupied 时,页面上的雷达波纹图标动态闪烁,显示“设备供电中”。
当状态为 Vacant 且倒计时进行中,显示一个进度条“30秒后自动断电”。
5.2 数据统计
利用上报的数据,记录每个人体存在传感器触发的时长。例如:
“3号工位今日利用率:8小时32分钟”。
“焊接工作台闲置超过1小时,已自动切断电源”。
6. 常见问题与优化
6.1 误判与漏判
问题:明明没人,雷达却显示有人。
排查:检查雷达背后是否有空调外机或风扇。毫米波雷达对振动极其敏感,必须固定牢靠。
解决:在软件层面,可以增加“置信度”逻辑,或者利用芯步接口中的灵敏度参数(如果支持)调低探测范围。
6.2 网络延迟
由于涉及“传感器 -> 服务器 -> 传感器”的闭环,公网方案可能会有1-2秒延迟。为了极致的“人走灯灭”体验,采用局域网私有化部署。将服务端部署在工坊的树莓派或NAS上,利用局域网API通信,延迟可控制在毫秒级。
7. 总结
通过将芯步的壁挂雷达传感器接入你的软件项目,你不仅实现了一个简单的“人走断电”节能装置,更构建了一个空间 occupancy 感知系统。这套系统的核心价值在于:
真正的存在检测:解决了传统红外传感器“坐着一动不动就熄灯”的尴尬。
软硬解耦:利用标准HTTP协议,使得不懂嵌入式编程的Web开发者也能轻松玩转硬件。
场景扩展:同样的接口,稍加改造就可以实现“检测到人播放欢迎词”、“安防入侵报警”等功能,非常适合作为创客工坊的综合练手项目。
最后,在部署时请严格遵守强电安全规范,如果是纯软件层面的对接,配合低压LED灯带或USB设备进行调试,确认逻辑无误后再接入220V设备。