【導讀】在現代工業智能化轉型中,融合人工智能技術的傳感器正成為關鍵推動力。其中,將邊緣與云端人工智能(AI)技術融入配備模擬和數字器件的傳感器,成為極具潛力的方向。由于AI技術手段繁多,傳感器設計人員在推進這一融合時,面臨著諸多相互制約的挑戰,像決策延遲、網絡帶寬占用、功耗與電池壽命,以及適配機器的AI模型選擇等問題。前文已對基于AI的無線狀態監控傳感器Voyager4的概況與硬件設計做了介紹,本文將深入剖析為智能邊緣傳感器構建的軟件架構、AI算法,以及在Voyager4上開發AI模型的全系統級方法。
摘要
在現代工業智能化轉型中,融合人工智能技術的傳感器正成為關鍵推動力。其中,將邊緣與云端人工智能(AI)技術融入配備模擬和數字器件的傳感器,成為極具潛力的方向。由于AI技術手段繁多,傳感器設計人員在推進這一融合時,面臨著諸多相互制約的挑戰,像決策延遲、網絡帶寬占用、功耗與電池壽命,以及適配機器的AI模型選擇等問題。前文已對基于AI的無線狀態監控傳感器Voyager4的概況與硬件設計做了介紹,本文將深入剖析為智能邊緣傳感器構建的軟件架構、AI算法,以及在Voyager4上開發AI模型的全系統級方法。
狀態監控傳感器的軟件設計
Voyager4 是由ADI公司開發的無線狀態監控平臺,開發人員借助它能夠快速將無線解決方案部署到機器或測試設置并進行測試。Voyager4等電機健康狀況監控解決方案廣泛應用于各行各業,例如機器人以及渦輪機、風扇、泵、電機等旋轉機械。
為這樣的無線邊緣設備開發軟件可能很困難。從傳感器設計的早期階段開始,開發人員就必須考慮整體系統架構,系統的各個部分如何運行,如何集成不同組件以協同工作,以及如何應用和部署有用的算法與分析工具(如神經網絡)來提升邊緣智能水平。
對于此類項目,主要目標就是為邊緣設備和所連主機創建易于理解、可修改、可升級的軟件。Voyager4內部有兩個微控制器和許多外設,包括傳感器、電源管理板、閃存和通信接口。開發旨在控制和整合每個部分的代碼是一項艱巨的任務。
本文希望通過展示Voyager4的開發設計過程,重點說明所采取的步驟,并提供一些具體的實現案例,以幫助讀者更好地了解自行開發邊緣傳感器的方法。
這是闡述Voyager4狀態監控平臺開發的三部分系列文章的第2部分。
?本系列文章的第1部分介紹了Voyager4無線狀態監控傳感器,包括傳感器架構的關鍵元素、硬件設計、功耗分析和機械集成。
?本系列文章的第2部分將重點討論軟件架構和AI算法,并說明在Voyager4上開發和部署AI模型的完整系統級方法。
?本系列文章的第3部分將討論AI算法的實際實現,以及Voyager4可以檢測的各種故障,例如不平衡、未對準和軸承缺陷。
概述
這里簡要回顧了Voyager的工作原理。有關狀態監控傳感器的更多信息,以及關于Voyager4項目的專有硬件、功耗和安全特性的詳細信息,請參閱本系列文章的第1部分。
圖1.Voyager4工作模式。
圖1顯示了Voyager4的傳感器工作原理。ADXL382 三軸8 kHz數字微機電系統(MEMS)加速度計用于采集振動數據。采集的數據會依據工作模式遵循不同的路徑。
路徑A是最初采用的路徑,原始振動數據直接發送到MAX32666 低功耗藍牙?(BLE)處理器。然后,數據可以通過無線BLE或USB發送給用戶。路徑B是一種替代工作模式,可以在利用Voyager采集原始數據并通過MAX78000外部工具訓練模型后使用該模式。數據不會發送給用戶,而是傳遞給邊緣AI算法來預測機器故障。路徑C和D分別代表檢測到和未檢測到電機故障的用例。如果檢測到故障,則可以通過BLE處理器向主機發送故障標志或用戶警報。如果未檢測到故障,傳感器將返回休眠模式,直到發生下一次檢測事件。
該架構是Voyager4軟件和AI算法開發的重點。為了從系統層面全面理解該架構,本文將討論以下幾方面:
?BLE術語
?BLE外圍設備的實現
?BLE中心設備的實現
?AI算法的訓練和部署
BLE背景知識
設計工業邊緣傳感器時,連接是關鍵設計因素之一。根據可用或所需的功率,連接會影響覆蓋范圍、可靠性、設備整體壽命和尺寸等方方面面。如表1所示,與其他連接標準相比,BLE擁有一些特別的優勢。對于我們的工業監控用例而言,BLE的覆蓋范圍、功率和可靠性尤為重要。要了解BLE邊緣設備的設計和開發,首先必須了解所有BLE項目都會使用的一些基本術語。
表1.無線連接標準比較
全面介紹BLE的所有特性將需要一本書的篇幅。本文將重點介紹實現BLE設備時需要考慮的一些關鍵概念,包括:
?軟件堆棧
?外圍設備/中心設備模型
?協議和配置文件
BLE軟件堆棧
BLE軟件堆棧是一系列標準協議的集合,設備必須支持這些協議才能被視為與BLE兼容。為了幫助讀者更輕松地理解這個術語,圖2展示了堆棧內不同協議的分層方式。對于用戶通信和設備連接等高級功能,需要負責數據封裝和解析等基本任務的較低級協議提供支持。
幸運的是,開發人員對堆棧組成部分有基本的了解通常就足夠了,他們可以從一系列已經實現各自版本堆棧的硬件設備中進行選擇。用戶只需開發應用程序中負責控制設備本身的部分,并利用預構建的BLE堆棧即可。
圖2.BLE堆棧。
BLE堆棧通常由三個不同部分組成:應用程序、主機和控制器。應用程序定義用戶接口和用戶實現的具體應用代碼(振動監測)。主機是指BLE軟件堆棧的上層,它控制配置文件和協議等高級功能。控制器是指BLE堆棧的底層,它處理鏈路層和物理層,如2.4 GHz無線電本身。此項目選擇使用MAX32666 BLE微控制器。這是一款低功耗Arm? Cortex?-M4微控制器,搭載低功耗藍牙5無線電,支持遠距離(4×)通信和高數據吞吐速率(2 Mbps)。
外圍設備/中心設備模型
根據BLE設備的作用,可以將其定義為外圍設備或中心設備。數據可以雙向流動,兩者之間最大的區別之一是其連接方式。在連接之前,外圍設備會通告其能否連接,中心設備則掃描可供連接的外圍設備并發起連接。數據可以在外圍設備和中心設備之間雙向流動,但中心設備被視為主機。舊版BLE文獻也將外圍設備和中心設備分別稱為服務器和客戶端。
圖3.外圍設備/中心設備1:1模型。
在我們的系統中,將Voyager平臺定義為外圍設備,它收集數據并將其發送到中心設備。對于這個項目,為了簡化開發和便于理解,我們首先研究最簡單的情形:單個中心設備與單個外圍設備交互,如圖3所示。
協議和配置文件
在藍牙的命名術語中,協議和配置文件很容易混淆。簡單地說,協議是定義設備操作的基本功能塊:數據封裝、格式、路由等。配置文件是組合在一起以支持基本工作模式的功能包。它本質上是多種協議的組合,以實現某種整體功能。例如,電池服務配置文件可用于查詢設備的剩余電池電量。所有BLE設備都必須實現至關重要的通用訪問配置文件(GAP)和通用屬性配置文件(GATT),以便能夠連接到其他BLE設備。GAP負責處理底層各項功能:廣播、設備發現和連接管理。GATT負責管理設備之間的高級數據組織和傳輸,使它們能夠通過已建立的連接執行讀寫操作。
其他配置文件是可選的附加項,用于為設備提供額外功能,例如接近配置文件(Proximity Profile)。這些配置文件包括由藍牙技術聯盟(SIG)創建的預定義配置文件。開發智能手表或智能電表等典型設備時,使用一組預定義的配置文件可能很有用,但對于需要實現大量自定義功能的設備而言,預定義配置文件可能會帶來限制。
開發人員還可以使用并非由藍牙SIG創建的自定義配置文件,這樣做可以提升設計靈活性,但會犧牲一定的可移植性。每個配置文件將其數據組織成服務,服務由多個特性組成,如圖4所示。
圖4.自定義命令服務器配置文件。
當中心設備和外圍設備之間形成連接時,中心設備可以請求與該外圍設備關聯的配置文件和服務。圖5顯示了中心設備發出請求時,Voyager的GAP、GATT和自定義配置文件(及其服務)的結構。
圖5.Voyager配置文件結構。
對于Voyager,除了基本的GAP和GATT配置文件,我們還定義了一個用作命令服務器的自定義配置文件,它處理來自中心設備的命令,并返回數據或更新外圍設備本身的配置。
固件實現
BLE微控制器是該系統的核心,它確保所有外圍傳感器和設備的數據都可以由相連的BLE中心設備檢索或修改。
設備配置
我們利用MAX32666上預先構建的BLE堆棧,通過填充相關配置功能來構建外圍設備的外觀。例如,在圖6中,我們為掃描數據發現數組提供了數據長度、廣播類型和一系列字符,每次Voyager上電時,外圍設備設置函數都會調用該數組。
圖6.設置Voyager掃描數據。
像這樣的BLE設備將有大量的設置需要配置,包括無線電的傳輸功率和返回數據類型。建議從所使用硬件附帶的預構建示例入手,然后在其基礎上進行自定義修改。MAX32666提供了一個BLE數據服務器(外圍設備)的示例代碼,名為BLE DATS,Voyager項目就是以此為基礎構建的。配置后,當中心設備掃描可用設備時,外圍設備的名稱顯示為Voyager。這也可以用于過濾搜索列表,以便中心設備僅顯示預期名稱的設備。如圖7所示,設備名稱與設備MAC地址和接收信號強度指示(RSSI)一同顯示。
圖7.中心設備中顯示的Voyager。
堆棧內的其他配置設置控制設備其他模式的預期名稱和行為,例如制造商ID、對讀/寫命令的響應等。
圖8.Voyager4硬件框圖,采用了MAX3207E、DS28C40A、ADXL382、ADG1634、MAX32666、ADXL367、MAX78000、MAX17262、MAX20335和MAX38642。
命令服務器
Voyager4應用的中心端和外圍端是同步設計的,因此可以利用含有單個BLE服務的自定義配置文件來簡化外圍設備接口。該配置文件將負責接收來自中心設備的命令,并以加速度計數據、溫度數據和其他設備信息的形式返回響應。
對于像Voyager這樣復雜的設備,采用該單一自定義服務進行BLE通信是不同尋常的做法,但卻帶來了幾點好處。這種做法不僅支持Voyager版本之間的向后兼容性,而且增強了命令靈活性,因為通過將字符串用作Voyager外圍設備的命令輸入,應用可以根據數據的解析方式,靈活支持各種類型的命令和值。
一旦外圍設備和中心設備之間形成連接,為了建立雙向通信,中心設備就會向自定義特性發出通知命令,如圖11所示。這樣就在外圍端建立了一個通知系統,并在中心端指定了相應的回調函數。這意味著,每當有更新的數據分配給該自定義特性時,都會通知中心設備,傳輸新數據,并觸發中心設備的回調函數。
固件架構
圖8中的硬件示意圖顯示了Voyager中包含的各種元器件以及相關的數據路徑和電源。大多數軟件開發都是在BLE微控制器上進行的,因為它作為命令中心,負責協調設備的BLE接口以及傳感器和微控制器數據的內部管道。為了與系統中的不同傳感器和微控制器進行交互,我們必須開發供BLE微控制器和AI部分中討論的AI微控制器使用的設備驅動程序。實際上,這些驅動程序的開發和集成占了聯網邊緣傳感器所需編程工作的很大一部分。
編寫可移植代碼
開發固件時,我們將代碼劃分成幾個抽象層,以將特定微控制器的具體細節與應用程序和驅動程序代碼區分開來。這種做法很常見,通常會在應用層之外再劃分出三個明確的層次來管理不同的代碼功能,即硬件抽象層(HAL)、板支持包(BSP)和驅動程序層。此架構如圖9所示。
圖9.通用BSP-HAL架構。
HAL為程序與不同硬件的交互提供了一種統一方法,程序無需知道每個設備的具體細節。BSP定義了依賴于硬件的軟件,而驅動程序層定義了各個設備的更具體細節,如寄存器映射。例如,Voyager有兩個微控制器,MAX32666用于BLE連接,MAX78000 帶有一個板載卷積神經網絡(CNN)加速器。如圖10所示,Voyager中的HAL定義了微控制器、SPI和I2C將使用的基本通信命令。舉例來說,任何設備驅動程序發出任何SPI通信請求時,此任務最初都會被委托給HAL中的SPI函數,然后HAL查找BSP的具體信息,以便針對該微控制器使用正確的SPI命令。
對于系統中的每個電路板,HAL保持不變,但對于每個微控制器,BSP會更新。BSP還負責定義系統的通用構建模塊,以將應用程序調用與所使用的具體設備解耦。在圖10中,BSP中的MAIN_ADXL模塊是所使用的底層加速度計的抽象塊。任何加速度計的常用命令(如初始化和讀?。┒荚贐SP層中定義,而低級函數(如get_raw_xyz_data)則在ADXL382模塊中的驅動程序級別上定義。將驅動程序代碼從MAX32666移植到MAX78000微控制器時,加速度計代碼保持不變,因為它僅與加速度計本身有關。只有BSP層中的文件需要更新,以便能夠與新微控制器通信。
這對于系統中部件的更換或升級來說,也具有明顯的優勢。在Voyager中,一個真實例子是我們決定升級所用的主加速度計。升級僅需更新驅動程序層中的代碼,維護、修改和測試工作都得以簡化。
圖10.Voyager BSP HAL架構。
數據管道和BLE中心設備
雖然溫度和電池信息可根據要求提供給BLE中心設備應用程序,但Voyager的主要作用是作為狀態監控器和振動傳感器。關于數據吞吐速率和數據發送頻率,我們重點考慮振動傳感器和典型狀態監控場景,比如每天進行一次短暫測量。BLE不支持高數據吞吐速率。ADXL382是一款高帶寬、3軸加速度計,在高性能模式下每秒每軸采集16,000個樣本。根據系統所包含的元器件,有幾種數據發送方式可供選擇。
發送實時數據
沒有任何形式的緩沖,當中心設備請求數據時,只要數據可用,便立即發送。這種方式在演示模式下很有用,可以實時展示高性能加速度計數據,但是電池電量很快就會耗盡,并且由于生成數據的速度超過發送的速度,數據包會被丟棄或損壞。
從存儲器發送數據
另一種方式是將數據保存到閃存中。這樣,我們就可以安全地記錄加速度計數據,而不必擔心覆蓋以前的值。保存的數據隨后會直接發送到中心設備,或在收到中心設備的命令后進行報告。該系統不再是實時的(數據可能是幾分鐘甚至幾天前的),因此我們還可以利用BLE對數據包的應答系統,確保數據完整無缺地到達中心設備,如有任何數據丟失則重新發送。
對于典型的工業狀態監控場景而言,這種方案更為實用,但設備的電池壽命大部分浪費在發送每天變化不大的振動信息上。
在邊緣執行分析
為了延長電池續航時間,在邊緣執行一些分析會更好,確保僅相關數據才通過無線電鏈路傳輸。當然,這只有在邊緣產生有意義洞察所需的功耗明顯低于通過BLE發送數據所需的功耗時才是可行的(有關這方面的更多信息,請參閱本系列文章的第1部分)。
在圖8中可以看到,加速度計與兩個微控制器都有直接數據路徑。在我們于邊緣執行某些分析的用例中,AI微控制器可以直接從加速度計讀取振動數據,并使用板載AI模型進行分析。
圖11.Voyager中心/外圍設備架構。
設計中心設備用戶界面
BLE外圍設備與Voyager外圍設備同步設計,因此兩者的交互方式存在非常大的靈活性。一般來說,中心設備需要掃描并連接Voyager外圍設備,然后發送字符串命令并處理其返回值。初次連接后,所有BLE命令都直接發送到外圍設備的自定義服務進行解析。在本例中,中心設備是Windows PC上的圖形用戶界面(GUI),用Python編寫,并利用BLE外圍設備庫(BLEak)發出標準BLE命令。BLEak建立在Python的asyncio標準庫之上,允許BLE命令異步運行,確保用戶界面保持可交互狀態且不會凍結。
當GUI成功連接到外圍設備時,系統會自動向Voyager的單個自定義特性發出通知命令,如圖11所示。這樣可確保對此特性的任何更新都會報告給中心設備。這一點很重要,因為Voyager會對后續命令給出應答或響應,表明這些命令是否已成功執行。
如何請求數據?
始終使用簡單的字符串命令來請求數據。例如,中心設備可以發出setphy 2命令,指示Voyager使用其2M無線電。這會提升數據通信速度,但覆蓋范圍和可靠性會受到一定的影響。外圍設備會解析此命令以確保其有效,然后以輸入值2調用自己的內部setphy函數,從而切換所用的無線電。如果Voyager成功執行了此函數,則Return: OK命令會被發回中心設備并顯示給用戶。
解譯加速度計數據
接收數據之前,GUI用戶可以選擇使用setadxlcfg命令配置所連Voyager的加速度計。一旦外圍設備發出啟動命令,加速度計數據就會從外圍設備流向中心設備。默認情況下,中心設備和外圍設備以實時數據模式運行,這對于演示目的很有用。
在外圍設備端,內部先進先出(FIFO)緩沖區按照用戶指定的采樣速率填充新數據。一旦FIFO填滿,系統就會在Voyager自定義服務上設置一個標志,通知外圍設備有新數據可用。然后,數據被發送到外圍設備并進行解析,轉化為x、y、z三個軸的加速度數據的格式化數組。數據始終以圖形方式顯示,用戶可以選擇“保存數據”選項,以將數據保存到csv文件供以后分析。
圖12.Voyager4中心設備GUI繪圖數據。
AI算法設計
本項目的目標是檢測電機的健康狀況何時開始下降。邊緣AI分析旨在通過分析音頻、溫度、振動等一種或多種輸入數據,生成電機健康狀況的指標或特征,從而取代或補充人類數據分析。振動分析是當今狀態監控應用中常用的技術手段。
輸入
許多邊緣AI處理器往往非常耗電,這與無線狀態監控解決方案的目標之一(即延長續航時間)背道而馳。MAX78000(如前所述)能夠快速、低功耗地進行AI推理,其總功耗比使用無線BLE還要低。但是,在使用低功耗邊緣AI處理器時,應注意神經網絡的規模不能超出電路板的規格。該板搭載一個512 kB數據內存的CNN加速器。它主要用于目標檢測、音頻處理和時間序列數據處理。
我們解決方案可用的數據是加速度時間序列。為了盡量提高所訓練算法的性能,我們嘗試了幾種預處理方法,以確定哪種方法對準確度影響最大。本系列文章的第3部分將對此加以詳細討論。
訓練
在線資源“Analog Devices AI”GitHub詳細說明了訓練神經網絡并將其部署到MAX78000的過程。一般來說,首先使用PyTorch?或TensorFlow?等常規工具集在主機PC上創建模型。此模型需要訓練數據,這些數據必須由目標設備保存并傳輸到PC。輸入的一部分成為訓練集,專門用于訓練模型。還有一部分成為驗證集,用于觀察損失函數(網絡性能的衡量標準)在訓練期間如何變化。
根據所用的模型類型,可能需要不同類型和數量的數據。要識別特定的電機故障,您需要使用標注好的數據訓練模型。這些數據不僅要包含各種故障狀態下的振動信息,還要包含無故障的正常狀態下的振動數據作為對比。
圖13.Voyager健康狀況訓練數據。
Voyager最初采用自動編碼器類型的神經網絡開發。自動編碼器無需借助數據標簽就能學會如何對數據進行分類。雖然這種類型的模型不適合復雜的故障分類,但它可以快速完成訓練,并且僅需使用客戶已有的數據,例如正常運行電機數據。
訓練所需的理想數據量因具體情況而異。關鍵在于擁有足夠的數據來學習正常運行電機數據的一般趨勢,同時避免過擬合。Voyager部署的默認示例僅使用了30秒的正常運行加速度計數據進行訓練。同時保存了同樣數量的存在不平衡故障的數據以供驗證。兩個數據集均通過Python GUI直接保存到訓練PC中。
圖14.Voyager故障測試數據。
輸入數據用于訓練模型之前,經過了預處理。然后,訓練腳本按順序運行幾次訓練迭代,并挑選出表現突出的模型。為了測試目的,需要一些故障輸入數據?;谡_\行數據訓練模型后,務必先用故障數據進行測試,這樣才能確保結果的可靠性。
如何部署算法?
模型訓練完成后,必須使用ADI公司的在線工具集進行量化和合成。量化步驟通過舍入或截斷,將所生成模型的權重映射到更小的數值區間集合,從而減少模型存儲所需的內存。這是將神經網絡部署到較小邊緣設備的標準步驟。合成步驟將量化模型轉換成微控制器可理解的C文件。
此步驟生成三個文件,隨后必須將這些文件復制到微控制器的活動項目中,并在下次固件更新時加載。其中兩個文件(cnn.h和cnn.c)包含用于CNN配置的寄存器寫入操作,以及所加載模型的其他有用功能。第三個文件(weights.h)包含訓練(和量化)得到的模型權重。
通過有線更新(借助調試端口)或無線(OTA)更新加載新固件后,就完成了模型部署,BLE微控制器就能按需查詢模型,執行AI推理。
部署后如何使用?
一旦部署新固件,AI微控制器就會作為有限狀態機運行,通過SPI接受并響應來自BLE控制器的命令。
圖15.微控制器SPI通信。
收到推理請求時,AI微控制器會喚醒,并向加速度計請求數據。重要的一點是,它隨后會對該時間序列數據執行與訓練時相同的預處理步驟。最后,此預處理的輸出會送到已部署的神經網絡,由其報告分類結果。
圖16.AI推理狀態機。
出于省電考慮,AI微控制器被設計成在喚醒時自動執行推理。因此,BLE微控制器可以僅在需要進行分析時才啟動AI微控制器。
在典型設置中,BLE微控制器可以每天短暫地從低功耗休眠模式喚醒,請求對現有加速度計數據進行AI推理,如果數據不滿足用戶設定的條件,比如模型以99%的置信度判斷數據正常,則返回休眠模式。反之,如果數據看起來異常或無法判斷是否正常時,則BLE微控制器可以連接到附近的BLE主機并共享數據。通過這種方式,在邊緣進行分析就無需主機系統理解數據,從而節省了電池電量。
結語
本文介紹了無線振動監測系統Voyager4,它采用邊緣AI分析來提升其作為狀態監控工具的智能水平和電池續航時間。設計有效的狀態監控傳感器需要考慮多個方面。我們討論了Voyager4的硬件信號鏈、用于將不同系統元素集成在一起的固件,以及該設備作為BLE外圍設備的外觀。我們還探討了AI在Voyager中的應用,并提供了有關如何開發和部署邊緣AI模型的一些見解。
推薦閱讀:
超越傳統:空心線圈如何重塑RF與自動化領域——工程師必備選型指南