WeMos D1 ESP8266避坑指南:从驱动安装到Web Server实战
1. 项目概述为什么是WeMos D1 ESP8266如果你刚拿到一块WeMos D1开发板看着上面密密麻麻的引脚和那个小小的ESP8266芯片可能会有点无从下手。别担心这种感觉我懂。几年前我第一次接触这块板子时也花了大半天时间才让板载的LED灯闪起来更别提搭建一个能稳定运行的Web Server了。WeMos D1之所以在创客和物联网爱好者中经久不衰核心原因在于它用一个极低的门槛集成了Wi-Fi连接能力和Arduino生态的易用性。你不需要去啃复杂的ESP8266 SDK手册用Arduino IDE就能像玩Arduino Uno一样去编程但你的项目却瞬间拥有了连接网络、服务网页的能力。从智能开关到环境监测仪很多小项目的原型验证阶段WeMos D1都是我的首选。然而“快速上手”往往伴随着各种隐形的坑。驱动装不上、端口找不到、库文件冲突、代码上传失败、Web服务访问不了……这些问题任何一个都足以让新手卡住半天。这篇文章的目的就是把我这些年用废了十几块WeMos D1板子踩过的坑、总结的经验整理成一条最清晰、最避坑的路径。我们不谈空洞的理论直接从拆开包装、连接电脑开始一步步走到你亲手写出第一个能通过手机浏览器控制的网页服务器。你会发现整个过程比你想象的要简单但也需要一些关键的“正确操作”。2. 环境准备与驱动安装万事开头难所有基于WeMos D1的开发都始于你的电脑能正确识别它。这一步看似基础却是劝退率最高的环节。2.1 硬件连接与端口识别WeMos D1通常使用Micro-USB线进行供电和程序烧录。请务必使用一条质量可靠的数据线很多充电线只有电源线没有数据传输功能这会导致电脑完全无法识别设备。连接后板子上的电源指示灯应该亮起。接下来是关键你的电脑需要安装正确的USB转串口芯片驱动。WeMos D1常见的有两种版本分别使用CH340或CP2102芯片。你可以观察板子上USB接口附近那个较大的芯片上的丝印来确认。CH340芯片在国内版WeMos D1上非常常见。Windows系统通常不会自动安装它的驱动。CP2102芯片在一些国际版本或早期版本中使用。Win10及以上系统有时能自动识别但不一定稳定。注意驱动安装失败十有八九是杀毒软件、防火墙或者系统权限在作祟。建议安装前暂时关闭实时防护并以管理员身份运行安装程序。2.2 驱动安装实战与验证这里以最普遍的CH340驱动为例给出最稳妥的安装步骤获取驱动不要随便在网上下载来历不明的驱动。最安全的方式是去芯片厂商官网如南京沁恒官网下载或者使用Arduino IDE内置的驱动安装工具稍后会提到。卸载旧驱动如果存在如果之前安装失败或有残留先去“设备管理器”里在“端口COM和LPT”或“其他设备”下找到带有黄色叹号的“USB-SERIAL CH340”设备右键“卸载设备”并勾选“删除此设备的驱动程序软件”。安装新驱动运行下载的驱动安装程序如SETUP.EXE。如果安装程序提示“预安装成功”这通常意味着驱动文件已准备好但系统尚未为硬件加载。此时拔掉USB线再重新插入系统会自动完成最后的配置。验证安装重新打开“设备管理器”展开“端口COM和LPT”。你应该能看到一个明确的端口例如“USB-SERIAL CH340 (COM3)”。记住这个COM后面的数字如COM3、COM4这就是你的WeMos D1在电脑上的“门牌号”。对于CP2102流程类似去Silicon Labs官网下载驱动即可。如果使用Mac或Linux过程会更简单通常系统已内置驱动连接后使用ls /dev/tty.usb*或ls /dev/ttyUSB*命令即可查看端口。2.3 Arduino IDE配置让IDE认识ESP8266驱动装好只是硬件通了。接下来要让Arduino IDE这个“开发环境”认识ESP8266这块“新大陆”。安装Arduino IDE从Arduino官网下载并安装最新稳定版非测试版。添加开发板管理器网址打开Arduino IDE进入“文件”-“首选项”。在“附加开发板管理器网址”一栏中填入以下网址http://arduino.esp8266.com/stable/package_esp8266com_index.json如果已有其他网址用逗号隔开即可。安装ESP8266开发板包打开“工具”-“开发板”-“开发板管理器”。在搜索框中输入“esp8266”。在结果中找到“esp8266 by ESP8266 Community”点击“安装”。这个过程会下载几百MB的文件需要一些时间请保持网络通畅。选择正确的开发板和参数安装完成后在“工具”菜单下依次选择开发板选择“LOLIN(WEMOS) D1 R2 mini”。注意一定要选对不同板子引脚定义有差异。Flash Size通常选择“4M (3M SPIFFS)”。SPIFFS是板载的文件系统可以用来存储网页文件。Upload Speed选择“921600”。这是上传程序的速度选最高可以加快上传过程。Port选择你在设备管理器中看到的那个COM口。至此你的软硬件环境就全部搭建好了。如果一切顺利你已经超过了50%的初学者。3. 从点灯到心跳验证开发环境在搭建复杂应用前用一个最简单的程序验证整个链路是否畅通这是工程师的好习惯。3.1 板载LED闪烁程序解析WeMos D1的板载LED连接在GPIO2上但在Arduino环境下它被映射为LED_BUILTIN这个常量其值通常是2。但这里有个小坑这颗LED是低电平点亮的。也就是说给LED_BUILTIN引脚输出LOW灯亮输出HIGH灯灭。这和很多Arduino板子的逻辑是反的。打开Arduino IDE输入以下代码void setup() { pinMode(LED_BUILTIN, OUTPUT); // 将板载LED引脚设置为输出模式 } void loop() { digitalWrite(LED_BUILTIN, LOW); // 输出低电平LED亮 delay(1000); // 等待1000毫秒1秒 digitalWrite(LED_BUILTIN, HIGH); // 输出高电平LED灭 delay(1000); // 等待1秒 }点击左上角的“上传”按钮向右的箭头。观察IDE下方的状态栏它会显示“正在编译项目...”然后“正在上传...”。上传过程中板子上的蓝色LED会快速闪烁这是正常的烧录过程。上传成功后状态栏会显示“上传成功”。此时你应该能看到板载LED以1秒的间隔稳定闪烁。实操心得如果上传失败报错“Failed to connect to ESP8266”或“Timed out waiting for packet header”请按顺序排查1. 确认端口选择正确2. 尝试降低“Upload Speed”到1152003. 在上传瞬间短按一下板子上的“RST”复位键这能帮助板子进入烧录模式。这是解决大部分上传问题的万能钥匙。3.2 串口通信与板子对话串口是调试的“眼睛”。我们修改一下代码让它通过串口向我们汇报状态。void setup() { Serial.begin(115200); // 初始化串口通信波特率设置为115200 pinMode(LED_BUILTIN, OUTPUT); Serial.println(\nWeMos D1启动成功开始闪烁...); // 打印信息到串口监视器 } void loop() { digitalWrite(LED_BUILTIN, LOW); Serial.println(LED状态ON); // 打印开灯状态 delay(1000); digitalWrite(LED_BUILTIN, HIGH); Serial.println(LED状态OFF); // 打印关灯状态 delay(1000); }上传代码后点击IDE右上角的“串口监视器”按钮放大镜图标。在右下角将波特率设置为115200。如果一切正常你将看到每秒刷新一次的“LED状态ON/OFF”信息。这证明你的程序不仅在运行还能和你通信为后续Web Server的调试打下了基础。4. 构建第一个Web Server让ESP8266联网服务让LED闪只是热身让WeMos D1成为一个能通过Wi-Fi访问的网页服务器才是它价值的真正体现。我们将创建一个简单的服务器提供一个网页上面有一个按钮可以控制板载LED的开关。4.1 引入必要的库与网络配置ESP8266在Arduino环境下实现Web Server主要依赖两个库ESP8266WiFi和ESP8266WebServer。它们通常已经包含在之前安装的开发板包中无需额外安装。首先我们需要在代码开头配置你的Wi-Fi网络信息。#include ESP8266WiFi.h #include ESP8266WebServer.h // 你的Wi-Fi网络凭证 const char* ssid 你的Wi-Fi名称; // 替换为你的Wi-Fi名称 const char* password 你的Wi-Fi密码; // 替换为你的Wi-Fi密码 ESP8266WebServer server(80); // 在80端口创建服务器对象 void handleRoot(); // 声明处理根路径请求的函数 void handleLEDOn(); void handleLEDOff(); void handleNotFound(); void setup() { Serial.begin(115200); pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, HIGH); // 初始化时先关闭LED高电平灭 // 连接Wi-Fi WiFi.begin(ssid, password); Serial.print(正在连接到Wi-Fi: ); Serial.println(ssid); while (WiFi.status() ! WL_CONNECTED) { delay(500); Serial.print(.); } Serial.println(); Serial.println(Wi-Fi连接成功); Serial.print(设备IP地址: ); Serial.println(WiFi.localIP()); // 打印ESP8266获取到的本地IP地址 // 设置服务器路由哪个网址路径由哪个函数处理 server.on(/, HTTP_GET, handleRoot); // 当访问根目录时调用handleRoot函数 server.on(/led/on, HTTP_GET, handleLEDOn); // 访问 /led/on 开灯 server.on(/led/off, HTTP_GET, handleLEDOff); // 访问 /led/off 关灯 server.onNotFound(handleNotFound); // 处理未定义的页面请求 // 启动Web服务器 server.begin(); Serial.println(HTTP服务器已启动); }4.2 编写网页处理函数接下来我们需要定义上面声明的几个处理函数。handleRoot函数负责返回一个简单的HTML页面页面上有两个按钮分别链接到/led/on和/led/off。// 处理对网站根目录的访问 void handleRoot() { // 构建一个简单的HTML页面字符串 String html !DOCTYPE htmlhtmlheadmeta charset\UTF-8\titleWeMos D1 LED控制/title; html stylebody {font-family: Arial; text-align: center; margin-top: 50px;}; html button {font-size: 20px; padding: 15px 30px; margin: 10px;}/style/headbody; html h1WeMos D1 Web Server/h1; html p板载LED控制:/p; html a href\/led/on\button style\background-color:#4CAF50;color:white;\开灯/button/a; html a href\/led/off\button style\background-color:#f44336;color:white;\关灯/button/a; html psmall当前IP: WiFi.localIP().toString() /small/p; html /body/html; server.send(200, text/html, html); // 发送HTTP状态码200和HTML内容 } // 处理开灯请求 void handleLEDOn() { digitalWrite(LED_BUILTIN, LOW); // 低电平点亮LED Serial.println(LED已通过网页打开); // 开灯后重定向回首页方便继续操作 server.sendHeader(Location, /); server.send(303); // 发送“See Other”重定向状态码 } // 处理关灯请求 void handleLEDOff() { digitalWrite(LED_BUILTIN, HIGH); // 高电平熄灭LED Serial.println(LED已通过网页关闭); server.sendHeader(Location, /); server.send(303); } // 处理404错误访问了不存在的页面 void handleNotFound() { server.send(404, text/plain, 404: Not Found); } void loop() { server.handleClient(); // 必须不断循环处理来自客户端的请求 }4.3 部署、访问与验证将上述所有代码段整合到一个.ino文件中填入你真实的Wi-Fi名称和密码然后上传到WeMos D1。上传成功后打开串口监视器。你会看到连接Wi-Fi的过程最后打印出关键信息“设备IP地址: 192.168.x.xxx”。请务必记下这个IP地址。现在确保你的手机或电脑连接到了同一个Wi-Fi网络。打开浏览器在地址栏输入http://192.168.x.xxx替换成你的实际IP。按下回车你应该能看到一个简单的控制页面上面有“开灯”和“关灯”两个按钮。点击它们观察板子上的LED是否随之亮灭同时观察串口监视器是否有对应的状态输出。恭喜你你已经成功让一块小小的WeMos D1开发板接入了网络并成为了一个功能完整的Web服务器。这个简单的例子是智能家居、物联网设备远程控制的基石。5. 深度避坑与性能优化指南项目跑起来只是第一步要让它稳定、可靠还需要注意以下这些我踩过无数次坑才总结出的要点。5.1 电源稳定性一切异常的根源ESP8266在启动Wi-Fi和传输数据时峰值电流可能超过300mA。千万不要只用电脑USB口供电的同时还连接其他大电流外设如舵机、多个LED灯带。这会导致电压被拉低引发各种灵异问题程序上传失败、Wi-Fi频繁断开、系统不断重启。解决方案对于需要驱动外设的项目务必为WeMos D1提供独立、稳定的5V电源。可以使用手机充电头接Micro-USB线或者通过板子的5V和GND引脚接入外部稳压电源。VIN引脚可以接受5V-12V的输入板载稳压芯片会将其降到3.3V供核心使用。5.2 Wi-Fi连接优化与断线重连家庭Wi-Fi环境复杂信号干扰、路由器重启都可能导致连接中断。一个健壮的程序必须具备自动重连能力。unsigned long previousMillis 0; const long interval 30000; // 每30秒检查一次Wi-Fi状态 void loop() { server.handleClient(); // 处理Web请求 // 非阻塞式Wi-Fi状态检查 unsigned long currentMillis millis(); if (currentMillis - previousMillis interval) { previousMillis currentMillis; if (WiFi.status() ! WL_CONNECTED) { Serial.println(Wi-Fi连接丢失尝试重连...); WiFi.disconnect(); WiFi.begin(ssid, password); int retryCount 0; while (WiFi.status() ! WL_CONNECTED retryCount 20) { delay(500); Serial.print(.); retryCount; } if (WiFi.status() WL_CONNECTED) { Serial.println(\nWi-Fi重连成功); Serial.print(新IP地址: ); Serial.println(WiFi.localIP()); } else { Serial.println(\nWi-Fi重连失败请检查网络。); } } } }这段代码放在loop()函数里它会每隔30秒检查一次Wi-Fi连接状态如果断开则自动尝试重连并且不会阻塞Web服务器的正常运行。5.3 内存管理与服务器稳定性ESP8266的内存非常有限约80KB的用户可用RAM。在Web Server中频繁创建String对象尤其是拼接大段HTML时极易导致内存碎片化最终引发系统崩溃或重启。优化技巧1使用F()宏将常量字符串存放到Flash。这能节省宝贵的RAM。server.send(200, text/html, F(html...很长的HTML.../html));优化技巧2分块发送HTML。对于复杂的页面不要一次性构建整个字符串而是使用server.sendContent()分块发送。优化技巧3避免在loop()中动态分配内存。将HTML模板、固定的响应头等定义为全局常量。5.4 上传失败与端口占用问题汇总这是开发初期最高频的问题我将其总结成一张排查表问题现象可能原因解决方案上传时报错Failed to connect to ESP82661. 端口错误或驱动问题2. 板子未进入烧录模式3. 有程序占用了串口1. 确认设备管理器端口重装驱动2.上传时先按住FLASH键不松再点一下RST键然后松开RST再松开FLASH3. 关闭串口监视器、其他可能占用COM口的软件上传成功但程序不运行1. 代码有逻辑错误导致崩溃2. 电源不足3. GPIO0引脚被拉低烧录模式1. 通过串口打印调试信息2. 检查电源使用独立电源供电3. 确保GPIO0引脚悬空或拉高能ping通IP但打不开网页1. Web Server代码未正确启动2. 防火墙或路由器设置阻止了80端口3. 客户端与设备不在同一网络1. 检查串口日志确认server.begin()已执行2. 尝试更换服务器端口如server(8080)访问时加端口号http://IP:80803. 确认手机/电脑连接的Wi-Fi和ESP8266连接的是同一个串口监视器乱码波特率不匹配确保串口监视器右下角波特率与代码中Serial.begin()设置的完全一致通常是1152005.5 从示例到项目下一步该做什么当你成功运行了第一个Web Server世界就打开了。你可以基于这个框架进行无限扩展集成传感器在handleRoot函数中读取DHT11温湿度、DS18B20温度等传感器的值并动态显示在网页上。控制继电器将handleLEDOn/Off函数改为控制连接在GPIO5上的继电器模块从而实现网页远程控制台灯、风扇等家电。使用SPIFFS存储网页将HTML、CSS、JavaScript文件上传到板载的SPIFFS文件系统中让服务器直接发送文件实现更复杂、美观的前端界面。接入物联网平台让ESP8266同时作为TCP Client将数据上报到云平台如阿里云、ThingsBoard等实现数据持久化和更复杂的远程管理。记住硬件开发是一个不断试错的过程。遇到问题首先查看串口输出它是最直接的诊断工具其次确保电源和接线可靠最后善用搜索引擎和社区如ESP8266官方论坛、Arduino中文社区你遇到的绝大多数问题都已经有人踩过坑并给出了解决方案。保持耐心动手去试这块小小的WeMos D1开发板能带给你的乐趣和成就感远超你的想象。

相关新闻

Python实现本地PDF密码移除工具:从原理到GUI/CLI完整开发指南

Python实现本地PDF密码移除工具:从原理到GUI/CLI完整开发指南

1. 项目概述:为什么我们需要一个自己的PDF解密工具?在数字文档处理的工作流里,PDF格式几乎无处不在。它格式稳定、跨平台、打印友好,是合同、报告、学术论文、电子书等正式文件的首选载体。然而,PDF的“安全”特性&…

2026/10/2 5:16:09 阅读更多 →
深入解析TMS320C6743内存映射与引脚复用:嵌入式DSP开发核心指南

深入解析TMS320C6743内存映射与引脚复用:嵌入式DSP开发核心指南

1. 项目概述与核心价值在嵌入式DSP系统开发中,尤其是面对像德州仪器TMS320C6743这类高性能浮点数字信号处理器时,有两个基础但至关重要的概念决定了整个硬件设计和底层软件开发的走向:内存映射和引脚复用。很多刚接触这类芯片的工程师&#x…

2026/10/13 7:03:33 阅读更多 →
C++ STL priority_queue 深度解析:从堆原理到任务调度实战

C++ STL priority_queue 深度解析:从堆原理到任务调度实战

1. 项目概述:为什么我们需要优先级队列?在C的日常开发里,尤其是处理算法题或者构建一些需要动态排序的系统时,你肯定遇到过这样的场景:有一堆任务,需要随时处理优先级最高的那个;或者有一批数据…

2026/10/12 21:23:37 阅读更多 →

最新新闻

Flutter跨平台开发实战:鸿蒙适配与生物知识APP优化

Flutter跨平台开发实战:鸿蒙适配与生物知识APP优化

1. 项目背景与核心价值去年接手这个生物知识APP项目时,客户明确要求同时覆盖iOS、Android和即将发布的鸿蒙设备。作为从业十年的移动端开发者,我第一时间想到了Flutter这个老朋友——但要在鸿蒙系统上跑通Flutter,确实遇到了不少技术深坑。经…

2026/10/15 12:18:53 阅读更多 →
Java并发编程核心:线程安全、锁机制与内存可见性实战

Java并发编程核心:线程安全、锁机制与内存可见性实战

1. 线程安全到底在解决什么问题很多刚接触Java服务端开发的朋友,写单线程业务逻辑时顺风顺水,一旦引入多线程或者部署到并发环境,就开始遇到各种“玄学”问题:明明代码逻辑没问题,跑出来的结果却对不上;某个…

2026/10/15 12:18:53 阅读更多 →
SSIMLoss在CoRRN图像复原中的原理与实战集成

SSIMLoss在CoRRN图像复原中的原理与实战集成

1. 什么是SSIMLoss,它为什么在CoRRN这类图像复原模型里成了“隐形指挥官”SSIMLoss不是某个新出的网红框架,也不是某家大厂刚开源的黑科技库——它本质上是一种结构相似性(Structural Similarity Index Measure)驱动的损失函数设计…

2026/10/15 12:18:53 阅读更多 →
前端注释规范与工程化实践指南

前端注释规范与工程化实践指南

1. 前端注释的本质与价值2008年我刚入行时接手过一个jQuery时代的遗留项目,那个没有注释的3万行代码库让我深刻理解了"程序员最恨两件事:写注释和不写注释的人"。前端注释远非简单的代码说明,而是工程化开发中不可或缺的协作工具链…

2026/10/15 12:18:53 阅读更多 →
Halcon相机标定本质:重建几何关系而非调参

Halcon相机标定本质:重建几何关系而非调参

简介:本资源是Halcon官方参考手册第六章“Calibration(标定)”的完整英文直译中文版PDF,面向计算机视觉工程师、工业视觉检测算法开发者及高校相关方向研究者,系统解决相机模型构建、畸变补偿与多场景标定实施等核心问…

2026/10/15 12:18:53 阅读更多 →
12306 Android订票源码实战:架构解析与全流程避坑指南

12306 Android订票源码实战:架构解析与全流程避坑指南

简介:这是一套面向Android开发学习者与进阶者的12306火车票订票系统完整项目源码,适合希望以真实业务场景提升移动端开发能力的人群。项目覆盖登录注册、车次查询、订单管理、个人信息设置等模块,并串联UI设计、网络通信、JSON解析、数据存储…

2026/10/15 12:17:50 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 0:14:36 阅读更多 →
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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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/15 9:49:14 阅读更多 →