MLX90614红外测温实战:发射率、SMBus与标定排错全攻略
简介这是一份基于51单片机与MXL90614红外测温模块的完整工程代码包适合单片机初学者、嵌入式爱好者以及需要快速实现非接触测温显示的开发者使用。工程直接面向“读取红外传感器—数据处理—LCD1602显示”的完整链路能帮助读者直接用现成代码搭建一个可运行的温度监测系统。压缩包内共8个文件包含4个C源程序如主测试程序、1602驱动、延时函数等、3个头文件以及1个Keil工程文件Uv2整体仅8KB结构紧凑、便于移植。目前已有1075人学习下载。代码经过实际验证可用于温度数据的采集与显示读者可据此理解MXL90614模拟输出转温度值的换算思路也能学习51单片机I/O口控制LCD1602的底层写法适合作为课设改造或入门项目参考。1. 红外温度测温项目里MLX90614到底是省心还是玄学很多人第一次用 MLX90614 做红外温度测温都会经历一轮“翻车”5 分钟接好线读出来的数据却忽高忽低对着同一杯热水测三次能差出 3℃拿水银温度计一比更是对不上。于是论坛上开始出现“这颗传感器是玄学”的说法。实际上一线项目里 MLX90614 是相当成熟的红外温度测温方案绝大多数读数异常不是传感器的问题而是发射率没设、SMBus 时序没吃透、视场角被忽略。这篇文章按我做过的测温项目顺序把 MLX90614 从接线、读寄存器、标定到排错讲完整适合刚入手型号的新手也适合正在为读数飘忽不定头疼的熟手——你会发现所谓玄学基本都是没按章法来。2. 看懂MLX90614的数据链路再做测温发射率、SMBus与14bit精度的关系2.1 热电堆传感器的物理输出与片上信号链MLX90614 的核心是一颗热电堆传感器它不像 NTC 或 PT100 那样需要接触被测物而是被动接收物体表面辐射的红外能量。热电堆输出的本质是一个极其微弱的电压信号幅度通常在微伏级别必须经过片内低噪声放大器和高精度 ADC 才能变成数字量。这也是为什么 MLX90614 的测温结果比普通模拟红外探头稳定信号链全部集成在封装内部外部电路很难干扰到模拟部分。理解这条链路对排查问题很有用。当你在 I2C 总线上读到温度数据时实际上已经经过了“热电堆电压 → 环境温度参考 → ADC 数字量 → 温度查表”这几道工序。片上还有一个环境温度传感器也就是芯片自身的温度用于热结冷端补偿。如果环境温度传感器测量的数值偏移物温也会跟着偏这在后面标定章节会专门说明。选型时要注意芯片有 10 位和 14 位输出模式的区别。14 位模式下温度分辨率可以做到 0.02℃10 位模式下只有约 0.18℃。做人体测温、热源定位这类对温度趋势敏感但不追求绝对精度的场景10 位够用做工业过程监测、质量检测这类需要记录微小温差的项目建议直接选 14 位模式。我一般固定用 14 位因为读取代码可以统一省得为两种模式写两套换算。2.2 SMBus读回来的原始数据怎么换算成温度MLX90614 的对外接口是 SMBus兼容 I2C默认地址是 7 位地址 0x5A。读温度时常用 RAM 地址有两个0x07 是物体温度0x06 是环境温度。每个地址读出的是 16 位数据其中高字节是符号位和整数部分低字节是小数部分。换算公式很简单温度 原始值 × 0.02 - 273.15。这里有个常见误区有人拿到的数据是十六进制比如 0x1A2B直接当十进制数除以 100 就完事了结果完全不对。正确做法是先判断第 15 位符号位如果为 1 说明温度是负的需要先对整字求补码再乘以 0.02。摄氏度结果最终范围是 -40℃ 到 125℃。温度数据换算代码如下import smbus2 bus smbus2.SMBus(1) addr 0x5A def read_temp(reg): raw bus.read_word_data(addr, reg) if raw 0x7FFF: # 符号位判断 raw - 0x10000 return raw * 0.02 - 273.15 obj_t read_temp(0x07) # 物体温度 amb_t read_temp(0x06) # 环境温度 print(f物体温度: {obj_t:.2f} C, 环境温度:{amb_t:.2f} C)read_word_data读回来的是低字节在前也就是 little-endian 序这在 Linux 单板机上用 smbus2 库不用额外处理。但如果你用自己写的 I2C 驱动就要注意先把低字节和高字节拼成完整 16 位再判断符号位。还有一个细节读 0x07 之前建议先读 0x06让片内信号链稳定下来极端情况下连续读 0x07 两次时第二次的值会略有变化这不是故障是上一条读取操作对片内电容的残余影响。2.3 发射率寄存器为什么是测温误差的最大来源红外测温的原理决定了它默认被测物是黑体发射率等于 1.0。MLX90614 出厂默认发射率也是 1.0但现实中几乎没有任何物体是理想黑体抛光金属大约 0.1氧化铁皮约 0.7人体皮肤约 0.98。如果被测物发射率是 0.7而你按 1.0 去算读出来的温度会比真实值低而且温度越高偏差越大。发射率存放在 EEPROM 地址 0x04默认值对应 1.0。这个值可以通过写 EEPROM 指令修改但 EEPROM 的写入次数有限工业现场不建议频繁改写。更常见的做法是给不同被测物建立发射率对照表代码里根据物品种类动态切换。比如检测 PCB 板时用 0.92检测黑色塑料壳时用 0.95检测铝片时用 0.15。修改发射率寄存器之前必须先写 SMBus 访问密钥 0xFFFF 到地址 0x00再写目标值到 0x04。写完后还要读一遍做校验。不少人在这一步栽跟头以为写完立即生效实际 EEPROM 写入耗时约 20ms写完立刻读会拿到旧值。发射率精度建议保留 2 位小数因为该寄存器对数值变化非常敏感差 0.01 在 100℃ 时能引起大约 0.3℃ 的偏差。3. 把MLX90614接进你的开发板硬件接线、I2C枚举与最小读温命令3.1 接线与电平匹配3.3V直连还是需要转换MLX90614 的供电范围是 3.3V 到 5V但 SMBus 引脚SDA、SCL的电平以供电电压为准。如果你的开发板 I2C 引脚是 3.3V传感器也用 3.3V 供电直接连接没有任何问题。如果传感器用 5V 供电而控制端是 3.3V就需要电平转换否则长期运行可能损伤控制端 I/O。常见做法是用双向电平转换模块或者给 SDA、SCL 串接限流电阻做简单保护但后者只适合低速短距离场景。接线方面还需要注意 MLX90614 模块上的上拉电阻。很多成品模块出厂时已经板载了 4.7kΩ 上拉这时如果控制端 I2C 总线本身也带 1.8kΩ 上拉两组合并后总阻值约 1.3kΩ总线会被拉得很“硬”信号边沿变陡在长线场景下可能引发振铃。我习惯先查模块原理图确认上拉电阻值再做判断。如果是自己画板的裸芯片则必须外接上拉电阻推荐 4.7kΩ 到 10kΩ 之间I2C 标准模式 100kHz 下这个范围最稳。供电质量容易被忽视。MLX90614 内部 ADC 对环境温度测量要求参考电压稳定如果用开关电源毛刺较多读数会周期性跳动。我在项目中会在 VDD 到 GND 之间加 0.1μF 和 10μF 电容位置尽量贴近传感器引脚。如果传感器和 MCU 共用电源还要注意 MCU 拉电流造成的电压跌落最稳妥是给传感器单独走一条电源线。3.2 用i2cdetect确认设备地址0x5A是怎么来的拿到模块第一步不是写代码而是先枚举 I2C 总线确认设备真的在线上。Linux 开发板上用 i2c-tools 最直接sudo apt install i2c-tools sudo i2cdetect -y 1如果看到总线地址列表的 0x5A 位置出现编号说明设备通信正常如果只出现“UU”说明该地址被内核驱动占用需要先卸载对应驱动再测。总线号要按实际硬件来有些单板机是 0 号总线有些是 1 号查ls /dev/i2c*就能确认。枚举不到设备时先量传感器 VDD 和地之间的电压是否在 3.3V 上下再量 SDA、SCL 是否被拉高到供电电压。I2C 总线的空闲状态应该是高电平如果 SDA 或 SCL 是 0V说明总线被某个设备拉死逐个断开从设备就能找到元凶。还有一种隐蔽情况模块的地址引脚 ADDR 被接到了 VDD此时地址会变成 0x30 左右的偏移值用 0x5A 当然找不到。地址问题解决后再进入下一步写读取代码。我建议把i2cdetect的结果截图或记录作为现场调试的凭证。单品测试时如果地址发生变化排除硬件损坏之外绝大部分是 ADDR 引脚的接线方式和你预期不一致。3.3 最小读温代码一次读取物体温度与环境温度跑通 I2C 枚举之后写最小读温程序就顺理成章了。这里用 Python 的 smbus2 库因为它天然支持 SMBus 读字操作不需要手工处理 start/stop 条件。下面是完整的最小工程代码import smbus2 import time bus smbus2.SMBus(1) ADDR 0x5A def read_temperature(reg): data bus.read_word_data(ADDR, reg) if data 0x7FFF: data - 0x10000 return data * 0.02 - 273.15 while True: obj read_temperature(0x07) amb read_temperature(0x06) print(fobject{obj:.2f}C ambient{amb:.2f}C) time.sleep(1)这段代码做了三件事打开 I2C 总线、按 RAM 地址读字、把原始值换算成摄氏度。需要注意SMBus(1)里的数字是总线号如果你的传感器接在另一条总线上这里必须改成对应编号否则一运行就报错。read_word_data一次读 16 位这对 MLX90614 是有效的因为 SMBus 规范支持读字命令。代码跑起来后先用手掌靠近传感器观察数值是否快速上升。手掌温度大约在 35℃ 左右如果读数在 20℃ 附近徘徊很可能传感器没有对准手掌或者视场角太宽把周围环境也收了进去。此时可以拿一杯 50℃ 左右的温水做目标把传感器固定在杯口上方 3cm 处读数应稳定在 50℃ 上下误差不超过 2℃这就能确认链路已经通了。4. 标定与补偿让MLX90614在不同被测物上真正“测温成功”4.1 先用热电偶建立参考温度别拿手摸当基准很多项目说“测温成功”实际只是“读出了数字”并没有验证数字准不准。真正的标定必须有一个可信的参考源。我常用的方案是一个恒温加热台一台精度 0.1℃ 的 K 型热电偶温度计把热电偶探头贴在样品表面同时让 MLX90614 对准样品同一点。加热台从 30℃ 升到 100℃每 5℃ 记录一组热电偶读数和 MLX90614 读数。标定时最容易犯的错是传感器没对准热电偶的测量点。红外测温得到的是视场角内所有物体辐射的平均值如果热电偶没贴在视场中心两者比较就没有意义。操作上先用激光笔如果模块带或通过计算视场角找出中心位置用记号笔在样品上画点热电偶就固定在这个点上。距离也要固定我习惯把传感器安装在支架上用游标卡尺控制距离在 5cm 左右。记录下来的数据不要只保存最终温度值还要保存环境温度。因为 MLX90614 的物温计算依赖环境温度传感器做补偿环境温度变化会移动整条标定曲线。做标定实验时最好在常温恒温室内进行避免空调风口直吹传感器。标定数据至少重复 3 轮取同一设定温度下读数的平均值作为最终值这样可以把偶然波动滤掉。有了温差数据后可以有两种处理策略。如果偏差线性直接做一个偏移修正如果偏差随温度变化则需要做线性回归或分段线性插值。工业项目里我更推荐分段线性插值因为红外传感器在低温段和高温段的响应斜率不完全一致一个全局线性修正往往两头都顾不好。4.2 修改发射率寄存器并校验从0x04到0x0E的写入链路发射率寄存器的写入有一套严格时序顺序错了传感器不会响应或者写入不生效。先看一眼官方寄存器布局0x00 是操作指令区0x04 是发射率寄存器0x0E 是传感器 ID 和配置字区域。写发射率时必须先把 0xFFFF 写入 0x00 解锁然后把新的发射率编码写入 0x04。发射率编码不是直接写 0.95而是把发射率值乘以 0xFFFF 后取整得到 16 位十六进制数。例如发射率 0.95计算方法是 int(0.95 × 65535)结果是 0xF2B2。写入后等待 20ms 以上再读 0x04 校验读出来的值换算回十进制再除以 65535应该约等于 0.95。代码如下import smbus2 import time bus smbus2.SMBus(1) ADDR 0x5A def write_emissivity(value): code int(value * 65535) bus.write_word_data(ADDR, 0x00, 0xFFFF) # 解锁命令 time.sleep(0.01) bus.write_word_data(ADDR, 0x04, code) # 写入发射率 time.sleep(0.05) check bus.read_word_data(ADDR, 0x04) return check / 65535 emissivity write_emissivity(0.95) print(fverify emissivity {emissivity:.3f})注意write_word_data的第三个参数是数据值低字节在前smbus2 会自动处理字节序。写入发射率后物体温度读数的换算公式不变但片内算法会按新的发射率重新计算温度。这里有一个容易忽略的坑写 EEPROM 次数有限规格书标称约十万次擦写寿命定期标定写入没问题但不要在代码里每次都写否则寿命消耗很快。修改完发射率后重新做一轮热电偶对照实验。你会发现低温段偏差变小但高温段可能仍有残差这时不要继续动发射率而是检查辐射源的有效面积是否充满视场。如果视场里有背景物体混入发射率怎么调都救不回来。4.3 距离与视场对读数的干扰D:S比怎么用MLX90614 的视场角常见规格有 35°、50°、90° 等视场角越大相同距离下覆盖区域越大。D:S 比表示“距离:光斑直径”意思是传感器到被测物距离与视场内光斑直径之比。比如 D:S 12:1距离 12cm 时测量光斑直径约 1cm。想让读数代表被测点温度就要保证光斑直径远小于被测物表面尺寸一般光斑直径不超过被测物最大宽度的三分之一。实际操作中传感器离被测物太远时视场边缘会把桌面、夹具、手等背景物体收进来读数会莫名偏低或者波动。这时候增大发射率起不到作用正确做法是缩小距离或者加一个遮光管限制视场。遮光管长度与直径比一般做到 3:1 以上内壁涂黑色无光漆可以显著减少杂散辐射。验证视场有没有混入背景的方法很简单传感器对准被测物然后用手在视场边缘晃动如果读数出现明显变化说明边缘物体已经被纳入计算。此时要么移动传感器要么加遮光管。做完这一步再做发射率标定你会发现数据稳定很多验证成功的概率也大幅提升。5. 避坑排查MLX90614读数异常的5个高频现象与修复5.1 读取返回0xFFFF从I2C地址到总线复位的排查顺序现象用 i2cdetect 能看到设备但read_word_data返回 0xFFFF换算后是一个极大或极小的温度值。原因几乎都出在通信时序上。SMBus 读字要求主机发送设备地址写位再写寄存器地址再发重复起始信号最后读两个字节。如果 MCU 的 I2C 控制器在发完寄存器地址后没有正确产生重复起始条件传感器就不会返回数据总线上的数据线保持高电平读出来就是 0xFFFF。解决步骤先用逻辑分析仪抓取总线波形确认有没有重复起始信号。如果波形正确再用示波器量 SCL 和 SDA 的上升沿上升沿过缓说明上拉电阻过大或总线电容过大把上拉电阻换成 2.2kΩ 再试。还有一种情况是 MCU 的 I2C 时钟频率配得过高SMBus 标准是 100kHz有人为跑高速配置成了 400kHz传感器也能响应但偶发错误将频率降到 100kHz 后问题消失。5.2 读数比水银温度计低2~5℃先把发射率和视场角一起查现象传感器对准热水杯读数稳定但偏低偏差在 2℃ 到 5℃ 之间手动补偿后能对上但换个物体又偏了。这种系统性偏低不是随机噪声首先怀疑发射率。默认发射率 1.0 适合黑体但塑料、木头、皮肤等真实物体发射率在 0.85 到 0.98 之间按 1.0 计算必然偏低。其次怀疑视场角没充满视场里存在大面积冷背景传感器按辐射比例加权平均结果也会偏低。排查时先看距离和光斑。把传感器靠近被测物让光斑缩小到物体表面以内如果读数上升说明之前有背景混入。再看发射率查表得到被测物材料的典型发射率写入后重新测试。如果数据仍然偏低就采用第四章的热电偶对照法建立实际修正曲线。这三步做完绝大多数“低2到5℃”问题都可以解决。5.3 数值跳变、偶发异常大数SMBus时序与CRC校验现象读取程序运行时大部分时间数据正常但每隔几次会出现一个离谱的值比如 200℃ 或者 -100℃下一个周期又恢复正常。这种偶发异常通常是读到的 16 位数据中某个字节被干扰。SMBus 没有内建的 CRC 校验数据错误只能靠应用层判断。我在正式项目里会加一个简单滤波连续读三次去掉最大值和最小值取中间值如果中间值与上次有效值之差超过 5℃丢弃本次并重新采样。另外检查 MCU 中断和 I2C 操作的优先级冲突。如果 I2C 传输中途被高优先级中断打断字节序会错位低字节和高字节被交换换算出的温度自然离谱。解决办法是在读取期间关闭可屏蔽中断或者用 DMA 方式传输。还有一个隐蔽原因电源引脚接触不良导致瞬间电压跌落传感器内部 ADC 转换出错。给电源加 100μF 电容能明显减少这类问题。5.4 线长超过20cm就出错总线电容与上拉电阻的平衡现象把传感器用延长线接到几十厘米外的控制板上读数频繁出错缩短线缆后恢复。I2C 总线设计目标偏重短距离片内通信长线会带来电容和压摆率问题。线缆长度超过 20cm 时分布电容可能达到几百皮法连同上拉电阻形成的 RC 延迟会破坏时序。解决方向有两个一是降低线上电容使用双绞线或屏蔽线二是换上拉电阻值比如从 4.7kΩ 换成 2.2kΩ加快上升沿。但换小的上拉电阻会增加低电平灌电流要求控制器 I/O 能承受更大的灌电流否则会拉低电平不达标。如果要走到 50cm 以上更稳妥的做法是改用 I2C 总线扩展芯片或者把传感器做成独立节点本地完成温度读取再通过 UART 传给主机。这个改动看似增加成本但能彻底消除长线问题。5.5 刚上电读数慢慢漂TO-39封装的片上自热效应现象冷启动后读数逐渐变化起初几分钟内上升然后趋于稳定与环境温度变化不符。这是封装自热效应。TO-39 金属封装导热速度快片上信号链工作时会产生少量热量导致环境温度传感器读到的温度略高于真实环境温度进而影响物温计算结果。上电瞬间传感器处于热平衡建立过程中读数持续漂移是正常现象等几分钟后会进入稳态。对策很简单软件层面做开机预热代码里启动后延迟 5 分钟再进行关键测量硬件层面避免传感器靠近发热元件比如 MCU 或电机驱动芯片。如果你的应用必须快速读数可以考虑在上电后立即读取环境温度然后每隔一秒重新读取用动态变化率判断热平衡是否建立。还有一种硬办法给传感器加隔热安装座降低与主板的热耦合。6. 进阶技巧滑动窗口滤波与距离标定表把MLX90614读数做成可交付的数据6.1 一个自适应滑动窗口滤波裸读数直接交给业务逻辑往往会因为偶发尖峰产生误判。我在最终交付代码里会加一个环形缓冲区滤波窗口长度根据温度变化速率自适应温差变化快时窗口短保证响应速度稳定时窗口拉长抑制噪声。实现并不复杂from collections import deque class TempFilter: def __init__(self, maxlen10): self.buf deque(maxlenmaxlen) self.last None def push(self, value): if self.last is not None and abs(value - self.last) 8: return self.last self.buf.append(value) self.last sum(self.buf) / len(self.buf) return self.last滤波逻辑里设置了一个 8℃ 的阈值超过这个变化量的数据直接丢弃。这个阈值要根据实际场景调整做热风枪测温时变化很快阈值可以放宽到 15℃做体温监测时变化很慢阈值设置 3℃ 就足以识别异常。窗口长度我常用 5 或者 10数据稳定后用 10需要快速响应时用 5。6.2 距离-温度修正表与一次性拟合红外测温的读数与距离有关但关系不是线性的。把传感器固定在被测物上方不同高度记录同一热源下的读数你会发现距离越远读数越低而且低到一定程度后趋于平缓。我在项目里会制作一张距离-偏差表用分段线性插值实时修正。实测数据不必很多5 到 7 个距离点就够了多余的点只会加重拟合过拟合。修正表可以嵌入代码或放在配置文件里。现场安装时测量固定安装距离查表得到修正值加回读数。这个技巧特别适合无法用激光瞄准的封闭空间比如管道内部或者加热腔体只要固定距离已知修正就能稳定工作。一个细节修正表要在稳定的热源下标定热源温度尽量接近实际工况否则标定的偏差曲线在不同温度下会漂移。这个项目最后交付时我保留了标定原始记录和滤波代码。后来另一个产品直接复用这套方案只改了发射率和距离表十分钟就跑通了。那次经历让我养成一个习惯凡是传感器类项目标定数据和修正逻辑必须跟着产品文档走而不是散落在某个实验脚本里。希望这些经验也能帮到你让你在下一个红外温度测温项目里少走几步弯路。本文还有配套的精品资源点击获取

相关新闻

SDR# x86分发包驱动PlutoSDR:从兼容性到采样率与增益调优

SDR# x86分发包驱动PlutoSDR:从兼容性到采样率与增益调优

简介:软件定义无线电(SDR)的核心价值在于用软件替代固定硬件,能灵活适应多种通信协议和频段,近年来受到无线电爱好者、科研人员与工程师的广泛重视。这里提供的是一份针对Pluto SDR设备优化定制的SDR#接收软件包&#…

2026/10/13 21:09:59 阅读更多 →
鸽哒IM源码:生产级私有化即时通讯系统解析

鸽哒IM源码:生产级私有化即时通讯系统解析

简介:这是一套完整的跨平台即时通讯(IM)系统源码,面向中高级Java/Android/iOS开发者及全栈工程师,用于学习和搭建企业级实时通信服务。资源涵盖Web(WebSocketHTML5)、Android(JavaFC…

2026/10/13 21:08:58 阅读更多 →
Python+React低代码平台:元数据驱动的业务系统快速构建方案

Python+React低代码平台:元数据驱动的业务系统快速构建方案

简介:这是一套面向全栈开发初学者与低代码实践者的前后端一体化低代码平台学习资源,聚焦React前端框架与Python后端框架的协同开发模式,帮助非专业开发者快速构建可运行的Web应用,降低传统编码门槛。资源共229个文件,涵…

2026/10/13 21:08:58 阅读更多 →

最新新闻

开源AI工具实战:让大模型从聊天到本地自动化干活

开源AI工具实战:让大模型从聊天到本地自动化干活

1. 从聊天到干活:这个开源AI工具到底在解决什么问题大多数人第一次接触AI,都是通过对话框。你问一句,它答一句,聊得挺热闹,但聊完之后呢?该手动复制的还得手动复制,该自己打开软件操作的还得自己…

2026/10/13 22:00:44 阅读更多 →
OpenClaw本地AI助手:工具调用与插件化架构实战指南

OpenClaw本地AI助手:工具调用与插件化架构实战指南

1. 从"能聊天"到"能干活":个人智能助手到底缺了什么大多数人第一次接触AI助手,体验路径都差不多:打开一个对话框,问几个问题,得到几段回答,然后关掉。下次再打开,它不记得你…

2026/10/13 22:00:44 阅读更多 →
Petrel成本透明化:从黑盒到明白账的业务价值展示指南

Petrel成本透明化:从黑盒到明白账的业务价值展示指南

痛点很直接:Petrel这种专业建模软件,年度许可证费用不低,加上配套硬件、算力、数据存储,一年下来是一笔不小的开销。过去这笔钱怎么花的、谁用了多少、给业务带回了什么,基本是一笔糊涂账。业务部门看费用报表只看得到…

2026/10/13 22:00:44 阅读更多 →
Cadence许可证管理平台落地实践:从FlexNet监控到配额治理

Cadence许可证管理平台落地实践:从FlexNet监控到配额治理

做EDA工具管理的朋友应该都有过这种经历:上午十点,仿真任务刚提交,脚本就报出License checkout failed,群里马上炸锅;你随手敲一条lmstat -a,发现某个用户把几十个 feature 占得满满当当,但任务…

2026/10/13 22:00:44 阅读更多 →
COMSOL多物理场耦合模拟烧开水:两相流相变建模全解析

COMSOL多物理场耦合模拟烧开水:两相流相变建模全解析

烧开水这个事,人人都会,但你要是想把“水是怎么烧开的”这事弄得清清楚楚,只靠肉眼真不够。锅里气泡密密麻麻、界面扭来扭去,背后其实是流动、传热、相变三个物理过程在互相纠缠。我第一次在COMSOL里搭流体-热-相场耦合模型去模拟…

2026/10/13 22:00:44 阅读更多 →
LitePal事务实战:保证批量写入原子性与数据一致性

LitePal事务实战:保证批量写入原子性与数据一致性

做客户端开发这些年,“数据写到一半挂了”这种情况碰到的次数真不算少。尤其是一直在用LitePal这种轻量级ORM框架的,前期CRUD写起来确实爽,但真到了批量导入、多表联动这种需要“要么全成、要么全败”的场景,少了官方的事务支持&a…

2026/10/13 21:59:44 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →