手把手自制智能电表:ESP32+电流互感器实现家庭用电监测 去年夏天我收到一张电费单金额比前一个月翻了一倍。翻遍家里的电器空调、热水器、冰箱、路由器、电视每样看起来都正常但就是不知道哪样在“偷电”。为了解决这个问题我花了一个周末做了一个Smart Energy Meter用电流互感器夹在入户总线上实时追踪整个家庭的用电功率再配合手机端面板把每一小时、每一天的用电曲线看得明明白白。这篇文章把这套方案的完整过程记录下来从硬件选型、电路搭建、采样原理、代码实现到校准和排坑适合有一点Arduino或ESP32基础、想给家里装上“用电仪表盘”的人参考。1. 先拆解清楚智能电表到底在测什么1.1 项目需求拆解做任何硬件项目之前先别急着下单买元器件把需求列表拉出来。我当时给自己定的目标很简单要能实时看到家里当前总功率要能按小时、按天查看历史用电曲线还要能在异常高功耗时收到提醒。这三个目标听起来差不多但背后对硬件和代码的要求完全不一样。如果要看实时功率只需要每秒采样几十个周期计算电流有效值和电压有效值再乘个功率因数就行数据量很小。如果要按小时和天绘制曲线就必须考虑数据存储方案不能总让设备连着电脑所以MCU得自带WiFi或者干脆装个树莓派。如果要异常告警那还得在云端或本地自动化平台里写判断逻辑比如连续10分钟功率超过3000W就推一条通知。我最终选的是ESP32开发板配合电流互感器的方案。ESP32自带WiFi和蓝牙12位ADC价格便宜社区资料多拿来跑电能监控绰绰余。整套系统不到80块钱不含屏幕比买一个市售智能电表便宜不少而且数据完全掌握在自己手里。1.2 为什么我不去拆家用电表也没选智能插座方案有人会问电网公司的电表本身就能看用电量为什么还要自己做一套实际用过就明白供电局的电表数据只能看到月度累计或者最多T1的日数据你根本拿不到“空调启动那一下到底吃了几千瓦”这种分钟级甚至秒级数据更别说把总用电拆到具体某一路设备上了。那退一步用智能插座逐个测电器行不行行但有两个麻烦。第一很多电器是固定布线比如空调、热水器、浴霸根本插不到智能插座上。第二插座方案只能测单一设备想算“全屋总功率”只能把十几个插座的数据汇总一旦某个插座离线整条曲线就断了。电流互感器方案没有这些问题它直接夹在入户电缆或配电箱内某条支路的外部绝缘皮上不改动任何线路一次安装就能覆盖整个回路。非侵入式测量还有一个隐藏优点安装时不需要断电操作主线路风险远低于拆电表接线。当然我后面会专门讲配电箱操作的安全边界这里先记住一句话能不动主线就不动主线夹住电缆测电流才是家庭级监控该有的分寸。1.3 整套系统的工作链路整个智能电表系统的流程可以概括成一条链路电流互感器先把主线路中的大电流按比例变成小信号经过采样电阻和分压偏置电路后转成ESP32的ADC能读取的0到3.3V电压然后由固件里的采样算法算出电流有效值和实时功率最后通过WiFi把数据推送到Home Assistant或者InfluxDB这类平台前端用面板展示曲线和累计电量。这条链路里有三个关键点很多教程不会明说。第一交流信号是双极性的有正半周也有负半周而ADC不能读负电压所以必须加一个直流偏置把交流波形整体抬高到1.65V上下。第二电流有效值不是直接取平均而是对采样值做平方、求和、开方即RMS计算。第三电流信号和电压信号之间存在相位差如果只测电流不测电压算出来的功率只能是视在功率和真实家用电费计量的有功功率有误差。这些问题我在第三章和第四章展开讲。2. 硬件准备与电路搭建2.1 核心元器件清单这套系统的BOM十分简单我在采购时踩过不少坑所以直接把最终好用的清单列出来。元器件型号/规格数量备注主控板ESP32 DevKitC V413400、2202 都行注意ADC采样频率要求电流互感器SCT-013-000100A:50mA或 SCT-013-03030A:1V1家用总闸选100A量程支路选30A采样电阻高精度低温漂电阻 24Ω 或 22Ω1仅电流输出型CT需要偏置电阻10kΩ 精度1%2构成分压中点偏置到1.65V滤波电容10uF 电解电容 100nF 瓷片电容各1ADC前端滤波保护二极管1N4148 或 BAT542钳位保护ADC引脚供电模块HLK-PM01 或 AMS1117-3.31220V转5V再转3.3V外壳3D打印外壳或明装塑料盒1注意留出CT穿线孔看到SCT-013-000和SCT-013-030的区别没-000是电流输出型输出的是小电流需要自己接采样电阻-030内置了采样电阻直接输出1V的交流电压信号。新手建议用-030省去自己算采样电阻和担心饱和的麻烦。但我自己后来换回了-000因为想通过更换采样电阻来调整量程和分辨率灵活性更高。2.2 电流互感器的三个关键参数选电流互感器不能只看“最大电流”有三个参数必须同时考虑。第一个是额定变比。SCT-013-000的变比是100A对应50mA也就是说入户总电流是50A时次级输出大约25mA。这个电流流经采样电阻才能转成ADC能读的电压。公式很简单采样电阻两端的电压幅值 次级电流 x 采样电阻值。我用24Ω电阻100A满载时次级电流50mA产生1.2V有效值电压峰值约1.7V加上1.65V偏置后波峰在3.35V波谷在-0.05V刚好贴着ADC的量程边界。从这里你能看出来为什么我建议SCT-013-03030A/1V这种输出电压型号1V的有效值对应峰值1.41V偏置后范围0.24V到3.06V余量更充裕。第二个是线性度和相位误差。便宜的CT在中低电流段线性还可以但小电流时误差会明显增大。尤其你关注待机功耗时可能只有0.1A到0.3ACT测得会偏低。我后面在校准章节会详细讲怎么做多点校准这里先记住不要只看厂家标称精度拿一个白炽灯或电暖器当基准负载测一测心里才有底。第三个是穿线孔径和安装方式。SCT-013系列是分体式开口磁环按压弹簧就能打开把电缆卡进去再合上非常适合已有线束的配电箱。买之前量一下家里电缆外径别买回来夹不下。如果是40A以上的粗电缆可能需要选更大孔径的型号。2.3 分压偏置电路原理与搭建ESP32的ADC只能采样0到3.3V的单极性电压而电流互感器输出的交流信号是围绕着0V上下摆动的。如果不做处理直接接ADC负半周会直接被采样成0数据完全没法用。解决方法是把信号整体抬高1.65V这就是分压偏置电路的作用。最简单的偏置电路就是用两个10kΩ电阻串联在3.3V和GND之间中间抽头就是1.65V然后把CT信号通过一个隔离电容串联到中点再经过RC滤波后进ADC。这里有个细节容易被忽略分压中点必须有足够的驱动能力。10kΩ分压网络的内阻是5kΩ如果直接驱动ADC的采样电容建立时间不够会导致读数跳动。所以我在中点后加了一个运放跟随器用LM358或MCP6002都行把偏置电压稳定输出。如果你不想加运放也可以用470Ω加470Ω的低阻分压但静态功耗会大一些。我实际用的电路是这样的CT次级经采样电阻后把电压信号串联一个1kΩ限流电阻接到偏置中点。ADC引脚对地接一个100nF电容滤高频噪声同时用两个背靠背的1N4148二极管把输入电压钳位在-0.7V到4.0V之间万一CT输出异常或接错线不至于烧坏ESP32的引脚。这个保护电路看着简单但救过我的板子。2.4 配电箱安装操作和安全边界先声明一个原则配电箱操作必须谨慎如果你不具备基本电工常识最好找有经验的朋友从旁指导或者干脆只做“夹线”这一步不碰任何裸露铜排。我的安装步骤是关闭总闸打开配电箱面板把SCT-013的磁环打开夹住入户总火线的绝缘外皮确认夹紧后合上面板再合上总闸。注意SCT本身没有方向要求但为了代码里判断功率方向我建议在磁环外壳上标记一个箭头统一朝向负载侧。如果装反了读数不会错只是符号会反过来。还有一点千万别把CT夹在已经接好零线排和地线排的密集线束里那样信号会受到严重干扰。尽量让CT单独夹在一根线上周围避开开关器件特别是变频器或开关电源的走线。我最初把CT放在空调开关旁边结果只要空调压缩机启动读数就有大毛刺后来把CT挪到距离开关20cm以上的位置才正常。3. 从ADC原始值到功率数据采集核心逻辑3.1 交流采样基础原理家庭用电是50Hz交流电电压和电流都随时间呈正弦变化。要计算真实功率不能像测直流那样“读一个数”就完事必须在一个或多个完整周期内连续采样再做数学运算。具体来说计算电流有效值的步骤是在一个完整周期内均匀采样N个点每个点的电压值减去偏置电压换算成实际电流然后把每个点的电流平方求所有点平方的平均值最后开根号。这个结果就是RMS电流也是电表上显示的有效电流值。这里有一个常见误区很多人直接用ADC读到的平均值乘以一个常数这样误差极大因为正弦波的平均值和有效值之间虽然有固定换算关系但实际电流波形不一定是纯正弦开关电源和高频设备会产生很多谐波波形早已变形。RMS计算才是准确的做法它天然包含了所有谐波的能量贡献。采样点数N怎么定理论上一个周期内采样点数越多越精准但受限于MCU速度和ADC转换时间。50Hz的周期是20ms我在ESP32上跑2000个采样点总耗时约0.4秒覆盖20个周期既能保证RMS计算的稳定性又不至于让CPU满负荷跑。ESP32的ADC转换单次大概在10us级别2000点平均每点200us完全跟得上。3.2 用EmonLib快速实现第一版如果你不想从零造轮子直接用EmonLib这个开源库两行代码就能拿到电流有效值。这是我最快跑通整个链路的方式非常适合先验证电路有没有接对。#include EmonLib.h EnergyMonitor emon1; void setup() { Serial.begin(115200); // 参数引脚号校准系数30A量程的CT用30.0100A量程的CT用100.0 emon1.current(A0, 30.0); } void loop() { double Irms emon1.calcIrms(1480); // 采样点数1480约等于1秒 double power Irms * 220.0; // 先粗略估算功率 Serial.print(Current: ); Serial.print(Irms, 3); Serial.print( A, Power: ); Serial.print(power, 1); Serial.println( W); delay(3000); }EmonLib的计算原理其实就是RMS内部从第一个采样点开始累加所以采样点数决定了窗口长度。1480个点大约对应1秒这个周期对监控来说足够了。我第一次刷入这个程序串口打印出来的电流值在0.45A附近跳动那个时候家里只有冰箱在运转数值看起来合理。不过这样算出来的功率是不准的因为没有把电压和功率因素考虑进去。EmonLib有一个calcVI函数可以同时采样电压和电流但需要额外的电压互感器我放到第四章的进阶方案里讲。3.3 手动实现RMS计算和相关滤波库虽然方便但遇到问题需要调时你反而搞不清楚内部逻辑。所以我后来重写了一份手动RMS代码方便自己调节采样窗口和滤波参数。#define ADC_PIN 34 #define ADC_VREF 3.3 #define ADC_RES 4095.0 // SCT-013-030输出1V RMS对应30A #define CT_RMS_VOLTAGE 1.0 #define CT_MAX_CURRENT 30.0 #define ADC_BIAS 1.65 const float VOLTS_PER_AMP CT_RMS_VOLTAGE / CT_MAX_CURRENT; // 0.0333 V/A float calcIrmsManual() { const int samples 2000; const int intervalUs 200; float sumSq 0.0; for (int i 0; i samples; i) { float adcValue analogRead(ADC_PIN); float voltage (adcValue / ADC_RES) * ADC_VREF; float acVoltage voltage - ADC_BIAS; float current acVoltage / VOLTS_PER_AMP; sumSq current * current; delayMicroseconds(intervalUs); } return sqrt(sumSq / samples); }为了防止ADC采到毛刺导致RMS值跳变我会对连续三次RMS结果取中位数。中位数滤波相比平均值的好处是能去掉偶发的尖峰而且不会让真实波动变得迟钝。刚开始我只用平均值结果冰箱压缩机启动那一下数据从0.5A跳到了8A然后衰减回正常曲线就像心电图一样后来改成中位数之后平滑多了。还有个细节ESP32的ADC在不同衰减档位下0到3.3V输入范围和实际读数之间存在非线性。直接拿读数乘以3.3再除以4095在电压靠近两端时会有两三个百分点的误差。如果想正经做数据统计建议用两个精密电阻分压把1V标准电压接到ADC口实测几个点做线性校准。这个我在第四章一并讲。3.4 数据上报MQTT还是HTTP拿到电流、功率数据后下一步是让它离开ESP32进入可视化系统。我这边有两个选择MQTT和HTTP POST。别让这个选择难倒你关键是看你的下游平台。如果你用Home AssistantMQTT是最顺的路。ESP32把数据发布到主题比如home/energy/powerHome Assistant的MQTT集成自动订阅直接生成实体。如果你用InfluxDB加Grafana那HTTP POST更简单直接用HTTP POST把JSON数据塞给InfluxDB的API一条命令的事。我最后采用的是MQTT方式因为Home Assistant能同时做告警和前端展示。ESP32这边的核心逻辑就是用WiFiManager做配网然后用PubSubClient库连MQTT broker每隔5秒发布一次数据。注意5秒这个频率是保险的总数据量很小不会给家里WiFi带来压力。下面是一段上报的代码示意#include WiFi.h #include PubSubClient.h #include EmonLib.h WiFiClient espClient; PubSubClient mqtt(espClient); EnergyMonitor emon1; const char* mqttServer 192.168.1.100; const int mqttPort 1883; const char* topic home/energy/power; void publishReading() { double Irms emon1.calcIrms(1480); char payload[64]; snprintf(payload, sizeof(payload), {\current_A\:%.2f,\power_W\:%.1f}, Irms, Irms * 220.0); mqtt.publish(topic, payload); }本地存储的事情我一直建议交给Home Assistant或InfluxDB不要在ESP32上折腾SD卡或Flash。MCU的Flash有擦写寿命限制频繁写日志会缩短寿命。我把ESP32当成纯粹的采集终端所有历史数据都落到局域网内的NAS或树莓派上这样设备断电也不怕丢数据。4. 校准与精度调优4.1 校准的前提找到一把可靠的尺子做校准之前必须有一个基准仪表。我借了一个钳形功率计UT210E在总闸下方把同一根电缆夹了两遍一遍接我的智能电表一遍接钳形表两边的读数就能互相对比。如果家里没这工具也可以用一个固定功率的电器做参照纯电阻负载比如电暖器、白炽灯功率因数接近1电流等于功率除以电压比如1500W电暖器在220V下理论上是6.8A左右。校准逻辑很简单让智能电表显示一个RMS电流值同时用基准表记录真实值两者相除得到一个比例系数然后回填到代码里。但这里有个坑这个比例系数可能只在同一个电流点有效。因为电流互感器在小电流段和大电流段误差曲线不一样。所以至少要校准三个点小电流只开一个台灯、中等电流开电暖器加电脑、大电流再开个微波炉或烤箱。4.2 增益校准和偏置校准分开做很多教程只教“改一个系数把两个读数对上”这是不够的。增益误差和偏置误差是两回事我建议分开处理。先把电流归零也就是关掉所有用电设备只保留待机设备理论上电流应该接近0A。如果你读到0.15A那偏置就是0.15A需要从每次采样中减去这个值。偏置误差主要来自ADC参考电压的波动和偏置电路电阻的精度。然后是增益误差。在中等电流档记录读数比如基准表是6.8A我的智能电表读数是6.5A那么增益修正系数就是6.8/6.51.046。把这个系数乘到每次RMS计算结果上就行。增益误差主要来自采样电阻的容差和CT变比的标称误差。市面上大多数SCT-013的变比精度是1%到2%所以这个系数通常在0.98到1.05之间。下面是我自己的标定记录表基准电流初始读数修正后读数误差0.00 A0.13 A0.01 A偏置校准完成2.15 A2.08 A2.14 A-0.5%6.80 A6.50 A6.79 A-0.15%12.40 A11.90 A12.38 A-0.16%修正后全量程误差控制在1%以内对于家庭用电监控来说完全够用。4.3 进阶加入电压采样测真实有功功率如果你只测电流用额定电压220V乘电流来算功率在绝大多数家庭场景下误差不会太大因为LED灯、电脑等设备虽然带谐波但功率因数通常在0.9以上。但如果你家里有大功率电机类设备比如水泵、吸尘器、变频空调功率因数可能低到0.5这时候电流很大但真正耗电没那么夸张用VA代替W会让你以为自己家的电量“被偷了”。要测真实有功功率就需要同时采样电压和电流计算两者的相位关系。我加装了一个ZMPT101B电压互感器模块接到入户电压上用另一个ADC通道采集电压波形。代码切换到EmonLib的calcVI函数内部会通过过零检测计算电压电流的相位差然后返回Vrms、Irms和realPower。接线和电路都不复杂但电压互感器的安装比电流互感器危险得多因为它直接接触220V。如果你没有隔离变压器的经验我强烈建议先接在已绝缘的接线端子上或者干脆跳过电压测量用固定电压估算。安全第一这个项目的核心目的是搞懂自家用电不是考核你有多大胆。等你有把握了再补电压通道也不迟。4.4 待机功耗误判的处理在调试过程中最让我头疼的是待机功耗误判。很多家电在关掉后并没有真正断电而是处于待机状态功率可能只有几瓦到十几瓦。电流互感器在这么小的电流下误差很大我经常看到“0W”和“25W”跳来跳去完全没法判断家里待机是否异常。解决的办法有两个层面。第一用在软件中加一个死区阈值。低于某个阈值的功率直接归零比如低于5W显示为0W。第二在数据分析层面做窗口统计。不要看瞬时值看5分钟或15分钟的累计电量。待机功耗的累计电量才是真正影响电费的因素瞬时波动根本无需担心。我后来在Home Assistant里建了一个utility_meter专门统计每日累计电量这个指标跟电费单对上了误差在3%以内这才算真正有了实用价值。5. 数据可视化与真实应用场景5.1 Home Assistant接入一个面板看全屋用电数据从ESP32进入Home Assistant后我做的第一件事是组装一个仪表盘。HA里用MQTT集成接收数据然后新建一个面板放上实时功率的卡片、今日累计电量的卡片和24小时功率曲线图。整个过程不需要写一行前端代码全部在面板配置界面里拖拽完成。对于只想看数据的人这个面板就够用了。但我想提醒一下电量和功率的数据精度不一样。功率卡的展示数值是一个瞬时值而累计电量卡应该用integration积分传感器来算因为它需要对功率做时间积分。比如功率是1000W持续1小时累计电量就是1kWh。这个积分过程最好放在长期可靠的平台里做ESP32本身不适合干这个。UI组件配置上我用的是multiple-entity-row来自定义卡片这样可以在一行里显示电流、功率、功率因数三个数字不用一张卡片一个指标。数据显示的刷新频率我设在10秒太频繁会看着眼花不利于捕捉趋势。5.2 从数据里挖出三个“用电元凶”设备跑起来之后第一个月我收集到了完整的历史数据。翻看曲线时发现了三件有意思的事。第一家里的热水器每天晚上会“偷偷”加热。表面上看它白天是关着的但曲线显示每天凌晨3点有个持续20分钟、功率1800W的尖峰。后来查了说明书发现是保温功能在自动工作。这个发现让我重新评估了热水器的使用模式改成了出门前断电一个月电费少了将近30元。第二路由器加光猫加NAS的组合待机功耗比我预想的高很多。这三样设备加起来常年有60W的功耗一个月就是43kWh。我原先以为它们加起来顶多30W。数据不会骗人这个发现直接促使我升级了一台低功耗交换机把NAS关机策略优化了一下。第三冰箱在夏季的启动频次明显增加。功率曲线上的窄脉冲从每30分钟一次变成每15分钟一次单次启动电流高达8A。从这个变化我判断冰箱散热器上积灰严重清理之后启动间隔果然拉长了。用数据反推家电健康状况是这套系统给我最大的惊喜。5.3 扩展思路分路计量和联动场景做了总功率监控之后我顺带做了两路扩展。在配电箱里给空调、厨房插座各装一个CT这样就能把“总功率异常”定位到具体哪一路。其实非侵入式方案做分路计量成本很低一个MCU最多可以接6个CT管够大多数家庭的需求。配合自动化这套系统还能做很多事。我在HA里设了一条自动化当总功率连续10分钟超过4000W并且熔断器没有跳闸时推一条手机通知提醒我可能同时开太多大功率电器了。还有一个联动是当洗衣机运行功率维持在300W以上并持续2分钟后如果阳台灯亮着就自动关掉阳台灯。这种联动的前提是功率数据可靠而这正是整个项目前面所有工作的价值所在。6. 常见问题与排查实录6.1 常见问题速查表我把从零搭建过程中遇到的高频问题整理成一个速查表方便你参考排查。现象可能原因解决措施读数恒为0CT没有夹好或采样电阻虚焊检查磁环是否闭合用万用表量CT次级是否有电压读数一直跳变偏置电路不稳或ADC参考电压波动用万用表实测偏置点是否为VREF/2必要时加运放缓冲大电流读数明显偏低CT进入饱和区换用更大额定电流的CT或减小采样电阻有电流但功率为0电压通道未配置或接反校准电压、检查ZMPT101B接线确认功率因数计算局域网内数据延迟大MQTT broker性能不足或WiFi信号差确认broker版本调整ESP32发射功率WiFi反复断开电源供电不足或电路干扰用5V/2A电源单独供电避免共用劣质充电器6.2 三个真实踩坑记录第一个坑是ADC引脚选择。ESP32的ADC2引脚和WiFi共用射频模块如果你用ADC2通道采样一旦WiFi在发数据采样结果就会随机跳变完全没法看。我一开始用的是GPIO26ADC2发现读数像抽风一样害得我怀疑是CT坏了。后来换成GPIO34ADC1通道6问题立刻消失。写完这行代码我记了五年ESP32的模拟采样只用ADC1。第二个坑是采样间隔太短导致CPU卡死。我最早在循环里用delayMicroseconds(4)跑3000个采样点结果CPU频繁进中断MQTT消息发不出去。后来我把采样间隔放宽到200us并且把采样循环放在主循环里用定时器控制频率而不是在loop()里暴力跑。对于MCU来说连续采集时任务优先级比上报高得多要让采样过程不被中断打扰同时留出足够的CPU时间给WiFi协议栈处理。第三个坑是温度对零点漂移的影响。夏天和冬天设备温度差将近20度偏置电压和CT的磁导率都会变化导致冬季校好的零点在夏天偏了0.2A。这个误差平时无所谓但在判断待机功率时会很致命。我最终的方案是在固件里每隔24小时自动检测一次“最低5分钟的电流中位数”把它作为新的零点偏置。这个思路说白了就是利用凌晨大概率低负载的时间窗口做的软校准对你来说也可以选择每天早上6点设备自动校准一次。6.3 安全边界提醒最后所有做强电相关项目的朋友请记住这个项目里的电流互感器虽然不接触裸线但在安装和调试过程中你仍然在配电箱附近操作那里充满220V高压。磁环卡入电缆时手指千万不要碰触内部金属件确认CT卡好、盖回配电箱面板后才能合闸通电手上有水或地面潮湿时不要操作。我见过有人为了省事带电装CT结果CT型号选错次级开路时产生高压把示波器探头烧了一个口子。电流互感器在任何情况下都不允许在次级开路时工作这是原则不是建议。还有一点尽管CT方案不改动主线但如果你完全不懂配电箱内部结构最好请一个电工朋友帮你盯着第一次安装。花钱买安心不算奢侈毕竟和设备故障相比人身安全才是项目最大的“硬性指标”。我在实际使用中体会到这套智能电表真正的价值不是展示一个漂亮曲线而是逼着你重新审视家里的用电习惯。它让我意识到很多电费不是被“偷”走的而是被我们忽略的待机时长和低效设备一点点消耗掉的。如果你也想做我建议先从SCT-013-030加ESP32起步跑通数据链路后再琢磨分路计量和电压采样。一步步来这个项目后续还可以扩展成多户对比、光伏发电监控、甚至联动储能电池玩法很多但地基永远是可靠的测量数据。

相关新闻

最新新闻

IMX258 sensor驱动移植实战:从解包到MTK平台稳定出图

IMX258 sensor驱动移植实战:从解包到MTK平台稳定出图

简介:在嵌入式相机开发中,传感器驱动是连接硬件与图像质量的核心环节。以索尼IMX258为例,这是一颗广泛应用于中端手机的1300万像素CMOS图像传感器,支持PDAF和4K视频。将其适配到MTK平台时,工程师不仅要理解imgsensor驱…

2026/8/27 5:22:43
中医舌象诊断系统:从图像分类到证候推理的工程落地

中医舌象诊断系统:从图像分类到证候推理的工程落地

简介:中医舌诊是‘望诊’核心环节,本质是融合舌色、苔质、分布等多维语义的证候推理过程,而非简单图像分类。其技术难点在于将《中医诊断学》中的辨证规则转化为可计算模型——需解决临床级图像采集(冷白光、标准化舌位、比色卡校…

2026/8/27 5:22:43
扩散式LLM生成速度突破2082 tokens/s,吞吐革命下自回归还够用吗?

扩散式LLM生成速度突破2082 tokens/s,吞吐革命下自回归还够用吗?

最近在看生成式模型的新动态,目光基本都落在推理速度和输出效率上。一个叫 Celeris-1 的 diffusion LLM 引起了我的注意,不是因为它背靠多大的团队或多少融资,而是项目标题里就带着一组数据:output tokens/s 达到 2082。坦白说&am…

2026/8/27 5:22:43
Documan实践指南:AI驱动需求管理工作区的部署与功能验证

Documan实践指南:AI驱动需求管理工作区的部署与功能验证

Show HN 两天前挂出一个叫 Documan 的项目,定位很直接:AI 驱动的需求管理工作区。如果你平时被需求文档、邮件、聊天记录里的零散需求搞到头大,那这个工具可能正好踩在你的痛点上。它不是一个简单的待办清单,也不是传统那种只能填…

2026/8/27 5:22:43
Matlab集成XGBoost:数据回归预测实战与工程化部署指南

Matlab集成XGBoost:数据回归预测实战与工程化部署指南

简介:梯度提升决策树(GBDT)作为一种强大的集成学习算法,通过迭代构建多个弱学习器(通常是决策树)并组合其预测结果,能有效提升模型的预测精度和泛化能力。其核心原理在于每一轮迭代都针对前一轮…

2026/8/27 5:22:43
Codeforces 1971C题解:状态模拟与集合运算在算法竞赛中的应用

Codeforces 1971C题解:状态模拟与集合运算在算法竞赛中的应用

1. 项目概述:一场算法竞赛中的“传球游戏”最近在Codeforces上刷题,又遇到了一个让我眼前一亮的题目,编号是1971C,标题叫“Rudolf and the Ball Game”。乍一看,这像是个简单的模拟题,描述了一个叫Rudolf的…

2026/8/27 5:17:43