当前位置: 首页 > news >正文

基于ESP8266的便携式Wi-Fi学习工具:从硬件设计到产品化实践

1. 项目概述:从零打造一个口袋里的Wi-Fi学习工具

作为一名在嵌入式硬件和物联网领域折腾了十多年的老玩家,我始终认为,一个真正有价值的项目,不在于它用了多炫酷的技术,而在于它能否将复杂的系统拆解、整合,最终变成一个你可以握在手里、稳定运行的产品。今天要分享的,就是这样一个过程:以一块经典的NodeMCU ESP8266开发板为核心,结合OLED显示屏、自定义PCB和锂电池管理,打造一个集成了完整用户界面和电源系统的便携式Wi-Fi设备。这不仅仅是一个“能跑代码”的开发板,而是一个从原型验证、电路设计到机械装配的完整产品化实践。

这个项目的核心目标,是构建一个用于合法、授权环境下的Wi-Fi协议学习与测试工具。它集成了Wi-Fi扫描、信息展示以及相关的管理帧操作演示功能。请注意,其所有功能仅限用于你完全拥有或已获得明确书面授权的网络设备,用于教育、研究或个人实验室环境下的技术学习。任何未经授权的使用都可能违反法律并干扰他人,这与技术探索的初衷背道而驰。这个设备本身,更像是一个承载了嵌入式开发全流程知识的“物理容器”。

为什么选择这个项目作为案例?因为它几乎覆盖了小型智能硬件产品开发的所有关键环节:微控制器(MCU)的选型与固件开发、外围设备(显示、输入)的驱动、开关电源与锂电池充电管理电路的设计、射频(RF)电路的PCB布局考量,以及最终的双层PCB堆叠结构设计。无论你是想深入学习ESP8266的Wi-Fi底层操作,还是希望将面包板上的凌乱连线转化为一个可靠、美观的成品,这个过程都能给你带来实实在在的收获。接下来,我将以第一视角,带你完整走一遍我的开发历程,包括那些踩过的坑和总结出的实用技巧。

2. 核心硬件选型与设计思路解析

2.1 主控芯片:为什么依然是ESP8266?

在众多物联网MCU中,我最终选择了NodeMCU ESP8266 Mini版本作为核心。很多人可能会问,现在ESP32功能更强大,为什么还用8266?我的理由很实际:够用、成熟、生态极好。对于这个专注于802.11 b/g/n Wi-Fi协议层面的学习工具而言,ESP8266的单核处理器和内置的Wi-Fi射频前端已经完全满足需求。它的SDK和社区资料(如ESP8266 Non-OS SDK)对于直接操作Wi-Fi底层管理帧有非常丰富的示例和深度解读,学习曲线相对平缓。

注意:NodeMCU有多个版本,务必选择“NodeMCU ESP8266 Mini”或类似尺寸的型号。它与标准的NodeMCU V3功能一致,但去掉了USB转串口芯片(如CH340),体积更小,更适合集成到定制PCB中。这意味着你需要通过外接的FTDI编程器或主PCB上集成的CH340电路来烧录固件。

2.2 用户交互模块:简约而不简单

用户界面由两部分构成:输出和输入。

  • 输出:0.96英寸I²C OLED显示屏。选择I²C接口而非SPI,主要原因是为了节省宝贵的GPIO引脚。对于这种信息量不大的状态菜单显示,I²C的速率足够,且布线简单(仅需SDA、SCL两根线)。在PCB布局时,需要将OLED的安装位置精准地开窗,并为其背面的元件预留一定的物理空间,避免挤压。
  • 输入:三个轻触开关。我设计了经典的“上”、“下”、“确认”三键导航模式。这比使用旋转编码器更省空间,且软件去抖动处理成熟可靠。关键在于为按键选择合适的上拉电阻(通常使用MCU内部上拉即可)并规划舒适的操作位置。

2.3 电源系统设计:安全与效率的平衡

这是将开发板项目升级为产品级设备的关键一步。电源系统必须安全、可靠、高效。

  1. 供电核心:单节3.7V锂离子电池。选择常见的18650或更小巧的14500电池,取决于你对设备体积的预期。电池容量(如1000mAh)直接决定了设备的续航时间,在待机状态下,ESP8266的深度睡眠模式能将电流降至微安级,但主动进行Wi-Fi扫描或发包时,峰值电流可能超过200mA,这些都需要在估算续航时考虑进去。
  2. 充电管理:TP4056线性充电芯片。这是极常见且廉价的方案。但有一个至关重要的细节:务必选用带DW01A电池保护芯片的TP4056模块或自行在PCB上集成保护电路。DW01A提供了过充、过放、过流保护,能极大提升锂电池使用的安全性。例如,它能防止电池电压低于2.4V(过放)或高于4.25V(过充),并在输出短路时自动切断电路。
  3. 电压转换:从3.7V到3.3V。ESP8266和OLED都需要稳定的3.3V工作电压。电池电压在满电(4.2V)到欠压(3.0V)之间变化,因此一个高效的DC-DC降压(Buck)转换器是必须的。我选择了AMS1117-3.3的升级版——例如RT9193ME6211这类低压差(LDO)或同步降压芯片。在电池电压降至3.5V时,普通LDO可能已无法稳定输出3.3V,而同步降压芯片的效率更高,能在更宽的输入电压范围内工作,有助于延长续航。

2.4 结构设计:双PCB堆叠架构

我放弃了将所有元件集成在一块PCB上的做法,而是采用了前后两块PCB堆叠的结构。这是本项目机械设计的精髓。

  • 前板(Front PCB):承载“干净”的数字和射频部分。包括NodeMCU核心、OLED显示屏、三个导航按键、电源开关和状态LED。这块板子是用户直接交互的界面。
  • 后板(Back PCB):承载“嘈杂”的电源部分。包括TP4056充电管理电路、锂电池插座、DC-DC降压电路,以及提供给前板的3.3V电源接口。
  • 为何要分开?
    • 噪声隔离:开关电源电路(特别是DC-DC芯片)会产生高频噪声,如果与ESP8266的Wi-Fi射频电路和晶振靠得太近,可能会严重干扰无线信号,导致灵敏度下降或工作不稳定。物理隔离是最有效的抗干扰手段之一。
    • 可维护性与可升级性:如果未来想更换更大容量的电池或更先进的充电芯片,只需拆卸后板即可,无需动前板上的精密数字电路。
    • 美学与薄型化:可以将较厚的电池和充电模块藏在后面,让前面板保持平整、美观,按键和屏幕的布局也更自由。

3. 从面包板到固件:原型验证阶段实操

3.1 搭建可调试的软硬件原型

在画第一笔PCB走线之前,必须在面包板上搭建一个全功能原型。这个阶段的目标是验证所有硬件组件的兼容性,并完成基础固件功能的开发

硬件连接要点:我将NodeMCU Mini、OLED、三个按键、LED、以及TP4056模块(带电池)全部连接在面包板上。特别注意:

  • 电源路径:电池正负极接TP4056的B+B-,TP4056的OUT+OUT-作为系统总电源。总电源经过一个滑动开关后,接入DC-DC降压模块(或先接降压模块再开关),输出稳定的3.3V给NodeMCU和OLED。
  • GPIO分配:提前规划并固定下来。例如:
    • GPIO4(D2): I²C SDA
    • GPIO5(D1): I²C SCL
    • GPIO12(D6): 按键“上”
    • GPIO13(D7): 按键“下”
    • GPIO14(D5): 按键“确认”
    • GPIO2(D4): 状态LED(低电平点亮,注意ESP8266上电时此引脚状态)
  • 串口调试:通过一个USB转TTL模块(如CH340、CP2102)连接NodeMCU的TXRXGND到电脑,用于烧录固件和输出调试信息。务必确保USB转TTL模块的工作电压是3.3V,否则会烧毁ESP8266。

3.2 固件开发与烧录深度解析

固件开发可以在Arduino IDE或PlatformIO中进行。对于需要更底层控制Wi-Fi射频的项目,有时需要用到ESP-IDF框架。这里以Arduino环境为例,说明核心步骤。

1. 建立工程与库依赖:在Arduino IDE中,安装ESP8266开发板支持。然后通过库管理器安装以下关键库:

  • ESP8266WiFi.h:核心Wi-Fi功能。
  • Wire.h:I²C通信。
  • Adafruit_SSD1306.hAdafruit_GFX.h:用于驱动OLED显示屏。
  • 可能需要专门的“按键扫描”或“菜单系统”库来构建用户界面。

2. 编写核心功能逻辑:固件主要包含几个状态机:

  • 菜单系统:在OLED上显示可选项(如“Scan Networks”、“About”、“Settings”),通过三个按键进行浏览和选择。
  • Wi-Fi扫描:调用WiFi.scanNetworks(),将扫描到的SSID、信号强度(RSSI)、信道、加密方式等信息格式化后显示在屏幕上。
  • 系统管理:处理深度睡眠唤醒、电池电压检测(通过ADC读取分压后的电池电压)、LED状态指示等。

3. 固件烧录的两种方式:

  • 方式A:通过USB转TTL模块:这是开发阶段最常用的方式。连接好TXRXGND,并将NodeMCU的GPIO0引脚拉低至GND后上电,芯片即进入下载模式。在Arduino IDE中选择正确的端口和板型(如“NodeMCU 1.0”),点击上传即可。
  • 方式B:通过预留的编程接口:在产品化PCB上,我会预留一个4Pin(VCC, TX, RX, GND)或6Pin(包含GPIO0RST)的烧录焊盘或排母。这样,在组装好的设备上,仍然可以通过探针或杜邦线连接编程器进行固件更新,无需拆卸芯片。

实操心得:在面包板阶段,务必反复测试固件的稳定性。尤其是进行Wi-Fi密集操作时,观察系统是否会意外重启。这可能是电源纹波过大或代码堆栈溢出导致的。使用Serial.print()输出关键变量和状态到串口监视器,是定位问题的好方法。

4. 核心环节:双面PCB设计与布局实战

当面包板原型稳定运行超过24小时,且所有功能验证无误后,就可以开始最具挑战性的部分——PCB设计。我使用Altium Designer,但思路同样适用于KiCad、Eagle等软件。

4.1 前板(UI/逻辑板)设计要点

  1. 元件布局

    • NodeMCU位置:作为核心,应放在板子中央略偏上的位置,为天线区域留出空间。其背面(焊接面)下方尽量避免走高速信号线。
    • 天线净空区:这是成败关键!ESP8266的PCB天线(如果模块自带)或陶瓷天线附件区域,必须严格按照数据手册要求,进行净空处理。这意味着在该区域内(通常是一个矩形区域),所有层(包括丝印)都不能有铜箔和走线,最好连GND铜皮都挖掉。这是为了保证天线辐射效率,任何金属都会严重衰减信号。
    • OLED和按键:根据外壳设计,精确放置。OLED的FPC连接器或焊盘位置要准,其下方可以走线,但避免大电流线路。按键周围可以铺地,增加ESD防护。
  2. 走线与电源设计

    • 电源走线:从连接器进来的3.3V电源线要足够宽(建议≥0.5mm),并尽快经过一个10uF的钽电容或电解电容进行储能,再并联多个0.1uF的陶瓷电容,分散放置在主要芯片(如ESP8266、OLED驱动IC)的电源引脚附近,用于滤除高频噪声。
    • 信号线:I²C线(SDA, SCL)最好并排走,长度尽量一致,无需特意绕等长。可以在其末端放置一个上拉电阻(如4.7kΩ)到3.3V。
    • 晶振:ESP8266外部晶振(通常26MHz)的走线要尽可能短,且包地处理(两侧用GND线隔离),远离任何可能产生噪声的电源线。

4.2 后板(电源板)设计要点

  1. 充电电路布局

    • TP4056:其BAT引脚连接电池,OUT引脚连接系统。PROG引脚通过一个1.2kΩ电阻(典型值)设定充电电流(I = 1200V / R_prog)。例如,1.2kΩ对应1A充电电流。务必在电池输入端和系统输出端各放置一个至少100uF的电解电容,以平滑电流。
    • 保护电路:如果使用集成保护芯片的模块,布局相对简单。如果分立设计,DW01A和8205A MOS管应紧靠TP4056和电池接口。
    • 散热:TP4056在1A充电时会有明显发热。PCB设计时,应在其底部(Exposed Pad)绘制一个较大的铜皮区域,并通过多个过孔连接到背面或内层的GND平面,利用整个PCB散热。
  2. DC-DC降压电路布局

    • 芯片选型:如前所述,推荐使用同步降压芯片如MP2315SY8089。它们的效率通常高于90%,且支持较大的输入输出压差。
    • 关键元件:电感、输入输出电容的选择必须严格按照芯片数据手册的推荐。电感应尽量靠近芯片的SW引脚,其回路面积要小。输入电容(通常10uF陶瓷+100uF电解)应紧贴芯片的VIN引脚。
    • 反馈网络:用于设定输出电压的电阻分压网络(通常两个精密电阻),其连接点应远离噪声源,走线尽量短,直接回到芯片的FB引脚。
  3. 板间连接与机械设计

    • 连接器:前后板之间通过一组排针或排母连接,传递VCCGND以及可能的电池电压检测信号。我选择了2.54mm间距的直针排母,既稳固又便于焊接。
    • 定位与固定:在四角设计至少3个(推荐4个)2.0mm或2.5mm的螺丝孔。使用铜柱或尼龙柱将前后板固定在一起,中间的空隙正好用于容纳电池和部分线缆。螺丝孔周围要留出足够的禁布区,避免螺丝短路走线。

4.3 PCB打样与焊接准备

将设计好的前后板导出为Gerber文件,发送给PCB制板厂。对于这种双面板,选择沉金(ENIG)工艺有利于焊接,特别是对于细间距的QFN封装芯片。板子颜色可以根据喜好选择,黑色显得更专业。

收到PCB后,先进行目视检查和连通性测试。用万用表的二极管档或通断档,检查主要的电源网络(VCC到GND)是否短路,关键信号线是否连通。确认无误后再开始焊接。

焊接顺序建议:先焊后板(电源板),因为元件较少且个头大。再焊前板,遵循“先矮后高、先里后外”的原则:先焊接贴片电阻电容、芯片,再焊接排母、连接器,最后焊接NodeMCU模块和OLED插座。焊接NodeMCU时,注意对其天线区域,不要被其他元件或线缆遮挡。

5. 系统集成、组装与功能测试

5.1 分步组装流程

  1. 独立测试:焊接完成后,先不要组装。单独给后板接上电池和USB充电线,测试TP4056充电是否正常(红灯亮),输出是否有稳定的~4.2V(电池端)和稳定的3.3V(系统输出端)。用万用表测量电压,确保无误。
  2. 前板初步测试:将前后板通过排针连接,但先不上螺丝。给系统上电,观察前板的电源指示灯是否亮起,NodeMCU是否启动(可通过串口查看日志)。如果一切正常,再进行下一步。
  3. 机械组装
    • 将电池用双面胶或电池仓妥善固定在后板的背面或预留空间内。
    • 连接电池的JST插头到后板的电池插座,再次确认极性!红对正,黑对负。
    • 将前后板对齐,用合适长度的铜柱和螺丝固定。注意螺丝不要拧得过紧,以免压坏PCB或导致短路。
    • 将OLED显示屏插入前板的插座,并用少量热熔胶或双面胶在四周固定,防止脱落。
  4. 最终上电:闭合电源开关。此时,你应该看到OLED屏幕亮起,显示初始化菜单。所有按键功能应正常响应。

5.2 核心功能测试与验证

设备组装完成后,需要进行一系列严格的测试,确保其稳定可靠。

  1. 电源系统压力测试

    • 充电测试:用USB线连接充电,观察TP4056指示灯是否从红变绿。用万用表监测电池电压,确认其在4.2V左右停止充电(过充保护生效)。
    • 放电测试:让设备持续工作(例如,保持Wi-Fi扫描状态),直到电池电压降至3.0V左右。观察设备是否会自动关机(欠压保护生效)。记录从满电到关机的时间,估算实际续航。
    • 负载瞬变测试:快速操作设备,让ESP8266在休眠和全速Wi-Fi发射之间切换,用示波器观察3.3V电源线上的纹波。正常情况下应小于100mV。如果纹波过大,需要检查DC-DC电路的输入输出电容是否足够,布局是否合理。
  2. Wi-Fi射频性能测试

    • 基础连通性:确保设备能正确扫描并列出周边的Wi-Fi网络。对比手机或电脑的扫描结果,信号强度(RSSI)列表应大致相符。
    • 传输稳定性:这是一个定性测试。在固定位置,让设备持续进行某种网络操作,观察串口日志是否有大量的Wi-Fi断开重连或错误报告。稳定的射频性能是良好PCB布局的结果。
  3. 用户界面与按键测试

    • 反复操作所有按键数百次,确保无粘连、失灵现象。
    • 在不同环境光下观察OLED显示是否清晰。

5.3 安全与合规性再强调

所有测试必须在完全隔离的环境中进行。我个人的做法是:

  • 使用一个独立的、不连接互联网的无线路由器作为测试AP。
  • 测试设备(笔记本、手机)和本项目设备都连接这个测试AP。
  • 整个测试在金属屏蔽盒或远离日常Wi-Fi环境的房间内进行。
  • 在设备外壳上贴上醒目的标签:“实验室设备 - 仅用于授权测试”。

6. 常见问题排查与深度优化指南

即使按照上述步骤精心设计,在实际制作中仍可能遇到问题。以下是我在多次实践中总结的“故障树”和解决方案。

问题现象可能原因排查步骤与解决方案
上电无任何反应1. 电池没电或损坏。
2. 电源开关故障或接线错误。
3. 前后板连接器接触不良。
4. 主电源(3.3V)对地短路。
1. 用万用表测电池电压,应高于3.3V。测TP4056输出。
2. 用万用表通断档检查开关。
3. 检查排针/排母是否虚焊,用镊子轻轻拨动。
4.重点:断开前后板连接,分别测量前板和后板3.3V与GND之间的电阻。如果电阻极低(如几欧姆),说明有短路。用松香烟雾法或热成像仪定位发热点。
OLED不显示或显示乱码1. I²C地址不对。
2. I²C上拉电阻未接或失效。
3. 电源不稳定。
4. 屏幕本身损坏。
1. 使用I²C扫描程序确认OLED的地址(通常是0x3C或0x3D)。
2. 检查SCL和SDA线上是否有4.7kΩ上拉到3.3V。
3. 用示波器查看I²C波形是否干净,电源纹波是否过大。
4. 更换一个已知好的OLED屏幕测试。
按键失灵或连击1. GPIO模式设置错误(应为输入上拉)。
2. 软件去抖动算法不佳或未添加。
3. 按键硬件接触不良。
1. 确认代码中已设置pinMode(pin, INPUT_PULLUP)
2. 在按键中断或扫描函数中增加20-50ms的延时去抖动。
3. 用万用表测按键按下时是否可靠导通。
Wi-Fi扫描不到网络或信号极弱1.天线净空区被破坏(最常见)。
2. ESP8266模块本身射频性能差。
3. 电源噪声干扰射频。
4. 周围有强屏蔽或干扰源。
1.仔细检查PCB,确保天线区域下方和周围各层无铜箔。屏幕金属背板、电池、螺丝等是否离天线太近。
2. 尝试更换一个ESP8266模块。
3. 用示波器检查3.3V电源在ESP8266发射时的纹波,加大去耦电容。
4. 更换测试地点。
设备工作时偶尔自动重启1. 电池供电能力不足(内阻大)。
2. DC-DC电路输出电流不足或响应慢。
3. 软件看门狗(WDT)超时或堆栈溢出。
1. 在ESP8266发射时,用示波器捕捉电池电压是否被瞬间拉低至3.0V以下。
2. 确认DC-DC芯片最大输出电流(需>500mA),检查电感饱和电流是否足够。
3. 在代码中增加看门狗喂狗语句,优化代码逻辑,减少阻塞操作。
TP4056充电时异常发热1. 充电电流设置电阻(Rprog)阻值过小,导致电流过大。
2. 电池已损坏或接近寿命终点。
3. PCB散热设计不良。
1. 检查连接在TP4056第2脚(PROG)的电阻,计算充电电流是否在电池允许范围内(通常0.5C-1C)。
2. 更换一个已知良好的电池测试。
3. 确保TP4056芯片底部的散热焊盘有足够多的过孔连接到大面积铜皮。

深度优化建议:

  1. 功耗优化:在固件中,充分利用ESP8266的深度睡眠模式。在菜单界面无操作一段时间后,让MCU进入Deep Sleep,仅通过按键中断唤醒。这可以将待机电流从几十mA降至20μA以下,极大延长续航。
  2. 增加电池电量指示:通过ESP8266内部的ADC(通常连接在A0引脚),读取一个由电池电压分压(例如,通过两个电阻将4.2V分压到1.0V以内)后的信号,即可在软件中估算电池剩余电量,并在OLED上显示图标。
  3. 设计3D打印外壳:使用Fusion 360或FreeCAD等软件,根据前后板的尺寸和螺丝孔位置,设计一个上下盖结构的外壳。外壳应预留屏幕窗口、按键孔、充电接口和散热孔。这能极大提升设备的完成度和耐用性。
  4. 固件OTA升级:在产品化版本中,可以集成OTA(空中升级)功能。让设备在启动时连接到一个预设的Wi-Fi热点,检查服务器上的新固件并自动更新。这避免了每次更新都要拆机接线的麻烦。

整个项目从构思到最终成品,花费了我大约两周的业余时间。最大的成就感并非来自于设备实现了某个特定功能,而是完整地走通了“概念-原型-设计-制造-测试”这个硬件产品开发闭环。每一个环节的思考、每一次问题的排查,都加深了对嵌入式系统协同工作的理解。如果你也准备开始类似的项目,我的建议是:不要怕麻烦,一定要从面包板开始,把基础功能调通;画PCB时,多花一倍的时间检查布局和规则;焊接和组装时,耐心和细致的操作能避免很多返工。最后,请永远将安全和合规放在首位,让技术探索在正确的地方发光发热。

http://www.gsyq.cn/news/1419310.html

相关文章:

  • 金蝶K3 Wise老用户必看:这个单据导入导出工具,帮你把Excel玩成万能接口
  • AI应用实战:从技术原理到工程落地的核心方法论
  • 告别电机狂转!Arduino连接L298N驱动板最常见的5个接线与供电问题排查
  • 别再让Ubuntu偷偷升级内核了!手把手教你用apt-mark hold锁定20.04特定版本
  • 别只复制粘贴!Allegro 17.4中Copy、Z-copy与Sub-drawing的精准应用场景拆解
  • 加密市场周期分析:构建风险管理仪表盘与逆向投资策略
  • SpeakFaster:基于大语言模型的AAC缩写扩展系统,为运动障碍者提升60%输入效率
  • AI偏见如何被编码:从数据收集到算法设计的全链路审视与应对
  • 告别Putty!Tabby终端保姆级安装与SSH/SFTP配置全攻略(Windows版)
  • 新手避坑指南:在Ubuntu 20.04 ROS Noetic下用Rviz和Gazebo调试激光雷达数据
  • Ubuntu 22.04重启后网卡‘消失’?别慌,5分钟搞定ens33和netplan配置
  • STM32物联网项目避坑指南:MQTT心跳包、串口资源与OneNET连接稳定性优化
  • 给数学恐惧症的程序员:用Python可视化柯西中值定理,理解参数方程与函数的关系
  • 基于Makey Makey与3D打印的脑瘫患者辅助开关设计与制作
  • FreeRTOS任务通知的“隐藏玩法”:一个API模拟信号量、事件组甚至队列?
  • 别再死记硬背公式了!用Python+NumPy手把手实现状态空间方程的零阶保持法离散化
  • 从RS到T触发器:一张图搞定所有触发器互转原理(附74系列芯片实战接线)
  • 告别Keil MDK:用VSCode+Makefile+GCC编译烧录N32G430的Bootloader与App(含IAP升级准备)
  • 用Python和cryptography库模拟不经意传输(OT):一个隐私计算小实验
  • 2026年5月保定烽达模具机械厂:专注混凝土预制模具加工制造厂家 - 海棠依旧大
  • 用Haskell依赖类型为TensorFlow占位符提供编译时安全保障
  • 别再为BIM模型导入GIS发愁了!手把手教你用SuperMap插件搞定Revit/RVT文件
  • 2026年化粪池模具、检查井模具、流水槽模具、风电基础模板、水泥围墙模具厂家综合评测:用料、工艺、耐用度多维度行业分析 - 海棠依旧大
  • Spring Boot 3实战:5分钟用@HttpExchange搞定声明式HTTP客户端,告别OpenFeign
  • 第12篇|记忆点点击:从 Marker 聚焦到照片详情面板
  • 从‘module ‘torch‘ has no attribute‘ 到成功运行GCN:一次完整的PyG环境排错实录
  • Unity游戏开发:如何给Luban导表插件加上懒加载,告别启动卡顿(附完整模板修改教程)
  • Python函数:位置参数与关键字参数的使用
  • 工业视觉实战:用Halcon measure_pairs精准测量零件卡槽宽度(避坑IntraDistance与InterDistance)
  • 保姆级教程:用USB Burning Tool给UNT413A盒子刷S905L3A纯净固件(附固件下载)