基于Arduino与DFPlayer Mini的红外遥控音乐播放器DIY全攻略
1. 项目概述当红外遥控遇上音乐播放你有没有想过把家里闲置的电视、空调遥控器变成一个可以控制音乐的“魔法棒”这个想法听起来有点酷但实现起来其实并不复杂。我最近就动手做了一个“红外遥控播放器”核心就是用一块Arduino开发板加上一个叫做DFPlayer Mini的MP3模块再配合一个红外接收头让任何带红外功能的遥控器都能变成你的私人音乐播放器控制器。这玩意儿成本极低几十块钱就能搞定但乐趣和实用性却一点也不少。想象一下你正在书桌前工作想切歌或者调音量不用伸手去够手机或电脑随手拿起手边的电视遥控器按一下就行或者你可以把它做成一个复古的桌面音乐盒用一个老式DVD机的遥控器来操作仪式感满满。这个项目的核心价值就在于它用最简单、最廉价的方式实现了硬件交互的乐趣和便利性把“控制”这个动作从触屏拉回到了实体按键那种“咔哒”一声的反馈感是软件无法替代的。无论你是电子爱好者想练手还是想给孩子做个有趣的玩具甚至是想给家里的智能家居增加一个有趣的节点这个项目都非常适合。2. 核心硬件选型与电路设计思路2.1 主控与播放模块为何是Arduino DFPlayer Mini这个组合几乎是DIY音频播放项目的“黄金搭档”其选择背后有非常实际的考量。首先说主控。Arduino Uno或其兼容板如Nano、Pro Mini是首选。原因很简单生态成熟、资料海量、编程门槛极低。对于这样一个以逻辑控制为主接收红外信号、解析、向播放模块发送指令的项目Arduino的性能绰绰有余。它的数字IO口可以直接连接红外接收头和DFPlayer模拟IO口可以预留出来接电位器调节音量进阶玩法串口用于调试打印信息非常方便。更重要的是社区里有大量现成的、经过验证的红外接收和DFPlayer控制库我们不需要从零开始写底层驱动可以把精力集中在功能逻辑上。然后是核心的DFPlayer Mini模块。这是一个集成了MP3解码、音频放大和TF卡读卡器的“三合一”模块。你只需要将MP3文件存入TF卡它就能独立完成音频解码和播放并通过一个3W的小喇叭或耳机孔输出。选择它而不是直接用Arduino模拟音频输出或者接更复杂的VS1053等解码芯片根本原因在于“集成度”和“易用性”。DFPlayer通过简单的串口指令UART就能控制指令集包括播放指定曲目、播放/暂停、音量调节、循环模式设置等完全满足一个基础播放器的所有需求。它甚至自带一个简单的D类功放驱动小喇叭声音足够洪亮。这意味着我们不需要额外设计复杂的音频电路大大降低了硬件难度和成本。注意市面上DFPlayer模块版本较多建议购买带有“BUSY”引脚标注的版本。这个引脚会在播放时输出高电平停止时输出低电平可以用来实现播放状态检测对于做更复杂的交互比如播放时点亮一个LED非常有用。2.2 红外接收部分通用性与解码兼容性红外遥控我们天天用其原理就是通过红外发光二极管以特定的编码格式如NEC、RC5、Sony SIRC等发射一串调制过的红外光脉冲。接收端是一个红外接收头如VS1838B、HS0038它内部集成了光电二极管、前置放大器和解调电路输出的是已经被解调好的数字信号直接送给Arduino的IO口读取即可。这里的关键在于“通用性”。我们不可能要求用户必须用某个特定品牌的遥控器。因此在编程时我们必须使用一个能自动识别多种红外编码格式的库比如著名的IRremote库。这个库可以自动识别接收到的红外编码类型并将其转换为一个唯一的16进制或32进制编码值。我们的程序逻辑就建立在识别这些“编码值”之上当收到“0xFFA25D”假设是某个遥控器的电源键编码时就执行播放/暂停动作。电路连接极其简单红外接收头通常有三只脚。VCC接Arduino的5VGND接GNDOUT或DAT接一个数字引脚比如D11。DFPlayer MiniVCC和GND同样接5V和GND。最关键的是其RX引脚需要接Arduino的一个数字引脚如D10并通过一个1KΩ的电阻连接因为DFPlayer的串口逻辑电平是3.3V而Arduino是5V这个电阻起到限流分压作用保护DFPlayer。TX引脚在本项目中可以不接除非你需要从DFPlayer读取状态反馈。SPK1和SPK2接喇叭注意正负极。当然你也可以通过耳机接口输出。2.3 电源与扩展性考量整个系统的功耗很低Arduino和DFPlayer在播放时总电流通常在200-300mA以内。因此一个普通的5V/1A的手机充电宝或USB电源适配器就足以驱动。如果你打算做成一个便携设备电池方案可以选择一块3.7V的锂电池配合一个5V升压模块或者直接使用专用的锂电池扩展板。在扩展性上这个框架留下了很多可能状态反馈可以连接几个LED用不同颜色或闪烁频率指示播放、暂停、停止状态。模拟音量调节增加一个旋转电位器连接到Arduino的模拟输入口通过读取电位器电压值来动态设置DFPlayer的音量。显示界面增加一个OLED屏幕I2C接口用来显示当前播放的曲目编号、音量、播放模式等信息。多设备控制利用Arduino的无线模块如ESP8266可以升级为Wi-Fi遥控播放器用手机App控制。3. 软件逻辑与代码实现详解3.1 开发环境搭建与库安装首先确保你安装了Arduino IDE。接下来需要安装两个核心库IRremote库用于接收和解码红外信号。在Arduino IDE的“项目” - “加载库” - “管理库”中搜索“IRremote”选择由“Arduino-IRremote”或“shirriff”维护的版本进行安装。DFRobotDFPlayerMini库用于控制DFPlayer模块。同样在库管理中搜索“DFPlayer Mini”选择由“DFRobot”发布的库进行安装。安装完成后重启Arduino IDE就可以在“文件” - “示例”中找到这两个库的示例程序供我们参考学习。3.2 核心代码流程与逻辑拆解整个程序的逻辑是一个典型的“事件驱动”模型主循环不断检查是否收到了红外信号如果收到就解析信号并执行对应的音乐控制动作。下面是关键代码段的解析#include IRremote.h #include SoftwareSerial.h #include DFRobotDFPlayerMini.h // 1. 引脚定义 #define IR_RECEIVE_PIN 11 // 红外接收头连接引脚 #define DFPLAYER_RX_PIN 10 // 连接DFPlayer的RX #define DFPLAYER_TX_PIN 9 // 连接DFPlayer的TX (本项目未使用可定义备用) // 2. 创建对象 SoftwareSerial mySoftwareSerial(DFPLAYER_RX_PIN, DFPLAYER_TX_PIN); // 软串口对象 DFRobotDFPlayerMini myDFPlayer; // DFPlayer对象 IRrecv irrecv(IR_RECEIVE_PIN); // 红外接收对象 decode_results results; // 用于存储解码结果 // 3. 遥控器按键编码定义需要根据实际遥控器学习获得 #define IR_PLAY_PAUSE 0xFFA25D // 示例CH-键编码 #define IR_NEXT 0xFF629D // 示例CH键编码 #define IR_PREV 0xFFE21D // 示例CH键编码 #define IR_VOL_UP 0xFF906F // 示例VOL键编码 #define IR_VOL_DOWN 0xFFE01F // 示例VOL-键编码 void setup() { Serial.begin(115200); // 用于调试信息输出 mySoftwareSerial.begin(9600); // DFPlayer默认通信波特率 // 初始化红外接收 irrecv.enableIRIn(); Serial.println(红外接收已启用); // 初始化DFPlayer if (!myDFPlayer.begin(mySoftwareSerial)) { Serial.println(F(DFPlayer初始化失败)); Serial.println(F(请检查1.连接 2.SD卡 3.供电)); while (true); // 卡死等待检查 } Serial.println(F(DFPlayer初始化成功.)); myDFPlayer.volume(15); // 设置初始音量0-30 myDFPlayer.play(1); // 上电后自动播放第一首 } void loop() { // 4. 核心循环检查红外信号 if (irrecv.decode(results)) { // 打印接收到的原始编码值用于学习按键 Serial.print(收到红外编码: 0x); Serial.println(results.value, HEX); // 5. 根据编码值执行对应功能 switch (results.value) { case IR_PLAY_PAUSE: // 播放/暂停切换是一个常见需求但DFPlayer库没有直接toggle函数 // 我们可以通过查询状态或记录状态来实现 // 这里用一个简单方法发送两次暂停指令第一次暂停第二次恢复 // 更可靠的方法是使用DFPlayer的查询指令需要接TX引脚 myDFPlayer.pause(); Serial.println(执行 播放/暂停); break; case IR_NEXT: myDFPlayer.next(); Serial.println(下一曲); break; case IR_PREV: myDFPlayer.previous(); Serial.println(上一曲); break; case IR_VOL_UP: myDFPlayer.volumeUp(); Serial.println(音量); break; case IR_VOL_DOWN: myDFPlayer.volumeDown(); Serial.println(音量-); break; default: // 收到未定义的编码可以忽略或用于其他功能 Serial.println(未知按键); break; } irrecv.resume(); // 接收下一个信号 } // 这里可以添加其他非阻塞任务比如用BUSY引脚检测控制LED }代码逻辑深度解析引脚定义与对象创建清晰的定义是代码可读性的基础。使用SoftwareSerial库创建软串口是为了不占用Arduino的硬件串口Serial这样硬件串口可以专门用来打印调试信息到电脑非常方便。按键编码定义IR_PLAY_PAUSE这些宏定义的值不是固定的它取决于你使用的遥控器。如何获取就是通过上面代码中Serial.println(results.value, HEX);这一行。在第一次使用时打开串口监视器用遥控器对着接收头按下一个键监视器里就会打印出对应的16进制编码。把这个编码记下来替换掉宏定义里的值即可。这个过程叫做“红外编码学习”。DFPlayer初始化myDFPlayer.begin()函数至关重要如果返回false意味着通信失败。最常见的原因是接线错误、供电不足DFPlayer启动瞬间电流较大或TF卡格式/文件不对。务必在初始化成功后看到提示再继续。播放/暂停的实现这是一个小坑。DFPlayer Mini的指令集中有play()、pause()、start()但没有一个直接的togglePlayPause()指令。我的做法是发送pause()指令因为该指令的行为是如果正在播放则暂停如果已暂停则恢复播放。这恰好实现了切换功能。但要注意如果播放器处于停止状态未播放任何曲目pause()是无效的。更严谨的做法是结合BUSY引脚状态或使用查询指令需要连接DFPlayer的TX到Arduino。非阻塞设计整个loop()函数的主体是一个快速的红外信号检测循环没有使用delay()。这保证了系统的响应速度。你可以在if语句之外添加其他功能比如根据BUSY引脚电平改变LED状态而不会影响红外接收。3.3 TF卡文件系统与播放列表管理DFPlayer对TF卡的文件系统有特定要求这也是新手最容易出错的地方。格式必须格式化为FAT16或FAT32。使用电脑的格式化工具时注意选择正确的格式。文件夹与命名DFPlayer要求MP3文件必须放在名为mp3的文件夹内注意是小写。文件命名规则为四位数序号 点 扩展名例如0001.mp3、0002.mp3。序号必须从0001开始连续中间不能有断号。播放控制myDFPlayer.play(1);中的参数1指的就是播放0001.mp3这个文件。next()和previous()指令会按照文件序号顺序切换。实操心得强烈建议在拷贝歌曲前先在TF卡上正确创建mp3文件夹。歌曲文件最好用简单的批量重命名工具处理成标准格式。我曾因为文件夹名不小心打成了MP3大写导致模块无法识别排查了半天。4. 硬件组装、调试与问题排查实录4.1 分步组装与焊接要点准备阶段将所有元件Arduino、DFPlayer、红外接收头、喇叭、电阻、杜邦线摆在面包板上。先不要通电对照电路图仔细连接。电源先行确保所有模块的VCC和GND都正确连接到Arduino的5V和GND。特别注意Arduino的5V输出能力有限如果喇叭功率较大或同时驱动多个模块可能导致供电不足声音失真或系统重启。此时应考虑使用外部5V电源直接给DFPlayer供电并与Arduino共地。信号线连接红外接收头OUT → Arduino D11。DFPlayer RX → Arduino D10串联1KΩ电阻。喇叭两端 → DFPlayer的SPK1和SPK2不分正负但接反了相位相反听感略有差异可随意。焊接建议如果打算做成固定作品建议使用万用板进行焊接。DFPlayer的引脚间距很小焊接时要小心不要短路。红外接收头最好用排针延长使其“探出头”来避免被其他元件遮挡影响接收角度。4.2 上电调试流程遵循“先软件后硬件先模块后整体”的原则单独测试Arduino与电脑通信上传一个最简单的Blink程序确保Arduino本身和USB连接正常。测试红外接收上传一个仅包含红外接收和串口打印的示例程序如IRremote库的IRrecvDumpV2。打开串口监视器波特率115200用遥控器对准接收头按键观察是否能稳定打印出编码值。常见问题无任何输出。检查接线、供电并确保遥控器有电且对准接收头距离30cm内。尝试用手机摄像头观察遥控器发射头按下按键时能看到紫光则证明遥控器是好的。单独测试DFPlayer上传DFPlayer库的示例程序PlayMp3。确保TF卡格式和文件符合要求。如果听不到声音依次检查喇叭是否接对、音量是否被设为0myDFPlayer.volume(15)、代码中播放的曲目序号是否存在。整合测试最后上传我们完整的控制程序。首次上传后先通过串口监视器查看初始化信息确认DFPlayer初始化成功。然后使用遥控器测试各个功能键。4.3 常见问题与解决方案速查表下表是我在多次制作和教学中遇到的高频问题及解决方法问题现象可能原因排查步骤与解决方案上电后无任何反应LED不亮1. 电源未接通或反接2. Arduino损坏1. 检查USB线或外部电源用万用表测量5V和GND之间电压。2. 尝试为Arduino单独上传Blink程序测试。串口显示“DFPlayer初始化失败”1. 软串口引脚接错2. 电阻未接或接错3. TF卡问题4. 供电不足1. 核对代码中RX_PIN、TX_PIN定义与实际接线。2. 确保DFPlayer RX与Arduino间有1KΩ电阻。3. 重新格式化TF卡为FAT32检查mp3文件夹及文件命名。4. 尝试用外部5V电源单独给DFPlayer供电。红外按键无反应串口无打印1. 红外接收头引脚接错2. 遥控器没电或不对准3. 库冲突或引脚占用1. 确认接收头VCC、GND、OUT对应连接正确。2. 换电池缩短距离正对接收头。3. 某些Arduino板如Nano的定时器与IRremote库冲突尝试换一个接收引脚如D2。按键反应迟钝或串口打印乱码1. 红外信号受到干扰如日光灯、自然光2. 串口波特率设置错误1. 避开强光环境或给接收头套上深色热缩管屏蔽杂光。2. 检查代码Serial.begin()与串口监视器波特率是否一致如115200。有反应但控制错乱如按下一曲变成音量红外按键编码定义错误重新进行“红外编码学习”用串口打印每个按键的真实编码更新代码中的宏定义。播放声音小、失真或破音1. 喇叭阻抗不匹配DFPlayer推荐4-8Ω2. 电源功率不足3. 音量设置过高1. 更换为4Ω或8Ω的喇叭。2. 使用输出电流更大的电源1A以上。3. 降低代码中的初始音量值如设为10。播放完一首后不自动播下一首未设置播放模式在setup()函数中添加myDFPlayer.enableLoopAll();或myDFPlayer.play(1);后设置myDFPlayer.loop(1);循环播放第一首。4.4 进阶优化与功能扩展思路当基础功能稳定后可以考虑以下优化让项目更完善状态指示LED连接一个LED到Arduino引脚在loop()中读取DFPlayer的BUSY引脚如果模块支持高电平时点亮LED表示正在播放低电平时熄灭。这提供了直观的视觉反馈。模拟音量旋钮增加一个10KΩ电位器。中间引脚接Arduino模拟口如A0两侧引脚接5V和GND。在loop()中定期读取analogRead(A0)的值0-1023映射到0-30的音量范围并去抖后发送myDFPlayer.volume(level)指令。这样就有了一个物理音量旋钮。播放模式记忆利用Arduino的EEPROM非易失存储来保存最后一次播放的曲目号和音量。每次上电时从EEPROM读取并恢复设置实现“断点续播”。OLED显示添加一个0.96寸OLED屏幕I2C接口仅需4根线。可以显示当前曲目序号、总曲目、音量等级、播放状态等信息量大大增加。多遥控器支持在代码中多定义几套不同遥控器的按键编码通过一个拨码开关或按键来切换当前使用的编码集实现一个播放器兼容家里所有遥控器。这个项目的魅力在于它从一个简单的想法出发通过清晰的模块化组合快速实现了一个看得见、听得着的作品。从硬件连接到软件调试再到问题排查和功能扩展整个过程涵盖了嵌入式开发中最核心的流程。它没有复杂的算法但非常锻炼动手能力和系统思维。当你按下遥控器音乐随之响起的那一刻所有的调试和排查都是值得的。

相关新闻

C语言核心考点速成:指针、内存管理与高频难点图解

C语言核心考点速成:指针、内存管理与高频难点图解

1. 项目概述:为什么你需要这份“速成笔记”?如果你正在为C语言的期末考试、计算机二级考试或者某个即将到来的技术面试而焦虑,手头堆满了厚厚的教材和零散的笔记,感觉知识点像一团乱麻,那么这份“速成笔记”就是为你量…

2026/10/13 21:32:23 阅读更多 →
智能绿色温度显示器:低功耗物联网环境监测方案

智能绿色温度显示器:低功耗物联网环境监测方案

1. Smart Green Temp Display 项目概述Smart Green Temp Display(智能绿色温度显示器)是一款融合环保理念与智能技术的温度监测装置。它通过低功耗传感器实时采集环境温度数据,并在节能型电子墨水屏上直观显示,同时支持无线数据传…

2026/10/5 12:12:50 阅读更多 →
工程伦理思维:从责任冲突到风险决策的工程师必修课

工程伦理思维:从责任冲突到风险决策的工程师必修课

1. 从“标准答案”到“工程伦理思维”:一份课后习题的深度解读最近在整理资料时,翻出了之前学习李正风老师《工程伦理》课程时做的课后习题笔记。这门课给我的冲击,远不止于记住几个概念或案例,它更像是一次思维模式的“格式化”与…

2026/9/27 17:36:26 阅读更多 →

最新新闻

龟兔赛跑题本质是离散状态机建模

龟兔赛跑题本质是离散状态机建模

1. 项目概述:这道题不是考跑步,是考状态机建模能力“PTA:7-22 龟兔赛跑 (20分)”——看到这个标题,很多刚接触程序设计的学生第一反应是:“不就是个循环加判断?兔子睡一觉,乌龟慢慢爬&#xff0…

2026/10/13 21:33:27 阅读更多 →
LiteLLM:大模型API标准化抽象层实战指南

LiteLLM:大模型API标准化抽象层实战指南

1. 从“调用大模型像调用API”说起:为什么LiteLLM突然成了团队协作的隐形枢纽你有没有过这样的经历:项目刚启动,后端同学说“我用OpenAI接口”,前端同学说“我接Anthropic的Stream响应”,运维同学皱着眉问“那我们监控…

2026/10/13 21:33:27 阅读更多 →
编译原理词法语法分析双模块实战源码解析

编译原理词法语法分析双模块实战源码解析

简介:本资源是东北大学秦皇岛分校《编译原理》课程的词法分析实验报告,面向计算机专业本科生及编译技术初学者,聚焦词法分析核心能力训练——从源码扫描、单词识别到构词错误检测的完整实现。报告包含完整Java实现代码、详尽的词法单元分类说…

2026/10/13 21:33:27 阅读更多 →
家庭财务数据库设计:用真实场景锤炼建模与约束能力

家庭财务数据库设计:用真实场景锤炼建模与约束能力

简介:本资源是一份面向高校计算机专业本科生的数据库课程设计实践材料,聚焦家庭财务管理系统的需求分析与数据库建模全过程,适用于数据库原理、软件工程等课程的综合实训环节。文档完整呈现了从用户需求梳理、三层数据流图(DFD&am…

2026/10/13 21:33:27 阅读更多 →
自制桌面收纳系统aa---(10):需求、选材与实测全解析

自制桌面收纳系统aa---(10):需求、选材与实测全解析

这套作品被我在工作文件夹里记成aa---(10),起因比较随意。当时连续做了九个版本的桌面整理系统,每个版本都只是在原结构上加加减减,命名一直用 AA 做主键再加版本号,做到第十版的时候,改动范围明显超过了小修的界限&am…

2026/10/13 21:33:27 阅读更多 →
同步发电机突然三相短路暂态过程Simulink仿真实现与分析

同步发电机突然三相短路暂态过程Simulink仿真实现与分析

同步发电机的突然三相短路,基本上每个学电机和电力系统的人都绕不过去。教材里那一串用暂态电抗、次暂态电抗、时间常数堆出来的公式,推导过程极其劝退,算出来的冲击电流倍数也让人没什么实感。前阵子我刚好用Simulink把同步发电机突然三相短…

2026/10/13 21:32:27 阅读更多 →

日新闻

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

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

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

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 阅读更多 →