会看见心跳,到底是什么个鬼?
我把一只旧手环拆了,想看看背面的绿光到底在干什么

抽屉里翻出一只三四年前的手环,屏幕已经花了,充电触点也氧化了。闲着没事,拿螺丝刀把它撬开了。
背面那块透明窗口下面,一块很小的绿色PCB,上面焊着LED和一颗不到指甲盖大的黑色芯片。我盯着它看了很久——就这么点东西,每天亮几下绿光,就能算出我的心跳。它到底是怎么做到的?
于是花了几个晚上翻了点资料,把这件事大致弄明白了。写下来,算是一点拆机之后的“后知后觉”。

一、它不是在“听”心跳,是在“看”血流
以前我以为手环测心率是某种压力感应,贴着皮肤就能感知脉搏。拆开之后发现里面只有LED和光电传感器,没有任何“触觉”元件。
原理其实是光学。绿光射进皮肤,穿过表皮到达真皮层——那里毛细血管密集。血液每流过一个周期,血量会涨落一次,对光的吸收也随之变化。传感器接收反射回来的光,把“光强随时间的波动”记录下来,算法再从这组波形里推算出心率。
所以手环本质上做的是一件事:用光去“看”皮肤下面血流量的周期性变化。心跳本身它感知不到,它感知的是血流带来的光信号起伏。
二、为什么是绿光,不是红光或者蓝光
拆开看到LED是绿色的,一开始没多想。后来查了一下,这个选择是有原因的。
绿光在浅肤色条件下对血流变化的响应比较灵敏——它穿透皮肤的深度刚好落在真皮层,也就是毛细血管最丰富的那一层。红光穿透更深,但容易被其他组织干扰;蓝光穿透太浅,到不了血管密集的区域。
当然,实际产品不会只有一种光。很多手环背面除了绿光LED,还有一颗红外LED,那颗灯平时不亮,专门用来判断“手腕上还有没有东西”。摘下手环放在桌上,如果传感器还在工作,红外反射信号会告诉芯片:没有皮肤了,停止测量。这就是为什么你把手环摘下来,心率数字不会继续跳。
三、那颗小芯片真正难的地方,是“排除干扰”
拆机之前我以为,心率不准主要是算法不好。看完那颗芯片周围的设计,想法变了一点。
LED和光电传感器之间的间距、中间隔光材料的厚度、透明窗口的透光率和曲率——这些物理层面的东西,直接决定了进入传感器的光是“干净”的还是“脏”的。
绿光打进皮肤之后,反射回来的信号里混杂着很多不需要的东西:手腕晃动带来的光路偏移、表带松紧变化引起的光强波动、环境光从缝隙钻进来、甚至皮肤表面油脂的反光。真正的血流信号只占其中很小一部分。
所以芯片要做的事情不只是“接收光”,还要在高噪声环境里把有效信号挑出来。它要判断当前环境光有多强,动态调整LED的亮度;要区分“没戴”和“戴了但不动”;要在采样频率和功耗之间找平衡。这些能力,决定了同一颗芯片装在不同结构的手环上,表现可能差很多。
四、功耗这件事,拆完才觉得不容易
手环电池很小,通常就一两百毫安时。屏幕、蓝牙、传感器都在抢电。
我查到的资料里,这类心率传感器芯片的工作电流一般在百微安级别,休眠时能低到纳安级别。这个数字单独看没什么感觉,但放进一只需要连续佩戴好几天的手环里,就变成了一个硬约束:传感器多耗一点,续航就少一截。
低功耗不是靠某一个“省电模式”实现的,而是从LED驱动、采样策略、数据缓存到接口通信,整条链路一起压下来的。比如传感器内部通常会带一小块FIFO缓存,数据先存在芯片里,等主控有空了再来取,而不是每采一个点就唤醒一次主控。这种设计思路,拆开看规格书是看不到的,但它在续航上的影响很实在。
写在最后
拆完之后我把手环装回去了,虽然已经不开机了,但没舍得扔。
那颗芯片很小,小到放在桌上很容易找不到。它不响、不亮、不发热,你戴着手环的时候几乎意识不到它的存在。但它每天做的事情,是把一束绿光变成一串数字,再变成一个你能看懂的心率值。
准不准,稳不稳,续航够不够——这些体验的起点,就藏在手环背面那块透明窗口下面。下次再抬起手腕看心率的时候,大概会多想一秒:这个数字背后,有一整套光路、结构、电路和算法在同时工作。
挺有意思的。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
