你可能和我一样,最先接触“红外”这个词,是因为家里空调遥控器、测温枪、楼道感应灯。红外不是玄学,它是一种波长比红光更长的电磁波,自然界里一切有温度的物体都在不停向外辐射红外能量。这篇我把红外彻底聊透的第一篇,先把“它到底是什么、常用波段有哪些、为什么这些日常设备能工作”讲清楚。跟着我读完,你就不会再被红外LED、红外接收头、热成像、测温传感器这些名词绕晕,也想清楚自己下一步该往哪个方向深入。
1. 红外到底是什么
1.1 红外的物理本质与波段划分
红外是电磁波谱中介于可见光和微波之间的部分,波长从0.75微米到1000微米。之所以叫“红外”,是因为它紧挨着可见光谱中红色光的末端,比红光频率低、波长更长,人眼看不见。
这个波段跨度非常大,所以业内习惯再把它细分。最常用的分法是这样的:
| 波段名称 | 波长范围 | 主要特点 | 典型应用 |
|---|---|---|---|
| 近红外 | 0.75~1.4微米 | 能量较高,接近可见光,透射性好 | 红外LED通信、遥控器、光电传感、光纤通信 |
| 短波红外 | 1.4~3微米 | 水分子吸收峰明显 | 水分检测、夜视辅助照明 |
| 中波红外 | 3~8微米 | 高温物体辐射强 | 高温热成像、导弹制导、气体检测 |
| 长波红外 | 8~15微米 | 常温物体辐射峰值所在 | 人体热成像、安防监控、测温枪 |
| 远红外 | 15~1000微米 | 能量低,多用于光谱分析 | 太赫兹研究、材料分析 |
为什么“热成像”基本都盯着8到14微米看?因为常温物体,比如人体、动物、电器外壳,表面温度大约在零下20度到50度区间。根据维恩位移定律,这个温度区间对应的黑体辐射峰值波长恰好落在8到14微米。所以长波红外探测器看这个波段,信号最强,画面最清楚。而你日常用的遥控器和光电反射传感器,工作在近红外波段,因为LED工艺成熟、成本低、光电二极管响应快。
1.2 一切有温度的物体都在发光
很多人不理解,明明红外热成像能看出物体形状和温度,那它到底是在“拍摄”还是“触摸”?都不是。物理学里有个基本结论:任何温度高于绝对零度的物体,都会持续向外辐射电磁波,辐射强度随温度升高而急剧增加。
这里要提一个公式,斯特藩-玻尔兹曼定律:物体辐射的总能量与热力学温度的四次方成正比。简单说,一个物体温度从常温20摄氏度升到500摄氏度,辐射总能量会翻几十倍。测温枪就是靠接收到的红外辐射能量反推物体表面温度。
温度计内部有一个热电堆探测器或者热敏电阻阵列,它把接收到的红外辐射转化为电信号。信号经过放大、线性化、环境温度补偿,最终计算出目标温度。这也是为什么买测温枪时商家总强调“距离比”和“发射率设置”,因为物体表面材质不同,红外发射率不同,不改发射率直接测,误差可能超过5摄氏度。
1.3 为什么红外对电子工程师尤其重要
对于搞嵌入式、物联网、安防、机器视觉的人,红外几乎是避不开的一项基础技术。
红外LED加光敏接收管,可以做接近感应、循迹小车、扫地机壁障;红外遥控协议是家电控制的基础;红外热成像能够实现全天候监测,不受可见光亮度影响。更重要的是,红外方案成本低、硬件简单、功耗可控,一个红外对管几毛钱到几块钱就搞定。相比激光雷达、毫米波雷达这些方案,红外在短距离场景里性价比极高。
我个人建议,学红外不要只看某个芯片或某个模块,先把物理概念和信号链路打通。发射端怎么驱动LED,接收端怎么解调信号,中间经过什么调制方式,这三个环节弄明白了,后面玩任何红外项目都顺手。
2. 红外在生活与技术里的常见应用
2.1 红外遥控:从家电到开发板
红外遥控是普通人接触红外最多的场景。空调、电视、机顶盒、风扇的遥控器,几乎全部走红外通信。这里有个核心概念,红外遥控不是直接把按键信息发出去,而是把二进制数据调制到38kHz的载波上,再驱动红外LED发射。
接收端有一个一体化红外接收头,比如常见的HX1838、VS1838B,它内部集成了光电二极管、放大电路、滤波器和解调器。对准遥控器按一下按键,接收头输出引脚上就会出现解调后的方波信号,单片机通过读取方波高低电平的宽度,就能还原出键值。
真正做事的时候,大家很少用原始接收头,因为一体化接收头会帮我们把38kHz载波去掉,输出的是数字逻辑电平。你要做的只是测量高电平持续时间和低电平持续时间,然后对照协议表解析。这就是后面第三章会展开的NEC协议内容。
2.2 红外测温与热成像:非接触测量的底气
近两年大家对红外测温已经不陌生了。但要注意,测温枪和热成像仪是两种不同东西。测温枪用单点热电堆传感器,只能得到一个区域的平均温度;热成像仪用的是红外焦平面阵列,每个像素都是一个测温点,把温度分布渲染成伪彩色图像。
红外热成像的测温逻辑很有意思,黑体辐射规律是温度越高、辐射越强,传感器测得某个像素的辐射能量,再经过标定和发射率修正,换算成具体温度。市面上的红外热成像模组,比如海康微影、高芯、睿创等,分辨率从64x64到640x512不等。低分辨率模组适合做存在检测、简易测温,做安防和工业检测则需要更高分辨率。
我踩过的坑是发射率。很多大厂模组默认发射率按0.95计算,用来测人体问题不大,但测抛光金属、玻璃、铝箔这些低发射率物体,误差会非常大。你去测一块亮面不锈钢表面,温度显示往往是错的,因为金属把周围环境的热辐射反射进了探测器,而不是自身辐射。这种情况下要使用高温胶带或黑漆覆盖被测表面,再测。
2.3 红外传感与循迹:反射式探测的经典玩法
红外循迹是很多电子爱好者的入门项目,核心原理是光电反射。
模块上有一个红外发射管和一个红外接收管,二者并排朝下安装。红外光照射到地面后,会发生漫反射。黑色物体吸收大部分红外光,反射回来的能量很弱;白色或浅色物体反射率很高,接收管输出的电平就会明显不同。单片机读取这个电平变化,就能判断小车当前位置是在黑线上还是白底上。
STM32F103C8T6做红外循迹小车是网上非常经典的组合。C8T6本身性价比极高,几十块钱就能买到最小系统板,GPIO资源丰富,内置定时器也够用。循迹模块输出的是数字电平,不需要ADC采集,直接接GPIO读取就行。整套硬件链路很简单:红外模块 → GPIO输入 → 软件判断 → 电机驱动 → 转向控制。
2.4 红外光通信与多模态感知
除了遥控和传感,红外还有一个很值得关注的方向是光通信。红外光通信原理上就是使用红外波段的光作为载波,通过调制光强传输数据。早期红外传输方案IrDA在手机之间传名片,后来被蓝牙、Wi-Fi取代,但在特定场景里红外光通信仍有不可替代的位置,比如电磁屏蔽严重的机舱、医院手术室、矿井通信,因为红外光不产生射频干扰。
多模态感知是目前视觉和自动驾驶领域的热词,其中“深度RGB红外”组合特别常见。白天可见光图像细节丰富、色彩真实;夜间光线不足时可见光相机基本失效,红外相机却能靠温差成像。把RGB图和红外图输入同一个目标检测网络,可以做到全天候目标识别。这类研究常用KAIST多光谱数据集,包含可见光和长波红外成对图像,专门用来测试行人检测算法。城市道路场景下,夜间用红外通道检测行人、车辆,比单纯用可见光图像靠谱得多。
3. 从原理到硬件:红外器件参数与协议实操
3.1 红外发射电路:为什么一个LED不能直接接IO口
很多新手第一次做红外发射,直接把红外LED正极接单片机IO口、负极接地,然后发现遥控距离不到10厘米。这不是LED坏了,而是驱动电流不够。
红外LED正向压降通常在1.2到1.5伏,工作电流20毫安时亮度才能保证。单片机GPIO在3.3伏供电下最大也只能输出几毫安到十几毫安,直接驱动,电流不足,发射功率自然不够。正确做法是用一个NPN三极管做开关放大,或者用一个MOS管驱动,让电源直接给LED供电。
这里给一个我常用的驱动参数参考:
| 参数 | 典型值 | 说明 |
|---|---|---|
| 发射LED波长 | 940nm | 与一体化接收头匹配最佳 |
| 载波频率 | 38kHz | 家电遥控最通用 |
| LED正向电流 | 20~100mA | 占空比越低可越大 |
| 基极限流电阻 | 1k~4.7k | 根据三极管放大倍数调整 |
| LED串联限流电阻 | 10~100欧 | 限制峰值电流保护LED |
38kHz这个数字几乎刻在红外遥控的DNA里,原因是早期一体化接收头普遍采用这个频率,谐振电路对38kHz信号灵敏度最高。现在市面上大部分一体化接收头也都是38kHz中心频率,带宽大概在36到40kHz之间。
3.2 NEC红外协议:波形、时序与解码思路
NEC协议是日本NEC公司定义的红外遥控协议,后来成为家电遥控器事实标准。你手头任何一个电视遥控器,很可能就是NEC协议或者它的变体。
NEC协议的帧结构分三部分:引导码、地址码、命令码。引导码用来告诉接收端“开始接收数据”,由9ms高电平和4.5ms低电平组成。地址码通常是8位地址加8位反码,命令码是8位命令加8位反码。反码的作用是校验,接收端把原码和反码相加,结果等于0xFF才算有效数据。
逻辑1和逻辑0的区分靠的是高电平持续时间。NEC协议里,一个完整“位”的周期是1.12ms。逻辑0是560微秒低电平加560微秒高电平;逻辑1是560微秒低电平加1680微秒高电平。换句话说,数据位一律以“低电平560微秒”开始,区别在于后面的高电平是560微秒还是1680微秒。
我在项目里总结了一个最简解码方法:只用单片机的一个外部中断,加上一个定时器。外部中断接接收头输出脚,每次下降沿触发时读取定时器值,算出上一次跳变到这次跳变的时间间隔。间隔约1.12ms是逻辑0,约2.25ms是逻辑1。先检测9ms引导码,然后连续采样32位数据,最后校验地址和命令反码。
// 伪代码,帮你理解NEC解码流程 volatile uint32_t last_time; volatile uint8_t bit_count; volatile uint32_t raw_data; void IR_Exti_Handler(void) { uint32_t now = TIM_GetCounter(); uint32_t diff = now - last_time; last_time = now; if (diff > 8500 && diff < 10500) { bit_count = 0; raw_data = 0; return; } if (bit_count < 32) { // 两个边沿之间间隔约2.25ms代表逻辑1 if (diff > 2000) { raw_data |= (1UL << (31 - bit_count)); } bit_count++; } }注意,如果遥控器发送的是重复码,按下按键不放时,引导码后会跟一个4.5ms高电平和一段时间内没有数据,解码时不要把它误判成启动帧。重复码的特征是9ms引导码后直接接4.5ms高电平,没有后面的数据位。
3.3 STM32红外循迹实战要点
STM32F103C8T6做红外循迹项目,硬件接线非常简单。常用的TCRT5000循迹模块有四个引脚:VCC接3.3V或5V,GND接地,DO输出数字电平,AO输出模拟电压。数字输出那一路已经内置了比较器,阈值通过电位器调节。
我推荐焊接时注意三点。第一,传感器探头离地面高度最好控制在5到15毫米,太近容易受地面纹理干扰,太远反射信号太弱。第二,模块上的红外发射管最好做遮光处理,用热缩管把发射管围一半,避免光线直射到接收管造成误触发。第三,地面颜色测试时要在实际场地亮度下校准,不要在强光窗口下校准,因为环境光中的红外成分会影响接收管判断。
程序逻辑上用PID控制是常规做法。左右两个传感器把系统状态分成三类:都看到白底时直行,左边看到黑线说明跑偏向左,右边看到黑线说明跑偏向右。进一步可以用三个或五个传感器采集中间线,再配合比例控制KP调节转向速度。很多竞赛机器人会用三个数字循迹模块形成5种状态组合,黑线在正中间时只亮中间传感器,左偏时左侧传感器触发,右偏时右侧传感器触发,两侧都触发多半是十字路口,这时候加延时策略处理。
3.4 空调红外编码:怎么看懂美的空调的规则
家用空调遥控器比电视遥控器复杂,因为它发送的不只是“按键码”,而是完整的运行状态参数:开关机、模式、设定温度、风速、摆风、健康模式等,所有参数都被编码进一个长帧里。
美的空调的红外码一般也是38kHz载波,但具体数据格式不同型号会有差异,没有一份通用的公开编码表。拿到一个陌生遥控器,最可靠的做法是用逻辑分析仪抓GPIO波形,配合示波器或者逻辑分析仪,把红外接收头输出的引脚信号录下来,按位解析。
解析思路我已经跑通很多次,给你一个标准流程。第一步,用逻辑分析仪采样遥控器发出的完整波形,采样率2MHz就足够,导出CSV或逻辑软件自带解码器。第二步,从波形里找到起始码,通常是一段非常长的载波脉冲,比如9ms高加4.5ms低。第三步,按1.12ms基本时间单位切分每一位,高电平宽度大于1.4ms记1,小于1ms记0。第四步,把数据按字节排列,前后两帧对比,变化的那几位通常对应按键事件。最后在单片机里用定时器输入捕获做同样的解析,做成解码库。
这里提醒一句,千万别假设所有空调都是标准NEC。格力、美的、海尔有不少型号用的是扩展NEC或自定义协议,地址码可能16位甚至32位,数据字段还带校验和。抓波形时重点看帧头和帧尾,有校验和的帧最后一般是8位校验字节。
4. 进阶方向与实用避坑建议
4.1 红外可见光图像融合与目标检测
把可见光和红外图像合在一起,是目前安防、自动驾驶、无人机巡检里非常火的方向。可见光相机在夜间几乎没用,红外相机却不依赖光照,所以把两种图像输入融合网络,可以实现全天候目标检测。
做这个方向,数据集是决定成败的关键。学术上常用KAIST多光谱行人数据集,包含白天和夜晚的RGB和热红外成对图像。工业界也有一些针对电力行业的专用数据集,比如firc-dataset,它对电力设备红外图像做了VOC和YOLO格式标注,方便直接训练目标检测模型。
有个常见的坑是图像对齐。RGB相机和红外相机安装位置不同,视野不完全一致,直接拼接训练会造成标注错位。预处理阶段要做配准,至少要做裁剪和尺度统一。我自己试过,不配准直接训练,mAP掉10个点以上。
4.2 红外小目标检测与鸟类夜视识别
红外小目标检测难点在“小”和“弱”。背景复杂、目标像素少、信噪比低,普通YOLO模型直接训练效果非常差。传统方法先用背景抑制、形态学滤波、恒虚警检测提取候选区域,再到深度学习做分类。
鸟类检测是红外夜视里比较有意思的应用场景。夜间鸟类体温与背景温差明显,但鸟在画面里往往只有几个像素到几十个像素,而且飞行时运动模糊,很难用通用检测器搞定。常用做法是先用高帧率红外相机采集,再做时序累积,或者用改进的注意力网络增强小目标特征。如果你对无人机夜间巡检感兴趣,这个方向很值得研究。
4.3 红外手势识别与脉搏测量
红外手势识别不是靠摄像头,而是靠红外LED和光电二极管阵列。不同手指靠近时,反射光的空间分布不同,光电二极管阵列采集反射强度变化,再用机器学习分类。这种方案没有摄像头隐私问题,功耗低,适合做智能手表和智能家居的隔空手势控制。
红外脉搏测量的原理是光电容积描记法。血液对红外光的吸收量会随心跳周期变化,手指夹住红外LED和光电二极管对,透射光强度随脉搏波动,把光电信号放大滤波后就能算出心率和血氧饱和度。这类方案做健康监测很好,但运动状态下信号噪声很大,需要用自适应滤波和峰值检测算法。
4.4 给新手的学习路径与避坑清单
如果你刚接触红外,我建议按这个顺序动手:先玩透一只红外遥控器和一体化接收头,用手抓波形、把NEC协议解析出来;然后做一个38kHz红外发射器,自己发码控制电视;再做红外循迹小车,把反射式传感器用熟;最后再碰热成像红外或红外可见光融合这类偏算法和科学的内容。
避坑清单我列几个高频问题:
| 问题现象 | 可能原因 | 解决方向 |
|---|---|---|
| 遥控距离短 | LED驱动电流不足 | 检查三极管驱动电路、减小限流电阻 |
| 接收头乱码 | 载波频率不匹配 | 确认发射载波在36~40kHz之间 |
| 循迹误判 | 环境光干扰 | 给模块加遮光罩、降低传感器高度 |
| 热成像测温不准 | 发射率未设置 | 按物体材质调整发射率 |
| 数据帧解析失败 | 协议不是标准NEC | 用逻辑分析仪抓波形重新分析 |
| STM32定时器溢出 | 捕捉时间差计算错误 | 使用32位定时器或软件延长计数 |
我还有一个小技巧,调试红外时不要一上来就写完整解码程序。先用示波器或逻辑分析仪看接收头输出引脚波形,波形正确了再写代码。波形就是红外的“心电图”,心电图没看懂就急着写程序,只会浪费时间。
我个人在实际操作中的体会是,红外技术看起来简单,但它横跨了电磁波物理、电路驱动、通信协议、信号处理好几个层面,是练手综合能力的好入口。刚开始玩红外时,我也栽过不少跟头,比如LED极性接反、三极管基极电阻算错、遥控器载波用成20kHz,全都遇到过。但正是一次一次对着波形图琢磨,才把红外这条链路彻底打通。
如果你也打算入坑,建议从家里那个闲置的遥控器开始,找一台逻辑分析仪,先抓一份波形,再试着自己发出来。等能控制电视开关机了,你会发现红外并没有那么神秘,底层就是“光开关”加“计时”而已。后面想深入,可以去研究热成像标定、红外与可见光的图像融合算法,甚至做自己的红外夜视装置。这篇是“红外1”,先把地基打好,后面我会接着聊更进阶的红外应用和工程细节。