ESP IoT Solution USB Dongle 完整命令手册:基于 FreeRTOS-Plus-CLI 的 9 大控制指令实战解析

ESP IoT Solution USB Dongle 完整命令手册:基于 FreeRTOS-Plus-CLI 的 9 大控制指令实战解析 物联网嵌入式驱动开发硬件开发【免费下载链接】esp-iot-solutionEspressif IoT Library. IoT Device Drivers, Documentations and Solutions.项目地址https://gitcode.com/GitHub_Trending/es/esp-iot-solution点击查看免费下载本文基于乐鑫 esp-iot-solution 仓库中的 USB Dongle 示例examples/usb/device/usb_dongle系统讲解其全部 9 条 CLI 控制命令help/ap/sta/mode/smartconfig/scan/ram/restart/version的功能、格式、响应与注意事项并结合main/CLI_Commands.c、main/cmd_wifi.c等源码剖析每条命令的底层实现原理。读者读完后将能够通过 USB-CDCACM串口或 UART 完整地配置 ESP32-S 系列 USB Dongle 的 Wi-Fi 连接、网络扫描与系统管理。一、命令体系概述USB Dongle 的远程控制台USB Dongle 示例examples/usb/device/usb_dongle/将 ESP32-S2/S3/P4 芯片打造成一个 USB 外设主机PC通过 USB 即可获得无线网卡ECM/RNDIS、蓝牙设备BTH、串口CDC/UART与 DFU 升级能力。而这些能力的遥控器就是一套基于FreeRTOS-Plus-CLI实现的命令行接口CLI——命令文档见 Commands_EN.md中文版见 Commands.md。命令入口命令通过 USB-CDC/dev/ttyACM*等 ACM 端口或 UART 输入命令框架使用 FreeRTOS-Plus-CLI 组件位于 components/FreeRTOS-Plus-CLI以命令字符串 参数的形式注册和执行输出回传命令执行结果通过 data_back.c 中的esp_data_back()写回 USB-CDC 或 UART形成交互式命令行使用前提Wi-Fi 相关命令ap、sta、mode、smartconfig、scan仅在启用 USB 网络类NCM/ECM/RNDIS时可用其余系统命令ram、restart、version始终可用。交互约定与设备通信时每条命令末尾必须添加换行符LF\n设备才会把该行当作一条完整命令处理。二、命令注册与解析的底层机制在逐条讲解命令之前先看命令体系是如何搭建的这有助于理解每条命令的形态与限制。2.1 命令注册vRegisterCLICommands所有命令在 CLI_Commands.c 中定义并在vRegisterCLICommands()中统一注册在 usb_dongle_main.c 的app_main末尾调用。每条命令是一个CLI_Command_Definition_t结构体包含命令字符串、帮助文本、处理函数与期望参数个数static const CLI_Command_Definition_t xStationCommand { sta, /* 命令字符串 */ sta -s ssid [-p password]: join specified soft-AP\r\nsta -d: disconnect specified soft-AP\r\n, prvStationCommand, /* 处理函数 */ -1 /* 参数个数-1 表示接受任意数量的参数 */ };关键注册逻辑#if CFG_TUD_NCM || CFG_TUD_ECM_RNDIS条件编译说明Wi-Fi 命令只有在启用了 USB 网络类NCM/ECM/RNDIS时才会被注册这与 README 中Wi-Fi 命令仅当 USB Network Class 启用时可用的说明一致。同时smartconfig命令在 ESP32-P4 目标上不注册#if !CONFIG_IDF_TARGET_ESP32P4。2.2 命令解析Command_Parse命令字符串的解析在 Command_Parse.c 的Command_Parse()中完成。该函数以\n作为命令结束标志逐字符缓冲输入支持退格\b编辑、忽略\r遇到\n后将完整字符串交给FreeRTOS_CLIProcessCommand()执行并把输出结果通过esp_data_back()回传最后打印提示符。输入缓冲区上限为cmdMAX_INPUT_SIZE80 字节输出缓冲区上限为cmdMAX_OUTPUT_SIZE1024 字节。当使用 USB-CDC 时数据由tinyusb_cdc_rx_callback()见 usb_dongle_main.c读取并交给Command_Parse()使用 UART 时则由initialise_uart()完成同样的桥接。数据回传统一走 data_back.c 的esp_data_back()启用 UART 时调用uart_write_bytes()启用 CDC 时调用tinyusb_cdcacm_write_queue()并可配合 flush 立即发送。三、全部命令详解1. help列出所有注册命令功能列出当前固件中已注册的全部命令及其用法。命令help响应help: Lists all the registered commands ap ssid [password]: configure ssid and password sta -s ssid [-p password]: join specified soft-AP sta -d: disconnect specified soft-AP mode mode: sta station mode; ap ap mode smartconfig [op]: op:1, start smartconfig; op:0, stop smartconfig scan [ssid]: ssid SSID of AP want to be scanned ram: Get the current size of free heap memory and minimum size of free heap memory restart: Software reset of the chip version: Get version of chip and SDK 从源码看help输出内容正是各CLI_Command_Definition_t结构体中pcHelpString字段的汇总因此实际输出随编译配置动态变化——例如未启用网络类时不会出现ap/sta等条目ESP32-P4 上不会出现smartconfig。2. ap配置 / 查询 softAP功能设置 ESP 设备的 softAP 模式SSID 与密码或查询当前 AP 配置。设置命令ap Soft_AP espressif查询命令ap响应AP mode:Soft_AP,espressif 注意事项password 是可选的。若未设置密码ESP softAP 将进入开放模式open mode。源码原理见 cmd_wifi.c 的wifi_cmd_ap_set()与wifi_cmd_query()softAP 默认配置max_connection 4、默认认证模式WIFI_AUTH_WPA_WPA2_PSK设置密码时若密码长度非空且小于 8 位会返回ESP_FAILpassword less than 8这是因为 WPA 协议要求密码最短 8 位密码为空字符串未提供时认证模式自动切换为WIFI_AUTH_OPEN即开放网络查询时通过esp_wifi_get_mode()判断当前模式AP 模式输出AP mode:ssid,passwordSTA 模式输出STA mode:ssid,channel,listen_interval,authmode。3. staStation 模式连接、查询与断开功能设置 Station站点模式并连接指定 softAP查询所连接 AP 的信息或断开连接。连接命令sta -s AP_Test -p espressif查询命令sta响应ssid,channel,listen_interval,authmode 其中authmode取值对应 ESP-IDF 的认证模式枚举authmode_valuemode0WIFI_AUTH_OPEN1WIFI_AUTH_WEP2WIFI_AUTH_WPA_PSK3WIFI_AUTH_WPA2_PSK4WIFI_AUTH_WPA_WPA2_PSK5WIFI_AUTH_WPA2_ENTERPRISE6WIFI_AUTH_WPA3_PSK7WIFI_AUTH_WPA2_WPA3_PSK8WIFI_AUTH_WAPI_PSK注意事项password 是可选的。省略密码时使用空密码尝试连接适用于开放网络。断开命令sta -d响应OK 源码原理命令解析在prvStationCommand()见 CLI_Commands.c中通过FreeRTOS_CLIGetParameter()逐位提取参数——第一个参数为-d时调用wif_cmd_disconnect_wifi()为-s时继续提取 SSID 与-p password并调用wifi_cmd_sta_join()。底层实现要点cmd_wifi.c连接前若已处于连接状态会先将reconnect置false、断开旧连接并等待DISCONNECTED_BIT再设置新配置重新连接STA 配置默认开启 PMFpmf_cfg.capable true适配 WPA3 网络连接过程通过事件组等待CONNECTED_BIT最多等待 5000 ms超时返回连接失败连接成功后会注册pkt_wifi2usb()接收回调把 Wi-Fi 收到的数据包转发给 TinyUSB 网络栈tinyusb_net_send()实现USB 网卡的数据通路。4. mode设置 Wi-Fi 模式功能在 Station 与 AP 模式之间切换。命令设置为 Station 模式mode sta设置为 AP 模式mode ap源码原理prvSetWiFiModeCommand()将参数交给wifi_cmd_set_mode()cmd_wifi.c——匹配sta则调用esp_wifi_set_mode(WIFI_MODE_STA)匹配ap则调用esp_wifi_set_mode(WIFI_MODE_AP)两者都不匹配时返回ESP_FAIL命令输出Invalid parameter。5. smartconfig通过 SmartConfig 配网功能启动/停止 SmartConfig使设备自动获取并连接目标 AP。启动 SmartConfigsmartconfig 1响应SSID:FAST_XLZ,PASSWORD:12345678 OK 停止 SmartConfigsmartconfig 0响应OK 注意事项执行smartconfig 1后若设备成功连接目标 AP则无需再执行smartconfig 0停止 SmartConfig。只有 SmartConfig 失败时才需要调用smartconfig 0来停止。SmartConfig 操作步骤在手机上安装 ESPTOUCH APPAndroid / iOS 均有对应应用将手机连接到目标 AP需为 2.4GHz 频段打开 ESPTOUCH APP输入该 AP 的密码PC 向 USB 端口发送命令smartconfig 1启动 SmartConfig。源码原理cmd_wifi.csmartconfig 1会创建一个 4096 字节栈空间的smartconfig_task任务内调用esp_smartconfig_set_type(SC_TYPE_ESPTOUCH)与esp_smartconfig_start()收到SC_EVENT_GOT_SSID_PSWD事件后事件处理器把 SSID/密码写入wifi_config_t并通过esp_data_back()回传SSID:ssid,PASSWORD:password见 cmd_wifi.c收到SC_EVENT_SEND_ACK_DONE表示配网完成任务输出OK并自动调用esp_smartconfig_stop()结束smartconfig 0对应wifi_cmd_stop_smart_config()手动停止并删除任务若 SmartConfig 任务已存在重复smartconfig 1会返回ESP_FAIL提示不要重复创建任务。6. scan扫描附近 AP功能扫描 AP列出其 SSID 与 RSSI。命令扫描指定 APscan SSID扫描附近所有 APscan响应 [ssid][rssi-22] 源码原理prvScanCommand()取第一个参数作为 SSID 过滤条件调用wifi_cmd_sta_scan()cmd_wifi.c——将 SSID 填入wifi_scan_config_t并执行esp_wifi_scan_start()非阻塞。扫描结果由注册到WIFI_EVENT_SCAN_DONE的scan_done_handler()处理通过esp_wifi_scan_get_ap_records()获取结果列表逐条以[ssid][rssi-xx]格式回传未发现 AP 时输出No AP found最后统一打印提示符。7. ram查看堆内存状态功能获取当前可用堆内存大小以及历史出现过的最小可用堆内存大小。命令ram响应free heap size: 132612, min heap size: 116788 源码原理CLI_Commands.c通过esp_get_free_heap_size()获取当前空闲堆通过heap_caps_get_minimum_free_size(MALLOC_CAP_DEFAULT)获取历史最低空闲值。这一命令对评估设备内存余量、排查内存泄漏非常有价值。8. restart软件复位功能对芯片执行软件复位。命令restart源码原理prvRestartCommand()直接调用esp_restart()立即触发系统重启因此该命令不会返回输出。9. version查看芯片与 SDK 版本功能获取 ESP-IDF 版本与芯片信息。命令version响应IDF Version:v4.4-dev-2571-gb1c3ee71c5 Chip info: cores:1 feature:/802.11bgn/External-Flash:2 MB revision number:0 源码原理CLI_Commands.c调用esp_get_idf_version()、esp_chip_info()与esp_flash_get_physical_size()组合输出。feature字段按芯片能力动态拼接支持 802.11bgn 时显示/802.11bgn支持 BLE/BT 时显示/BLE、/BTFlash 容量根据物理大小换算为 MBEmbedded-Flash或External-Flash。实际输出内容取决于芯片型号与固件版本。四、命令输出的回传链路USB-CDC 与 UART 双通道所有命令的结果并非直接打印到调试串口而是通过 data_back.c 的esp_data_back()统一回传启用 UARTCONFIG_UART_ENABLE时数据通过uart_write_bytes()写到配置的 UART 端口启用 USB-CDCCFG_TUD_CDCACM时数据通过tinyusb_cdcacm_write_queue()写入 ACM 接口flush参数为true时立即刷新发送。UART 通道的参数端口号、波特率、RX/TX 引脚、任务栈大小通过 Kconfig.projbuild 中的Example Configuration菜单配置默认波特率 115200、默认 UART_TXD/RXD 引脚为 4/5具体取值范围随目标芯片不同而变化。由于硬件端点EndPoint数量的限制ECM/RNDIS、BTH、CDC 不能同时全部启用因此当 USB 网络类与 BTH 同时开启时建议关闭 CDC、改用 UART 发送命令。五、命令使用前置条件速查结合 README_EN.md 与源码中的条件编译整理各命令的可用前提命令可用条件说明help始终可用输出随已注册命令动态变化ap/sta/mode/scan启用 USB 网络类NCM/ECM/RNDIS由#if CFG_TUD_NCM \|\| CFG_TUD_ECM_RNDIS控制smartconfig启用网络类且目标非 ESP32-P4P4 上未注册该命令ram/restart/version始终可用系统级命令实际操作时烧录并连接 USB 后主机侧可看到 USB 网卡ifconfig -a、蓝牙设备hciconfig与 ACM 串口ls /dev/ttyACM*通过 ACM 或 UART 发送命令即可完成配网推荐使用sta或smartconfig两种方式详见 README_EN.md每条命令末尾记得追加\n。六、总结USB Dongle 示例以 FreeRTOS-Plus-CLI 为核心搭建了一套轻量、可扩展的命令控制台9 条命令覆盖了 Wi-Fi 配网ap/sta/mode/smartconfig/scan与系统管理ram/restart/version两大场景。通过阅读 CLI_Commands.c 与 cmd_wifi.c 可以清晰地看到每条命令背后都是 ESP-IDF 原生 APIesp_wifi_*、esp_smartconfig_*、esp_chip_info等的封装同时借助事件组EventGroup与事件循环WIFI_EVENT、SC_EVENT实现异步结果回传。开发者完全可以参照CLI_Command_Definition_t的结构在vRegisterCLICommands()中注册自定义命令如task-status等将这一命令框架复用到自己的 USB 外设产品中。赞分享物联网嵌入式驱动开发硬件开发【免费下载链接】esp-iot-solutionEspressif IoT Library. IoT Device Drivers, Documentations and Solutions.项目地址https://gitcode.com/GitHub_Trending/es/esp-iot-solution点击查看免费下载相关推荐ESP32-S USB Dongle 命令行接口完全指南基于 FreeRTOS-Plus-CLI 的 Wi-Fi 配网与系统调试命令详解ESP32 S USB Dongle 命令行接口完全指南基于 FreeRTOS Plus CLI 的 Wi Fi 配网与系统调试命令详解 本文以 esp io物联网嵌入式驱动开发硬件开发ESP-IoT-Solution 舵机Servo组件实战基于 ESP-IDF LEDC 的 PWM 角度控制完整指南ESP IoT Solution 舵机Servo组件实战基于 ESP IDF LEDC 的 PWM 角度控制完整指南 ESP IoT Solution 的物联网嵌入式驱动开发硬件开发ESP-SimpleFOC 开环速度控制实战基于 esp-iot-solution 的 3PWM 电机驱动示例全解析ESP SimpleFOC 开环速度控制实战基于 esp iot solution 的 3PWM 电机驱动示例全解析 本文围绕 esp iot solutio物联网嵌入式驱动开发硬件开发上一篇SearXNG 系统服务配置终极指南使用 systemd 实现开机自启动的完整教程下一篇Open edX部署实战指南从拉取代码到跑通 LMS 与 Studio 的 6 个步骤创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考