我們越來越依賴可穿戴和互聯技術,但在沒有人機界面的情況下,應如何配置設備?
一個例子是我們現在用于視頻會議的無線耳機。設備的初始設置具有挑戰性,為了實現設備與手機或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接口:
· USBclass 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%。
審核編輯:劉清
-
物聯網
+關注
關注
2904文章
44304瀏覽量
371447 -
人機界面
+關注
關注
5文章
524瀏覽量
44103 -
嵌入式控制器
+關注
關注
0文章
65瀏覽量
15172 -
調試器
+關注
關注
1文章
300瀏覽量
23694 -
J-Link
+關注
關注
0文章
83瀏覽量
22119
原文標題:如何使用emWeb實現與無頭設備的互動?
文章出處:【微信號:麥克泰技術,微信公眾號:麥克泰技術】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論