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