在物聯(lián)網(wǎng) (IoT) 方面,云在允許開發(fā)人員在邊緣設(shè)備和遠程數(shù)字服務(wù)之間分配計算方面發(fā)揮著重要作用。這種架構(gòu)為多種解決方案開辟了潛力,在這些解決方案中,設(shè)備和云服務(wù)使用高效的協(xié)議在當(dāng)今的高速通信通道上協(xié)同工作。當(dāng)然,支持所有這些需要從物理層到應(yīng)用層的強大雙向通信。
在本博客中,我們將簡要回顧有助于促進 IoT 通信的常見傳輸和應(yīng)用層協(xié)議,然后了解如何讓 IoT 邊緣設(shè)備與 Microsoft Azure 和 AWS IoT 通信。
物聯(lián)網(wǎng)連接協(xié)議
無論邊緣到云的物聯(lián)網(wǎng)通信多么復(fù)雜,這一切都歸結(jié)為設(shè)備和遠程服務(wù)之間通過互聯(lián)網(wǎng)進行的雙向數(shù)據(jù)通信。
從傳輸層開始,設(shè)備到云的通信通常通過TCP(傳輸控制協(xié)議)或UDP(用戶數(shù)據(jù)報協(xié)議)通道進行。TCP是面向連接的可靠,這意味著發(fā)送的每個數(shù)據(jù)包都需要確認已收到。但是,隨著可靠性的提高,開銷也隨之而來,有時對于物聯(lián)網(wǎng)應(yīng)用程序,TCP 標頭可能大于有效負載本身。另一方面,UDP 是無連接且不可靠的,這意味著為了速度,它允許丟失數(shù)據(jù)包。TCP用于數(shù)據(jù)必須通過的地方,而UDP用于某些數(shù)據(jù)丟失可以接受的地方(例如,在流式傳輸視頻時)。
在應(yīng)用層,HTTP(超文本傳輸協(xié)議)已成為基于Web的通信中最標準化的協(xié)議之一。它是作為客戶端-服務(wù)器時代的請求-響應(yīng)模型開發(fā)的,其中客戶端(例如瀏覽器)打開TCP連接以向返回響應(yīng)的服務(wù)器(例如Web服務(wù)器)發(fā)送請求。TLS 通常用于保護通過 TCP 的 HTTP 通信,而 DTLS 通過 UDP 執(zhí)行類似的功能。IoT 設(shè)備可以使用此設(shè)置與使用 RESTful/SOAP Web 服務(wù)的 Web 服務(wù)器進行通信。
例如,設(shè)備可以使用 HTTP GET/POST 方法通過 TCP/IP 連接與服務(wù)器通信,并提供以 XML、JSON 或其他格式格式化的有效負載。每個步驟(TCP/IP、HTTP、XML/JSON)都會不斷增加有效負載的開銷,這是最終應(yīng)用程序正在尋找的唯一相關(guān)信息。
因此,另一個應(yīng)用層協(xié)議MQTT(消息隊列遙測傳輸)在物聯(lián)網(wǎng)中變得流行起來。它是一種輕量級協(xié)議,代碼占用空間小,適用于嵌入式物聯(lián)網(wǎng)設(shè)備等受限環(huán)境。最值得注意的是,它采用發(fā)布-訂閱模型,通過中央 MQTT“代理”促進設(shè)備之間的一對多通信——這正是物聯(lián)網(wǎng)通常需要的通信類型!
了解了這些底層協(xié)議后,現(xiàn)在讓我們看看邊緣到云通信的工作原理。在本博客中,我們將以高通MDM9206 LTE調(diào)制解調(diào)器和高通??驍龍?移動平臺為例,因為它們說明了制造商如何從硬件級別到API通信堆棧的支持可以促進物聯(lián)網(wǎng)到云的開發(fā)。
將 MDM9206 LTE 調(diào)制解調(diào)器物聯(lián)網(wǎng)設(shè)備連接到 Azure
MDM9206 是一種相當(dāng)專業(yè)的設(shè)備,通常與另一個處理器結(jié)合使用,用作調(diào)制解調(diào)器。
為了方便通信,您可以使用支持TLS,DTLS,MQTT和HTTP的高通? LTE IoT SDK,并提供用于連接到Azure IoT Hub的“填充層”[2]。
此填充層包括 Azure 輸入/輸出 (I/O) 和平臺填充層庫,作為用戶空間中 ThreadX 平臺上 Azure 應(yīng)用程序開發(fā)的包的一部分。Azure 應(yīng)用程序使用 Microsoft Azure SDK 定義的 API 與 Azure IoT SDK C 模塊進行交互。Azure IoT SDK C 模塊使用適配器層與 ThreadX IoT 堆棧進行交互。下圖顯示了 ThreadX IoT 設(shè)備上的 Azure 應(yīng)用程序體系結(jié)構(gòu):
ThreadX 設(shè)備上 Azure 應(yīng)用程序的體系結(jié)構(gòu)。圖片由高通技術(shù)公司提供
此填充層還包括許多腳本,這些腳本設(shè)置生成環(huán)境以為設(shè)備構(gòu)建應(yīng)用程序。
將具有 MDM9206LTE 調(diào)制解調(diào)器的物聯(lián)網(wǎng)設(shè)備連接到 AWS IoT
該開發(fā)工具包還可用于使用 MQTT 消息與 AWS IoT 進行通信。GitHub上有一個演示和項目,提供了一些很棒的資源:IoT Goods Cart和merchant-cart-aws-iot項目。
將設(shè)備連接到 AWS IoT 所涉及的關(guān)鍵步驟包括:
創(chuàng)建 EC2 實例并啟用正確的端口
將應(yīng)用程序添加到 EC2 實例
從 AWS IoT 獲取應(yīng)用程序的證書和私有密鑰
構(gòu)建設(shè)備端應(yīng)用程序,并將其與證書和私鑰以及任何其他支持文件一起傳輸?shù)皆O(shè)備
使用設(shè)備設(shè)置傳感器映射以跟蹤產(chǎn)品庫存水平
啟動瀏覽器并導(dǎo)航到您的 AWS IoT 應(yīng)用程序
在設(shè)備上運行應(yīng)用程序
如果您有興趣了解更多信息,請查看項目的示例應(yīng)用程序模塊,了解如何通過 MQTT 將庫存水平發(fā)布到 EC2。您還可以通過查看aws_iot_mqtt*.c 文件來了解 MQTT 通信的工作原理。
將運行在驍龍平臺上的基于 Linux 的物聯(lián)網(wǎng)設(shè)備連接到 AWS IoT
驍龍移動平臺為物聯(lián)網(wǎng)解決方案提供了更廣泛的功能。它們還使開發(fā)人員能夠集成以各種編程語言編寫的更高級別的 SDK 和庫。
基于 Snapdragon 的設(shè)備與使用 MQTT 的 AWS IoT 之間的通信可以通過其中一個 AWS IoT 開發(fā)工具包(例如 AWS IoT Device SDK for Python)[4] 來完成。
連接到 AWS IoT 所涉及的關(guān)鍵步驟包括:
1. 在 AWS 中創(chuàng)建項目
創(chuàng)建一個“事物”
將“事物”連接到設(shè)備
選擇編程語言
生成證書和策略并將其添加到項目中
2. 在客戶端/設(shè)備上安裝 AWS IoT 所需的開發(fā)工具包
3. 使用以下實現(xiàn)創(chuàng)建設(shè)備端應(yīng)用程序:
將 AWS 模塊添加到客戶端代碼
在傳遞私鑰和證書的代碼中實例化客戶端
啟動連接
訂閱主題并指定回調(diào)以接收回饋信息
根據(jù)應(yīng)用的要求發(fā)布消息
結(jié)論
通過標準 OSI 模型協(xié)議工作的設(shè)備到云通信為云服務(wù)提供了骨干。物聯(lián)網(wǎng)設(shè)備到云的連接可以在專用硬件(如MDM9206 LTE調(diào)制解調(diào)器)和更通用的設(shè)備(如驍龍移動平臺)上實現(xiàn)。
更一般地說,這種設(shè)備到云的架構(gòu)為在物聯(lián)網(wǎng)設(shè)備和/或云上進行處理提供了一組豐富的選項。但是,歸根結(jié)底,這完全取決于您如何通過互聯(lián)網(wǎng)在設(shè)備和遠程服務(wù)之間實現(xiàn)雙向數(shù)據(jù)通信。
審核編輯:郭婷
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2900文章
44067瀏覽量
370261 -
調(diào)制解調(diào)器
+關(guān)注
關(guān)注
3文章
847瀏覽量
38745
發(fā)布評論請先 登錄
相關(guān)推薦
評論