創(chuàng)建眾多傳感器設(shè)計(jì)所通用基本系統(tǒng)
打造新的多傳感器系統(tǒng)可能是一項(xiàng)艱苦工作,因?yàn)槟仨毚_保設(shè)計(jì)符合傳感器的特定要求,并做到長(zhǎng)期的準(zhǔn)確性和可靠性。 當(dāng)根據(jù)應(yīng)用的要求,需要更多無(wú)線連接時(shí),設(shè)計(jì)師很難提供這樣一種解決方案——既能最大限度提高無(wú)線電靈敏度,擴(kuò)大其覆蓋范圍,又能維持無(wú)噪聲信號(hào)鏈運(yùn)行。 專為傳感器應(yīng)用而設(shè)計(jì)的單板計(jì)算機(jī) (SBC) 可提供出色的解決方案,來(lái)滿足無(wú)線傳感器的復(fù)雜要求,而不影響緊湊的項(xiàng)目時(shí)間表。
通常,傳感器系統(tǒng)設(shè)計(jì)會(huì)將微控制器 (MCU) 與更多的模擬電路與數(shù)字控制邏輯相結(jié)合,后者用于準(zhǔn)確可靠地獲取并發(fā)送傳感器數(shù)據(jù)(圖 1)。 SBC 可通過(guò)提供結(jié)合軟硬件與傳感器應(yīng)用開(kāi)發(fā)工具的測(cè)試平臺(tái),來(lái)加快這些系統(tǒng)的設(shè)計(jì)。 開(kāi)發(fā)人員可以專注于優(yōu)化所需的特性與功能以滿足其獨(dú)特應(yīng)用的特定要求,而不必花時(shí)間重新創(chuàng)建眾多傳感器設(shè)計(jì)所通用的基本系統(tǒng)。
用于傳感器信號(hào)采集的 Texas Instruments 微控制器 (MCU) 和模擬前端 (AFE) 的圖片
圖 1: 大多數(shù)傳感器系統(tǒng)都采用共同的設(shè)計(jì),其中包含用于傳感器信號(hào)采集的微控制器 (MCU) 和模擬前端 (AFE)、用于將傳感器數(shù)據(jù)發(fā)送至其他設(shè)備或主機(jī)系統(tǒng)的通信子系統(tǒng)。 (圖片: Texas Instruments)
Texas Instruments 和 NXP 推出的專業(yè)板級(jí)系統(tǒng)專門(mén)用于傳感器應(yīng)用,結(jié)合了無(wú)線傳感器硬件和專業(yè)軟件庫(kù),以及能幫助加快設(shè)計(jì)和測(cè)試這些應(yīng)用的完整開(kāi)發(fā)環(huán)境。
緊密集成的 SBC
Texas Instruments SensorTag 提供一種緊密集成的解決方案,可以在僅 5 x 6.7 x 1.4 cm 的封裝內(nèi)提供全面的傳感器處理系統(tǒng)。 SensorTag 基于 TI CC2650 無(wú)線 MCU 的功能構(gòu)建,并增加了一些必要的元器件,用于連接 CC2650 與在 SensorTag 板上構(gòu)建的多個(gè)傳感器和用戶接口備(圖 2)。
Texas Instruments CC2650 無(wú)線 MCU 的圖片
圖 2:Texas Instruments SensorTag 利用 TI CC2650 無(wú)線 MCU 的無(wú)線通信及傳感器處理的集成功能,為傳感器應(yīng)用的快速開(kāi)發(fā)提供多個(gè)傳感器和接口。 (資料: Texas Instruments)
TI SensorTag 專門(mén)用于所連接傳感器應(yīng)用的快速開(kāi)發(fā),是一個(gè)全面的、可支持許多不同開(kāi)發(fā)風(fēng)格的開(kāi)發(fā)套件。 實(shí)際上,開(kāi)發(fā)人員使用其默認(rèn)模式就可以開(kāi)始快速處理傳感器數(shù)據(jù)。 在以默認(rèn)模式啟動(dòng)后,SensorTag 會(huì)向智能手機(jī)等支持低功耗藍(lán)牙的核心設(shè)備廣播自己。 開(kāi)發(fā)人員通過(guò)云端從 SensorTag 即可訪問(wèn)傳感器數(shù)據(jù),或者使用 JavaScript 和 jQuery 直接訪問(wèn)數(shù)據(jù)。 在此模式下,開(kāi)發(fā)人員可以使用 Android 或 iOS 移動(dòng)應(yīng)用作為起點(diǎn),或根據(jù)與套件一起提供的網(wǎng)絡(luò)應(yīng)用項(xiàng)目樣例中的源代碼寫(xiě)入獨(dú)立于 HTML5 平臺(tái)的代碼。
對(duì)于更復(fù)雜的定制應(yīng)用,SensorTag 硬件會(huì)提供一個(gè)基于開(kāi)放式硬件解決方案構(gòu)建的高級(jí)開(kāi)發(fā)平臺(tái)。其中,開(kāi)放式硬件解決方案旨在展示如何使用多樣化低功耗傳感器。 開(kāi)發(fā)人員可以使用稱為 DevPack 的子卡進(jìn)一步擴(kuò)展 SensorTag,這使設(shè)計(jì)和測(cè)試其他類型的傳感器和致動(dòng)器變得容易。 需要特別說(shuō)明的是,SensorTag 和可用的 Debug DevPack 結(jié)合后,可提供一個(gè)實(shí)惠、全面的平臺(tái),用于為傳感器應(yīng)用開(kāi)發(fā)定制軟硬件(圖 3)。
Texas Instruments SensorTag Debugger DevPack 的圖片
圖 3:Texas Instruments 的 SensorTag Debugger DevPack 用于為 SensorTag 增加測(cè)試和調(diào)試功能,包括 JTAG 調(diào)試功能、可簡(jiǎn)化硬件添加的 Grove 連接焊盤(pán)(例如添加 Seeed Technology 的 Grove 指紋傳感器時(shí))。 (圖片:Texas Instruments)
對(duì)于無(wú)線部署,SensorTag 套件包括低功耗藍(lán)牙 (BLE) 堆棧,進(jìn)而在 TI 實(shí)時(shí)操作系統(tǒng) (TI-RTOS) 軟件環(huán)境中運(yùn)行。 TI-RTOS 是一個(gè)實(shí)時(shí)、先占式、多線程操作系統(tǒng),可以同步執(zhí)行應(yīng)用程序與 BLE 協(xié)議棧,此二者皆在 RTOS 內(nèi)作為單獨(dú)任務(wù)運(yùn)行。 在此,BLE 堆棧按最高優(yōu)先順序運(yùn)行,以幫助確??煽客ㄐ?。
在 SensorTag 中,無(wú)線事務(wù)本身利用 CC2650 的集成 RF 核心,其中包括與模擬 RF 及基帶電路集成的 ARM? Cortex?-M0 處理器。 盡管工程師無(wú)法對(duì) RF 核心的 M0 處理器進(jìn)行編程,但 TI 提供高級(jí)別、基于命令的應(yīng)用編程接口 (API),可實(shí)現(xiàn)從主處理器上運(yùn)行的代碼發(fā)布命令至 RF 核心。 RF 核心轉(zhuǎn)而使用其專用的 4 KB SRAM(用于數(shù)據(jù))和 ROM(用于代碼),以自主方式處理無(wú)線協(xié)議的時(shí)間關(guān)鍵型部分——減輕主 CPU 的負(fù)載,并保留資源供應(yīng)用本身使用。
簡(jiǎn)化的軟件開(kāi)發(fā)
借助 CC2650 中的集成自主處理器——傳感器控制器引擎 (SCE),傳感器信號(hào)的處理可以同樣高效。 正如 RF 核心可獨(dú)立地執(zhí)行無(wú)線事務(wù),SCE 可獨(dú)立于主處理器控制傳感器和關(guān)聯(lián)的外設(shè)。 因此,SCE 可以運(yùn)行模數(shù)轉(zhuǎn)換器 (ADC) 或通過(guò)集成的串行外設(shè)接口 (SPI) 輪詢數(shù)字傳感器而不用喚醒主處理器,從而消除了采集傳感器數(shù)據(jù)所需的的額外功耗和喚醒時(shí)間。
與 RF 核心不同,工程師可以對(duì) SCE 進(jìn)行編程。 通過(guò)使用類 C 語(yǔ)言,開(kāi)發(fā)人員可以編寫(xiě)定制代碼來(lái)執(zhí)行傳感器輪詢或應(yīng)對(duì)特殊條件和處理要求。 因此,開(kāi)發(fā)人員可以創(chuàng)建更多動(dòng)態(tài)傳感器處理功能,而不必依靠為傳感器數(shù)據(jù)采集設(shè)置外設(shè)時(shí)常用的這種靜態(tài)配置。 TI 針對(duì)傳感器代碼部署提供 Sensor Controller Studio (SCS),這是一種用于為 SCE 編寫(xiě)、測(cè)試和調(diào)試代碼的特殊軟件工具(圖 4)。
Texas Instruments 的 Sensor Controller Studio 軟件
圖 4:開(kāi)發(fā)人員使用 TI Sensor Controller Studio 軟件開(kāi)發(fā)工具和類 C 語(yǔ)言對(duì) CC2650 的集成傳感器控制器引擎進(jìn)行編程。 這會(huì)生成 C 源代碼,以納入專門(mén)在 CC2650 無(wú)線 MCU 上運(yùn)行的主要應(yīng)用中。 (圖片: Texas Instruments)
SCS 會(huì)生成傳感器控制器接口驅(qū)動(dòng)程序,即一組 C 源文件。 開(kāi)發(fā)人員會(huì)轉(zhuǎn)而使用 TI Code Composer Studio (CCS) 編譯這些 C 源文件,其中的任何其他定制代碼專門(mén)作為主要應(yīng)用的一部分在 CC2650 的 ARM Cortex-M3 主機(jī)處理器上運(yùn)行。
CCS 是一個(gè)基于 Eclipse 的集成開(kāi)發(fā)環(huán)境 (IDE),為 TI MCU 系列的應(yīng)用開(kāi)發(fā)和調(diào)試提供給了全套工具。 在其開(kāi)發(fā)功能中,Code Composer Studio 包括一個(gè)不斷優(yōu)化的 C/C++ 編譯器、源代碼編輯器、項(xiàng)目構(gòu)建環(huán)境、調(diào)試器和分析器——全部通過(guò) IDE 的單用戶接口訪問(wèn),該接口旨在方便開(kāi)發(fā)人員完成應(yīng)用程序開(kāi)發(fā)的每個(gè)階段。
靈活的傳感器解決方案
NXP 為其 OM13078 傳感器處理運(yùn)動(dòng)解決方案 (SPM-S) 采取了不同的方法。 SPM-S 以 NXP LPC54102 MCU 為基礎(chǔ),結(jié)合了 NXP 的 OM13077 LPCXpresso 板與通過(guò) LPCXpresso 的擴(kuò)展接口連接的傳感器擴(kuò)展板(圖 5)。 如圖所示,傳感器擴(kuò)展板包括一個(gè)用于無(wú)線通信的 BLE 模塊 (AMS0002) 和多個(gè)用于溫度、壓力、環(huán)境光和距離的傳感器,以及用于更復(fù)雜的運(yùn)動(dòng)檢測(cè)應(yīng)用的加速計(jì)、陀螺儀和磁力儀傳感器。
NXP LPC54102 LPCXpresso 板的圖片
圖 5:NXP 提供了一種傳感器解決方案。該方案結(jié)合了 LPC54102 LPCXpresso 板與裝載多個(gè)傳感器的擴(kuò)展板,以及包括完整傳感器軟件庫(kù)的全套開(kāi)發(fā)環(huán)境。 (圖片: NXP)
對(duì)于隨附的運(yùn)行時(shí)間軟件環(huán)境,NXP 提供其 LPC 傳感器框架,其中包括系統(tǒng)軟件和傳感器處理軟件(圖 6)。 正常操作期間,LPC54102 MCU 會(huì)對(duì)傳感器進(jìn)行采樣,并使用 Bosch Sensortec BSX Lite 庫(kù)處理傳感器數(shù)據(jù)。 通過(guò)無(wú)線 BLE 通信或 LPCXpresso 板支持的多個(gè)主機(jī)接口中的任一接口,可將結(jié)果進(jìn)一步發(fā)送至其他設(shè)備或主機(jī)處理器。
Bosch Sensortec BSX Lite 庫(kù)的圖片
圖 6:開(kāi)發(fā)人員在 NXP 的 LPC 傳感器框架上構(gòu)建傳感器應(yīng)用,該框架提供全面的運(yùn)行時(shí)間環(huán)境,包括系統(tǒng)服務(wù)和傳感器信號(hào)處理,以及通過(guò) Bosch Sensortec BSX Lite 庫(kù)對(duì)傳感器融合應(yīng)用的內(nèi)置支持功能。 (圖片: NXP)
傳感器融合架構(gòu)
除了從多個(gè)傳感器收集數(shù)據(jù)的基本功能外,SPM-S 解決方案還具有通過(guò)專為高級(jí)情境感知應(yīng)用而設(shè)計(jì)的傳感器融合算法合并多個(gè)傳感器輸出的能力,因此在眾多解決方案中脫穎而出。 傳感器融合功能結(jié)合了多個(gè)傳感器的結(jié)果,可提供無(wú)法從任何單個(gè)傳感器獲得的信息。 例如,專門(mén)識(shí)別方向的應(yīng)用需要加速計(jì)、磁力儀和陀螺儀傳感器的組合結(jié)果。 NXP 專門(mén)設(shè)計(jì)了 SPM-S 系統(tǒng),以使用系統(tǒng)中包括的傳感器融合軟件來(lái)匯總多個(gè)實(shí)體傳感器的數(shù)據(jù)。
SPM-S 架構(gòu)中深度嵌入了對(duì)傳感器融合的支持功能。 正如典型的傳感器系統(tǒng)那樣,SPM-S 架構(gòu)會(huì)將傳感器設(shè)備識(shí)別為連接至 SPM-S 硬件的獨(dú)特實(shí)體設(shè)備。 軟件使用 sensors.h 傳感器頭文件中提供的唯一 ID 訪問(wèn)每個(gè)設(shè)備(圖 7)。
傳感器頭文件中的 PhysSensorId 計(jì)數(shù)器的圖片
圖 7:每個(gè)實(shí)體傳感器都可以通過(guò)傳感器頭文件 sensors.h 中的 PhysSensorId 計(jì)數(shù)器中定義的唯一傳感器 ID 來(lái)識(shí)別。 (圖片: NXP)
要在應(yīng)用層級(jí)支持傳感器融合,SPM-S 架構(gòu)可利用其在底層軟件層支持虛擬傳感器來(lái)擴(kuò)展此基本概念。 單個(gè)虛擬傳感器包含多個(gè)物實(shí)體傳感器,這些傳感器的結(jié)果按照傳感器融合算法合并后產(chǎn)生新信息。
例如,對(duì)計(jì)算方向信息所需的加速度計(jì)、磁力儀和陀螺儀傳感器數(shù)據(jù)進(jìn)行合并而產(chǎn)生的傳感器融合結(jié)果,會(huì)由虛擬方向傳感器傳回。 在 SPM-S 開(kāi)發(fā)環(huán)境中,開(kāi)發(fā)人員可以指定系統(tǒng)的 SensorMap 陣列中的虛擬傳感器(圖 8)。 在此陣列中,會(huì)將每個(gè)虛擬傳感器列為單個(gè)條目,并由該條目指定該虛擬傳感器使用哪些實(shí)體傳感器。
NXP SensorMap 陣列的圖片
圖 8: SensorMap 陣列描述了向虛擬傳感器提供數(shù)據(jù)的物理傳感器。 例如,方向的虛擬傳感器使用加速計(jì)、磁力儀和陀螺儀等實(shí)體傳感器。 (圖片: NXP)
SPM-S 架構(gòu)中的另一個(gè)深度嵌入功能,可以在一個(gè)虛擬傳感器中結(jié)合多個(gè)傳感器的結(jié)果時(shí)幫助維持同步。
準(zhǔn)確的傳感器融合結(jié)果需要準(zhǔn)確計(jì)時(shí),以確保按傳感器融合算法只合并相同“時(shí)間點(diǎn)”的樣本。 在 SPM-S 中的中斷驅(qū)動(dòng)采樣期間,傳感器會(huì)按預(yù)先定義的速率自主采樣并在結(jié)果就緒時(shí)產(chǎn)生中斷。 每個(gè)中斷驅(qū)動(dòng)的傳感器都有關(guān)聯(lián)的中斷處理程序,中斷處理程序只是在發(fā)生中斷時(shí)存儲(chǔ)時(shí)間戳;實(shí)際的傳感器結(jié)果讀取在后續(xù)服務(wù)程序中執(zhí)行。 此方法有助于維護(hù)所需的準(zhǔn)確時(shí)序數(shù)據(jù),以從多個(gè)單獨(dú)物理傳感器的數(shù)據(jù)生成準(zhǔn)確的虛擬傳感器結(jié)果。