在物聯網 (IoT) 應用中,用戶將能夠即時訪問有關健康、環境和機器的詳細信息。但是,對于開發人員而言,物聯網提出了眾多要求,涉及到多個專業,包括無線傳感器設計、安全通信和基于云的軟件開發。
隨著需求的快速變化和新機會的不斷出現,開發人員面臨的挑戰更加嚴峻,用于將概念轉化為實際物聯網應用的時間越來越短。
本文將討論物聯網應用的設計。本文還將闡述 Renesas 物聯網沙箱和 Renesas Synergy S3A7 物聯網快速原型開發套件組成的全面的平臺如何幫助設計人員避免漫長的物聯網開發過程。
物聯網應用要求
物聯網應用向設計人員提出了極其多樣化的苛刻要求。與傳統的嵌入式設計或后端軟件系統不同,物聯網應用需要涵蓋各個系統和服務的復雜層級結構的專業知識(圖 1)。
圖 1: 物聯網應用是基于復雜層級架構來構建的,這種架構是將從多個可信來源獲取的數據轉化為有意義信息所必需的。然后,這些信息可以直接提供給用戶,或者在企業中進一步使用。(圖片來源: Microsoft Corp。)
在外圍,開發人員需要從眾多傳感器節點收集數據,實現高度精確的傳感器數據采集,這些節點可能包括利用合適的客戶端軟件升級的現有設備、僅依賴電池電源長期工作的定制設備。很多情況下,系統架構師使用中間網關到達終端節點,該網關設計用于聚合數據,特別是來自物聯網設備的數據,采用了短程無線技術。
物聯網節點和網關使用標準通信協議,需要安全、快速、可靠地將數據有效負載傳輸到應用。如圖 1 所示,物聯網開發人員需要協調大量基于云的服務以處理基本任務,例如調配新設備和服務、驗證授權設備的身份、維護數據流、存儲數據等。最后,用于數據分析和機器學習的特定應用服務幫助軟件工程師將原始數據轉換為對最終用戶有意義的信息。
快速物聯網開發
雖然物聯網開發人員可以快速找到實施復雜分層物聯網架構的各個部件,但對于新開發人員而言,要將物聯網的所有這些部件集成在一起,仍然是一項令人生畏的任務,即便對于經驗豐富的工程師,也要消耗大量時間。Renesas 物聯網沙箱的設計目的是簡化物聯網開發,它提供了一整套軟件組件,這些組件是將數據從終端節點移動至云、再將信息提供給最終用戶所必需的。
物聯網沙箱可與 Renesas Synergy S3A7 物聯網快速原型開發套件配合使用,它提供了完整的端到端開發平臺,讓開發人員能夠快速部署物聯網原型,而只需少量開發工作。開發人員可使用一系列菜單來配置沙箱,通過基于云的處理服務來傳輸傳感器數據,這些服務能夠快速響應事件,與其他云服務交互,提供詳細分析,并且支持用戶的移動設備(圖 2)。
圖 2: Renesas 物聯網快速原型開發套件和物聯網沙箱配合使用,提供完整的開發平臺,用于物聯網應用的快速原型開發。(圖片來源: Medium One)
Renesas Synergy S3A7 物聯網快速原型開發套件是一種高性能的實時平臺,基于 Renesas R7FS3A77C MCU,用于設計和評估物聯網無線傳感器節點設計。S3A7 MCU 板包括 32 MB 閃存、2.4 GHz Wi-Fi 模塊 (802.11a/b/g/n)、LCD 顯示屏、LED 以及用于簡單交互的用戶按鈕。S3A7 內核處理單元基于 32 位 ARM Cortex-M4 內核。MCU 集成了片上閃存、192 KB SRAM、14 位模數轉換器 (ADC)、12 位數模轉換器 (DAC),還提供多個連接選項和多種安全功能,包括片上加密。
S3A7 MCU 板提供 4 個 Pmod 連接器和 4 個 Grove 連接器(圖 3),讓開發人員能夠在添加擴展板時輕松進行配置。此外,這個物聯網快速原型開發套件附帶兩個 Pmod 傳感器模塊,一個是 6 軸運動傳感器模塊,另一個是環境模塊,包括光照、濕度/溫度、空氣質量、顏色/接近傳感器。除了 S3A7 MCU 板和 Pmod 傳感器之外,這個物聯網快速原型開發套件還包括了功能全面的軟件應用程序,旨在演示使用物聯網沙箱的整個物聯網流程。
圖 3: 除了 32 位 MCU、32 MB 閃存、Wi-Fi 和 LCD 之外,S3A7 MCU 板還包括 4 個 Pmod 連接器(底部的一行黑色連接器)和 4 個 Grove 連接器(Pmod 連接器上方的白色連接器)。(圖片來源: Renesas)
物聯網沙箱
Renesas 物聯網沙箱使用簡單的 Web 連接協議,提供必不可少的服務,包括安全、數據處理、分析、實時傳感器的圖形化顯示。同時,開發人員可以基于樣例應用程序進行開發,以便通過一系列菜單快速配置這些服務,而只需很少的編程工作。
開始使用物聯網沙箱時,開發人員通過物聯網沙箱的 Web 界面,手動創建 API 密鑰和授權用戶。API 密鑰和 API 基本用戶身份用于為沙箱的后續事務處理進行授權。
在開發新物聯網應用的過程中,最初的事務之一可能包括將樣本數據包發送至云。這個簡單操作既可展示連接協議,又為物聯網沙箱中的后續數據處理奠定基礎。
物聯網器件(例如 S3A7 MCU 板)使用 JSON 格式將事件數據發送至物聯網沙箱。每個事件的數據有效負載包括事件發生時間的鍵值對 (observed_at),以及數據集本身的鍵值對 (event_data),此外還可能有多個鍵值對。例如,在特定時間發現的某個事件具有兩個關聯值,它們將使用 JSON 格式進行傳輸,如下所示:
{"observed_at":"2017-01-01T12:00:00.0-0600", "event_data": {"force_strength":67, "level":"apprentice"}}
對于數據流式傳輸和其他交互,物聯網沙箱支持兩個簡單的連接協議。設備使用 MQTT(消息隊列遙測傳輸)或 REST 操作,與物聯網沙箱進行通信?;?TCP/IP 開發的 MQTT 是一種 ISO 標準輕量級協議,用于定序的無損消息傳輸。MQTT 基于靈活的發布/訂閱模式開發,可以使用很簡短的代碼實施。因此,對于存儲器空間或帶寬有限的物聯網設備而言,MQTT 尤其具有吸引力,但它需要可靠的數據通信。
MQTT 需要中間的消息代理,用于協調它的發布/訂閱模式。作為其服務的一部分,物聯網沙箱提供了代理,另外提供 Python 庫,設備使用該庫將數據發送至云。與其他沙箱 API 調用相同,MQTT 庫將數據發布抽象為基本調用。例如,通過沙箱 MQTT 代理,將以上所示的數據有效負載發布至某些特定設備非常簡單:
MQTT.publish_event_to_client(device, payload)
另外,開發人員可以使用受支持的 REST API,以任何語言為交互編程。在這一方面,程序員使用他們熟悉的 Web 協議,例如 GET、PUT 和 POST,將數據傳輸到沙箱(代碼列表 1),或者從沙箱接收數據(代碼列表 2)。正如這些代碼列表所示,每個會話都從一個使用 API 密鑰、API 用戶 ID 和密碼的登錄事務開始。后續的寫入或讀取使用基本的 http POST 方法來發送數據有效負載,或使用 GET 方法來接收數據有效負載,數據為 JSON 格式。
import requests
import json
headers = {'Content-Type': 'application/json', 'Accept': 'application/json'}
data = {'login_id': 'john.doe@renesas.com', 'password': '12345', 'api_key': 'ABCDEFGHIJKLmnopabcdefghijklmnop1234567890'}
session = requests.session()
response = session.post('https://api-renesas-na-sandbox.mediumone.comv2/login', data=json.dumps(data), headers=headers)
url = 'https://api-renesas-na-sandbox.mediumone.com/v2/events/raw/john.doe@renesas.com'
data = {'observed_at': '2015-01-10T00:00:00.000-0800', 'event_data': {'sensor1' : 38.6}}
response = session.post(url=url, data=json.dumps(data), headers=headers)
列表 1: Renesas 物聯網沙箱 API 在“Medium One”云上提供專門端點,用于會話登錄,還用于將數據添加到特定用戶的“原始”數據流(使用標準 http POST 方法)。(代碼來源: Renesas/Medium One)
import requests
import json
headers = {'Content-Type': 'application/json', 'Accept': 'application/json'}
data = {'login_id': 'john.doe@renesas.com', 'password': '12345', 'api_key': 'ABCDEFGHIJKLmnopabcdefghijklmnop1234567890'}
# Login
session = requests.session()
response = session.post('https://api-renesas-na-sandbox.mediumone.com/v2/login', data=json.dumps(data), headers=headers)
url = 'https://api-renesas-na-sandbox.mediumone.com/v2/events/raw/john.doe@renesas.com'
headers = {'Accept': 'application/json'}
params = {"since":"2015-01-10T00:00:00.000-0800", "until":"2015-01-17T00:00:00.000-0800", "limit":100, "include":"$.event_data.tagname"}
# GET
response = session.get(url=url, params=params, headers=headers)
列表 2: 開發人員使用大多數編程語言都支持的標準 http 庫(例如此處所示的 Python),執行簡單的 GET 事務,從“原始”數據流拉取具有請求的特征的 JSON 格式數據。(代碼來源: Renesas/Medium One)
云處理
對于原始數據流,物聯網沙箱首先建立處理步驟,稱為“工作流”,它們圍繞名為“標記”的鍵建立,這些標記在數據流內部的數據有效負載中定義。工作流代表了基本的數據處理步驟,例如篩選、轉換或對數據流執行的其他操作。
使用比較傳統的方法,開發人員經常需要識別和維護在代碼中使用的參數與來自外部設備的一組特定數據流之間的綁定。相反,物聯網沙箱則可自動識別標記,并允許開發人員將標記用作工作流的輸入,工作流對與每個標記關聯的數據值執行代碼。例如,如果開發人員發送了數據有效負載,例如上文描述的有效負載,系統將自動識別關聯的數據類型(例如數字或字符串),并且建立數據流,其中包含這些標記的時序數據。開發人員使用物聯網沙箱的 Web 界面,確認或修改沙箱自動生成的架構(圖 4)。
圖 4: 物聯網沙箱自動識別新有效負載內部的數據類型,從而為開發人員提供了創建新物聯網處理流的簡單專用方法。(圖片來源: Renesas/Medium One)
此外,沙箱還為開發人員使用直觀的圖形化方法,用于將標記綁定到代碼參數。在上例中,開發人員使用沙箱提供的基于 Web 的 Workflow Studio,為工作流代碼生成輸入和輸出。在輸入端,開發人員使用 Workflow Studio,將來自從外部設備接收的“原始”數據流的標記值拖放至代碼模塊的特定輸入參數。同樣,他們還將工作流代碼的輸出連接到“已處理”數據流(圖 5)。
圖 5: 使用物聯網沙箱提供的基于 Web 的 Workflow Studio,開發人員能夠通過圖形化方式,將標記(例如 raw.force_strength)拖放至工作流,并連接每個標記作為命名輸入參數(例如 in1),以便在與每個工作流關聯的代碼模塊內部使用。(圖片來源: Renesas/Medium One)
在工作流的代碼模塊中,物聯網沙箱的內置 IONode 模塊提供了幾個簡單的類方法,用于獲取和設置標記值。例如,IONode.get_input('in1') 返回一個 Python 字典(鍵和值的關聯陣列,類似 JSON 有效負載),其中包含值和元數據(屬于從 in1 輸入到代碼模塊的數據的當前實例)。使用這種方法,開發人員能夠將輸出值 (out1) 設置為輸入變量的一些經過處理的組合(代碼列表 3)。
new_strength = IONode.get_input('in1')['event_data']['value'] + 100
new_level = "expert"
output = IONode.set_output('out1', {'new_strength': new_strength, 'new_level': new_level})
列表 3: Renesas 物聯網沙箱提供了多個高級別庫,例如內置的 IONode Python 模塊,它可將工作流 I/O 精簡為簡單方法,以便讀取 (get_input) 和寫入 (set_output) 數據。(代碼來源: Renesas/Medium One)
經過處理的數據流可以進一步連接到一個或多個后續工作流,以實施復雜的信號處理、分析或業務邏輯。例如,開發人員可以使用單獨的工作流來監控數據流。如果發生嚴重事件,來自主工作流的輸出會被定向到第二個工作流,后者使用物聯網沙箱 Python 模塊,向用戶發送 SMS 警報。每次當工作流在原始數據流中查找新事件時,它會自動啟動和執行其代碼包。因此,它能夠接近實時地對數據流進行自動處理。開發人員可在不同工作流之間共享輸出和輸出,以構建包含多個連續和并發處理步驟的復雜處理流。
但是,對于任何物聯網應用,都有一個重要目標:向用戶呈現經過處理的數據流的結果。物聯網沙箱提供了一系列連接到數據流的圖形化小工具,從而簡化了這種開發要求。使用物聯網沙箱的 Web 界面,開發人員能夠將相應小工具放置在儀表板上,以創建易于理解的物聯網結果快照。例如,物聯網沙箱實時儀表小工具可以顯示特定標記的當前值,從而自動更新該值及其最小值/最大值范圍。開發人員可以使用多個儀表來構建儀表板,采用簡潔的格式呈現來自多個數據源的結果(圖 6)。
圖 6: 物聯網沙箱提供了圖形化儀表,用于顯示原始數據流或已處理數據流的當前值和趨勢。(圖片來源: Renesas/Medium One)
Renesas Synergy S3A7 物聯網快速原型開發套件附帶了 Renesas Smart Chef 物聯網演示,利用該套件附帶的全套傳感器,演示端到端物聯網應用。Renesas 還提供其他多個樣例應用程序,用于演示其他使用場景,包括使用低功耗藍牙或 Lora 的連接。開發人員只需通過 MCU 板的 JLink 連接器,將以 srec (S record) 格式提供的鏡像刷入S3A7 MCU 板。開發人員可以使用 Renesas e2 Studio 軟件開發環境,來擴展這些樣例應用程序,或者從頭開始構建新應用程序,使用 J-Link 閃存實用工具加載最終 srec 鏡像。
總結
物聯網應用開發需要依賴于多種不同的技術和方法來進行數據采集和通信,通過云處理從傳感器硬件采集的數據,并將數據發送至用戶的移動設備。因此,開發人員發現他們面臨著兩難處境,既要滿足眾多開發要求,又承受著更快速交付物聯網設計的壓力。
為了幫助加快開發速度,Renesas Synergy S3A7 物聯網快速原型開發工具和 Renesas 物聯網沙箱的組合提供了完整的端到端開發環境。開發人員能夠使用基于 Web 的界面來配置物聯網沙箱,以支持基于云的處理流,且只需很少的額外編程工作。
-
物聯網
+關注
關注
2910文章
44778瀏覽量
374745
發布評論請先 登錄
相關推薦
評論