電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>與Azure IoT Central的分布式網(wǎng)格集成

與Azure IoT Central的分布式網(wǎng)格集成

2022-12-20 | zip | 1.39 MB | 次下載 | 免費(fèi)

資料介紹

描述

介紹

我們準(zhǔn)備去;

將以下無線節(jié)點(diǎn)連接到 Azure Sphere;

  • 用于監(jiān)控門開/關(guān)狀態(tài)的無線霍爾效應(yīng)傳感器
  • 3 個無線壓力、溫度和濕度傳感器,
  • 無線追蹤器。
  • 以上任何一項(xiàng)也可用于通過 GPIO 或 UART 輸出進(jìn)行控制。

我們將使用 GPIO 控制的 LED 來指示狀態(tài)并說明 Azure IoT Central 控制。

將 Azure Sphere 配置為 Azure IoT Central 和內(nèi)部節(jié)點(diǎn)網(wǎng)絡(luò)之間傳感器和控制數(shù)據(jù)的透明網(wǎng)關(guān)。

配置 IoT Central 儀表板以顯示傳感器數(shù)據(jù)并提供簡單的控制。

?

概述

分布式數(shù)據(jù)系統(tǒng)是任何通信節(jié)點(diǎn)的系統(tǒng),每個節(jié)點(diǎn)維護(hù)數(shù)據(jù)對象作為一個單一的、連貫的數(shù)據(jù)系統(tǒng)可訪問。我們的公司 Koliada 維護(hù)著一個分布式數(shù)據(jù)系統(tǒng) (EtherDATA),該系統(tǒng)旨在透明訪問和管理小型嵌入式設(shè)備上的分布式和復(fù)制數(shù)據(jù)對象。該項(xiàng)目使用 Azure Sphere 和 Azure IoT Central,借助 EtherDATA 有效地監(jiān)視和控制無線傳感器節(jié)點(diǎn)。

該系統(tǒng)由安全的 Azure 云平臺產(chǎn)品 Azure IoT Central、安全的物聯(lián)網(wǎng)網(wǎng)關(guān)設(shè)備 Azure Sphere 和分布式數(shù)據(jù)系統(tǒng) EtherDATA 組成,EtherDATA 將數(shù)據(jù)訪問抽象為一組布置為無線網(wǎng)格的無線傳感器節(jié)點(diǎn)。網(wǎng)格由 EtherMESH 管理,這是一種嵌入式網(wǎng)格協(xié)議,也由 Koliada 維護(hù),用于小型、低功耗、嵌入式設(shè)備。

傳感器和控制數(shù)據(jù)使用 EtherDATA 通過無線網(wǎng)格進(jìn)行分發(fā),包括使用 JSON over UART 連接到 Azure Sphere 的網(wǎng)格網(wǎng)關(guān)設(shè)備。Sphere 在網(wǎng)格和 Azure IoT Central 之間轉(zhuǎn)發(fā)數(shù)據(jù)以進(jìn)行遠(yuǎn)程監(jiān)控。

poYBAGOSfgOAcX0KAAFmWUCBkEw073.png
系統(tǒng)總覽
?

部分總結(jié)

本文檔末尾提供了指向所有組件的詳細(xì)信息的鏈接。

蔚藍(lán)

Azure 微軟的公共云計(jì)算平臺。它提供一系列云服務(wù),包括計(jì)算、分析、存儲和網(wǎng)絡(luò)服務(wù)。用戶可以從這些服務(wù)中挑選,以在公共云中開發(fā)和擴(kuò)展新應(yīng)用程序,或運(yùn)行現(xiàn)有應(yīng)用程序。

本項(xiàng)目專門使用了 Azure IoT 中央服務(wù)。

Azure 物聯(lián)網(wǎng)中心

Azure IoT Central 是一種完全托管的 IoT 軟件即服務(wù)解決方案,可以輕松創(chuàng)建連接物理世界和數(shù)字世界的產(chǎn)品。您可以通過以下方式將互聯(lián)產(chǎn)品愿景變?yōu)楝F(xiàn)實(shí):

? 從連接的設(shè)備中獲得新的見解,為您的客戶提供更好的產(chǎn)品和體驗(yàn)。

? 為企業(yè)創(chuàng)造新的商機(jī)。

pYYBAGOSfgWAe09oAABDejTV3JM075.jpg
Azure IoT Central 概述
?

Azure IoT Central 有四個與 Azure IoT Central 應(yīng)用程序交互的角色:

? 構(gòu)建者負(fù)責(zé)定義連接到應(yīng)用程序的設(shè)備類型并為操作員定制應(yīng)用程序。

? 操作員管理連接到應(yīng)用程序的設(shè)備。

? 管理員負(fù)責(zé)管理任務(wù),例如管理應(yīng)用程序中的用戶和角色。

? 設(shè)備開發(fā)人員創(chuàng)建在連接到您的應(yīng)用程序的設(shè)備上運(yùn)行的代碼。

蔚藍(lán)球體

Azure Sphere 是一個安全的高級應(yīng)用程序平臺,具有用于連接 Internet 的設(shè)備的內(nèi)置通信和安全功能。它包括一個安全、互聯(lián)、交叉的微控制器單元 (MCU)、一個定制的基于 Linux 的高級操作系統(tǒng) (OS),以及一個基于云的安全服務(wù),可提供持續(xù)、可更新的安全性。

Azure Sphere 硬件、軟件和安全服務(wù)為設(shè)備維護(hù)、控制和安全提供了獨(dú)特的集成方法。硬件架構(gòu)為連接的設(shè)備提供了一個從根本上安全的計(jì)算基礎(chǔ),讓您可以專注于您的產(chǎn)品。

該軟件架構(gòu)具有在 Microsoft 編寫的安全監(jiān)視器上運(yùn)行的安全自定義操作系統(tǒng)內(nèi)核,同樣使您能夠?qū)④浖ぷ骷性谠鲋滴锫?lián)網(wǎng)和特定于設(shè)備的功能上。

poYBAGOSfgmAB2yWAADuz4xumoQ925.png
蔚藍(lán)架構(gòu)
?

將 Azure Sphere 用作該項(xiàng)目的一部分的優(yōu)勢在于,它為傳感器和控制器的內(nèi)部網(wǎng)絡(luò)提供了一個高度安全的網(wǎng)關(guān)。使用 Sphere 可以降低內(nèi)部網(wǎng)絡(luò)的復(fù)雜性、成本和功耗,而不會影響整個系統(tǒng)的安全性。

以太數(shù)據(jù)

EtherDATA 是一個數(shù)據(jù)定義、存儲和訪問系統(tǒng),它使用簡單的數(shù)據(jù)定義范例滿足小型分布式節(jié)點(diǎn)之間數(shù)據(jù)復(fù)制和通信的需求。EtherDATA 解決了以下架構(gòu)規(guī)則;

邏輯數(shù)據(jù)獨(dú)立性

EtherDATA 數(shù)據(jù)對象通過數(shù)據(jù)模式進(jìn)行描述和訪問。

物理數(shù)據(jù)獨(dú)立性

EtherDATA 數(shù)據(jù)對象由系統(tǒng)定義的邏輯到物理映射存儲和引用,并作為系統(tǒng)服務(wù)提供給應(yīng)用程序。

網(wǎng)絡(luò)透明度

EtherDATA 可以通過各種網(wǎng)絡(luò)技術(shù)實(shí)現(xiàn),包括但不限于 TCP/IP、以太網(wǎng)和使用各種節(jié)點(diǎn)架構(gòu)的無線技術(shù)。通信和節(jié)點(diǎn)架構(gòu)的細(xì)節(jié)對應(yīng)用程序是隱藏的。

復(fù)制透明度

數(shù)據(jù)復(fù)制改善了引用的局部性,并在發(fā)生故障時提高了訪問的冗余性。EtherDATA 數(shù)據(jù)對象可以透明地在網(wǎng)絡(luò)中的節(jié)點(diǎn)或節(jié)點(diǎn)組之間進(jìn)行復(fù)制。

碎片透明度

小型嵌入式系統(tǒng)沒有資源來存儲系統(tǒng)可訪問的所有數(shù)據(jù),并且任何數(shù)據(jù)庫都必須跨網(wǎng)絡(luò)節(jié)點(diǎn)分段。EtherDATA 向應(yīng)用程序隱藏了這種碎片。

EtherDATA 不提供關(guān)系數(shù)據(jù)庫管理工具。它專門設(shè)計(jì)用于為小型異構(gòu)系統(tǒng)輕松抽象數(shù)據(jù)引用。在 8051 中,EtherDATA 可以部署在少至 5k 字節(jié)的 ROM 和可忽略不計(jì)的 RAM 占用空間(< 128 字節(jié))中。

在這個項(xiàng)目中,EtherDATA 使用 Koliada 的底層無線網(wǎng)狀網(wǎng)絡(luò)技術(shù) EtherMESH 來實(shí)現(xiàn)網(wǎng)狀網(wǎng)絡(luò)連接。

以太網(wǎng)狀網(wǎng)絡(luò)

網(wǎng)狀網(wǎng)絡(luò)是一種網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),其中每個節(jié)點(diǎn)不僅要捕獲和傳播自己的數(shù)據(jù),還要充當(dāng)其他節(jié)點(diǎn)的中繼。

poYBAGOSfhKAaKZ5AACYz7y8M2g236.png
EtherMESH 概述
?

以太網(wǎng);

是異質(zhì)節(jié)點(diǎn)的同質(zhì)網(wǎng)格

  • 所有幀都可以到達(dá)所有節(jié)點(diǎn)

使用優(yōu)化的洪水填充算法進(jìn)行動態(tài)路由和傳播

  • 單個“廣播”傳輸?shù)竭_(dá)所有本地節(jié)點(diǎn),減少 RF“顫動”。
  • 簡單的存儲轉(zhuǎn)發(fā)架構(gòu)。
  • 正在申請專利的流量管理優(yōu)化
  • 消除了對特定節(jié)點(diǎn)類型的需求

自同步通信

  • 顯著降低配置要求。
  • 消除了比溝通所需的時間更長的清醒時間。

就我們的項(xiàng)目而言,EtherMESH 提供以下主要功能;

1.低功耗

2. 易于部署,以及

3.便于管理。

KoliadaES

KoliadaES 是一個用于異構(gòu)嵌入式開發(fā)的同構(gòu)模塊化嵌入式系統(tǒng)。它既是嵌入式系統(tǒng)開發(fā)和實(shí)現(xiàn)的范例。

poYBAGOSfhaAEpN3AAFQyDJcpMs160.png
KoliadaES 堆棧
?

我們使用 E3 Embeddeds PIEP 板和 KoliadaES 來快速啟動數(shù)據(jù)節(jié)點(diǎn)。

PIEP

PIEP——處理器獨(dú)立嵌入式平臺——E3 Embedded 的模塊化硬件系統(tǒng)——利用了模塊化嵌入式系統(tǒng) KoliadaES 的潛力。

PIEP
?

PIEP 系統(tǒng)由多個不同種類的可堆疊板組成,無論是處理器還是外圍設(shè)備或可互換的分線板。

MCU 架構(gòu)的改變是通過簡單地更換處理器板來實(shí)現(xiàn)的,并且在使用 KoliadaES 時,利用相同的源代碼和相同的外圍設(shè)備。

硬件和軟件要求

為了設(shè)置這個項(xiàng)目,我們需要。

1. 設(shè)置終端網(wǎng)關(guān)——Azure sphere設(shè)備

硬件

  • Azure sphere MT3620套件
  • PIEP-KOLIADA 站棧 x 1

任何 PIEP 處理器板

接線板

USB

軟件

? Windows 10 版本 1607 或更高版本

? Azure 云服務(wù)(Azure IoT Central)

工具

? Visual Studio VS2017 15.9+ 或 VS 2019 16.04+

? 用于視覺工作室的 Azure Sphere SDK

? Azure sphere 開發(fā)人員命令提示符

2. 設(shè)置 KoliadaES 系統(tǒng)

硬件

? EtherDATA 壓力/溫度/濕度堆棧 x 3

任何 PIEP 處理器板

溫度/相對濕度/壓力板

USB板

電池板

? EtherDATA 跟蹤器堆棧 x 1

任何 PIEP 處理器板

電池板

USB板

? EtherDATA 磁力計(jì)堆棧 x 1

任何 PIEP 處理器板

接線板

電池板

USB板

? EtherDATA 站堆棧 x 1

任何 PIEP 處理器板

接線板

USB板

? 外部磁力計(jì)傳感器

軟件

? Windows 10 版本 1607 或更高版本

? KoliadaES SDK

? Visual Studio Code(或任何基于 make 的 IDE)

工具

? Visual Code 1.39 或更高版本(或任何基于 make 的 IDE)

? KoliadaES SDK

poYBAGOSfleAJQfJAAgcYOV8IBk859.png
整套組裝硬件
?

在我們的部署中,我們使用了 PIEP Mini TI CC2541 處理器板,但任何啟用無線、支持 KoliadaES 的 MCU 都可以與相同的應(yīng)用程序代碼一起使用。

構(gòu)建系統(tǒng)

該系統(tǒng)由一組無線傳感器節(jié)點(diǎn)組成,這些節(jié)點(diǎn)使用 KoliadaES 的專有網(wǎng)狀協(xié)議 (EtherMESH) 和分布式數(shù)據(jù)系統(tǒng) (EtherDATA) 主動測量數(shù)據(jù)并相互通信。EtherDATA 與 Azure sphere 集成以將此數(shù)據(jù)轉(zhuǎn)發(fā)到 Azure IoT 中央數(shù)據(jù)庫。

pYYBAGOSfl2Ab53QAACgafumZ5E890.png
?

關(guān)鍵部件是

? 三個壓力/溫度/濕度節(jié)點(diǎn),每 30 秒記錄一次 PHT 數(shù)據(jù)。

? 用于跟蹤資產(chǎn)或人員位置的跟蹤器節(jié)點(diǎn)。等等,每 10 秒記錄一次數(shù)據(jù)。

? 用于跟蹤門或大門狀態(tài)的磁力計(jì)(磁傳感器)。

注意:一旦有新的傳感器讀數(shù)或電池值,所有這些都會通過網(wǎng)狀網(wǎng)絡(luò)傳輸數(shù)據(jù)。

? 站點(diǎn)節(jié)點(diǎn)(網(wǎng)狀網(wǎng)絡(luò)的一部分)從上述節(jié)點(diǎn)收集所有傳感器和電池數(shù)據(jù),并將其傳送給

? Azure Sphere 設(shè)備(通過UART 或串行通信)。Azure Sphere 能夠?qū)?PIEP Koliada 站接收到的傳感器推送到 Azure IoT Central 數(shù)據(jù)庫。

? Azure IoT Central 提供對基于網(wǎng)絡(luò)的儀表板的訪問,該儀表板填充上述接收到的傳感器數(shù)據(jù),可以使用任何網(wǎng)絡(luò)瀏覽器遠(yuǎn)程監(jiān)控這些數(shù)據(jù)。

構(gòu)建 PIEP-KoliadaES-Sphere-Azure 系統(tǒng)

步驟1

下載并安裝 KoliadaESDK(TM)。

按照 KoliadaESDK 說明進(jìn)行安裝 ( https://docs.koliada.com )。

第2步

PIEP節(jié)點(diǎn)的組裝說明

在開始組裝 PIEP 板之前,請確保這些板中的每一個都堆疊在一起,并且排針引腳如下圖所示對齊。

poYBAGOSfmeAAf3-AAKjJaGxQgQ130.jpg
?

使用螺釘堆疊所有板以保持它們完好無損。

pYYBAGOhFxuAM4P0AANiJy9_gqE135.jpg
?

現(xiàn)在讓我們堆疊此項(xiàng)目所需的電路板。

  • PHT(壓力/溫度/濕度)堆棧
pYYBAGOhFx6AfJWwAADlaTdZX28387.jpg
PHT(壓力/溫度/濕度)堆棧
?
  • 跟蹤堆棧
poYBAGOhFyGAeQZnAACuD2ovcZM730.jpg
跟蹤堆棧
?
  • 磁力計(jì)堆棧
pYYBAGOhFy2AB2R-AAFBUsk0TFs852.jpg
?
  • 站棧
pYYBAGOhFzKAKp57AAC0CWqq43o490.jpg
站棧
?

將 KoliadaES下載構(gòu)建PIEP節(jié)點(diǎn)

您可以在我們的 KoliadaES 示例頁面 ( https://docs.koliada.com ) 上找到所有網(wǎng)格節(jié)點(diǎn)代碼。

構(gòu)建并刷新為每個節(jié)點(diǎn)提供的項(xiàng)目。請注意,不同的項(xiàng)目需要不同的二進(jìn)制組件。加載程序使用項(xiàng)目清單來確定每個節(jié)點(diǎn)設(shè)備需要哪些二進(jìn)制文件。

對每個 PIEP 堆棧進(jìn)行編程后,打開節(jié)點(diǎn)——它們將形成一個運(yùn)行 EtherDATA 的網(wǎng)格。

現(xiàn)在您需要在節(jié)點(diǎn)和 Azure Sphere 之間建立連接,然后 Azure Sphere 可以將數(shù)據(jù)推送到 Azure IoT Central 以進(jìn)行遠(yuǎn)程監(jiān)控。

第 3 步- 設(shè)置 Azure 帳戶

如果您還沒有,Microsoft 還提供了有關(guān)使用Azure以及我們使用的服務(wù)Azure IoT Central的文檔。Azure IoT Central 允許用戶遠(yuǎn)程管理他們的 IoT 設(shè)備,并提供統(tǒng)計(jì)數(shù)據(jù)和視覺效果來幫助展示收集到的數(shù)據(jù)。

擁有帳戶后,創(chuàng)建 IoT Central 服務(wù)并按照 Microsoft 提供的此處說明授權(quán)您的 Azure Sphere。

現(xiàn)在您可以創(chuàng)建 IoT Central Dashboard

要準(zhǔn)備 Azure IoT Central 儀表板以顯示來自無線傳感器節(jié)點(diǎn)的濕度、溫度、壓力、電池、門數(shù)據(jù),您需要按照此處給出的說明進(jìn)行操作。

第 4 步- 將 Station Stack 連接到 Azure Sphere

第 2 步中的項(xiàng)目之一構(gòu)建了一個系統(tǒng),用于將 EtherDATA 網(wǎng)格連接到 Azure Sphere。

pYYBAGOhF1mADNX7AAX-VIt69KE939.jpg
將 Station Stack 的接線板(引腳 7、8、9)的跳線連接到 Azure Sphere 上的 TX、RX 和 GND
?

現(xiàn)在您已經(jīng)建立了 Azure Sphere 和 EtherDATA 與網(wǎng)狀網(wǎng)絡(luò)之間的連接。無線傳感器網(wǎng)絡(luò)已成功將其數(shù)據(jù)轉(zhuǎn)發(fā)到 Azure 球體。為了讓適配器程序?qū)⒛愕脑O(shè)備連接到你的 IoT Central 服務(wù)并轉(zhuǎn)發(fā)在 Station Stack 上收集的所有數(shù)據(jù),你需要設(shè)置一個 Azure 云帳戶和 Azure IoT Central 服務(wù)。

您可以通過將 Station Stack 的終端板連接到插入 PC 的 UART-USB 適配器并以 115200 波特率運(yùn)行任何終端程序來單獨(dú)驗(yàn)證數(shù)據(jù)收集。您將看到發(fā)出的 JSON 字符串;

poYBAGOhF1yAGRYVAACkryAtqSg450.png
站點(diǎn) JSON 輸出
?

這顯示了根據(jù)為 EtherDATA 定義的模式來自各個節(jié)點(diǎn)(節(jié)點(diǎn)是一組節(jié)點(diǎn))的數(shù)據(jù);batteryValue、eValue(溫度、濕度和壓力)和 DoorState(有關(guān) EtherDATA 模式的更多詳細(xì)信息,請參見下文)。

第 5 步- 設(shè)置 Azure Sphere

要開始設(shè)置,請按照 Microsoft 的文檔Azure Sphere Setup進(jìn)行操作。此鏈接將引導(dǎo)你完成安裝 Azure Sphere SDK 并讓你的設(shè)備為應(yīng)用程序部署做好準(zhǔn)備的步驟。

將我們的附加程序加載到您的 Azure Sphere

按照 Microsoft 中有關(guān)側(cè)載應(yīng)用程序的說明進(jìn)行操作。使用提供的 Github 代碼讓您的 Azure Sphere 準(zhǔn)備好使用 KoliadaES 適配器程序。

現(xiàn)在您已經(jīng)設(shè)置了該項(xiàng)目所需的一切。

發(fā)生了什么?

現(xiàn)在所有無線傳感器節(jié)點(diǎn)都在采樣數(shù)據(jù)并在整個網(wǎng)格中分發(fā)該數(shù)據(jù)。然后,該數(shù)據(jù)通過串行通信通過站節(jié)點(diǎn)轉(zhuǎn)發(fā)到 azure sphere。球體運(yùn)行一個連接模塊來連接到 Azure 服務(wù),并將它接收到的數(shù)據(jù)(從站節(jié)點(diǎn))推送到 Azure IoT Central 數(shù)據(jù)庫。現(xiàn)在您可以看到您的儀表板正在使用實(shí)時數(shù)據(jù)更新,如下所示。

pYYBAGOhF2CARbp8AAE1bKc3MW4883.png
儀表板中的實(shí)時數(shù)據(jù)
?

您應(yīng)該看到以下行為:-

? 所有三個節(jié)點(diǎn)的溫度、壓力、濕度和電池數(shù)據(jù)應(yīng)每 30 秒在儀表板上更新一次,并且還可以看到最新數(shù)據(jù)的圖表。

? DoorState(磁力計(jì)數(shù)據(jù))在每次狀態(tài)改變時更新。在我們的例子中,我們將傳感器連接到磁性門上,每次打開或關(guān)閉門時都會更新 DoorState。

溫度、壓力和濕度堆??梢苑胖迷谌魏纹渌W(wǎng)格節(jié)點(diǎn)最遠(yuǎn) 50 米范圍內(nèi)的不同位置。在這里,我們在玻璃咖啡桌上放置了一個監(jiān)控室內(nèi)溫度的設(shè)備。

poYBAGOhF2OAOn08AAECIHMtOAc107.png
?

第二個 PHT 堆棧放置在服務(wù)器系統(tǒng)機(jī)架中,用于監(jiān)控服務(wù)器溫度。

pYYBAGOhF3iAWYjKAAZtJSMcEU8668.jpg
?

第三個 PHT 堆棧放置在房屋外的露臺上,以監(jiān)測室外環(huán)境溫度。

poYBAGOhF36ARPAoAAF3mJZyiqk484.png
?

磁力計(jì)安裝在門上,可在門打開或關(guān)閉時發(fā)送信號。

追蹤器裝置放置在背包中,以追蹤背包是否在屋內(nèi),并提供背包何時被帶出和進(jìn)入屋內(nèi)的歷史記錄。

站節(jié)點(diǎn)串行連接到 Azure Sphere。它在網(wǎng)格節(jié)點(diǎn)和 Azure Sphere 之間轉(zhuǎn)發(fā)數(shù)據(jù),從而在 Azure IoT Central 之間轉(zhuǎn)發(fā)數(shù)據(jù)。

poYBAGOhF4WANSsTAAFHgjg8BY4967.png
車站堆棧
?

該系統(tǒng)為多個獨(dú)立無線節(jié)點(diǎn)的安全監(jiān)視和控制提供了一個很好的框架。可以從 PC 或手機(jī)訪問數(shù)據(jù)和控制 UI。由于所有的數(shù)據(jù)都被轉(zhuǎn)發(fā)到Azure IoT Central,便于從世界任何地方進(jìn)行遠(yuǎn)程監(jiān)控。

代碼說明

EtherDATA(分布式數(shù)據(jù))——設(shè)置節(jié)點(diǎn)數(shù)據(jù)

EtherDATA 使用元數(shù)據(jù)文件 (.ddl) 來描述托管數(shù)據(jù)對象。我們根據(jù)此處顯示的示例指定一組監(jiān)視和控制對象;

UInt8 batteryValue
{
description "current (uncalibrated) battery value";
access readonly;
units "/4096";// raw 12 bit value
}

int eValue[3]
{
description "Current Humidity Sensor Value";
access readonly;
units "% or deg or mbar";
}

byte deviceType
{
description "Device Type";
// 1 - station
// 2 - tracker
// 3 - DoorSensor
// 4 - PHT
access readonly;
}

byte DoorData
{
description "Door values";
access readonly;
}

EtherDATA 對象是全局定義的,并且對于網(wǎng)格中的所有節(jié)點(diǎn)都必須相同。網(wǎng)絡(luò)全局定義允許 EtherDATA 從任何節(jié)點(diǎn)訪問和管理數(shù)據(jù)對象。

在應(yīng)用程序中,我們使用 EtherDATA API 從特定節(jié)點(diǎn)通過網(wǎng)絡(luò)發(fā)布數(shù)據(jù)對象,如下所示;

dbPublish(eValue);		// for PHT nodes only
dbPublish(batteryValue);	// all nodes have a battery
dbPublish(buttonData);		// for nodes with buttons

只有 PHT 節(jié)點(diǎn)具有壓力、溫度和濕度傳感器,因此僅需要從 PHT 節(jié)點(diǎn)調(diào)用 dbPublish(eValue)。它們是發(fā)布 PHT 數(shù)據(jù)的節(jié)點(diǎn)。

類似地,磁力計(jì)節(jié)點(diǎn)使用 dbPublish(DoorData) 并且 dbPublish(batteryvalue) 在所有使用電池的節(jié)點(diǎn)上使用。

dbPublish 只是告訴 EtherDATA 在數(shù)據(jù)對象可用時發(fā)布它,它仍然由應(yīng)用程序來確定何時可用。

以下命令根據(jù)來自傳感器的每個樣本設(shè)置/更新數(shù)據(jù)對象值。

dbSet(eValue, data);		// PHT nodes
dbSet(batteryValue, data);	// all nodes
dbSet(DoorData, data);		// magnetometer node
dbSet(buttonData, data);	// button nodes

數(shù)據(jù)項(xiàng)的值將使用 GPIO、ADC、SPI、UART 等的系統(tǒng)接口從底層系統(tǒng)派生。通常,樣本采用定時器事件處理程序并調(diào)用 dbSet 函數(shù)以將數(shù)據(jù)發(fā)布到 EtherDATA 以進(jìn)行分發(fā)。

最后,站節(jié)點(diǎn)需要包含以下配置代碼,以便從其他傳感器節(jié)點(diǎn)接收所有更新的數(shù)據(jù)。

dbSubscribe(“*”,eValue, callback);
dbSubscribe(“*”,batteryValue, callback);
dbSubscribe(“*”,DoorData, callback);
dbSubscribe(“*”,buttonData, callback);

如前所述,所有 EtherDATA 對象都是全局定義的,這允許在所有節(jié)點(diǎn)中以相同的方式訪問和管理 EtherDATA 系統(tǒng)中的任何節(jié)點(diǎn)。

除了項(xiàng)目文件中描述的一些基本設(shè)置和事件處理之外,盡管可以說更多的內(nèi)容來描述 EtherDATA、EtherMESH 和 KoliadaES,但這幾乎總結(jié)了網(wǎng)格節(jié)點(diǎn)的設(shè)置。

Azure Sphere - 設(shè)置 IoT Central 數(shù)據(jù)庫連接

Azure SDK main.c 文件包含設(shè)置 Azure IoT Central 連接句柄所需的初始化。此處顯示了 Azure IoT Central/Hub 定義;

#include "parson.h" // used to parse Device Twin messages.
// Azure IoT Hub/Central defines.
#define SCOPEID_LENGTH 20
static char scopeId[SCOPEID_LENGTH]; // ScopeId for the Azure IoT Central application, set in // app_manifest.json, CmdArgs
static IOTHUB_DEVICE_CLIENT_LL_HANDLE iothubClientHandle = NULL;
static const int keepalivePeriodSeconds = 20;
static bool iothubAuthenticated = false;
static void SendMessageCallback(IOTHUB_CLIENT_CONFIRMATION_RESULT result, void *context);
static void ReceiveHubMessage(IOTHUB_CLIENT_CONFIRMATION_RESULT result, const unsigned char *payload, size_t payloadSize, void *userContextCallback);
static void TwinCallback(DEVICE_TWIN_UPDATE_STATE updateState, const unsigned char *payload,
size_t payloadSize, void *userContextCallback);
static void TwinReportBoolState(const char *propertyName, bool propertyValue);
static void ReportStatusCallback(int result, void *context);
static const char *GetReasonString(IOTHUB_CLIENT_CONNECTION_STATUS_REASON reason);
static const char *getAzureSphereProvisioningResultString(
AZURE_SPHERE_PROV_RETURN_VALUE provisioningResult);

Azure 帳戶和范圍 ID 的連接字符串設(shè)置如下所示;

int main(int argc, char *argv[])
{
Log_Debug("IoT Hub/Central Application starting.\n");
mydoorstate[0] = '0';
if (argc == 2) {
Log_Debug("Setting Azure Scope ID %s\n", argv[1]);
strncpy(scopeId, argv[1], SCOPEID_LENGTH);
}
else {
Log_Debug("ScopeId needs to be set in the app_manifest CmdArgs\n");
return -1;
}
Log_Debug("UART application starting.\n");
if (InitPeripheralsAndHandlers() != 0) {
terminationRequired = true;
}
// Main loop
while (!terminationRequired) {
if (WaitForEventAndCallHandler(epollFd) != 0) {
terminationRequired = true;
}
}
ClosePeripheralsAndHandlers();
Log_Debug("Application exiting.\n");
return 0;
}

InitPeripheralsAndHandlers 初始化UART 并等待UART Event(即從站節(jié)點(diǎn)接收數(shù)據(jù))。

static void UartEventHandler(EventData *eventData)

每當(dāng)它通過 UART 從站節(jié)點(diǎn)接收數(shù)據(jù)時,此事件處理程序都會執(zhí)行必要的解析,如此處所示;

{
const size_t receiveBufferSize = 128;
uint8_t receiveBuffer[receiveBufferSize + 1]; // allow extra byte for string  termination
ssize_t bytesRead = -1;
for (int i = 0; i < 32767 && bytesRead == -1; i++) {
bytesRead = read(uartFd, receiveBuffer, receiveBufferSize);
}
if (bytesRead < 0) {
Log_Debug("ERROR: Could not read UART: %s (%d).\n", strerror(errno),  errno);
terminationRequired = true;
return;
}

然后識別解析的數(shù)據(jù)類型(PHT 值、電池或門狀態(tài))和節(jié)點(diǎn)名稱,并將相應(yīng)的數(shù)據(jù)推送到 Azure IoT Central,如此處所示;

SendRoomTemperature(evalue1);
SendRoomHumidity(evalue2);
SendRoomPressure(evalue3);


static void SendRoomTemperature(const unsigned char *value)
{
static char eventBuffer[100] = { 0 };
static const char *EventMsgTemplate = "{ "RoomTemp": "%s"}";
int len = snprintf(eventBuffer, sizeof(eventBuffer), EventMsgTemplate, value);
if (len < 0)
return;
IOTHUB_MESSAGE_HANDLE messageHandle = IoTHubMessage_CreateFromString(eventBuffer);
if (messageHandle == 0) {
Log_Debug("WARNING: unable to create a new IoTHubMessage\n");
return;
}
if (IoTHubDeviceClient_LL_SendEventAsync(iothubClientHandle, messageHandle, SendMessageCallback,
/*&callback_param*/ 0) != IOTHUB_CLIENT_OK) {
Log_Debug("WARNING: failed to hand over the message to IoTHubClient\n");
}
else {
//Log_Debug("INFO: IoTHubClient accepted the message for delivery\n");
}
IoTHubMessage_Destroy(messageHandle);
}

這總結(jié)了 Azure Sphere 設(shè)備的網(wǎng)格 → Azure 轉(zhuǎn)發(fā)責(zé)任。反向的類似機(jī)制接收控制請求并將它們轉(zhuǎn)發(fā)到網(wǎng)格。

現(xiàn)在剩下的都在 Azure Central 上了。由于設(shè)備已經(jīng)預(yù)先在 IoT Central 上準(zhǔn)備好(模仿我們的設(shè)置),IoT Central 知道設(shè)置并正在等待所有數(shù)據(jù)(PHT 值、電池或門狀態(tài))進(jìn)入。

概括

在事先不了解 Azure Sphere 或 Azure IoT Central 的情況下,大約需要 5 天的時間來啟動所描述的節(jié)點(diǎn),配置 Azure Sphere 以在網(wǎng)格和 Azure IoT Central 之間移動數(shù)據(jù)。

在合適的容器中,PIEP 硬件專為穩(wěn)健的現(xiàn)場部署和任意用戶交互而設(shè)計(jì)。PIEP 板很容易簡化為定制的、用戶指定的硬件,無需更改代碼。PIEP 加上 KoliadaES 提供了一種簡單的方法來穩(wěn)健地制作原型,并根據(jù)需要轉(zhuǎn)移到生產(chǎn)中,而無需大量的生產(chǎn)工程時間和成本。

我們有多個類似的網(wǎng)格部署,用于在家庭、工業(yè)和醫(yī)療保健環(huán)境中部署數(shù)據(jù)和控制。Azure Sphere 讓我們能夠簡單而安全地將這些網(wǎng)絡(luò)連接到互聯(lián)網(wǎng)。

鏈接

視覺工作室;

? 安裝 Visual Studio

? 安裝 Visual Studio Code

天藍(lán)色;

? 開始使用 Azure

? 開始使用 Azure IoT Central

蔚藍(lán)球體;

? Azure 球體入門

? 設(shè)置設(shè)備并安裝 Azure SDK

? 添加遙測測量

自定義 EtherDATA 應(yīng)用程序

這種分布式數(shù)據(jù)系統(tǒng)即插即用,易于用于各種應(yīng)用。有關(guān)如何使用 KoliadaES 開始創(chuàng)建/自定義新應(yīng)用程序的更多詳細(xì)信息,請通過http://www.koliada.com聯(lián)系我們


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動電路設(shè)計(jì)》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)