Grove TDS传感器原理、校准与物联网应用实战指南
1. 项目缘起从“水质”到“可测”的最后一公里做水质监测项目无论是家庭净水器滤芯寿命提醒、鱼缸水质管理还是小型农业灌溉、水培营养液监控TDS总溶解固体都是一个绕不开的核心指标。它虽然不能告诉你水里具体有什么但能快速告诉你水里“东西”多不多是衡量水质纯净度的一个非常直观的“晴雨表”。市面上TDS检测笔很多几十块就能买一个但当你需要把数据接入到Arduino、树莓派或者任何微控制器系统中实现自动化、连续监测和远程上报时问题就来了——怎么把那个小小的检测探头稳定、可靠地变成一个数字信号这就是我接触到Grove - TDS传感器通常指DFRobot的SEN0244或类似兼容模块的契机。它本质上是一个“模数转换信号调理”的集成模块把复杂的电化学测量简化成了一个即插即用的Grove接口。你不需要去研究双电极激励原理也不用自己搭建运放电路去处理微弱的模拟信号更不用担心电极极化带来的读数漂移。它帮你把“最后一公里”的硬件难题解决了让你能专注于上层的数据应用逻辑。对于创客、教育者和快速原型开发者来说这极大地降低了门槛。但门槛降低不代表没有坑如何正确使用、校准以及理解其读数背后的真实含义才是用好这个传感器的关键。2. TDS传感器核心原理不仅仅是“测导电”很多人会把TDS传感器简单理解为一个“电导率传感器”然后用电导率去估算TDS这没错但只说对了一半。要真正用好它避免误判必须理解其底层的工作机制和局限性。2.1 电导率与TDS的换算关系纯水几乎不导电导电是因为水中溶解了离子态的物质如钙、镁、钠、钾、氯离子、硫酸根等。TDS传感器通过测量水的电导率EC再乘以一个经验系数来估算TDS值。这个系数通常在0.5到0.7之间对于大多数天然淡水0.65是一个常用的近似值。模块内部固化的算法很可能就采用了这个或类似的固定系数。注意这个系数并非一成不变。不同类型离子对电导率的贡献不同。例如氯化钠食盐溶液和碳酸氢钙硬水主要成分溶液即使TDS相同电导率也可能有差异。因此传感器读数是一个“估算值”对于成分未知的水样它更适用于趋势监测和相对比较而非绝对精确的定量分析。2.2 Grove模块的内部工作流程市面上的Grove TDS模块其核心通常是一颗专用的模拟前端芯片如德州仪器的LMP91200或一个精心设计的运放电路配合一颗单片机如STM32或GD32的某个型号进行控制。其工作流程可以拆解如下激励信号产生单片机产生一个特定频率常见为3kHz左右的交流方波或正弦波。使用交流信号是为了防止电极在直流电下发生电解和极化导致测量失准和电极损坏。信号施加与采集这个交流信号被施加到传感器的两个电极上。水流过电极时其电阻电导的倒数会调制这个信号。信号调理与整流电极返回的微弱交流响应信号首先经过一个仪表放大器进行差分放大以抑制共模噪声。然后通过一个精密整流电路将交流信号转换为与电导率成正比的直流电压信号。模数转换与计算这个直流电压被送入模块上的ADC模数转换器进行采样。单片机根据ADC读数和预设的校准参数计算出电导率值再套用TDS系数公式最终得到TDS读数单位通常是ppm或mg/L。接口输出计算结果通过Grove接口输出。对于模拟输出版本它会输出一个与TDS值成比例的模拟电压例如0-3.3V对于数字输出版本如I2C则直接通过总线发送数字读数。理解这个过程就能明白为什么温度补偿至关重要。水的电导率受温度影响显著温度每升高1℃电导率大约增加2%。因此一个集成了温度传感器通常是DS18B20或NTC热敏电阻的TDS模块其读数准确性会高得多。它会在计算中实时引入温度补偿系数。3. 硬件连接与基础代码解读Grove系统的优势在于连接极其简单。以最常见的兼容Arduino的模拟输出模块为例通常只有四根线VCC红色、GND黑色、信号黄色、空脚白色。你只需要将模块的Grove连接器插到Arduino扩展板的任意一个模拟接口例如A0上即可。下面是一段最基础的Arduino读取代码并附上逐行解读#define TdsSensorPin A1 // 假设传感器接在A1口 #define VREF 5.0 // 如果你的Arduino板供电是5V如Uno。如果是3.3V板如ESP32某些引脚则改为3.3 #define SCOUNT 30 // 用于软件滤波的采样次数 int analogBuffer[SCOUNT]; // 存储采样值的数组 int analogBufferTemp[SCOUNT]; int analogBufferIndex 0, copyIndex 0; float averageVoltage 0, tdsValue 0, temperature 25; // 假设水温25度最好实际测量 void setup() { Serial.begin(115200); pinMode(TdsSensorPin, INPUT); } void loop() { static unsigned long analogSampleTimepoint millis(); if (millis() - analogSampleTimepoint 40U) { // 每40ms采样一次 analogSampleTimepoint millis(); analogBuffer[analogBufferIndex] analogRead(TdsSensorPin); // 读取模拟值 analogBufferIndex; if (analogBufferIndex SCOUNT) { analogBufferIndex 0; } } static unsigned long printTimepoint millis(); if (millis() - printTimepoint 800U) { // 每800ms计算并输出一次 printTimepoint millis(); for (copyIndex 0; copyIndex SCOUNT; copyIndex) { analogBufferTemp[copyIndex] analogBuffer[copyIndex]; } // 对采样值进行中值滤波剔除可能存在的异常脉冲干扰 averageVoltage getMedianNum(analogBufferTemp, SCOUNT) * (float)VREF / 1024.0; // 将ADC值转换为电压值 // 核心计算公式TDS k * EC。EC由电压推导。 // 补偿公式: EC25 EC / (1 a*(t-25))其中a0.02/°C float compensationCoefficient 1.0 0.02 * (temperature - 25.0); // 温度补偿系数 float compensationVoltage averageVoltage / compensationCoefficient; // 补偿到25°C的电压 // 将补偿后的电压转换为TDS值。这个“145”是经验系数与传感器探头的电极常数K有关。 // 不同批次、品牌的探头此系数可能需要微调。这是校准的关键参数。 tdsValue (133.42 * compensationVoltage * compensationVoltage * compensationVoltage - 255.86 * compensationVoltage * compensationVoltage 857.39 * compensationVoltage) * 0.5; // 另一种简化公式tdsValue (compensationVoltage * 1000 * 0.65) / 2.0; // 假设VREF5V时2V对应1000ppm // 具体用哪个公式需参考模块说明书或通过校准确定。 Serial.print(电压:); Serial.print(averageVoltage, 2); Serial.print(V, TDS值:); Serial.print(tdsValue, 0); // 输出整数 Serial.println(ppm); } } // 中值滤波函数 int getMedianNum(int bArray[], int iFilterLen) { int bTab[iFilterLen]; for (byte i 0; i iFilterLen; i) { bTab[i] bArray[i]; } int i, j, bTemp; for (j 0; j iFilterLen - 1; j) { for (i 0; i iFilterLen - j - 1; i) { if (bTab[i] bTab[i 1]) { bTemp bTab[i]; bTab[i] bTab[i 1]; bTab[i 1] bTemp; } } } if ((iFilterLen 1) 0) { bTemp bTab[(iFilterLen - 1) / 2]; } else { bTemp (bTab[iFilterLen / 2] bTab[iFilterLen / 2 - 1]) / 2; } return bTemp; }代码关键点解读采样与滤波代码没有简单地进行单次analogRead而是采用了中值滤波。这是应对模拟信号噪声的经典手段。连续采样30次取中位数能有效滤除因电源波动、电磁干扰产生的偶发尖峰脉冲。温度补偿公式中引入了compensationCoefficient。如果你有独立的温度传感器如DS18B20应将实测的temperature变量替换为真实读数。如果没有设定一个接近常温的估计值如25.0也比完全不补偿要好。核心转换公式代码中使用了多项式拟合公式133.42*x^3 - 255.86*x^2 857.39*x来计算TDS。这个公式来源于模块制造商对特定探头特性的拟合。这是最容易出问题的地方因为不同厂家、甚至不同批次的探头其电极常数K值可能有差异导致这个公式不准确。因此校准是必须的。4. 校准实战告别“差不多”追求“测得准”未经校准的TDS传感器读数可能偏差巨大完全失去参考价值。校准的目的就是确定你手上这个特定探头的电压-TDS转换关系。4.1 校准前的准备工作你需要准备两种标准溶液零点校准液蒸馏水或去离子水。理论上TDS为0ppm。这是校准的基准点。标准点校准液购买已知浓度的TDS标准溶液常见的有342ppm或1000ppm的氯化钠NaCl标准液。这是校准的斜率点。重要提示切勿使用自来水或矿泉水作为标准液其成分复杂且未知无法提供准确的基准。4.2 两步校准法实操步骤我们采用两点校准法这能同时确定转换公式的偏移量和斜率。步骤一硬件连接与代码准备将传感器连接好上传一个简化的、只输出原始平均电压的代码。确保传感器探头和温度传感器如果有能充分浸入校准液。步骤二采集零点数据用蒸馏水彻底清洗探头和容器。将探头浸入蒸馏水中轻轻晃动以排除气泡静置30秒以上让读数稳定。记录下稳定的输出电压值V_zero。例如读数为0.12V。步骤三采集标准点数据取出探头用蒸馏水冲洗并用滤纸吸干勿擦拭电极表面。将探头浸入342ppm的标准液中同样静置稳定。记录下稳定的输出电压值V_std和溶液的温度T_std。例如25°C时读数为1.65V。步骤四计算校准参数假设我们使用最简单的线性模型TDS K * (V_compensated)其中V_compensated是经过温度补偿后的电压。首先补偿标准液读数到25°CV_std_comp V_std / (1 0.02*(T_std - 25))。假设T_std就是25则V_std_comp 1.65V。理论上零点电压V_zero也应补偿但蒸馏水电导率极低其温度系数可忽略我们直接用V_zero 0.12V。计算斜率KK TDS_std / (V_std_comp - V_zero) 342 / (1.65 - 0.12) ≈ 223.53。现在你的校准公式就是TDS 223.53 * (V_measured_compensated - 0.12)。步骤五验证校准结果将探头放入另一种已知浓度的标准液如1000ppm或一种水质稳定的水中如某品牌矿泉水看瓶身标签TDS范围用新公式计算看结果是否在合理范围内。4.3 校准中的常见陷阱与处理读数长时间不稳定可能是电极表面有油脂或污染。用软毛刷蘸取少量中性洗涤剂轻轻清洗再用蒸馏水冲净。校准后测量自来水数值离谱检查温度补偿是否正确。如果水温与25°C相差很大补偿不足会导致巨大误差。不同溶液校准结果不一致这是TDS传感器的固有局限离子组成差异。选择与你目标测量水体离子组成接近的标准液进行校准能获得对该类水体更准的读数。例如监测营养液就用接近营养液成分的标准液。5. 进阶应用与稳定性优化基础读数搞定后要想让这个传感器在真实项目中可靠工作还需要以下几层优化。5.1 电源噪声隔离与硬件滤波Grove模块通常直接与单片机共用USB或开关电源供电这些电源噪声会直接耦合进敏感的模拟测量电路。独立LDO供电为模拟传感器单独使用一个低压差线性稳压器如AMS1117-3.3供电可以从主电源降压得到能有效滤除高频开关噪声。增加RC滤波在传感器的模拟输出引脚和单片机ADC输入引脚之间串联一个100欧姆电阻并对地接一个0.1uF的瓷片电容构成一个简单的低通滤波器可滤除高频干扰。使用屏蔽线如果传感器需要引线较长使用带屏蔽层的导线并将屏蔽层单点接地接单片机系统的GND防止空间电磁干扰。5.2 软件算法升级超越中值滤波中值滤波抗脉冲干扰好但对周期性噪声或缓慢漂移效果一般。可以结合使用移动平均滤波持续维护一个固定长度的读数队列每次输出队列的平均值。这对抑制高频随机噪声有效。#define FILTER_LEN 10 float voltageBuffer[FILTER_LEN]; int bufferIndex 0; float movingAverage 0; // 在采样循环中 voltageBuffer[bufferIndex] currentVoltage; bufferIndex (bufferIndex 1) % FILTER_LEN; movingAverage 0; for(int i0; iFILTER_LEN; i) { movingAverage voltageBuffer[i]; } movingAverage / FILTER_LEN; // 使用 movingAverage 进行后续计算一阶低通滤波指数加权平均计算量小能平滑数据且响应速度可调。float filteredValue 0; float alpha 0.1; // 平滑系数0alpha1越小越平滑响应越慢 filteredValue alpha * currentVoltage (1 - alpha) * filteredValue;在实际项目中我常采用“中值滤波一阶低通”的组合拳先用中值滤波剔除野值再用低通滤波平滑效果非常扎实。5.3 电极维护与长期监测策略TDS电极不是“一劳永逸”的器件。干放是禁忌探头长时间干燥存放会导致电极表面的敏感涂层失效。短期不用应浸泡在蒸馏水中长期不用需按照说明书要求保存。定期校准即使精心维护电极性能也会随时间缓慢漂移。对于长期监测项目建议每1-3个月用标准液进行一次单点检查只需标准点即可如果偏差超过5%-10%则需要重新进行两点校准。避免极端环境强酸、强碱、高浓度有机溶剂或高温环境会永久性损坏电极。一般民用级探头工作温度在0-55°C之间。6. 项目集成实战打造智能鱼缸水质监测站理论说再多不如一个实际案例。假设我们要用Grove TDS传感器、一个DS18B20水温传感器和一个ESP32做一个能联网的智能鱼缸监测仪数据上报到Home Assistant。系统架构ESP32作为主控负责读取传感器、连接Wi-Fi。Grove TDS传感器模拟输出版接ESP32的某个ADC引脚注意ESP32的ADC非线性较严重最好选择校准过的引脚或外接ADS1115等高精度ADC模块。DS18B20接单总线引脚用于水温补偿。数据通过MQTT协议发布到本地Home Assistant的Broker。关键代码片段基于Arduino框架#include WiFi.h #include PubSubClient.h #include OneWire.h #include DallasTemperature.h // 网络配置 const char* ssid your_SSID; const char* password your_PASSWORD; const char* mqtt_server 192.168.1.100; // 传感器引脚 #define TDS_PIN 34 // ESP32的GPIO34 (ADC1_CH6) #define ONE_WIRE_BUS 4 // DS18B20数据线接GPIO4 // 校准参数根据你的校准结果修改 const float V_ZERO 0.12; const float K_VALUE 223.53; OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(oneWire); WiFiClient espClient; PubSubClient client(espClient); float readTDS(float temperature) { // 1. 采样与滤波此处简化实际应加入前述滤波算法 int analogValue analogRead(TDS_PIN); float voltage analogValue * 3.3 / 4095.0; // ESP32 ADC满量程3.3V12位分辨率 // 2. 温度补偿 float compensationCoefficient 1.0 0.02 * (temperature - 25.0); float compensatedVoltage voltage / compensationCoefficient; // 3. 应用校准公式 float tdsValue K_VALUE * (compensatedVoltage - V_ZERO); // 确保读数不为负 tdsValue tdsValue 0 ? 0 : tdsValue; return tdsValue; } void setup() { Serial.begin(115200); sensors.begin(); setup_wifi(); client.setServer(mqtt_server, 1883); } void loop() { if (!client.connected()) { reconnect_mqtt(); } client.loop(); static unsigned long lastSensorRead 0; if (millis() - lastSensorRead 10000) { // 每10秒读一次 lastSensorRead millis(); // 读取水温 sensors.requestTemperatures(); float waterTemp sensors.getTempCByIndex(0); // 读取TDS float tds readTDS(waterTemp); // 发布MQTT消息 char tempMsg[10], tdsMsg[10]; dtostrf(waterTemp, 4, 1, tempMsg); // 转换为字符串保留1位小数 dtostrf(tds, 6, 0, tdsMsg); // TDS取整数 client.publish(fish_tank/temperature, tempMsg); client.publish(fish_tank/tds, tdsMsg); Serial.printf(水温: %.1f°C, TDS: %.0f ppm\n, waterTemp, tds); } } // ... WiFi和MQTT连接函数省略集成要点ADC精度ESP32内置ADC非线性误差可能高达10%对于要求不高的鱼缸监测尚可接受。若追求精度强烈建议使用外置16位ADC模块如ADS1115其代码需调用相应库。MQTT主题设计主题结构清晰如fish_tank/tds便于Home Assistant自动发现和创建实体。读数间隔TDS测量不宜过于频繁每次测量后电极需要短暂时间恢复稳定。10-30秒的间隔是合理的。异常处理代码中应增加对传感器断线、读数超范围的判断并可通过MQTT发布一个status主题来上报设备健康状态。7. 常见问题排查与误区澄清即使按照上述步骤操作实践中仍会遇到各种问题。下面是一个快速排查指南现象可能原因排查步骤与解决方案读数始终为0或接近01. 探头未正确浸入水中未没过金属部分。2. 硬件连接错误或接触不良。3. 电极严重污染或损坏。4. 代码中ADC引脚配置错误。1. 确保探头完全浸入。2. 用万用表测量模块VCC和GND间电压应为3.3V/5V测量信号脚对地电压晃动时应有变化。3. 按前述方法清洗探头或尝试更换探头。4. 检查代码中pinMode设置和analogRead的引脚号。读数异常高如满量程1. 信号线对VCC短路。2. ADC参考电压设置错误代码中VREF与实际板子电压不符。3. 探头在空气中测量空气电导率极低某些电路可能输出饱和电压。1. 检查接线。2. 用万用表测量Arduino的5V或3.3V输出修正代码中的VREF值。3. 确保探头在液体中。读数不稳定跳动大1. 电源噪声大。2. 液体中有气泡附着在电极上。3. 未进行软件滤波。4. 电磁干扰如靠近电机、继电器。1. 尝试用电池或干净的线性电源供电。2. 轻轻晃动探头或敲击容器壁排除气泡。3. 实施中值滤波和低通滤波。4. 远离干扰源或为信号线加屏蔽。校准后测量其他溶液仍不准1. 标准液已过期或污染。2. 温度补偿未启用或温度传感器不准。3. 目标溶液离子组成与校准液差异巨大。4. 探头适用于特定范围超出线性区。1. 使用新鲜、未开封的标准液重新校准。2. 校准和测量时都必须使用准确的温度值进行补偿。3. 理解TDS读数的“估算”本质对于成分迥异的水样需用针对性标准液校准。4. 查阅探头规格书确认其量程通常是0-1000ppm。读数随时间缓慢漂移1. 电极老化。2. 电极表面形成污垢或氧化层。3. 环境温度变化大且温度补偿不完善。1. 定期清洗和校准。2. 按照说明书方法清洁电极如用稀酸浸泡但需谨慎。3. 确保温度传感器紧靠TDS探头并检查补偿公式参数。最后澄清一个广泛存在的误区TDS不等于水质好坏。TDS低只代表水中溶解性离子少可能是纯净水也可能是缺乏矿物质的不健康水。TDS高可能是富含矿物质的优质矿泉水也可能是受到污染的水。它必须结合pH、余氯、氨氮等其他参数才能对水质做出综合判断。Grove TDS传感器是一个出色的趋势监测工具它能告诉你水质是否发生了显著变化例如鱼缸换水后TDS是否下降净水器滤芯失效后TDS是否上升这才是它在物联网项目中最核心的价值所在。

相关新闻

STM32单片机红外跟踪智能车锂电池充电系统114-21(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_

STM32单片机红外跟踪智能车锂电池充电系统114-21(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_

STM32单片机红外跟踪智能车锂电池充电系统114-21(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_ 演示视频(复制到浏览器打开): https://www.bilibili.com/video/BV1C5411h7hV/ 产品功能描述: 本系…

2026/10/17 9:52:34 阅读更多 →
PCB批量组装配套参数批量校准

PCB批量组装配套参数批量校准

一、PCB 裸板与组装成品参数脱节,批量整机性能不一致的核心诱因PCB 裸板各项电气、物理指标全部检验合格,经过元器件贴片、焊接组装后,同批次整机出现采样精度偏差、射频功率偏移、传感器零点漂移、基准电压离散等批量问题,除元器…

2026/10/17 9:54:51 阅读更多 →
阿里云ECS密钥对连接与安全管理实战指南

阿里云ECS密钥对连接与安全管理实战指南

1. 阿里云ECS服务器密钥对连接全指南 作为云计算时代的核心基础设施,ECS服务器已成为开发者日常工作的标配。而密钥对连接作为最基础也最关键的登录方式,其安全性直接关系到整个业务系统的稳定。我在管理数十台阿里云ECS的实践中发现,90%的服…

2026/10/17 10:35:23 阅读更多 →

最新新闻

VGG骨干+轻量时序注意力:视频理解模型设计实战拆解

VGG骨干+轻量时序注意力:视频理解模型设计实战拆解

做视频理解绕不开一个老问题:怎么在空间特征之上合理地建模时间关系。这个“VGG改进”系列我写了几十篇,大部分都集中在图像场景、网络剪枝和重参数化上,直到第23篇我才正式把方向切到视频。今天这篇就用一个实战设计笔记的方式,完…

2026/10/18 9:58:37 阅读更多 →
基于Canvas与React的轻量级创意合成工具artcraft开发实践

基于Canvas与React的轻量级创意合成工具artcraft开发实践

1. 项目缘起与整体设计思路1.1 为什么会有 artcraft 这个想法做创意工具这些年,我最大的感受是:市面上大多数所谓“创作辅助平台”,要么是给专业设计师用的重型武器,功能全但上手门槛高得离谱;要么是给小白玩的轻量玩具…

2026/10/18 9:58:37 阅读更多 →
MATLAB交通标志检测:BP网络+HOG+PCA的毕设落地方案

MATLAB交通标志检测:BP网络+HOG+PCA的毕设落地方案

简介:本资源是一套基于MATLAB的交通路标检测与识别实战项目,面向机器视觉与深度学习初学者及高校课程设计者,聚焦智能交通场景下的图像识别核心任务。项目完整覆盖图像预处理、CNN特征提取、BP神经网络建模、多类路标(禁止/警示/指…

2026/10/18 9:58:37 阅读更多 →
基于人工势场法与MPC的自动驾驶换道避撞技术解析

基于人工势场法与MPC的自动驾驶换道避撞技术解析

高速巡航时前车突然急刹,留给你的反应时间往往不到一秒。这个场景里藏着一个很有趣的问题:系统是该选择全力制动,还是观察相邻车道、迅速打方向避开?答案是“看情况”,而这个“看情况”的背后,就是换道避撞…

2026/10/18 9:58:37 阅读更多 →
VLAN综合实验深度解析:广播域隔离与跨交换机通信全流程

VLAN综合实验深度解析:广播域隔离与跨交换机通信全流程

我帮一家做电商代运营的小公司调试网络时,遇到过一件挺折腾的事:办公区明明只有四十多台电脑,可一到下午订单高峰期,整个办公室的网络就卡成幻灯片,打印机能连上却经常丢任务,连财务那边访问服务器都时不时…

2026/10/18 9:58:37 阅读更多 →
在线考试系统的Java后端设计:并发、判分与数据一致性避坑指南

在线考试系统的Java后端设计:并发、判分与数据一致性避坑指南

简介:一套面向Java学习者和毕业设计开发的在线考试管理系统完整交付包,涵盖源代码、论文、开题报告、外文翻译、英文文献与答辩PPT,适合快速搭建在线考试项目或完成课程设计、毕业设计汇报。系统覆盖题库管理、考试安排、在线答题、自动评分和…

2026/10/18 9:57:37 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 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/18 0:55:02 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →