隨著用戶越來越熟悉物聯(lián)網(wǎng)(IoT)的應(yīng)用程序,開發(fā)人員需要通過能夠證明新概念或競(jìng)爭(zhēng)產(chǎn)品的全功能原型快速響應(yīng)新興機(jī)會(huì)。然而,大多數(shù)物聯(lián)網(wǎng)開發(fā)解決方案需要付出巨大努力才能使它們正常工作,特別是在軟件方面。
為了加快這一過程,開發(fā)人員需要一個(gè)能夠消除許多現(xiàn)有障礙的物聯(lián)網(wǎng)開發(fā)解決方案,從而減緩響應(yīng)速度適應(yīng)新物聯(lián)網(wǎng)應(yīng)用的機(jī)會(huì)。 Nordic Semiconductor的快速開發(fā)套件滿足了這一需求,為藍(lán)牙連接的無線傳感器設(shè)計(jì)提供了完整的硬件/軟件解決方案。
本文將討論設(shè)計(jì)要求,介紹合適的藍(lán)牙無線解決方案,并指導(dǎo)開發(fā)人員如何快速啟動(dòng)和運(yùn)行。
無線物聯(lián)網(wǎng)設(shè)備要求和解決方案選項(xiàng)
作為高端物聯(lián)網(wǎng)應(yīng)用的數(shù)據(jù)源,無線傳感器系統(tǒng)需要滿足廣泛需求一系列復(fù)雜的要求。在這些要求中,對(duì)藍(lán)牙連接的期望不斷提高,以及用戶對(duì)通過智能手機(jī)應(yīng)用輕松實(shí)現(xiàn)物聯(lián)網(wǎng)監(jiān)控的期望。半導(dǎo)體制造商通過一系列解決方案(包括藍(lán)牙收發(fā)器IC,模塊和片上系統(tǒng)(SoC)器件)滿足了這一日益增長(zhǎng)的需求。
雖然每種解決方案都滿足不同類別的應(yīng)用要求,但藍(lán)牙SoC已經(jīng)成為可穿戴設(shè)備和微型物聯(lián)網(wǎng)設(shè)備的一個(gè)特別有吸引力的解決方案。通過集成藍(lán)牙通信子系統(tǒng),這些設(shè)備可在不影響功能和性能的前提下,降低BOM,占地面積小,功耗最小。
在此類設(shè)備中,Nordic Semiconductor nRF52832藍(lán)牙SoC將處理器核心和無線電子系統(tǒng)與靈活的軟件架構(gòu)集成在一起,旨在簡(jiǎn)化無線系統(tǒng)的開發(fā)。
無線MCU
基于32位ARM ? Cortex ? -M4F內(nèi)核,Nordic nRF52832具有嵌入式2.4 GHz收發(fā)器,能夠支持包括藍(lán)牙低功耗(BLE)在內(nèi)的標(biāo)準(zhǔn)協(xié)議和ANT,以及專有協(xié)議。在其外設(shè)中,該器件集成了模擬比較器和8通道可編程增益12位模數(shù)轉(zhuǎn)換器(ADC),以及3個(gè)實(shí)時(shí)計(jì)數(shù)器(RTC),32個(gè)GPIO,多個(gè)脈沖寬度調(diào)制器(PWM)通道和串行接口。
片上可編程外設(shè)互連(PPI)矩陣使這些外設(shè)能夠同步其活動(dòng),直接交互或通過直接內(nèi)存訪問(DMA)進(jìn)行交互,無需處理器干預(yù)。此外,該器件還集成了多個(gè)硬件模塊,用于高級(jí)功能,包括正交解碼,AES加密和藍(lán)牙加密服務(wù)的加速地址解析等。
該器件的功耗為58μA/MHz 512 Kbyte閃存或51.6μA/MHz從其64 KB RAM運(yùn)行。多種低功耗模式使開發(fā)人員能夠在應(yīng)用程序處于非活動(dòng)狀態(tài)時(shí)降低功耗。例如,器件在低功耗空閑狀態(tài)下僅消耗1.5μA,其中器件保持完全RAM狀態(tài)并且能夠在任何事件中喚醒。實(shí)際上,開發(fā)人員可以將設(shè)備置于特殊的恒定延遲子模式,以確保CPU喚醒和PPI子系統(tǒng)響應(yīng)的持續(xù)時(shí)間最短。利用其靈活的工作模式,外設(shè)和片上硬件模塊,開發(fā)人員可以對(duì)nRF52832進(jìn)行編程,以滿足功耗,性能和功能要求的特定組合。
通信服務(wù)
對(duì)于其所有集成功能,nRF52832和Nordic nRF52系列其他成員最顯著的特點(diǎn)之一是其通信服務(wù)架構(gòu)。 Nordic在早期的無線SoC系列中引入了SoftDevice架構(gòu),以減少開發(fā)人員使用通信協(xié)議棧時(shí)的摩擦。
SoftDevice體系結(jié)構(gòu)作為可更新的固件實(shí)現(xiàn),它通過提供程序員可以利用的預(yù)先測(cè)試的服務(wù)層來簡(jiǎn)化軟件開發(fā),而不會(huì)使自己的開發(fā)過程復(fù)雜化。對(duì)于BLE應(yīng)用,Nordic的S132 SoftDevice提供了完整的藍(lán)牙協(xié)議棧(圖1)。
圖1:Nordic Bluetooth SoftDevice實(shí)現(xiàn)了完整的藍(lán)牙協(xié)議作為固件堆棧,提供全套服務(wù),無需開發(fā)人員將協(xié)議棧庫(kù)鏈接到其應(yīng)用程序。 (圖片來源:Nordic Semiconductor)
SoftDevice不僅僅是一個(gè)簡(jiǎn)單的軟件層,它使用復(fù)雜的基于中斷的模型,允許開發(fā)人員在開發(fā)過程中使用SoftDevice服務(wù)而無需將SoftDevice代碼鏈接到他們的應(yīng)用程序中。開發(fā)人員只需使用一組C語言API頭文件中定義的一系列Supervisor調(diào)用(SVC)訪問SoftDevice應(yīng)用程序編程接口(API)。
SVC實(shí)現(xiàn)為軟件觸發(fā)的中斷,因此當(dāng)開發(fā)人員調(diào)用API函數(shù),SoftDevice SVC中斷處理程序找到正確的SoftDevice函數(shù)并將函數(shù)參數(shù)傳遞給它,使用回調(diào)函數(shù)返回結(jié)果。這種方法消除了在構(gòu)建時(shí)鏈接SoftDevice資源地址的需要,同時(shí)還提供了線程安全的服務(wù)實(shí)現(xiàn)。
為了實(shí)現(xiàn)這個(gè)模型,Nordic將SoftDevice與低級(jí)中斷機(jī)制和硬件資源聯(lián)系起來。較低級(jí)別的中斷冒泡到SoftDevice,它使用保留的IRQ將應(yīng)用程序特定的中斷傳遞給應(yīng)用程序,并自行處理剩余的中斷。此外,作為其服務(wù)職責(zé)的一部分,SoftDevice直接訪問設(shè)備硬件,包括無線電和其他外圍設(shè)備。
為了避免可能爭(zhēng)用共享硬件資源,Nordic提供了一個(gè)時(shí)間段功能,可以調(diào)度資源之間的資源分配。 SoftDevice和定義的時(shí)間間隔內(nèi)的應(yīng)用程序。應(yīng)用程序可以在給定時(shí)間請(qǐng)求最早的時(shí)間段或一個(gè)時(shí)間段。盡管這種機(jī)制具有潛在的復(fù)雜性,但Nordic的API減少了應(yīng)用程序?qū)σ恍└呒?jí)調(diào)用的負(fù)擔(dān)。例如,應(yīng)用程序可以通過打開無線電會(huì)話(清單1)以及實(shí)際廣告操作的回調(diào)(清單2)來啟動(dòng)信標(biāo)。在每次傳遞期間,回調(diào)遞增一個(gè)簡(jiǎn)單的枚舉類型(清單3)以逐步執(zhí)行一系列狀態(tài),直到廣告過程完成( mode == ADV_DONE )。
復(fù)制 void app_beacon_start(void){if(m_beacon.is_running || m_beacon.keep_running){return; } DEBUG_PRINTF(0,“app_beacon_start:\ r \ n”); m_beacon.keep_running = true; m_beacon.is_running = true; uint32_t err_code = sd_radio_session_open(m_timeslot_callback); if((err_code!= NRF_SUCCESS)&&(m_beacon.error_handler!= NULL)){m_beacon.error_handler(err_code); } err_code = m_request_earliest(NRF_RADIO_PRIORITY_NORMAL); if((err_code!= NRF_SUCCESS)&&(m_beacon.error_handler!= NULL)){m_beacon.error_handler(err_code);清單1:Thingy軟件包包括示例例程,例如 app_beacon_start ,它演示與SoftDevice的交互以創(chuàng)建具有特定回調(diào)的無線電會(huì)話( m_timeslot_callback )并請(qǐng)求最早的可用無線電時(shí)隙用于信標(biāo)傳輸( m_request_earliest )。 (代碼來源:Nordic Semiconductor)
復(fù)制 static nrf_radio_signal_callback_return_param_t * m_timeslot_callback(uint8_t signal_type){static nrf_radio_signal_callback_return_param_t signal_callback_return_param; static enum mode_t mode; signal_callback_return_param.params.request.p_next = NULL; signal_callback_return_param.callback_action = NRF_RADIO_SIGNAL_CALLBACK_ACTION_NONE; switch(signal_type){case NRF_RADIO_CALLBACK_SIGNAL_TYPE_START:m_handle_start(); mode = ADV_INIT;模式++;打破; case NRF_RADIO_CALLBACK_SIGNAL_TYPE_RADIO:if(NRF_RADIO-> EVENTS_DISABLED == 1){NRF_RADIO-> EVENTS_DISABLED = 0; m_handle_radio_disabled(模式); if(mode == ADV_DONE){DEBUG_PRINTF(0,“app_beacon_adv_done:\ r \ n”); NRF_PPI-> CHENCLR =(1 << 8); if(m_beacon.keep_running){signal_callback_return_param.params.request.p_next = m_configure_next_event(); signal_callback_return_param.callback_action = NRF_RADIO_SIGNAL_CALLBACK_ACTION_REQUEST_AND_END; } else {signal_callback_return_param.callback_action = NRF_RADIO_SIGNAL_CALLBACK_ACTION_END;打破} mode ++;打破default:if(m_beacon.error_handler!= NULL){m_beacon.error_handler(NRF_ERROR_INVALID_STATE);打破} return(&amp; signal_callback_return_param);}
清單2:Thingy軟件包提供了樣本軟件,它提供了代表性的設(shè)計(jì)模式,例如使用此處顯示的回調(diào)例程來執(zhí)行一系列信標(biāo)廣告的無線電操作。 (代碼來源:Nordic Semiconductor)
復(fù)制 enum mode_t {ADV_INIT,/**初始化。 */ADV_RX_CH37,/**在Rx頻道37上做廣告。*/ADV_RX_CH38,/**在Rx頻道38上做廣告。*/ADV_RX_CH39,/**在Rx頻道39上做廣告。*/ADV_DONE/**完成廣告。 */};
清單3:Thingy軟件包中的示例回調(diào)例程使用此枚舉類型在信標(biāo)通告序列期間使系統(tǒng)走過一系列階段。 (代碼來源:Nordic Semiconductor)
nRF52832的SoftDevice服務(wù)和集成硬件功能為無線傳感器系統(tǒng)的開發(fā)提供了有效的基礎(chǔ),且零件數(shù)量最少。然而,這些SoC器件的復(fù)雜性可以為設(shè)計(jì)人員提供實(shí)現(xiàn)傳感器設(shè)計(jì)的重要學(xué)習(xí)曲線,更不用說完整的物聯(lián)網(wǎng)應(yīng)用。 Nordic Semiconductor NRF6936 Thingy:52 IoT傳感器套件可幫助開發(fā)人員顯著縮短開發(fā)有用的藍(lán)牙連接傳感器系統(tǒng)所需的時(shí)間。
快速開發(fā)Thingy
Nordic Thingy:52套件優(yōu)惠用于無線傳感器設(shè)計(jì)的快速原型解決方案。該套件基于nRF52832藍(lán)牙SoC,旨在提供開箱即用的全部功能,無需硬件或固件開發(fā)即可實(shí)現(xiàn)帶有連接移動(dòng)應(yīng)用程序的物聯(lián)網(wǎng)傳感器解決方案。
其功能中, nRF6936板包括一個(gè)完整的傳感器套件,包括:
Rohm Semiconductor BH1745色彩傳感器
STMicroelectronics HTS221濕度傳感器
STMicroelectronics LPS22HB壓力傳感器
ams CCS811氣體傳感器
STMicroelectronics MP34DB02 MEMS麥克風(fēng)
TDK InvenSense MPU-9250慣性測(cè)量單元(IMU)傳感器
與...用于完整9軸運(yùn)動(dòng)跟蹤的MPU-9250 IMU,Thingy板包括一個(gè)獨(dú)立的專用運(yùn)動(dòng)傳感器,STMicroelectronics LIS3DH加速度計(jì),用于喚醒系統(tǒng)運(yùn)動(dòng)。 LIS3DH直接從板載穩(wěn)壓器獲取電源,確保無論VDD狀態(tài)如何都能保持供電。參考設(shè)計(jì)包括原理圖,顯示LIS3DH如何保持隔離,通過設(shè)計(jì)中提供的外部I 2 C總線連接以支持外部硬件(圖2)。
圖2:Thingy參考設(shè)計(jì)提供完整的原理圖并演示設(shè)計(jì)技術(shù),例如使用STMicroelectronics LIS3DH加速度計(jì)在移動(dòng)時(shí)喚醒空閑MCU。 (圖片來源:Nordic Semiconductor)
如圖2所示,此設(shè)計(jì)中使用的智能傳感器降低了復(fù)雜性,需要與主機(jī)進(jìn)行簡(jiǎn)單的雙線I 2 C連接。通過這種參考設(shè)計(jì),Nordic演示了一種簡(jiǎn)單的方法,可以在設(shè)計(jì)占地面積上進(jìn)行最小的增量交換,從而在低活動(dòng)期間顯著降低功耗。在這里,設(shè)計(jì)將一些傳感器耦合到專用的NXP NX3DV2567模擬開關(guān),當(dāng)操作條件允許時(shí),MCU允許MCU(通過MPU_WR_CTRL)斷開特定傳感器與電源,MCU中斷和I 2 C總線的連接。 (圖3)。
圖3:Thingy硬件設(shè)計(jì)利用了集成傳感器(如TDK InvenSense MPU-9250運(yùn)動(dòng)傳感器)所需的簡(jiǎn)單硬件接口,但是增加了恩智浦NX3DV2567模擬開關(guān),將傳感器與系統(tǒng)分離,以節(jié)省電能。 (圖片來源:Nordic Semiconductor)
開發(fā)人員可以通過添加外部設(shè)備來擴(kuò)展Thingy硬件補(bǔ)充。四個(gè)連接器支持Grove 4針格式,允許設(shè)計(jì)人員通過大量可用的Grove兼容設(shè)備輕松添加硬件功能。額外的2 x 10引腳接頭帶來了額外的MCU端口,甚至包括四條緩沖線。這些線路均包含一個(gè)DiodesDMN3190LDW N-MOS晶體管,能夠驅(qū)動(dòng)LED或小型直流電機(jī)等外部元件。事實(shí)上,Thingy設(shè)計(jì)為設(shè)計(jì)人員提供的I/O數(shù)量超過了nRF52832自身的GPIO引腳數(shù)。 Nordic增加了一套Semtech Corp SX1509 GPIO擴(kuò)展器,以增強(qiáng)Thingy系統(tǒng)設(shè)計(jì)的I/O能力。
由于Thingy的I/O可擴(kuò)展性,硬件開發(fā)人員只需將外部設(shè)備連接到電路板即可創(chuàng)建原型設(shè)計(jì)。全面的軟件平臺(tái)為軟件工程師提供了相同的易開發(fā)性。
軟件平臺(tái)
Thingy開發(fā)平臺(tái)擴(kuò)展了nRF52軟件開發(fā)套件(SDK),并提供了一系列所需的服務(wù)。讓應(yīng)用程序開發(fā)人員專注于更高級(jí)別的流程而不是低級(jí)別的流程(圖4)。例如,Thingy軟件包添加了一層傳感器驅(qū)動(dòng)程序,這些驅(qū)動(dòng)程序構(gòu)建在SDK的外圍驅(qū)動(dòng)程序和硬件抽象層(HAL)上,以處理諸如配置傳感器,啟動(dòng)或停止傳感器以及檢索傳感器數(shù)據(jù)等操作。
圖4:Thingy軟件包擴(kuò)展了Nordic nRF52軟件開發(fā)套件(SDK),其中包含專為Thingy設(shè)計(jì)的應(yīng)用級(jí)服務(wù)和實(shí)用程序模塊應(yīng)用。 (圖片來源:Nordic Semiconductor)
Nordic通過一系列客戶開發(fā)資源完善了從傳感器到移動(dòng)應(yīng)用的物聯(lián)網(wǎng)鏈。該公司提供單獨(dú)的開放存儲(chǔ)庫(kù),其中包含適用于iOS開發(fā)人員的Swift中的庫(kù)和示例應(yīng)用程序以及適用于Android開發(fā)人員的Java。此外,另一個(gè)開放式存儲(chǔ)庫(kù)提供了一個(gè)JavaScript庫(kù),用于開發(fā)基于Polymer Web組件庫(kù)和Web藍(lán)牙API構(gòu)建的Web應(yīng)用程序。
只需從Apple App商店或Google Play商店下載Nordic Thingy應(yīng)用程序,開發(fā)人員就可以快速了解Thingy操作。開發(fā)商隨后啟動(dòng)了Thingy,它采用嵌入式1440 mAh鋰離子電池供電,通過USB電源連接進(jìn)行充電。在應(yīng)用程序發(fā)現(xiàn)并連接到Thingy系統(tǒng)后,它會(huì)提供傳感器數(shù)據(jù)的運(yùn)行顯示(圖5)。該應(yīng)用甚至支持與IFTTT的連接,允許用戶使用由Thingy數(shù)據(jù)觸發(fā)的IFTTT事件鏈創(chuàng)建基于云的applet。
圖5:配套應(yīng)用程序通過藍(lán)牙與Thingy系統(tǒng)交互,提供傳感器數(shù)據(jù)的運(yùn)行顯示以及Thingy配置和固件的服務(wù)更新。 (圖片來源:Digi-Key)
在Thingy參考設(shè)計(jì)和軟件平臺(tái)的基礎(chǔ)上,開發(fā)人員可以快速擴(kuò)展Thingy系統(tǒng)以滿足他們自己的特定要求。開發(fā)人員可以使用KeilμVision或GCC使用ARM Cortex-M的GNU工具鏈編譯新的Thingy固件。 Thingy系統(tǒng)提供安全的無線更新設(shè)施,用于加載新固件。標(biāo)準(zhǔn)的Thingy應(yīng)用程序包括一個(gè)選項(xiàng),用于從Nordic更新到最新版本的Thingy固件,或者由開發(fā)人員使用Nordic提供的開源實(shí)用程序創(chuàng)建的自定義固件包。
結(jié)論
在充滿快速變化的物聯(lián)網(wǎng)機(jī)會(huì)的市場(chǎng)中,開發(fā)人員面臨著更快地對(duì)復(fù)雜應(yīng)用程序進(jìn)行原型設(shè)計(jì)的需求。雖然開發(fā)人員可以找到越來越多的物聯(lián)網(wǎng)開發(fā)平臺(tái),但是當(dāng)工程師完成與這些平臺(tái)相關(guān)的復(fù)雜實(shí)現(xiàn)細(xì)節(jié)時(shí),項(xiàng)目經(jīng)常會(huì)發(fā)生絆倒。
Nordic Thingy:52通過快速原型設(shè)計(jì)平臺(tái)簡(jiǎn)化了物聯(lián)網(wǎng)開發(fā),該平臺(tái)隱藏了底層硬件設(shè)計(jì)和軟件架構(gòu)的復(fù)雜性。使用Nordic Thingy套件,開發(fā)人員可以快速構(gòu)建支持藍(lán)牙的多傳感器系統(tǒng)原型 - 后來以Thingy參考設(shè)計(jì)為基礎(chǔ),創(chuàng)建自定義物聯(lián)網(wǎng)設(shè)備。
-
藍(lán)牙
+關(guān)注
關(guān)注
114文章
5751瀏覽量
169596 -
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2900文章
44065瀏覽量
370252 -
無線傳感器
+關(guān)注
關(guān)注
15文章
769瀏覽量
98282
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論