尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
ESP32 WiFi连接实战:STA/AP模式、断线重连与静态IP配置
1. 别急着连网先搞懂ESP32的WiFi到底是个什么玩意儿很多同学学ESP32点个灯、读个传感器都挺顺一到WiFi就卡壳。原因很简单前面那些是“单片机思维”而WiFi这块开始进入“网络思维”了。说白了你要开始跟IP地址、网关、DNS、端口这些东西打交道了。先说结论ESP32的WiFi功能分两类角色。STA模式工作站模式ESP32作为客户端去连家里或实验室里的路由器这是最常用的方式。AP模式热点模式ESP32自己开一个热点手机或电脑来连它适合没有路由器、设备间直连的场景。还有一个混合玩法是STAAP同时开启一方面连外网另一方面开热点让别的设备接入。我后面会提到它但初学者老老实实从STA模式开始因为这是你之后做物联网项目、连MQTT服务器、对接云平台的基础。另外一个容易忽略的概念是WiFi连接在ESP32上由协议栈管理不是你想的那种“通个电就有网”。它需要经过扫描信道、认证、关联、DHCP获取IP这一整套流程。所以你要有心理准备哪怕密码填对了连接也需要几秒钟千万别以为代码执行到WiFi.begin()就立刻等于连上了。这篇文章我会从最基础的连接实操讲起逐步深入到重连机制、信号强度判断、静态IP配置再给你几个踩坑经验。代码我会直接用Arduino框架写这是目前入门ESP32最顺手的方式没有之一。提示这篇文章是“ESP32学习”系列的第三篇前两篇讲的是开发环境搭建和GPIO基础操作。如果这些你还没搞定建议先回去翻一翻因为WiFi涉及到的代码结构和编译上传流程是建立在环境就绪的基础上的。2. 开始写代码前先想清楚你要连哪个网络2.1 第一个程序最简单但坑最深先上一段最基础的连接代码。这段代码你会在各种教程里见到但我会把容易翻车的细节给你标出来。#include WiFi.h const char* ssid 你的WiFi名称; const char* password 你的WiFi密码; void setup() { Serial.begin(115200); delay(1000); // 给串口监视器留出打开时间 WiFi.mode(WIFI_STA); // 明确设置为工作站模式 WiFi.begin(ssid, password); // 开始连接 Serial.print(正在连接WiFi); while (WiFi.status() ! WL_CONNECTED) { delay(500); Serial.print(.); } Serial.println(); Serial.println(连接成功); Serial.print(IP地址: ); Serial.println(WiFi.localIP()); } void loop() { // 之后你的业务代码就写在这里 }代码只有这么点但如果你直接烧录进去发现连不上99%不是代码的问题而是下面这几种情况WiFi名称填错了尤其是不小心多打了一个空格。这个最隐蔽因为它在代码里根本看不出来。我建议你第一遍跑的时候把SSID和密码单独用Serial.println()打印出来肉眼核对一遍再烧录别嫌麻烦新手一半以上的连接失败都出在这种“看着没问题但实际有看不见的字符”上面。路由器开了MAC地址过滤或隐藏了SSID。隐藏SSID的设备你需要手动把ssid写完整同时在代码里指定连接这个隐藏网络。如果你不确定路由器是否隐藏了SSID先拿手机试一下能不能搜到这个网络。2.4GHz和5GHz的问题。ESP32的WiFi模块只支持2.4GHz频段不支持5GHz频段。现在很多路由器默认会把2.4G和5G合并成一个SSID叫“双频合一”。这种情况下手机能连但ESP32不一定行因为它在扫描的时候可能拿到了5G的信号信息却无法完成连接。遇到这种问题别怀疑代码先进路由器后台把双频合一关掉或者给2.4G单独设置一个SSID。如果网络正常、密码正确、频段也对了那代码往下走就没问题了。连接成功之后打印出来的IP地址一般是192.168.x.x这跟你的路由器网段有关。看到这个地址说明ESP32已经从路由器那边通过DHCP拿到了一个合法IP这时候网络层面的连接才算真正完成。2.2 超时重连别让while循环死等我刚才给的代码是初学者最常见写法但它有一个很大的隐患如果WiFi连不上while循环会永远跳不出来程序卡死在setup()里后面的功能全都不执行。这个问题在“正常环境”下看不出来但一旦你拿着板子去现场演示、去户外调试路由器临时出问题或者密码被改过你的设备就会变成一块砖——串口里永远在打印点点点。所以更健壮的做法是给连接过程设置超时时间。比如10秒内连不上就放弃进入另一种处理逻辑。#include WiFi.h const char* ssid 你的WiFi名称; const char* password 你的WiFi密码; void setup() { Serial.begin(115200); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); Serial.print(正在连接WiFi); unsigned long startTime millis(); while (WiFi.status() ! WL_CONNECTED millis() - startTime 10000) { delay(500); Serial.print(.); } if (WiFi.status() WL_CONNECTED) { Serial.println(); Serial.println(连接成功); Serial.print(IP地址: ); Serial.println(WiFi.localIP()); } else { Serial.println(); Serial.println(连接超时请检查网络配置); // 在这里可以做一些降级处理比如开启AP模式让用户重新配网 } } void loop() { }millis()这个函数返回的是ESP32开机以来经过的毫秒数配合startTime做差值判断是最常见的非阻塞延时思路。这个思路在后面做重连、做定时任务的时候会反复用到建议你现在就养成习惯不要用delay()去实现“等多久”的逻辑。2.3 为什么要在setup()里调用WiFi.mode(WIFI_STA)有些教程代码里没有WiFi.mode(WIFI_STA)这一句直接WiFi.begin()也能连接成功。这是因为WiFi.begin()内部会自动把模式设置成STA。那为什么我还要加这一句因为默认模式下ESP32可能同时开启了AP和STA两种模式或者处于一个不确定的状态。强制指定WIFI_STA可以排除干扰让后续的IP获取、DNS解析行为更加可控。尤其当你之后要在同一个程序里切换模式、关闭WiFi重新开启时显式设置模式能少很多莫名其妙的问题。这也算是我自己的一个习惯写代码时把“意图”显式化。凡是可以明确设置的东西绝不依赖默认行为。这样代码拉到别人那里或者过三个月自己回来看也清楚当时想干嘛。3. WiFi连接的原理它内部到底干了什么好多同学会有个疑问凭什么WiFi.begin()传个SSID和密码就能连上这背后其实是一套标准化的网络流程了解它之后你排查问题的时候会更有方向感。首先ESP32会以广播帧的形式发送探测请求扫描附近所有的2.4G信道。路由器收到之后会响应告诉ESP32自己存在以及自己支持的认证方式、加密方式、信道信息等。这个过程类比一下就是你在商场里喊一嗓子“哪里有免费WiFi”然后各个路由器回应“我这有密码是XXXX”。找到目标网络之后ESP32进入认证阶段。这里涉及到WPA2/WPA3等加密协议的握手过程简单说就是双方验证密码是否正确。如果密码不对握手失败状态码就停留在WL_WRONG_PASSWORD。认证通过之后ESP32向路由器发送关联请求加入这个网络。最后一步是通过DHCP协议向路由器申请IP地址。路由器会从自己的地址池里分配一个可用IP给ESP32同时下发子网掩码、默认网关和DNS服务器地址。当你看到WiFi.status()返回WL_CONNECTED、WiFi.localIP()返回一个合法IP时意味着这四步全部完成了。你把串口波特率调到115200在连接过程中其实能看到一些底层日志不过Arduino框架默认把他们屏蔽了想看到更详细的信息可以打开CORE_DEBUG_LEVEL但这属于进阶话题篇幅有限就不展开了。了解这个流程之后你至少知道连接失败要分阶段排查。如果卡在扫描阶段说明附近根本没有这个SSID或者路由器不在2.4G频段发射信号如果卡在认证阶段大概率密码错误或者路由器不支持当前设备使用的加密协议如果一直拿不到IP说明DHCP有问题可以试试静态IP方案。4. 信号强度和连接稳定性这才是实际项目里最花时间的部分测试环境里路由器就放在桌子旁边信号满格连接自然很快。但真实项目里设备可能放在阳台、挂在墙上、藏在铁皮箱里信号强度直接决定了连接的稳定性和速度。4.1 如何读取信号强度ESP32获取信号强度很简单int rssi WiFi.RSSI();RSSI是接收信号强度指示单位是dBm一般是一个负值。数值越大越接近0代表信号越强。大概的参考范围-30 dBm 到 -50 dBm信号极强基本可以跑满带宽。-50 dBm 到 -65 dBm信号良好日常使用没有问题。-65 dBm 到 -75 dBm信号偏弱连接不稳定可能出现偶发断连。-75 dBm 以下不建议依赖这个信号做实时通信掉线概率很高。我说一下实际体感我曾经把一个温湿度传感器放在铁皮配电箱里串口打印出来的RSSI是-78左右连接能建立但每隔十几分钟就掉一次线。后来把天线用延长线引到箱子外面RSSI恢复到-55就再也没掉过。所以如果你遇到“能连上但老是断”的问题第一件事就是打印RSSI看看是不是信号强度不行。别急着改代码。4.2 用代码判断信号强度并做处理很多项目里我们会根据RSSI做不同的处理策略。比如信号太弱时降低数据发送频率或者提示用户调整设备位置。void loop() { if (WiFi.status() WL_CONNECTED) { int rssi WiFi.RSSI(); Serial.print(当前信号强度: ); Serial.print(rssi); Serial.println( dBm); if (rssi -75) { Serial.println(信号弱注意连接稳定性); // 降低上报频率等操作 } delay(5000); // 每5秒测一次别刷屏 } else { // 断线重连逻辑后面会讲 reconnectWiFi(); } }这里的delay(5000)是个简单的防刷屏处理。真实项目中我建议你用一个定时器或者millis()做非阻塞延时避免卡住其他任务的执行。这个属于多任务设计的话题感兴趣的可以留意后续文章。4.3 天线位置的影响比你想象的还大ESP32板子上的天线一般是PCB天线它的辐射方向是有讲究的。在测试的时候尽量让板子天线的方向朝向路由器不要用手紧捏天线区域也不要把板子贴在金属表面上。这些听起来像玄学但做过信号实测就知道差别可能高达10到20个dBm。这一点我在野外调试的时候吃亏过好几次按照网上教程把代码烧好之后放在手边反复测都没问题结果装到设备外壳里信号直接掉到-85。一开始还以为是程序问题最后发现就是天线被金属支架挡住了。5. 断线重连物联网项目的命根子如果你只是在家里做个小实验断线之后按下复位键重启就行。但真实物联网项目里设备可能部署在无人值守的现场一断线就是事故。所以断线重连机制是WiFi连接模块里最重要的实战环节。5.1 WiFi事件回调最优雅的重连方式刚才我们做的超时重连是在loop()里不断轮询状态这种做法简单但是不够实时、也不够优雅。ESP32有个更高级的机制叫WiFi事件回调网络状态变化的时候会自动调用你注册的函数不需要你一遍遍去查。#include WiFi.h const char* ssid 你的WiFi名称; const char* password 你的WiFi密码; void onWiFiEvent(WiFiEvent_t event) { switch (event) { case ARDUINO_EVENT_WIFI_STA_CONNECTED: Serial.println(已连接到路由器正在获取IP...); break; case ARDUINO_EVENT_WIFI_STA_GOT_IP: Serial.print(获取到IP: ); Serial.println(WiFi.localIP()); break; case ARDUINO_EVENT_WIFI_STA_DISCONNECTED: Serial.println(WiFi连接断开开始重连...); WiFi.reconnect(); break; default: break; } } void setup() { Serial.begin(115200); WiFi.onEvent(onWiFiEvent); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); } void loop() { // 你的业务代码照常运行不关心WiFi状态 }这个回调机制的好处在于网络事件发生时你的主程序不用停下手里的事去处理连接。比如你正在读取传感器数据这时候WiFi突然断了如果是轮询方式你要在loop()里到处判断状态而回调方式会在后台自动触发重连主程序几乎无感知。5.2 重连的进阶策略指数退避WiFi.reconnect()会让ESP32重新发起连接但如果一直连不上它会陷入“尝试-失败-再尝试”的循环无限消耗电量。在电池供电的项目里相当于一直在空转。一个工程上常用的策略是指数退避连续失败次数越多下一次尝试的间隔就越长。比如第一次失败后等1秒第二次等2秒第三次等4秒最多等60秒就不再往上加了。int failCount 0; unsigned long lastAttemptTime 0; unsigned long waitTime 1000; const unsigned long maxWaitTime 60000; void reconnectWiFi() { if (WiFi.status() WL_CONNECTED) { failCount 0; waitTime 1000; return; } if (millis() - lastAttemptTime waitTime) { return; // 还没到下一次尝试时间 } lastAttemptTime millis(); failCount; waitTime min(waitTime * 2, maxWaitTime); // 指数增长封顶60秒 Serial.print(第); Serial.print(failCount); Serial.print(次重连等待); Serial.print(waitTime / 1000); Serial.println(秒后再次尝试); WiFi.reconnect(); }在loop()里调用reconnectWiFi()配合回调事件就是一个很稳的重连方案。既不会对路由器造成冲击也能避免电量白白流失。注意指数退避不是越慢越好。如果设备在主控面板上需要快速恢复网络响应可以适当降低封顶值比如30秒。这个参数没有标准答案取决于你的业务容忍度。6. 静态IP配置摆脱DHCP的不确定性大多数时候ESP32自动从路由器获取IP就够用了。但在有些场景下你需要IP固定不变比如设备作为UDP服务端手机或上位机固定往这个IP发数据。路由器开启了IP与MAC绑定但这种绑定需要先确认MAC地址比较麻烦。你希望设备开机后不需要等待DHCP省掉那几百毫秒的获取时间。用静态IP也很简单在WiFi.begin()之前配置好即可#include WiFi.h const char* ssid 你的WiFi名称; const char* password 你的WiFi密码; IPAddress local_IP(192, 168, 1, 200); IPAddress gateway(192, 168, 1, 1); IPAddress subnet(255, 255, 255, 0); IPAddress dns(114, 114, 114, 114); void setup() { Serial.begin(115200); WiFi.mode(WIFI_STA); if (!WiFi.config(local_IP, gateway, subnet, dns)) { Serial.println(静态IP配置失败); } WiFi.begin(ssid, password); while (WiFi.status() ! WL_CONNECTED) { delay(500); Serial.print(.); } Serial.println(连接成功); Serial.println(WiFi.localIP()); } void loop() { }这里有几个细节需要讲清楚IP地址不能跟网段内其他设备冲突。如果你抄了一个网上例程里面写的是192.168.1.200而你的路由器网段是192.168.31.x那这个配置就废了。你先要确认自己路由器的网段从里面挑一个不会被DHCP分配出去的地址。比如路由器管理地址是192.168.31.1那你就可以用192.168.31.200这种不会被默认池分配的高位数地址。网关必须填对。网关就是路由器的局域网IP一般是你访问路由器管理后台用的那个地址。填错的话ESP32能连上路由器但出不了外网因为不知道把数据包转发给谁。DNS要填一个能用的。如果你不填DNS系统会自动用网关作为DNS大部分路由器也支持转发。但如果你后续要做域名解析我建议直接填公共DNS比如114.114.114.114或223.5.5.5。这块留意一下就好目前阶段可以先不折腾。子网掩码保持默认。绝大多数家庭网络都是255.255.255.0不用改。静态IP配置好之后用WiFi.localIP()打印出来的就是你设置的那个固定地址。走一遍这个流程你就能体感出静态IP和DHCP的区别了。7. 同时开启热点模式当路由器不存在的时候怎么办前面步骤里我反复提到超时之后可以开热点这里就把这个写法补全。当ESP32找不到目标WiFi时它自动变成一个热点你用手机连上它的热点在浏览器里打开一个配置页面来重新输入WiFi密码。这种交互方式叫SmartConfig或者配网在大部分物联网设备里都能见到。不过完整的Web配网系统涉及HTML页面、HTTP服务器、参数保存到Flash等内容比较多这里先给你一个精简版本超时之后开启AP模式让手机连上ESP32的热点通过串口或者简单的UDP消息交互来获取新密码。#include WiFi.h const char* ssid 你的WiFi名称; const char* password 你的WiFi密码; void setup() { Serial.begin(115200); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); unsigned long startTime millis(); while (WiFi.status() ! WL_CONNECTED millis() - startTime 10000) { delay(500); Serial.print(.); } if (WiFi.status() WL_CONNECTED) { Serial.println(已连接正常WiFi); Serial.print(IP: ); Serial.println(WiFi.localIP()); } else { Serial.println(连接超时切换到AP模式); WiFi.mode(WIFI_AP); WiFi.softAP(ESP32_Config, 12345678); Serial.print(AP IP: ); Serial.println(WiFi.softAPIP()); } } void loop() { }这段代码跑起来之后你的手机能搜到一个叫ESP32_Config的热点密码是12345678。连上之后在浏览器里访问192.168.4.1就是ESP32的配置页面入口。这个地址是ESP32作为AP时的默认IP固定不变。你可能会想如果之前是STA模式连不上切换到AP模式后还能不能恢复STA当然可以只要再次调用WiFi.mode(WIFI_STA)和WiFi.begin()就行。这块ARDUINO框架的API设计得比较灵活切换模式不会造成永久影响但要注意切换模式之前最好调用WiFi.disconnect()把当前连接状态清理干净避免残留状态对后续连接造成干扰。8. 常见问题排查快查表这段是我把过去调试中遇到的高频问题整理成的一张表建议你收藏。大多数情况下按表里的顺序排查就能解决问题。现象可能原因排查思路一直打印.但不报错SSID或密码错误路由器5G频段信号太弱打印SSID核对关闭双频合一查看RSSI能连上但几秒后掉线信号不稳定路由器设备数量限制电源供电不足测RSSI检查路由器管理页面换供电连接成功但ping不通外网网关配置错误DNS错误路由器未联网查看网关换静态IP并填好DNS断电重启后连不上WiFi名带特殊字符密码中有隐藏空格避免使用隐藏字符代码里用Serial.println核对连接速度特别慢DHCP响应慢路由器信道拥挤被其他设备干扰手动指定静态IP换5G频段路由器桥接ESP32连2.4G重启路由器偶尔出现GOT_IP但立即断线路由器信号重叠干扰AP老化网关IP冲突固定信道重启AP检查是否有其他设备占用IP这里想特别强调一下电源问题。听起来跟WiFi毫不相关但ESP32在WiFi发射的瞬间电流会飙升峰值可能到200-500mA。如果你用的是劣质USB线或者电脑前置USB口供电电压一掉WiFi射频模块就会工作异常表现就是“连不上、连上了掉线、甚至反复重启”。我遇到过好几次这个问题最后换了根粗一点的USB线或者换了个独立供电的充电头就解决了。排查WiFi问题的时候顺手测一下供电电压能省很多时间。关于WiFi.status()返回的状态码也一并列出来方便你对照WL_IDLE正在初始化WiFi。WL_NO_SSID_AVAIL找不到你设定的SSID。WL_CONNECTED已连接成功。WL_CONNECT_FAILED连接失败通常是密码错误。WL_CONNECTION_LOST原本连接着现在断开了。WL_DISCONNECTED未连接状态。把这些状态码打印出来比看一大堆日志直观得多。9. 用串口监视器做一次完整的连接体检串口监视器是排查WiFi问题最重要的工具没有之一。我建议你养成一个习惯上电之后先在串口打印基础信息再做连接动作。这样如果出现问题能看到卡在哪一步。实际项目中我一般会在setup()开头打印下面这些信息Serial.println( ESP32 WiFi 调试信息 ); Serial.print(芯片信息: ); Serial.println(ESP.getChipModel()); Serial.print(固件版本: ); Serial.println(ESP.getSdkVersion()); Serial.print(MAC地址: ); Serial.println(WiFi.macAddress()); Serial.print(当前工作模式: ); Serial.println(WiFi.getMode());MAC地址很重要。如果你的路由器开启了MAC过滤你需要把ESP32的MAC地址加进白名单才能连接。刷机之后MAC地址不会变除非你在代码里手动修改所以这个值可以长期保存下来。烧录这段代码之后打开串口监视器把波特率调到115200你会看到完整的信息输出。信息不需要多花哨关键是在出问题的时候你能从串口日志里判断出是哪一步出了故障而不是瞎猜。10. 我踩过的几个坑写下来给你避雷写到这里我盘点一下我在WiFi连接这个模块上踩过的、值得你避开的坑。第一个坑连接失败后程序卡死。最早期的代码就是前面那个无限while循环现场路由器挂了整块板子直接变砖后台数据全断了。后来我养成了习惯所有阻塞等待都必须有超时这是一个通用原则不只是在WiFi模块上适用。第二个坑双频合一坑了我一整个下午。去客户那边调试手机能连上WiFiESP32就是连不上。我在代码层面来回排查最后才发现是客户的路由器开着双频合一ESP32接收到2.4G信号之后Router又把它引导到5G上去。这个问题在代码上无解只能在路由器设置里改。给你的建议是拿到一个新环境先问清楚路由器是不是双频合一省得走弯路。第三个坑隐藏SSID导致无法扫描到网络。有个项目为了“安全”把WiFi隐藏了结果设备开机后一直找不到网络。后来我把隐藏关闭或者使用WiFi.begin(ssid, password, channel)手动指定信道才解决。ESP32本身能连隐藏网络但前提是你要把信道也写清楚。第四个坑用一个共享充电宝给ESP32供电连不上WiFi。这纯属硬件问题但再次提醒你一旦遇到WiFi相关异常在怀疑代码前先看一眼供电是否充足。第五个坑千万别在生产代码里把密码明文写死。虽然现阶段学习过程中大家都会把SSID和密码写在代码里但这在工程上很不安全。后面可以用NVS非易失性存储参数或者配网页面来保存把密码从代码里剥离出来。这一步等你把本文内容都消化了再去做也不迟。11. 下一步可以怎么学WiFi能连上之后你就可以开始玩更有意思的东西了用HTTP请求访问天气接口用MQTT协议接入物联网平台用WebServer在浏览器里控制LED开关。这些都是在WiFi连接这个基础上叠加的应用层功能。如果你想把基础打得更扎实建议试试这几个方向用WiFi.scanNetworks()扫描附近网络把SSID和信号强度打印出来理解信道概念。尝试修改静态IP配置找一找网关填错会发生什么现象。给自己写一个带有超时重连和指数退避的通用WiFi连接函数以后每个项目直接调用。我个人做的时候明显感觉到WiFi连接这块是最容易“烦躁”的因为它的变量太多了——网络环境、硬件、供电、代码任何一个点出问题外在表现都是“连不上”。但换一个角度想这种多变量排查训练恰恰是你从“会写代码”到“会做产品”的必经之路。等你能在一堆不确定因素里迅速定位到根因后面做再复杂的物联网项目都不会慌了。最后再分享一个我的小习惯在调试WiFi时我不会只盯着一块板子的日志而是拿手机连同一个WiFi做对照测试。手机能上网而ESP32不能问题大概率出在ESP32侧手机也不能那就先解决网络环境本身。这个对照法帮我节省了很多无谓的排查时间。
RELATED

相关推荐

Redis事务与Lua脚本:原子操作原理、选型对比及生产实践

Redis事务与Lua脚本:原子操作原理、选型对比及生产实践

/* 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 1:24:56
易语言多线程COM初始化指南:解决大漠插件崩溃问题

易语言多线程COM初始化指南:解决大漠插件崩溃问题

/* 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 1:24:56
Qt画图板实战:从QWidget到QGraphicsView的绘图架构选型与优化

Qt画图板实战:从QWidget到QGraphicsView的绘图架构选型与优化

简介:这是一份面向Qt初学者与GUI开发入门者的绘图应用实践项目,完整实现了具备画笔选择、颜色填充、图像打开/保存等核心功能的跨平台画图板,帮助开发者快速掌握Qt图形绘制与事件处理机制。资源包共44个文件,包含6个CPP源文件与5个…

📅 2026/10/14 1:24:56
MORE NEWS

更多资讯

📰

airllm逐层加载实战:4GB显存如何跑70B大模型

1. 当显存告急时,我们还能怎么跑大模型显存不够这件事,几乎每个在本地折腾过大模型的人都遇到过。你兴冲冲下载了一个 70B 参数的模型权重,打开推理脚本,结果第一行就给你甩回来一个CUDA out of memory。显卡就那么大,…

📰

YOLO26算法城市街道背包手提包纸袋行人目标检测+训练好的模型+9130张数据集+pyqt可视化界面

YOLO26算法城市街道背包手提包纸袋行人目标检测训练好的模型9130张数据集pyqt可视化界面 这套数据共 9130 张图。用 YOLO26 训了 100 轮,mAP50 0.9158,mAP50-95 0.7920。Precision 0.9433、Recall 0.8620。下面按数据构成 → 训练曲线 → 预测效果的顺序…

📰

动态多Agent工作流公测体验:架构拆解与压测实战

最近只要在搞AI应用,多Agent编排就绕不开。单Agent能力不够用,静态编排又总在各种场景里卡壳,所以动态多Agent工作流这个概念一出来,我第一时间申请了公测。前前后后跑了两周多,压过几轮高负载任务,也塞了几…

📰

线束工厂100问|端子采购需要核对哪些关键参数,避免来料不匹配?

1. 引言端子是线束连接的核心元件,来料不匹配往往会导致压接不良、拉脱力不足甚至批量返工。结合上海红同电子有限公司(www.hongtongsh.com)近30年电子高低压线束的生产经验,本文梳理端子采购时需要重点核对的关键参数&#xff0c…

📰

小说一键成片:开源AI工具如何用大模型重构短剧生产链

要说最近技术圈里什么方向最热,AI 视频生成绝对算一个。不过比起那种输入一句话生成几秒特效片段的花活,我更关注的是另一类工具——直接能把一本百万字小说变成一部可以看的短剧。这个细分赛道里有个开源项目最近表现很猛,GitHub 上狂揽了 1…

📰

NSGAII多目标优化在综合能源系统调度中的Matlab实现与调参实践

做综合能源优化调度的人,多半都遇到过这种尴尬:目标函数一多,单目标优化那套权重法就不好使了——权重拍脑袋定,结果跑出来要么成本低得离谱但碳排放高得吓人,要么反过来,折腾半天压根看不到整体权衡。所以…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬