资讯动态

射频感知无感健康监测:从原理到工程落地的技术拆解

发布时间:2026/10/19 11:42:53 来源:尧图企业网站定制
1. 从无感监测这个词说起为什么这个方向值得关注第一次看到无需摄像头或可穿戴设备的实时健康监测这个说法我的反应是这听起来像是把两条最成熟的技术路线同时否定了。摄像头方案rPPG这类已经有不少落地产品可穿戴设备手环、手表、胸带更是铺天盖地。那第三条路是什么答案藏在射频感知这个领域里。简单说就是用无线电波去看人的呼吸、心跳和体动。人呼吸的时候胸腔会起伏心跳的时候体表会有微弱的机械振动这些微小位移会改变反射回来的电磁波特征。只要有一套发射和接收装置加上足够灵敏的信号处理算法就能从回波里把这些生命体征解调出来。这条路线的核心价值在于三个字无感化。不用戴东西不用对着镜头人在正常生活状态下就能被持续监测。对老人、婴儿、术后康复人群、以及那些戴不住设备的用户来说这个体验差异是决定性的。我关注这个方向有几年了从早期的科研demo到现在的工程化尝试踩过不少坑也见过不少被过度包装的方案。这篇就把我理解的原理、实操中的关键点、以及真正落地时会遇到什么问题尽量讲透。提示本文讨论的是射频感知类健康监测的通用技术思路不涉及任何具体品牌或产品的推荐所有参数均为原理性说明实际工程需根据场景重新标定。2. 射频感知到底在感什么物理层原理拆解2.1 从多普勒效应到相位解调射频感知的物理基础其实不复杂。发射端发出一束已知频率的电磁波遇到人体后反射回来。如果人体表面有微小运动回波频率会发生偏移这就是多普勒效应。但呼吸和心跳引起的位移非常小——呼吸大概几毫米到一厘米心跳引起的胸壁位移只有零点几毫米甚至更小。这么小的位移靠频率偏移直接测是很难的。工程上更常用的是相位解调把接收信号和发射信号做混频得到一个中频信号这个信号的相位变化和目标的距离变化成正比。位移每变化半个波长相位就变化180度。以常见的2.4GHz频段为例波长约12.5厘米半波长6.25厘米对应180度相位变化。那0.5毫米的位移对应多少相位算一下0.5mm / 62.5mm × 180° ≈ 1.44°。这个相位变化量是可以被现代接收机检测到的但前提是系统噪声要足够低。2.2 为什么呼吸比心跳好测得多这里有个很实际的工程经验呼吸信号和心跳信号的强度差了一个数量级还多。呼吸引起的胸壁位移是毫米级心跳是亚毫米级。更麻烦的是心跳信号往往被呼吸的谐波掩盖。我做过一个粗略的估算一个成年人平静呼吸时胸壁位移约5mm频率0.2-0.5Hz心跳引起的体表振动约0.2-0.5mm频率1-2Hz。虽然频率上分得开但呼吸的二次谐波0.4-1.0Hz会和心跳基频重叠。所以信号处理里必须做呼吸谐波抑制否则心率估计会周期性漂移。常见的做法是先用带通滤波把呼吸和心跳分到不同频段然后对呼吸频段做谐波分析把谐波成分从心跳频段里减掉。这个步骤在论文里经常一笔带过但实际调参时非常磨人——滤波器的阶数、截止频率、过渡带宽度每一个都会影响最终的心率准确度。2.3 多目标场景下的距离分辨问题单目标监测相对简单但真实场景往往有多个人。比如客厅里坐着两个人或者卧室里夫妻同睡。这时候就需要距离分辨能力。距离分辨靠的是宽带信号。如果发射信号带宽是B距离分辨率大约是c/(2B)c是光速。假设带宽1GHz分辨率约15厘米。这个精度足以把坐在沙发不同位置的人分开但如果两个人靠得很近比如并排坐就分不开了。调频连续波FMCW是常用的宽带方案。它通过发射频率随时间线性变化的信号把距离信息映射到频率上。做距离-多普勒二维FFT之后每个目标会形成一个峰值。但人体不是点目标胸腔、腹部、手臂的反射会形成多个散射中心峰值会展宽。实际处理时需要在距离维做峰值检测再对每个峰值做相位提取。3. 信号处理链路从原始IQ到呼吸心率3.1 IQ数据的采集与预处理射频前端输出的通常是IQ两路信号I是同相分量Q是正交分量。这两路信号合起来可以表示复信号的幅度和相位。采集时要注意几个参数参数典型值说明采样率100-1000 Hz要覆盖心跳的高次谐波至少200Hz比较稳妥本振频率2.4GHz / 5.8GHz / 60GHz频率越高对微小位移越敏感但穿透力越差发射功率受法规限制室内场景通常很低不影响健康天线配置单发单收或多发多收多发多收可以做波束成形提升信噪比预处理第一步是去除直流偏置。IQ信号里往往有一个很大的直流分量来自收发直耦和静态环境反射。这个直流不除掉后面的相位解调会严重失真。常用的方法是滑动平均减除或者用高通滤波器。第二步是相位解缠。相位解调出来的相位是包裹在[-π, π]之间的当位移超过半波长时会发生跳变。呼吸位移虽然只有几毫米但累积起来也可能超过半波长所以需要做相位解缠。解缠算法有简单的差分法也有基于最小二乘的全局法。差分法实现简单但对噪声敏感全局法更稳但计算量大。3.2 呼吸信号的提取与验证呼吸提取相对直接带通滤波0.1-0.5Hz然后做峰值检测或者FFT找主频。但有几个坑体动干扰人翻身、抬手会产生大位移淹没呼吸信号。需要做体动检测把受污染的片段剔除。呼吸暂停有些人呼吸不规律偶尔会停几秒。峰值检测如果设了固定阈值会漏检。更好的做法是用自适应阈值或者基于过零检测。胸腹呼吸不同步有些人胸式呼吸和腹式呼吸有相位差单点测量可能低估呼吸深度。多天线或者多距离单元融合可以缓解。验证呼吸准确度时我习惯用一条胸带作为参考。胸带测的是胸廓周长变化和射频测的胸壁位移不完全等价但趋势应该一致。如果两者波形对不上先检查滤波参数再检查相位解缠有没有出错。3.3 心跳信号的提取难点与对策心跳提取是整个链路里最考验功力的部分。我总结下来主要有三个难点难点一呼吸谐波干扰。前面提过呼吸的二次谐波会落在心跳频段。对策是先用自适应滤波估计呼吸的基频和谐波频率然后在心跳频段做陷波。但陷波会同时削弱心跳信号所以陷波带宽要窄通常不超过0.05Hz。难点二心跳信号微弱。亚毫米级位移对应的相位变化只有几度如果系统噪声大信噪比会很低。提升信噪比的手段包括增加积累时间但会降低时间分辨率、多天线相干合并、以及用高增益天线。难点三个体差异大。不同人的心跳引起的体表振动幅度差异很大。瘦的人胸壁薄振动传导好胖的人皮下脂肪厚振动衰减大。同一个算法在A身上准在B身上可能就差很多。所以标定环节不能省。我试过一个折中方案先用呼吸信号做粗定位确定人在哪个距离单元然后在这个单元上做长时间积累比如30秒来提取心跳。这样心率更新率低每30秒一个值但准确度明显提升。如果场景允许这是个很实用的取舍。4. 实测中那些文档不会写的坑4.1 环境反射体的影响实验室里做demo环境干净反射体少效果很好。搬到真实房间问题就来了。墙壁、家具、金属物体都会反射电磁波形成多径。多径信号和人体反射信号叠加会导致相位解调出现周期性误差。我遇到过一个典型案例房间里有台金属外壳的冰箱距离监测点约2米。冰箱的反射信号和人体信号在接收端叠加导致呼吸波形上叠加了一个约0.1Hz的慢变分量。一开始以为是呼吸不规律后来把冰箱挪走波形立刻干净了。对策有几个一是用定向天线把波束对准人体减少环境反射二是用背景减除先采集一段无人时的环境回波监测时减掉三是用多天线做空间滤波抑制非目标方向的来波。4.2 天线极化与摆放角度天线的极化方向要和人体主要运动方向匹配。呼吸主要是胸壁前后运动如果天线极化方向是垂直的而人体运动是水平的接收到的相位变化会很小。实际部署时天线通常水平极化正对人体胸部或背部。摆放角度也很关键。天线正对人体时信号最强但完全正对有时不现实比如监测睡眠时人可能侧卧。偏角在30度以内信号衰减还可以接受超过60度信噪比会明显下降。如果场景允许用两个正交摆放的天线做极化分集能提升鲁棒性。4.3 采样时钟的抖动这个坑比较隐蔽。射频前端的采样时钟如果有抖动会在相位里引入噪声。呼吸和心跳的相位变化只有几度时钟抖动如果引入1-2度的相位噪声信噪比就恶化得很厉害。选前端的时候要关注时钟抖动指标。通常晶振的相位噪声在1kHz偏移处要低于-100dBc/Hz。如果用的是低成本模块这个指标可能不达标需要在软件里做补偿或者用外部时钟源。4.4 长时间监测的漂移问题连续监测几小时会发现基线在慢慢漂移。原因可能是温度变化导致器件参数漂移也可能是人慢慢移动了位置。漂移会让原本标定好的距离单元失效。对策是定期重新标定。比如每10分钟做一次距离维扫描重新找人体峰值。如果峰值位置变化超过一个距离单元就更新监测位置。这个逻辑听起来简单但实现时要处理好状态切换的瞬态避免在切换时输出错误数据。5. 从原型到产品工程化还要跨过哪些坎5.1 功耗与散热的平衡原型阶段通常用市电供电不太考虑功耗。但产品化时如果是电池供电功耗就是硬约束。射频前端、ADC、处理器每一环都在耗电。连续发射射频信号本身就很耗电如果还要做实时FFT和解调处理器功耗也不低。我见过一个方案是用占空比发射每秒只发射100ms其余时间休眠。这样平均功耗降下来了但时间分辨率也降了。对于呼吸监测100ms的采样窗口够用对于心跳可能就偏短。折中方案是呼吸用低占空比心跳用高占空比根据场景动态切换。散热方面射频功放和处理器是主要热源。如果设备做得很小热量散不出去器件温度升高会导致参数漂移。结构设计时要留散热路径或者用低功耗器件从源头减少发热。5.2 数据隐私与本地处理健康数据是敏感数据。射频感知虽然不采集图像但呼吸和心率模式也可以用来推断人的状态比如睡眠阶段、情绪激动程度。所以数据处理最好在本地完成只上传脱敏后的结果比如呼吸正常心率偏快不上传原始IQ数据。本地处理对算力有要求。如果做实时FFT和相位解调需要一颗性能不错的MCU或者低端AP。我试过在Cortex-M4上跑简化的解调算法100Hz采样率下CPU占用约40%还有优化空间。如果用Cortex-M7或者带DSP指令集的芯片会宽裕很多。5.3 标定流程的简化实验室里标定可以很精细但产品化时标定必须简单最好用户无感。我设想的流程是设备上电后自动扫描环境找最强反射体作为候选目标然后让用户正常呼吸30秒系统自动学习呼吸模式完成初步标定。后续监测中持续自适应。这个流程的难点在于自动找目标。如果环境里有多个反射体比如椅子和人系统怎么知道哪个是人一个思路是利用呼吸的周期性只有人会呈现0.2-0.5Hz的周期性运动。系统可以对每个距离单元做频谱分析找呼吸峰最明显的单元。这个方法在单目标场景下很有效多目标场景下需要结合距离和角度信息。6. 几个常见问题的排查思路6.1 呼吸波形正常但心率一直偏高先检查呼吸谐波抑制是否到位。把呼吸信号做FFT看二次谐波幅度。如果二次谐波幅度和心跳基频幅度相当那心率估计很可能被拉高了。对策是加强谐波抑制或者换用基于包络的心率估计方法。另一个可能是体动干扰。人在监测期间有小幅移动比如手指动、脚动这些运动会引入高频成分被误判为心跳。检查原始相位信号看有没有突变的尖峰。如果有加一个体动检测模块把受污染片段剔除。6.2 不同距离单元的心率不一致如果多个距离单元都检测到心跳但心率值不一样说明有多个散射中心在贡献信号。可能是胸壁和腹壁的振动不同步也可能是手臂或衣服的反射。对策是选信噪比最高的单元作为主单元其他单元做参考用加权融合。如果主单元的心率和其他单元差异很大要怀疑主单元选错了。重新做距离维扫描确认人体峰值位置。6.3 长时间监测后数据中断检查是不是发生了距离单元漂移。如果人体慢慢移动原本的监测单元可能失效。对策是加一个周期性重扫描机制每5-10分钟重新定位。另一个可能是缓冲区溢出。长时间监测会产生大量数据如果缓冲区管理不当可能会丢数据。检查数据流的水位确保消费速度跟得上生产速度。7. 这个方向接下来还能怎么玩射频感知健康监测目前还在快速演进。我看到的几个有意思的方向多模态融合。射频感知和声音感知、压力传感结合互相验证。比如床垫里埋压力传感器测体动射频测呼吸心跳两者融合可以提升准确度。边缘智能。把更多算法下沉到设备端减少对云端的依赖。这样响应更快隐私也更好。但边缘设备的算力有限需要做模型压缩和算法简化。个性化基线。每个人的呼吸心率模式不同用一段时间的数据建立个人基线之后监测偏离基线的程度而不是绝对值。这样对个体差异更鲁棒。场景扩展。除了卧室和客厅车载场景也很有意思。驾驶员的心率和呼吸可以反映疲劳程度射频感知不需要接触适合车载环境。但车内有振动和多人干扰挑战不小。我在实际项目里体会最深的一点是射频感知的硬件门槛在降低但算法和标定的门槛在升高。买一套前端很容易但要让它在真实场景里稳定工作需要大量的调参和验证。如果你打算入这个方向建议先把信号处理链路吃透再考虑硬件选型。算法不通再好的硬件也白搭。最后分享一个小技巧做实验时养成记录环境状态的习惯。温度、湿度、房间布局、人员位置这些看似无关的因素往往在排查问题时能提供关键线索。我有一次调了一整天算法没进展最后发现是空调出风口对着天线吹温度变化导致相位漂移。把空调关掉问题立刻消失。这种坑文档里不会写但实际做项目时一定会遇到。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑