如何使用emWeb实现与无头设备的互动?

浏览:70来源:本站时间:2023-11-03

我们越来越依赖可穿戴和互联技术,但在没有人机界面的情况下,应如何配置设备?

一个例子是我们现在用于视频会议的无线耳机。设备的初始设置具有挑战性,为了实现设备与手机或PC配对,按钮顺序有时看起来是随机的。把USB充电口连接到PC,然后在浏览器里进行配置,不是更简单吗?

另一个例子是打印机管理。通常使用USB电缆连接打印机到PC,通过主机端专用应用程序实现打印机配置,如WiFi或IP地址,纸张类型和打印质量等,同时显示状态信息。

我们在J-Link调试器中也使用相同的技术来管理IP地址等配置。

事实上,几乎所有具有USB充电口的物联网设备都可以从嵌入式Web服务器中受益,以改进和简化人机界面。

在产品中实现这种功能已经有一段时间了,然而传统的方法是在嵌入式控制器中添加web服务器,以及USB和TCP/IP协议栈,这需要相当大的处理能力、能耗,占用更多的代码空间和RAM资源。


如何减少代码和RAM占用,同时实现易用性?

剔除TCP/IP协议栈,利用USB批量连接,基于emUSB-WEB协议栈可以将网页传送到主机端的浏览器。一个简单的主机应用程序(SEGGER示例:https://www.segger.com/downloads/emusb-device/SEGGER_USB_Webserver_Windows.zip)可以轻松地将USB HTTP通信连接到浏览器。一旦连接到交互网页,即可通过主机浏览器显示配置,状态或测量数据等。

嵌入式应用可以充分利用浏览器的所有功能来调整大小,滚动和导航等,以增强用户体验。包括链接到云端资源(如图形和动画),为用户界面添加额外的维度,无需将它们嵌入到有限的代码空间中,并提供远程更新外观的机会。


如何工作?

USB web服务器由PC应用和嵌入式应用程序两部分组成。

PC应用程序负责打开一个socket,浏览器可以连接并通过USB转发浏览器请求到嵌入式应用。

嵌入式应用接收HTTP请求,并使用集成的web服务器处理。响应通过USB发送,由PC应用接收,并转发到默认浏览器。

设备识别

PC应用必须能够识别它与其通信的USB设备。

因此,嵌入式应用程序必须提供具备下列特性的USB接口:

· USB class ID: 0xFF(特定于厂商)

· USB subclass ID: 0x57 (ASCII“W”)

· USB协议ID: 0x45 (ASCII“E”)

· 字符串描述符需包含" http "


浏览器连接是如何工作的?

PC应用和嵌入式应用程序之间通过USB Bulk通信,它必须包含至少一个USB Bulk IN和一个USB Bulk OUT端点。

枚举完成后,嵌入式应用程序开始监听来自PC应用的命令,这些命令包含一个8字节的头,描述数据包。

在读取报头后,嵌入式应用将数据传递给嵌入式web服务器。


协议栈结构

在下面的示例使用了SEGGER中间件, emUSB和emNET,也可以根据需要使用其他组件。

使用TCP/IP协议栈的典型配置如下所示。

注意emNET协议栈通过USB实现IP连接。虽然这是一种可靠的技术解决方案,但其增加的复杂性和所需的资源可能不适合嵌入式应用。

使用USB web浏览器配置,如emUSB-WEB,嵌入式协议栈变得更简单,更小,看起来类似于只需要一个USB协议栈和嵌入式web服务器。


节省代码和内存

如果我们看一下运行在SEGGER emPower评估板(基于Kinetis K66 Arm Cortex-M4 160Mhz MCU)在上的web服务器应用程序,示例下载:https://www.segger.com/downloads/emusb-device/Trial_emPower_emUSBD_USB_Webserver_GUI.zip

注意,项目没有针对缓冲区大小等进行优化,但给出了一个很好的参考。

我们可以看到代码减少了大约32%,RAM减少了大约38%。


了解emUSB-WEBd 的更多信息,可以访问:https://www.segger.com/products/connectivity/emusb-device/add-ons/emusb-web/获取基于emPower评估板的示例项目。用户可以使用Embedded Studio构建项目,并修改提供的HTML文件来定制web页面。还可以使用预构建好的主机应用程序链接,关联USB HTTP通信和默认浏览器。

京ICP备:京ICP备05011254号-1 版权归北京麦克泰软件技术有限公司所有
北京麦克泰软件技术有限公司