树莓派自动温控风扇:DS18B20与PWM调速实战
1. 从手动开关到按需散热这个温控风扇到底解决了什么夏天一到桌面上那台小风扇基本就没停过。但真正用过的人都知道一直吹着不仅费电噪音也烦人尤其是晚上安静的时候风扇嗡嗡转个不停体验其实并不好。更关键的是很多时候设备根本没那么热风扇却一直在全速运转这本身就是一种浪费。这次要聊的就是用树莓派做一个自动温控小风扇。它的核心逻辑非常朴素温度高了就转温度低了就停温度越高转得越快。听起来简单但真正动手做的时候你会发现里面涉及的东西比想象中多——温度传感器怎么选、风扇怎么驱动、树莓派的GPIO能不能直接带得动、PWM调速怎么实现、阈值怎么定才合理这些都是绕不开的问题。这个项目适合谁如果你刚接触树莓派想找一个既有实际用途、又能把GPIO输入输出、传感器读取、PWM控制这几个基础知识点串起来的练手项目那这个再合适不过。如果你已经玩过一阵树莓派想给机箱、路由器、或者某个发热设备加一套智能散热这个方案也能直接拿来改。我自己的出发点更实际一点手头有个小设备长期运行外壳摸上去温热但又不至于烫手。装个风扇一直吹吧灰尘积得快、噪音也大不装吧心里又不踏实。最后干脆用树莓派做了套温控温度到了才转平时安安静静。实测下来这套逻辑跑了大半年稳定得很。下面我会把整个项目的思路、选型、接线、代码、调试、踩坑全部拆开讲清楚。不是那种复制粘贴就能跑的流水账而是把每个决策背后的原因讲明白这样你遇到类似需求时能自己举一反三。2. 温控风扇的三个核心部件与选型逻辑2.1 温度传感器为什么我最终选了DS18B20而不是DHT11温度传感器是这个项目的眼睛选错了后面全是麻烦。市面上树莓派能用的温度传感器主要就那么几种我列个表对比一下你一看就明白。传感器型号测量精度接口方式响应速度价格区间适用场景DHT11±2℃单总线慢1秒以上极低对精度要求不高的湿度温度一起测DHT22±0.5℃单总线较慢2秒低温湿度都要精度要求中等DS18B20±0.5℃单总线1-Wire快750ms低纯测温多点组网BMP280±1℃I2C/SPI快中需要气压数据LM75±2℃I2C快低板载温度监测我一开始用的是DHT11原因很简单——便宜、教程多。但实际用下来问题很明显它的温度精度是±2℃意味着真实温度28℃的时候它可能报26℃也可能报30℃。对于温控风扇来说这个误差直接导致阈值判断不准风扇该转的时候不转不该转的时候瞎转。而且DHT11的采样间隔至少要1秒读得太频繁还会返回错误值。后来换成了DS18B20体验完全不一样。它是数字信号输出抗干扰能力强精度±0.5℃而且支持多个传感器挂在同一根数据线上1-Wire总线以后想同时监测多个位置的温度也很方便。价格也就几块钱性价比很高。注意DS18B20一定要买带防水探头或者带金属外壳的版本裸封装的TO-92管子测的是它自己周围的空气温度贴在发热源上反而不准。如果你要测的是设备外壳温度用金属探头贴上去更靠谱。2.2 风扇5V小风扇和12V风扇的驱动差异风扇这块很多人第一反应是树莓派不是有5V引脚吗直接接上不就行了。这个想法很危险我后面会专门讲为什么。先说选型。常见的散热风扇分两种5V和12V。5V风扇可以直接用树莓派的5V引脚供电注意是供电不是控制12V风扇则需要额外的12V电源。从转速和风量来看同样尺寸下12V风扇通常更强但噪音也更大。我选的是5V的4010风扇40mm×40mm×10mm原因有三一是体积小适合给小设备散热二是5V供电可以直接从树莓派取电不用额外电源三是它的工作电流一般在0.1A到0.2A之间树莓派的5V引脚能承受。但这里有个关键点风扇的供电和调速是两回事。供电是给风扇通电让它转调速是控制它转多快。5V风扇如果直接接5V和GND它就是全速转没法调速。要实现调速必须用PWM脉冲宽度调制而PWM信号不能直接驱动风扇中间需要一个开关元件。2.3 驱动元件为什么不能直接用GPIO驱动风扇这是新手最容易踩的坑我必须重点讲。树莓派的GPIO引脚输出的是3.3V的逻辑信号单个引脚的安全电流一般在16mA左右所有引脚加起来不超过100mA左右不同型号略有差异。而一个5V小风扇的工作电流通常在100mA到200mA启动瞬间的冲击电流可能更大。如果你把风扇直接接到GPIO引脚上会发生什么轻则风扇转不动或者转得很慢重则GPIO引脚烧毁甚至连累整个树莓派。这不是危言耸听我见过有人这么干结果树莓派直接开不了机。所以必须用驱动元件。常见方案有三种NPN三极管如S8050、2N2222便宜适合小电流风扇但只能单向驱动调速效果一般。N沟道MOS管如IRLZ44N、AO3400导通电阻小适合稍大电流PWM调速效果好是我推荐的方案。继电器模块完全隔离适合大功率设备但继电器有机械寿命且不能PWM调速只能开或关。我最终用的是AO3400 MOS管配合一个1kΩ的栅极电阻和一个10kΩ的下拉电阻。AO3400是逻辑电平MOS管3.3V就能完全导通导通电阻只有几十毫欧驱动小风扇绰绰有余。栅极电阻用来限制瞬间电流下拉电阻保证GPIO没有输出时MOS管可靠关断避免风扇乱转。提示如果你不想自己搭电路也可以直接买现成的MOS管驱动模块几块钱一个接线更简单。但自己搭一遍能学到更多东西建议至少试一次。3. 接线图与电路搭建每一步都要想清楚为什么3.1 DS18B20的接线那个4.7kΩ上拉电阻不能省DS18B20有三根线VCC红、GND黑、DQ黄/白数据线。接线本身不复杂但有一个细节必须注意DQ数据线需要接一个4.7kΩ的上拉电阻到VCC。为什么因为1-Wire总线是开漏结构设备只能把线拉低不能主动拉高。没有上拉电阻的话总线在空闲时处于悬空状态电平不确定树莓派就读不到数据。4.7kΩ是经过验证的经典值太小了功耗大太大了上升沿变缓影响通信。具体接法DS18B20的VCC接树莓派的3.3V引脚1或17DS18B20的GND接树莓派的GND引脚6、9、14等DS18B20的DQ接树莓派的GPIO4引脚7同时通过4.7kΩ电阻上拉到3.3V我选GPIO4是因为它是树莓派默认的1-Wire引脚配置起来最省事。当然你也可以用其他GPIO但需要在配置文件里额外指定。3.2 风扇驱动电路MOS管三个引脚怎么接AO3400是SOT-23封装三个引脚分别是栅极G、源极S、漏极D。接法如下栅极G接树莓派的PWM引脚我用的是GPIO18引脚12中间串一个1kΩ电阻源极S接GND漏极D接风扇的负极风扇的正极接树莓派的5V引脚引脚2或4同时在栅极和源极之间接一个10kΩ下拉电阻确保没有信号时MOS管关断。这里有个容易搞混的地方风扇的负极接MOS管的漏极不是直接接GND。MOS管在这里扮演的是一个可控开关栅极有电压时漏极和源极之间导通风扇的负极就相当于接到了GND风扇转起来栅极没电压时漏极和源极断开风扇负极悬空风扇停转。注意如果你用的是12V风扇风扇正极要接12V电源的正极12V电源的GND要和树莓派的GND连在一起共地否则MOS管无法正常控制。这一点很多人会忽略导致风扇要么不转要么一直转。3.3 完整接线清单与检查要点我把所有接线整理成一张表方便你对照检查元件引脚接到树莓派备注DS18B20VCC3.3V引脚1不要接5VDS18B20GNDGND引脚6DS18B20DQGPIO4引脚7需4.7kΩ上拉到3.3VAO3400栅极GGPIO18引脚12串1kΩ电阻AO3400源极SGND引脚9AO3400漏极D风扇负极风扇正极5V引脚2下拉电阻一端栅极G10kΩ下拉电阻另一端GND接线完成后先别急着上电。用万用表通断档检查一遍3.3V和GND有没有短路、MOS管三个引脚有没有接反、上拉电阻和下拉电阻位置对不对。我见过太多人因为一根线接错烧了传感器或者MOS管返工重来很浪费时间。4. 系统配置与代码实现让温度真正驱动转速4.1 启用1-Wire接口两种配置方式的区别树莓派读取DS18B20需要先启用1-Wire接口。有两种方式方式一通过raspi-config图形界面sudo raspi-config进入Interface Options-1-Wire- 选择Yes- 重启。这种方式最直观适合新手。方式二手动修改配置文件sudo nano /boot/config.txt在文件末尾添加一行dtoverlayw1-gpio,gpiopin4如果你用的不是GPIO4把gpiopin4改成你实际使用的引脚号。保存后重启。重启后验证是否生效ls /sys/bus/w1/devices/如果看到类似28-xxxxxxxxxxxx的目录说明DS18B20已经被识别。进入该目录读取温度cat /sys/bus/w1/devices/28-xxxxxxxxxxxx/w1_slave输出里会有一行t28500表示28.5℃。如果看到t85000或者t-127000说明传感器没接好或者上拉电阻有问题。4.2 用Python读取温度为什么不用现成库读取DS18B20的Python库有不少比如w1thermsensor用起来确实方便。但我更推荐直接读系统文件原因有两个一是少装一个依赖系统更干净二是能看清楚底层到底发生了什么出问题好排查。核心代码就几行def read_temp(): device_file /sys/bus/w1/devices/28-xxxxxxxxxxxx/w1_slave with open(device_file, r) as f: lines f.readlines() if lines[0].strip()[-3:] ! YES: return None equals_pos lines[1].find(t) if equals_pos ! -1: temp_string lines[1][equals_pos2:] temp_c float(temp_string) / 1000.0 return temp_c return None这里有个细节lines[0]的末尾如果是YES表示CRC校验通过数据可信如果是NO说明读取失败应该丢弃这次数据。很多人直接读t的值不检查CRC偶尔会读到错误温度导致风扇莫名其妙狂转。4.3 PWM调速频率和占空比怎么定树莓派的PWM可以通过RPi.GPIO库或者pigpio库实现。我用的RPi.GPIO够用且简单。import RPi.GPIO as GPIO FAN_PIN 18 GPIO.setmode(GPIO.BCM) GPIO.setup(FAN_PIN, GPIO.OUT) pwm GPIO.PWM(FAN_PIN, 100) # 频率100Hz pwm.start(0) # 初始占空比0频率为什么选100Hz风扇电机的PWM频率一般建议在20Hz到200Hz之间。太低会有可闻的哒哒声太高MOS管开关损耗增加而且有些风扇在太高频率下反而转不动。100Hz是个比较稳妥的中间值实测噪音和调速线性度都不错。占空比怎么映射我的做法是分段映射温度低于28℃占空比0%风扇停温度28℃到35℃占空比从30%线性增加到100%温度高于35℃占空比100%全速为什么低温不直接给个20%让它慢慢转因为很多小风扇在低占空比下根本转不起来会发出嗡嗡声但不转反而更吵。30%是大多数5V小风扇的启动阈值低于这个值不如直接停。def temp_to_duty(temp): if temp 28: return 0 elif temp 35: return 100 else: return 30 (temp - 28) * (100 - 30) / (35 - 28)4.4 主循环采样间隔与迟滞设计主循环的逻辑很简单读温度、算占空比、设置PWM、等一会儿、重复。但有两个细节值得说。采样间隔DS18B20的转换时间默认是750ms读太快没意义。我设的是2秒一次既不会错过温度变化也不会给CPU增加负担。迟滞Hysteresis这是很多人忽略的一点。假设阈值是28℃温度在28℃附近波动时风扇会频繁启停听起来像在喘气。解决办法是加一个迟滞区间比如温度升到28℃才启动但要降到26℃才停止。这样中间有2℃的缓冲避免频繁切换。fan_on False while True: temp read_temp() if temp is None: time.sleep(2) continue if not fan_on and temp 28: fan_on True elif fan_on and temp 26: fan_on False if fan_on: duty temp_to_duty(temp) else: duty 0 pwm.ChangeDutyCycle(duty) time.sleep(2)5. 调试过程中踩过的坑与排查思路5.1 温度读出来是85℃或者-127℃这是DS18B20最经典的故障。85℃是传感器上电后的默认值表示它还没完成一次有效的温度转换-127℃表示通信失败树莓派根本没读到数据。排查顺序检查接线是否松动尤其是DQ线检查4.7kΩ上拉电阻是否接好阻值对不对检查/boot/config.txt里的dtoverlay配置是否正确用ls /sys/bus/w1/devices/看设备有没有被识别我遇到过一次折腾了半天发现是杜邦线接触不良换了一根线就好了。所以别一上来就怀疑代码先查硬件。5.2 风扇不转或者一直全速转风扇不转先量MOS管栅极电压。如果GPIO输出高电平时栅极电压接近3.3V说明控制信号没问题问题在MOS管或者风扇本身如果栅极电压一直是0说明GPIO没输出检查代码里PWM有没有启动。风扇一直全速转最常见的原因是MOS管接反了。AO3400的栅极、源极、漏极如果搞混MOS管可能一直处于导通状态。对照数据手册确认引脚定义别凭感觉接。还有一个可能下拉电阻没接或者阻值太大栅极悬空时被干扰信号触发。10kΩ是标准值别省。5.3 PWM调速时风扇发出异响如果风扇在某个占空比下发出滋滋声或者哒哒声通常是PWM频率不合适。可以试试把频率从100Hz调到50Hz或者200Hz看哪个更安静。不同风扇的电机特性不一样没有万能值得试。另外如果风扇在低占空比下抖动但不转说明占空比低于它的启动阈值。把最低占空比从30%提到40%试试或者干脆在低温时直接停转别让它半死不活地抖。5.4 树莓派重启后程序不自动运行调试的时候手动跑Python脚本没问题但重启后风扇不工作这是因为程序没有设置开机自启。最简单的方式是用systemd服务sudo nano /etc/systemd/system/fancontrol.service写入[Unit] DescriptionTemperature Controlled Fan Aftermulti-user.target [Service] Typesimple ExecStart/usr/bin/python3 /home/pi/fancontrol.py Restartalways [Install] WantedBymulti-user.target然后启用sudo systemctl daemon-reload sudo systemctl enable fancontrol.service sudo systemctl start fancontrol.service用systemctl status fancontrol.service查看运行状态有报错会直接显示出来比盲猜快得多。6. 几个让项目更耐用的实战经验6.1 给温度读数加一层滑动平均滤波DS18B20虽然精度不错但偶尔还是会有跳变。如果直接用单次读数做判断风扇可能会因为一个异常值突然狂转。我的做法是维护一个长度为5的队列每次读到的温度放进去取平均值作为控制依据。from collections import deque temp_history deque(maxlen5) def get_filtered_temp(): temp read_temp() if temp is not None: temp_history.append(temp) if len(temp_history) 0: return None return sum(temp_history) / len(temp_history)这样即使有一次读数异常对平均值的影响也只有五分之一风扇不会一惊一乍。6.2 风扇供电最好独立别和树莓派抢电我一开始图省事风扇直接从树莓派的5V引脚取电。大部分时候没问题但有一次风扇启动瞬间树莓派直接重启了。原因就是启动电流太大把5V电压拉低了树莓派欠压保护触发。后来我改成用独立的5V电源给风扇供电树莓派的5V只用来给传感器供电问题就再没出现过。如果你手头没有独立电源至少要在树莓派的电源适配器上留足余量别用那种只有1A的便宜货。提示树莓派官方推荐电源是5V 3A如果你要带风扇建议用5V 3A以上的电源留出余量。6.3 外壳和风道比风扇本身更重要很多人花大价钱买高转速风扇结果散热效果还是不好问题往往出在风道上。风扇不是转得越快越好关键是要让气流经过发热区域。如果风扇只是对着空气吹再快也没用。我的做法是用一个简单的亚克力板做个导风罩把风扇的气流集中吹向发热源。成本几块钱效果比换个更贵的风扇明显得多。另外进风口和出风口要留够空间别把风扇闷在密闭盒子里那样只会把热空气搅来搅去。6.4 日志记录能帮你发现很多隐藏问题我在代码里加了一个简单的日志功能每隔一段时间把温度、占空比、风扇状态写到一个文件里。平时不看但出问题的时候翻一翻能很快定位。比如有一次风扇半夜突然狂转我查日志发现那段时间温度读数一直在30℃以上但白天正常。后来发现是设备晚上在跑一个定时任务发热量确实变大了。如果没有日志我可能一直以为是传感器故障。import logging logging.basicConfig(filename/home/pi/fan.log, levellogging.INFO, format%(asctime)s - %(message)s) logging.info(fTemp: {temp:.1f}C, Duty: {duty}%)日志不用写太频繁每10次采样记一次就够了不然文件涨得很快。6.5 阈值不是拍脑袋定的要实测28℃启动、26℃停止这个阈值是我根据自己设备的情况定的。你的设备可能不一样别直接抄。正确的做法是先让设备正常运行一段时间记录温度变化范围然后取一个略高于正常温度、又低于危险温度的值作为启动阈值。比如设备正常运行时温度在25℃到27℃之间波动那启动阈值可以定在29℃或30℃停止阈值定在27℃。这样既不会频繁启停又能在真正需要的时候及时散热。7. 这套方案还能怎么扩展温控风扇本身不复杂但它是一个很好的底座可以往上加很多东西。比如加一个OLED屏幕实时显示当前温度和风扇转速不用登录树莓派就能看到状态。OLED用I2C接口接线简单Python库也成熟。再比如加一个手动/自动切换开关有时候你想让风扇强制转或者强制停按一下按钮就能切换模式。用一个轻触开关接GPIO配合中断检测几行代码就能实现。如果设备不止一个发热点可以挂多个DS18B20在同一根1-Wire总线上分别监测不同位置的温度取最高值作为控制依据。DS18B20的1-Wire总线支持多个设备共存每个设备有唯一的64位ID读取时根据ID区分就行。再进阶一点可以把温度数据通过MQTT发到一个本地服务器用手机或者网页远程查看。这个就涉及到网络通信了但树莓派跑这些毫无压力。我自己的设备后来就加了个小屏幕放在桌角温度、转速一目了然。有时候调试其他东西看一眼屏幕就知道设备热不热比登录SSH方便多了。整套东西做下来硬件成本大概几十块钱代码不到一百行但实用性很强。更重要的是通过这个项目你把GPIO输入输出、1-Wire通信、PWM调速、systemd服务这几个树莓派核心知识点都过了一遍以后再遇到类似需求基本就是换个传感器、改个阈值的事。

相关新闻

传感器数据跳变排查指南:从硬件到软件的实战解决方案

传感器数据跳变排查指南:从硬件到软件的实战解决方案

/* 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 17:03:56 阅读更多 →
STM32F407的Modbus RTU主机代码详解:CRC16校验与RS485收发切换

STM32F407的Modbus RTU主机代码详解:CRC16校验与RS485收发切换

简介:基于STM32F407的Modbus RTU主机通信工程,实现RS485总线上完整的主站收发流程,适合嵌入式开发者及工业自动化技术人员在设备数据采集、从站轮询控制等场景中直接参考。工程基于STM32标准外设库编写,核心代码涵盖USART串口参数…

2026/10/18 17:03:56 阅读更多 →
帆软FR中JS实现分类汇总:完整思路、性能优化与避坑指南

帆软FR中JS实现分类汇总:完整思路、性能优化与避坑指南

做报表开发久了,你会发现一个奇怪的现象:SQL里一个GROUP BY就能搞定的分类汇总,到了帆软FR(FineReport)里,偏偏要用JS去实现。最开始我也觉得这是脱裤子放屁,直到遇到一个真实业务:某…

2026/10/18 17:02:55 阅读更多 →

最新新闻

AI工具实测:专科毕业论文从选题到查重全流程指南

AI工具实测:专科毕业论文从选题到查重全流程指南

帮人改毕业论文这活儿,我断断续续做了好几年。从本科到专科的都碰过,论数量,专科生反而占大头。说实话,专科毕业论文和本科、硕士论文完全是两码事,要求没那么高,核心是“格式规范、结构完整、查重过关、能…

2026/10/18 17:51:47 阅读更多 →
自动驾驶入门:从感知到控制的模块化工程实践

自动驾驶入门:从感知到控制的模块化工程实践

1. 别被“自动驾驶”四个字吓住:它其实是一套可拆解、可上手的工程组合体很多人第一次听说“自动驾驶入门”,脑子里立刻浮现出科幻电影里方向盘自动旋转、车辆在暴雨中丝滑变道的画面。这种印象本身就会制造一道心理门槛——仿佛得先成为算法大神、传感器…

2026/10/18 17:51:47 阅读更多 →
Flutter视频播放进阶:flutter_vlc_player兼容格式与实战避坑指南

Flutter视频播放进阶:flutter_vlc_player兼容格式与实战避坑指南

2. 为什么我会盯上 flutter_vlc_player1.1 video_player 解决不了的场景说个我自己踩过的坑。某次给一家客户做内部培训视频终端,视频源五花八门:有早年间用老摄像机录的 AVI,有从监控系统导出的 TS 录像,还有 NAS 上的 MKV 课程合…

2026/10/18 17:51:47 阅读更多 →
DALL·E与Gemini批量生图实战:API调用、并发限速与质量管控

DALL·E与Gemini批量生图实战:API调用、并发限速与质量管控

1. 先想清楚再动手:DALLE 与 Gemini 的生图定位差异1.1 两者的接口形态与生成风格差异做批量生图之前,最容易被忽略的一件事就是:DALLE 和 Gemini 根本不是同一类东西。虽然它们都叫“文生图模型”,但接口形态、返回方式、适用场景…

2026/10/18 17:51:47 阅读更多 →
世界国家GeoJSON离线数据包实战:从加载到坐标转换的完整指南

世界国家GeoJSON离线数据包实战:从加载到坐标转换的完整指南

简介:包含世界各国地理边界与属性数据的GeoJSON资源包,面向GIS开发者、前端可视化工程师及地理信息学习者,适用于交互式地图展示、空间数据分析和GIS教学。资源共2000个文件,以json/geojson格式为主,压缩包仅2.1MB&…

2026/10/18 17:51:47 阅读更多 →
HslCommunication:一套API搞定PLC通信,西门子三菱Modbus全兼容

HslCommunication:一套API搞定PLC通信,西门子三菱Modbus全兼容

简介:这是HslCommunication工业通信库的11.3.2版本,基于.NET 4.5编译,面向需要与PLC、仪表等设备进行上位机通信的C#开发者及工控项目人员,在工业自动化领域应用成熟、使用广泛。该库已内置授权,用户无需调用激活码即可…

2026/10/18 17:50:47 阅读更多 →

日新闻

基于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/18 12:16:16 阅读更多 →