對(duì)于物聯(lián)網(wǎng)(IoT)設(shè)備的開(kāi)發(fā)人員而言,藍(lán)牙是一種快速,安全的連接路徑,無(wú)線片上系統(tǒng)(SoC)設(shè)備已成為實(shí)現(xiàn)藍(lán)牙設(shè)計(jì)的現(xiàn)成解決方案。盡管如此,上市時(shí)間的壓力仍然在增加,因此即使這些高度集成的解決方案也不盡如人意,需要時(shí)間和資源來(lái)添加完整物聯(lián)網(wǎng)設(shè)計(jì)所需的硬件和軟件。
本文介紹了藍(lán)牙 - 啟用傳感器板為即時(shí)物聯(lián)網(wǎng)解決方案提供了圣杯,也可以作為家庭或個(gè)人使用的定制無(wú)線傳感器物聯(lián)網(wǎng)設(shè)備的基礎(chǔ)。然后使用電路板的應(yīng)用程序和板載MEMS麥克風(fēng),使用代碼描述一個(gè)真實(shí)的傳感實(shí)現(xiàn)示例。
模塊簡(jiǎn)化藍(lán)牙
藍(lán)牙低功耗(BLE)提供多個(gè)優(yōu)勢(shì)包括低功耗,高安全性以及移動(dòng)平臺(tái)(包括智能手機(jī),平板電腦和筆記本電腦)的近乎普遍的可用性。雖然低成本收發(fā)器的廣泛應(yīng)用推動(dòng)了藍(lán)牙連接的快速接受,但這些收發(fā)器仍然需要在RF設(shè)計(jì)方面的重要專業(yè)知識(shí)來(lái)構(gòu)建優(yōu)化設(shè)計(jì)。
藍(lán)牙模塊簡(jiǎn)化設(shè)計(jì),提供完整的RF子系統(tǒng),需要工程師簡(jiǎn)單地集成MCU和相關(guān)的子電路,以構(gòu)建支持藍(lán)牙的系統(tǒng)。諸如Silicon Labs Gecko MCU系列等無(wú)線SoC是這一發(fā)展的最新舉措,簡(jiǎn)化了實(shí)施,同時(shí)減小了設(shè)計(jì)尺寸和成本。
例如,SiLabs EFR32MG1P Mighty Gecko MCU集成了32位ARM? Cortex?-M4內(nèi)核,存儲(chǔ)器,加密硬件加速器,DC/DC轉(zhuǎn)換器,多個(gè)外設(shè)以及用于2.4 GHz和sub-GHz通信的收發(fā)器(圖1)。
圖1:SiLabs EFR32MG1P無(wú)線SoC將完整的基于Cortex-M4的系統(tǒng)與先進(jìn)的收發(fā)器相結(jié)合,能夠支持sub-GHz和2.4 GHz通信。 (圖片來(lái)源:Silicon Labs)
無(wú)線傳感器板
高度集成,高能效的無(wú)線SoC提供了現(xiàn)成的解決方案,但仍然讓設(shè)計(jì)人員負(fù)責(zé)實(shí)現(xiàn)傳感器接口,I/O連接,電源管理和RF。在電池供電的傳感器節(jié)點(diǎn)中,每個(gè)子系統(tǒng)都需要特別注意以確保最小的功耗。特別是,當(dāng)工程師處理包括天線匹配,布局和電磁干擾減輕在內(nèi)的RF優(yōu)化問(wèn)題時(shí),RF設(shè)計(jì)要求可能會(huì)減慢項(xiàng)目進(jìn)程。
SiLabs Thunderboard Sense板為物聯(lián)網(wǎng)應(yīng)用提供了即時(shí),可擴(kuò)展的解決方案。該電路板基于EFR32MG1P無(wú)線SoC,包括六個(gè)傳感器,8-Mbit閃存和高亮度RGB LED,以及用于用戶交互的雙色LED和按鈕(圖2)。此外,Thunderboard Sense可作為參考設(shè)計(jì),用于實(shí)現(xiàn)基于上述EFR32MG1P Mighty Gecko無(wú)線SoC的定制藍(lán)牙IoT設(shè)計(jì)。
圖2:SiLabs Thunderboard Sense主板提供現(xiàn)成的電池供電的藍(lán)牙IoT設(shè)計(jì),配備了大量傳感器并以全面的軟件環(huán)境為后盾。 (圖片來(lái)源:Silicon Labs)
Thunderboard Sense的設(shè)計(jì)僅適用于插入其板載連接器的CR2032紐扣電池。實(shí)際上,該設(shè)計(jì)強(qiáng)調(diào)從MCU本身開(kāi)始的低功耗操作。 EFR32MG1P MCU在工作模式下僅消耗63μA/MHz,在DeepSleep模式下僅消耗1.4μA,從而保留RAM并保持實(shí)時(shí)時(shí)鐘運(yùn)行。
然而,在無(wú)線傳感器設(shè)計(jì)中,功率優(yōu)化要求將電源管理應(yīng)用于外部傳感器及其調(diào)理電路。 Sense板將這些外圍電路分組到電源域,并使用專用的SiLabs EFM8SB MCU作為電源和中斷控制器來(lái)管理這些域。
例如,從電路板的內(nèi)置MEMS麥克風(fēng)獲取數(shù)據(jù), EFR32MG1P MCU將0x01寫入EFM8SB外設(shè)控制器MCU中的ENV_SENSOR_CTRL寄存器。 EFM8SB反過(guò)來(lái)為低壓差(LDO)穩(wěn)壓器供電,為MEMS麥克風(fēng)和相關(guān)的模擬信號(hào)鏈供電(圖3)。接下來(lái),來(lái)自EFM8SB的中斷信號(hào)使EFR32MG1P MCU通過(guò)其集成的模數(shù)轉(zhuǎn)換器(ADC)開(kāi)始數(shù)據(jù)采集。
圖3:Thunderboard Sense使用專用的EFM8SB MCU作為電源和中斷控制器,以優(yōu)化數(shù)字和模擬傳感器的功率利用率以及在他們的調(diào)理電路中。 (圖片來(lái)源:Silicon Labs)
該板還為高功率應(yīng)用或開(kāi)發(fā)過(guò)程中的線路供電操作提供了替代供電選擇。例如,對(duì)于以高強(qiáng)度運(yùn)行板載LED的應(yīng)用,您可以通過(guò)板內(nèi)置的連接器添加外部電池。此外,您還可以通過(guò)USB連接器或Mini Simplicity連接器為電路板供電。后一種方法還允許使用外部SiLabs調(diào)試器的高級(jí)能量監(jiān)控功能執(zhí)行精確的電流測(cè)量。
起點(diǎn)
使用Sense板和隨附的應(yīng)用程序只需幾個(gè)簡(jiǎn)單的步驟。啟動(dòng)Thunderboard應(yīng)用程序(從iOS App或Google Play商店)后,您只需為Thunderboard Sense主板供電,該主板立即開(kāi)始通過(guò)藍(lán)牙進(jìn)行自我宣傳,同時(shí)閃爍綠色LED。當(dāng)Thunderboard Sense出現(xiàn)在Thunderboard應(yīng)用程序上時(shí),用戶選擇該設(shè)備并繼續(xù)使用特定應(yīng)用程序。
事實(shí)上,Thunderboard Sense主板和應(yīng)用程序?yàn)樵S多物聯(lián)網(wǎng)應(yīng)用程序提供了現(xiàn)成的解決方案。除了作為現(xiàn)成的解決方案使用外,Thunderboard Sense還提供了允許開(kāi)發(fā)人員輕松擴(kuò)展其功能的功能。除了Micro-B USB連接器和SiLabs的Mini Simplicity連接器外,Thunderboard Sense還提供了20個(gè)分線焊盤,開(kāi)發(fā)人員可以使用它們連接其他外圍設(shè)備或電路板。分線焊盤包含許多EFR32MG1P MCU I/O引腳,包括I 2 C和SPI引腳,以及主板電源,5 V電壓軌和3.3 V LDO電源軌。設(shè)計(jì)人員還可以利用EFR32MG1P MCU的靈活引腳布線來(lái)訪問(wèn)其任何集成外設(shè)。
除了作為現(xiàn)成解決方案的實(shí)用性外,Thunderboard Sense硬件和附帶軟件提供了一個(gè)起點(diǎn)用于自定義IoT應(yīng)用程序。該設(shè)計(jì)解決了與I 2 C和SPI數(shù)字傳感器以及模擬外設(shè)和RF天線相關(guān)的常見(jiàn)接口問(wèn)題。為了幫助加速基于Sense板的定制設(shè)計(jì)的開(kāi)發(fā),SiLabs為每個(gè)外設(shè)和IO提供完整的原理圖,包括一個(gè)合適的2.4 GHz匹配網(wǎng)絡(luò),將MCU的2.4 GHz RF I/O引腳連接到板載芯片天線。
例如,MEMS麥克風(fēng)電路的原理圖為MEMS麥克風(fēng)輸出提供了模擬信號(hào)鏈的完整設(shè)計(jì)。在該電路中,德州儀器TLV342S運(yùn)算放大器用于32.1 dB增益放大器級(jí)和用于Knowles SPV1840 MEMS麥克風(fēng)輸出的一階有源低通濾波器(圖4)。該設(shè)計(jì)將信號(hào)鏈的MIC輸出連接到MCU的12位逐次逼近寄存器(SAR)ADC,用于麥克風(fēng)數(shù)據(jù)采集。
圖4:除了Thunderboard Sense工具包的硬件和軟件外,Silicon Labs還提供裝配圖,材料清單和完整的原理圖,例如這種模擬信號(hào)調(diào)理電路用于MEMS麥克風(fēng)信號(hào)采集。 (圖片來(lái)源:Silicon Labs)
軟件設(shè)計(jì)和調(diào)試
Silicon Labs支持Thunderboard Sense套件,其中包含一系列可用于其免費(fèi)Simplicity Studio開(kāi)發(fā)環(huán)境的軟件庫(kù)。除了用于MCU硬件功能的軟件庫(kù)外,該軟件包還包括用于Thunderboard Sense的板級(jí)支持包(BSP)以及隨附的示例C代碼。例如,SenseApp模塊提供了一個(gè)BLE應(yīng)用程序,可將數(shù)據(jù)從其全套傳感器傳輸?shù)?a href="http://www.wenjunhu.com/v/" target="_blank">智能手機(jī)應(yīng)用程序。
除了作為正常運(yùn)行的應(yīng)用程序之外,SenseApp代碼還說(shuō)明了基于EFR32MG1P MCU實(shí)現(xiàn)IoT傳感器設(shè)計(jì)的關(guān)鍵軟件設(shè)計(jì)模式。例如,BLE堆棧接管實(shí)時(shí)時(shí)鐘,防止其用于應(yīng)用程序本身的定時(shí)事件。 SenseApp示例代碼演示了如何使用MCU軟件定時(shí)器定期輪詢各種軟件功能,包括傳感器數(shù)據(jù)捕獲功能。
在SenseApp應(yīng)用程序中,主程序啟動(dòng)設(shè)備并開(kāi)始等待無(wú)限循環(huán)對(duì)于一個(gè)事件并調(diào)用一個(gè)應(yīng)用程序事件處理程序來(lái)處理該事件(清單1)。
復(fù)制
while(1){
struct gecko_cmd_packet * evt;
/*檢查堆棧事件。 */
evt = gecko_wait_event();
/*運(yùn)行應(yīng)用程序和事件處理程序。 */
appHandleEvents(evt);
}
清單1:SenseApp主程序中的實(shí)用程序循環(huán)不斷循環(huán),將事件移交給事件處理程序以調(diào)用傳感器采樣等操作。 (列表來(lái)源:Silicon Labs)
位于app.c中, appHandleEvents 調(diào)用 RADIO_bleStackLoopIteration()(位于radio_ble.c中),如果設(shè)備是不在藍(lán)牙廣告模式。如果連接處于活動(dòng)狀態(tài),則此例程輪流調(diào)用 connectionActiveIteration()(在radio_ble.c中),它提供核心數(shù)據(jù)采樣功能。
connectionActiveIteration( )例程檢查板載按鈕的狀態(tài),并定期調(diào)用負(fù)責(zé)更新每個(gè)板傳感器數(shù)據(jù)的服務(wù)程序。最后,此例程檢查麥克風(fēng)活動(dòng),如果麥克風(fēng)處于活動(dòng)狀態(tài),它會(huì)通過(guò)設(shè)置聲級(jí)并通過(guò)調(diào)用 MIC_start()函數(shù)啟動(dòng)麥克風(fēng)數(shù)據(jù)采集來(lái)啟動(dòng)麥克風(fēng)數(shù)據(jù)采集(清單2)
<跨度>復(fù)制 <代碼>
**************************** **************************************************/
void MIC_start(uint32_t nSamples)
{
if(nSamples> sampleBufferLen){
sampleCount = sampleBufferLen;
}
else {
sampleCount = nSamples;
}
if(!dmaBusy){
/*配置DMA */
DMADRV_PeripheralMemory(dmadrvChannelId,//channelId
dmadrvPeripheralSignal_ADC0_SCAN,//peripheralSignal
(void *)sampleBuffer,//* dst
(void *)&amp;(ADC0 - > SCANDATA),//* src
true,//dstInc
sampleCount,//len
dmadrvDataSize2,//size
dmaCompleteCallback,//callback
NULL);//* cbUserParam
adcEnable(true);
dmaBusy = true;
sampleBufferReady = false;
< p>}
返回;
}
清單2:mic.c模塊位于BSP包中,包括麥克風(fēng)支持例程,包括 MIC_start()例程,通過(guò)從MCU的片上ADC啟動(dòng)DMA傳輸來(lái)執(zhí)行麥克風(fēng)數(shù)據(jù)采集。 (列表來(lái)源:Silicon Labs)
MIC_start()例程啟動(dòng)來(lái)自MCU的片上ADC( dmadrvPeripheralSignal_ADC0_SCAN)的DMA傳輸,使用dmadrv.c模塊中的 DMADRV_PeripheralMemory 例程。 (如前所述,MEMS麥克風(fēng)信號(hào)鏈的輸出與MCU ADC相連。)該模塊是github上可用的SiLabs emdrv EnergyAware驅(qū)動(dòng)程序庫(kù)的一部分。
完成ADC數(shù)據(jù)采集后序列, dmaCompleteCallback()回調(diào)例程禁用進(jìn)一步的ADC采樣,并為下一輪采樣準(zhǔn)備設(shè)備。超越這個(gè)基本應(yīng)用程序,開(kāi)發(fā)人員可以構(gòu)建這些代碼示例和基本設(shè)計(jì)模式,以實(shí)現(xiàn)更復(fù)雜的應(yīng)用程序特定功能。
結(jié)論
藍(lán)牙低功耗提供了一個(gè)特別引人注目的連接選項(xiàng)用于設(shè)計(jì)用于移動(dòng)應(yīng)用程序的物聯(lián)網(wǎng)應(yīng)用程序。盡管無(wú)線SoC減輕了設(shè)計(jì)負(fù)擔(dān),但即使是這些高度集成的設(shè)備也需要額外的工作來(lái)實(shí)現(xiàn)全功能物聯(lián)網(wǎng)設(shè)計(jì)所需的其他硬件和軟件組件。 SiLabs Thunderboard Sense套件基于Silicon Labs Mighty Gecko無(wú)線SoC,為移動(dòng)連接的物聯(lián)網(wǎng)設(shè)備提供完整的現(xiàn)成解決方案,并作為更復(fù)雜的定制物聯(lián)網(wǎng)設(shè)計(jì)的起點(diǎn)。
-
傳感器
+關(guān)注
關(guān)注
2552文章
51228瀏覽量
754651 -
藍(lán)牙
+關(guān)注
關(guān)注
114文章
5835瀏覽量
170617 -
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2910文章
44752瀏覽量
374561
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論