ESP-Dongle 简介
ESP-Dongle 是一款基于 ESP32-S3 芯片开发的多功能 USB Device 解决方案。它不仅外形小巧,功能齐全,更集成了无线 U 盘、SD 卡读取以及 USB 无线网卡等多项功能;同时,通过便捷的滑动开关,ESP-Dongle 可以灵活地切换不同的工作模式以适应多样化的应用需求。
视频展示
功能演示
ESP-Dongle 支持标准 U 盘和读卡器功能。用户只需将一个 SD 卡插入卡槽,并通过 ESP-Dongle 上的 USB Type-C 接口连接到手机,即可实现手机文件向 SD 卡的传输,或在手机端快速读取 SD 卡上的所有文件,同时支持将 SD 卡里的文件直接保存到手机上。
ESP-Dongle 也可以作为无线 U 盘使用。用户可以使用充电宝为 ESP-Dongle 供电,并通过滑动开关切换到无线 U 盘模式。在此工作模式下,ESP-Dongle 将开启一个名为 “ESP-Wireless-Disk” 的 Wi-Fi 热点,并基于此热点创建了一个 HTTP File Server 以支持在局域网内实现文件的上传和下载功能。此时,ESP-Dongle 允许使用多部手机或电脑连接至 “ESP-Wireless-Disk” 的 Wi-Fi 热点上,用户可直接在浏览器端访问 HTTP File Server(局域网 IP 地址是 :192.168.4.1),然后将文件上传到 HTTP File Server 中。
此功能可以适应在户外场景下与多设备通过局域网内的 Wi-Fi 共享文件的应用需求,同时对大文件的共享提供了更稳定、更高效的数据传输。
此外,借助ESP-Dongle,用户还可以将传统打印机升级为无线打印机。只需要将 ESP-Dongle 插入打印机,用手机或笔记本电脑连接 ESP-Dongle 的 Wi-Fi 热点,在 HTTP File Server 操作界面下,将手机或电脑上的文件上传到 HTTP File Server 中,打印机就可以直接读取文件进行打印。
ESP-Dongle 也可以作为一个 Wi-Fi 或 BLE 适配器,为 USB 主机设备提供无线上网或 BLE 传输的功能。
用户只需在 ESP-Dongle 的固件中 (即 bin 文件) 设置外部路由器的 SSID 和 Password ,当 ESP-Dongle 插上 USB 主机设备时即可自动连接到 WiFi 网络上。此功能可为台式电脑提供无线上网功能,并且支持 USB 热插拔,以快速检测 ESP-Dongle 的连接和移除。
电源选项
- ESP-Dongle 通过 USB Type-C 接口进行供电,以支持适配多种设备的接入。
ESP-Dongle 硬件设计
ESP-Dongle 完整硬件开源资料可在 【嘉立创-乐鑫小铁匠】ESP-Dongle 获取,ESP 硬件设计指南请参考 “ESP 硬件设计指南”.
ESP-Dongle 的硬件系统由以下部分组成:
- 主控 MCU:ESP32-S3-MINI-1-N8。
- USB Type-C 接口:通过 USB 连接器的差分信号线 D- 和 D+ 直接连接到 ESP32-S3 的 USB 接口,同时 D-、D+ 和 VUSB 引脚通过 ESD 保护器件进行静电保护,以防止静电放电对电路造成损害。需要注意,CC 引脚需要接 5.1K 电阻进行下拉,否则 USB-dongle 将无法被主机识别。
- LDO(稳压电路):HE9073A33M5R 是一颗低压差稳压器 (LDO) 芯片,具有宽压输入的特性,支持的输入电压范围为 3.3V~7V, 然后将输入电压稳定在 3.3V 输出,为 ESP-Dongle 产品提供稳定的供电环境。
- MicroSD Card(Micro SD 卡槽): SD 卡接口支持 1 线、4 线 SDIO 模式及 SPI 模式。此外,为确保信号稳定性,每个引脚都需要通过 10kΩ 电阻进行上拉,并使用 ESD 保护器件以防止静电放电的损害。
- Button(轻触按键):使用一个简单的按钮电路,用于切换 ESP-Dongle 作为 Wi-Fi 或 BLE 适配器的工作模式。
- LED(指示灯):使用 2 个 LED 灯用于观察 ESP-Dongle 的配网状态。
- Switch(滑动开关):滑动开关的两个端点分别上拉和下拉,通过 ESP32-S3 的 GPIO4 读取开关的电平状态来切换 ESP-Dongle 的无线 U 盘和无线网卡的工作模式。
软件实现
基于 ESP-Dongle 的硬件系统构成,需要配套的软件开发以激活产品丰富的功能。 ESP-Dongle 的软件设计以深度集成的 ESP-IDF SDK 库为基础,并借助简洁高效的单任务组件为核心,将多个独立应用程序功能的代码进行融合,最终全面实现了 ESP-Dongle 产品多功能展示,为用户带来了高效且可靠的软件开发体验。
在软件实现上,ESP-Dongle 使用了 ESP32-S3 的 WiFi 特性、USB 特性、SDIO 接口以及几个通用 GPIO。
1. 普通 U 盘 & 读卡器功能
基于 ESP32-S3 的普通 U 盘应用例程可以参考 esp-idf/examples/peripherals/usb/device/tusb_msc 例程。
【技术解析】
- 使用 ESP32-S3 的 USB 特性,将 ESP-Dongle 作为 USB Device 存储设备。更多软件编程指南参见 : USB 设备栈。
- 使用 ESP32-S3 的 SDIO 接口提供 Miscro SD 卡槽,以支持读写 SD 卡。用户可以参考 esp-idf/examples/storage/sd_card 例程 ,支持使用 4-bit 或 1-bit SD 卡的读写,同时也提供了基于 SPI 接口连接 SD 卡的应用例程。更多软件编程指南参见:SD/SDIO/MMC 驱动程序。
2. 无线 U 盘功能
对于 ESP-Dongle 的无线 U 盘的功能实现,可以直接移植 esp-iot-solution/examples/usb/device/usb_msc_wireless_disk 例程,此例程已经将 Wi-Fi AP、HTTP File Server 、SD 卡读写和 USB Device 存储功能集成到同一个项目中。
【技术解析】
- Wi-Fi 热点:ESP-Dongle 在 无线 U 盘模式下使用了 ESP32-S3 的 Wi-Fi 特性,通过启用 WiFi AP 模式来创建无线热点的功能,以供多个外部设备通过 Wi-Fi 接入 ESP-Dongle。基于 ESP32-S3 启用 Wi-Fi AP 模式创建无线热点的应用例程可参考:esp-idf/examples/wifi/getting_started/softAP,更多软件编程指南参见:Wi-Fi 驱动程序。
- HTTP File Server: 基于 WiFi AP 模式下,使用 HTTP 上层协议创建 HTTP File Server 来实现局域网内的文件上传和下载功能。HTTP File Server 应用例程可参考 esp-idf/examples/protocols/http_server/file_serving;更多软件编程指南参见:HTTP 服务器。
3. 无线网卡功能
对于 USB 无线网卡应用,可以直接参考 esp-iot-solution/examples/usb/device/usb_dongle 例程。在软件上使用 tinyusb_dongle 组件以支持 USB Host 通过 USB-ECM/RNDIS 实现无线上网功能, 同时支持热插拔. 用户可参考 USB Device Stack 编程指南。
【技术解析】
- Wi-Fi 连接:ESP-Dongle 在 无线网卡模式下是将 ESP32-S3 作为 Wi-Fi Station 模式,以连接无线 Wi-Fi 热点,从而为 USB 主机设备提供上网能力。基于 ESP32-S3 启用 WiFi Station 模式连接 Wi-Fi 热点的应用例程可参考:esp-idf/examples/wifi/getting_started/Station,更多软件编程指南参见:Wi-Fi 驱动程序。
- USB 热插拔:热插拔功能允许用户在主机运行的情况下,随时插入或拔出 USB 设备(从机),而 USB 主机设备能够自动检测到 USB 从机设备的连接或移除,并做出相应的响应。
- LED 指示灯:使用普通 GPIO 驱动 两个 LED 指示灯,通过不同类型的闪烁来指示 ESP-Dongle 网络连接状态。对于 LED 指示灯应用,可以使用乐鑫提供的 espressif/led_indicator 组件,快速定义多组不同的 LED 闪烁类型。更多说明请阅读 LED 指示灯编程指南。
- ESP-Dongle 使用轻触按键来切换 Wi-Fi 网卡和 BLE 调试器的工作模式,软件可使用 espressif/button 组件实现按键事件的注册。
总结
ESP-Dongle 以其卓越的多功能性,为我们的日常生活带来了极大的便利,在提升我们工作效率的同时,也丰富了我们的数字生活体验。无论是在家中、办公室还是旅途中,ESP-Dongle 都能成为我们可靠的数字伙伴。