首页 / 资讯中心 / 文章详情

让静止的人也能被“看见“:ESP32 AT581X 24GHz 雷达人体存在检测实战指南

让静止的人也能被“看见“:ESP32 AT581X 24GHz 雷达人体存在检测实战指南 ★ FEATURED ARTICLE
让静止的人也能被看见ESP32 AT581X 24GHz 雷达人体存在检测实战指南【免费下载链接】esp-iot-solutionEspressif IoT Library. IoT Device Drivers, Documentations and Solutions.项目地址: https://gitcode.com/GitHub_Trending/es/esp-iot-solution智能照明有个经典体验 bugPIR 人体传感器只在人动的时候才工作人一坐定灯就灭了。esp-iot-solution 项目里的 AT581X 人体存在检测驱动正是为了解决这个问题——用 24GHz 毫米波雷达靠胸口呼吸带来的微动看见静止的人硬件上只需两根 I2C 线加一根中断脚。本文就带着你把这个驱动跑起来并讲清楚它背后的参数模型。为什么 PIR 在人静止时会失灵PIR 检测的是红外辐射的变化量所以触发前提是运动人走进来、挥手、起身都可以。但照明场景要的是在不在你坐着不动十分钟灯也应该亮着。雷达的思路完全不同。它持续发射毫米波并接收回波而静止的人并不真的静止——胸腔随呼吸起伏这种微动量级对红外眼来说微不可见却在雷达回波上产生清晰的多普勒调制。可以类比蝙蝠靠回波变化区分扑动的翅膀和静止的树枝。AT581X 是 MoreSense 的 24GHz K 波段雷达芯片射频前端和检测逻辑都集成在片内主机侧只通过 I2C 交互。检测到人体时 OUT 脚输出高电平主机靠中断获知无需轮询。这种常开检测 中断通知模式对低功耗场景非常友好。仓库里的 AT581X 驱动组件长什么样驱动位于 components/sensors/radar/at581x/组件版本 v2.0.02025 年迁移到了 i2c_bus 总线框架。目录很精简在 at581x.h 查看公开 API 与默认配置结构体在 at581x_reg.h 查看寄存器定义和功耗/增益/频率点配置表把 at581x_test.c 直接当模板用它带 Unity 断言依赖上它要求 IDF ≥ 4.3 并引用 i2c_bus 组件^1.4.0设备地址固定为0x28。i2c_bus 的好处是 ESP32 可以在同一对 SDA/SCL 上挂多路传感器AT581X 和其他 I2C 器件可以共用一条总线功耗档位怎么选两组档位共 40–115µA雷达功耗可调寄存器文件里给了两组档位最低40µA、最高115µAA 组档位B 组档位48µA / 56µA / 63µA /70µA默认40µA / 44µA / 47µA / 51µA77µA(A) / 91µA / 105µA / 115µA54µA / 61µA / 68µA / 77µA(B)默认配置选的是 70µA。如果传感器常开比如整晚在线的安防节点选 B 组的 40µA 档能明显拉长电池寿命反之追求远距离探测就放宽到 91µA 以上。增益和 delta 怎么共同决定看多远灵敏度模型由两个参数构成这里有个容易踩的坑调节delta0–1023它是检测阈值数值越大检测距离越短。想看得远就调小想屏蔽远端误报就调大。调节gainAT581X_STAGE_GAIN_0–GAIN_C接收增益按 3dB 步进命名反直觉——数值越大增益越小、灵敏度越低。推荐区间是 GAIN_3–GAIN_9默认 GAIN_3。两个参数连同功耗档位由at581x_set_distance()一次性写入不必手动碰寄存器。三步把 AT581X 跑起来引脚配置menuconfig 里定下 3 个 GPIO测试例程在 menuconfig 中定义了三项I2C SCL默认 GPIO40、SDA默认 GPIO41和雷达中断输出脚默认 GPIO21。这三个数字是 ESP32-S3 开发板的默认值idf.py menuconfig里按你的实际接线改掉即可。创建句柄并注册中断先建总线再把默认配置宏喂给at581x_new_sensor——驱动内部会自动写齐五组参数并做软复位返回句柄后就可以注册中断了const i2c_config_t i2c_bus_conf { .mode I2C_MODE_MASTER, .sda_io_num (gpio_num_t)I2C_MASTER_SDA_IO, .scl_io_num (gpio_num_t)I2C_MASTER_SCL_IO, .master.clk_speed 100000 }; i2c_bus_handle_t i2c_bus i2c_bus_create(I2C_NUM_0, i2c_bus_conf);at581x_i2c_config_t i2c_conf { .bus_inst i2c_bus, .i2c_addr AT581X_ADDRRES_0, /* 固定 0x28 */ .int_gpio_num RADAR_OUTPUT_IO, .interrupt_level 1, /* 1 上升沿触发 */ .def_conf def_cfg, }; at581x_dev_handle_t handle; at581x_new_sensor(i2c_conf, handle);中断回调要加IRAM_ATTR驱动会把 config 指针作为 arg 传进来ISR 里只干最轻的事业务逻辑丢给任务处理static void IRAM_ATTR at581x_isr_callback(void *arg) { at581x_i2c_config_t *config (at581x_i2c_config_t *)arg; esp_rom_printf(presence, GPIO[%d]\n, config-int_gpio_num); } at581x_register_interrupt_callback(handle, at581x_isr_callback);收尾用at581x_del_sensor(handle)和i2c_bus_delete(i2c_bus)释放。完整可运行示例在 test_apps 目录带 pytest 脚本。驱动里的四个时钟如何编排触发时序默认配置ATH581X_INITIALIZATION_CONFIG()里最有信息量的是 4 个时间参数误报和漏报多半出在对它们的理解上参数默认值含义self_check_tm_cfg2000ms上电自检时间期间雷达不可用trig_base_tm_cfg500ms触发基准时间最小 500mstrig_keep_tm_cfg1500ms触发后的保持时间总触发时长 base keepprotect_tm_cfg1000ms触发结束后的保护期期间无感知功能整体节奏是上电先自检 2 秒然后持续检测。一旦检出人体OUT 脚拉高信号被保持 2 秒5001500ms避免电平抖动随后进入 1 秒休息期不做任何感知防止目标离开后的残余信号反复触发然后恢复检测。检测窗口如何过滤误报芯片内部检测是投票制一次检测采样 N 个窗口其中出现信号的窗口数达到阈值才触发。默认 4 窗口、阈值 3即4 取 3。用at581x_set_detect_window(handle, 4, 4)改成全票通过会更保守适合误报多的环境。光敏传感器是可选加餐部分 AT581X 模组内置光敏元件at581x_set_light_sensor_threshold()可以设置高/低亮度阈值还支持反转触发逻辑比如只在暗处才响应。默认关闭模组没带光敏的话这个 API 可以无视。落地调参省功率与压误报能跑起来之后调参主要围绕两个方向压功耗at581x_set_rf_onoff(handle, false)关掉射频模块还能再省约 10µA。典型策略是白天房间明亮、灯常开时直接关雷达入夜再开启——白天关、晚上开的存在检测系统几乎零负担。压误报针对误报来源比如窗帘、远处的车调大 delta 缩短有效距离或调大 gain 数值GAIN_5、GAIN_6…降低灵敏度针对其他无线设备干扰用at581x_set_freq_point()切换 VCO 频率点at581x_reg.h 给了 5.696–5.888GHz 共 12 个点挪开干扰频段即可针对偶发卡死一次at581x_soft_reset()就能恢复注意改完自检时间等参数后也必须调用它at581x_set_distance(handle, AT581X_POWER_63uA, 260, AT581X_STAGE_GAIN_5); at581x_set_detect_window(handle, 4, 4); /* 4 取 4更保守 */ at581x_set_rf_onoff(handle, false); /* 白天关闭射频 */参数稳定后建议存入 NVS重启直接恢复。整个模块的接入成本很低一个 0x28 的 I2C 设备加一根中断线真正的功夫花在实地调参上——好在这几个旋钮都以语义化 API 暴露出来不必逐条翻寄存器手册。如果你的目标是人在灯亮、人走灯灭的照明系统或者 7×24 能感知静止人体的安防节点建议先跑一遍测试例程在串口日志里盯着中断触发和时序看几轮那是校准 delta 和 gain 最快的闭环。【免费下载链接】esp-iot-solutionEspressif IoT Library. IoT Device Drivers, Documentations and Solutions.项目地址: https://gitcode.com/GitHub_Trending/es/esp-iot-solution创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站