利用開發套件與現成附加板快速進行藍牙 IoT 應用的原型開發
資料提供者:DigiKey 北美編輯群
2021-07-14
智慧連線產品的需求為開發人員帶來眾多商機,能快速將概念轉變成可行的物聯網 (IoT) 應用。高能效處理器、無線連線選項以及眾多硬體周邊的問世奠定了穩固的基礎,可實作適合的低功率、生產就緒設計。
然而,在產品定義的早期階段,開發人員需要靈活的開發平台,依據相同類別的處理器、連線子系統與周邊來建構快速原型。快速打造可用原型並輕鬆添加功能的能力,對於早期概念驗證並支援客製化軟體開發作業來說有其必要性。
本文將說明開發人員如何使用來自 Silicon Labs 的硬體與軟體,利用多種隨時可用的現成附加板,快速打造特製的高能效連現行 IoT 裝置原型。
促成快速原型開發
探索電池供電式無線 IoT 裝置的新商機時,開發人員可能會因為打造可用的開發平台涉及諸多細節而深陷泥沼之中。透過整合式子系統,先進的系統單晶片 (SoC) 裝置即可提供此類平台的核心,但開發人員仍須依此打造完整的系統。
若要打造適合這些裝置的開發平台,開發人員不僅要滿足基本要求,達到健全的效能與長久的電池續航力,還要靈活建構,以支援各種應用的特定要求。Silicon Labs 的 BGM220-EK4314A 探索套件符合此綜合需求,能讓開發人員專注在新設計概念的快速原型開發,而不是因應打造專屬開發平台所涉及的瑣碎細節。
靈活的快速開發平台
BGM220-EK4314A 探索套件提供開發藍牙型應用的低成本平台,結合了 SiLabs 的 BGM220P Wireless Gecko 模組 (BGM220PC22HNA) 以及板載 SEGGER J-Link 除錯器、一個按鈕、一個發光二極體 (LED),以及多個擴充選項 (圖 1)。
圖 1:SiLabs 的 BGM220-EK4314A 探索套件兼具處理效能、能量管理以及必要的配置靈活性,可快速打造原型,並且評估不同的周邊硬體配置。(圖片來源:Silicon Labs)
BGM220P 模組可當作電池供電式小型 IoT 裝置的完整解決方案。其整合的 EFR32BG22 Blue Gecko SoC 具有超低功耗、藍牙入射角 (AoA) 與 發射角 (AoD) 能力,以及小於一公尺的定位準確度,這在陸續增多的熱門藍牙應用中都是必備的能力,包括資產追蹤標籤、智慧門鎖、健身等等。
BGM220P 模組可當作獨立系統操作,結合了 EFR32BG22 SoC 以及 512 KB 快閃記憶體、32 KB 隨機存取記憶體、高頻 (HF) 與低頻 (LF) 晶體,還有一個 2.4 GHz 匹配網路與陶瓷天線,可達到無線連線 (圖 2)。
圖 2:SiLabs 的 BGM220P 模組可當作獨立系統使用,結合了 EFR32BG22 Blue Gecko SoC 以及實作藍牙功能裝置所需的其他元件。(圖片來源:Silicon Labs)
除了可當作小型覆蓋區 IoT 設計的獨立主機之外,此模組亦可當作網路輔助處理器 (NCP),搭配透過此模組 UART 介面連接的主機處理器使用。其整合的藍牙堆疊會針對在獨立設計模組中運行的應用執行無線服務,或在 NCP 設計中運行時則會處理接收自主機的命令。
高能效無線 SoC
BGM220P 模組的 EFR32BG22 藍牙無線 SoC 整合了 32 位元 Arm Cortex-M33 核心、一個 2.4 GHz 無線電、安全元件、能源管理子系統,以及多個計時器與介面選項。EFR32BG22 SoC 專用於超低功率的電池供電式設計,採用多個能源管理功能,可讓鈕扣型電池運作長達十年。
此 SoC 能以單一外部電壓來源操作,採用內建能源管理單元來產生內部供電電壓。操作期間,能源管理單元會控制 SoC 五個能源模式 (EM) 之間的切換。每個模式都會進一步降低功耗,方法是在 SoC 從主動模式 (EM0) 切換到睡眠模式 (EM1)、深眠模式 (EM2)、停止模式 (EM3) 或關斷模式 (EM4) 時,積極減少主動的功能區塊 (圖 3)。
圖 3:EFR32BG22 SoC 的能源管理單元會在 EM0、EM1、EM2、EM3 與 EM4 (色碼位於圖片底部) 不同能源模式之間控制其切換。(圖片來源:Silicon Labs)
SoC 會使用內部 DC/DC 轉換器,在 76.8 MHz、3 V 的主動模式中 (EM0),電源消耗量為 27 μA/MHz。EM0 屬於正常操作模式,也是 Cortex M33 處理器核心與所有周邊區塊皆可用的唯一模式。
所有周邊在睡眠模式 (EM1) 中也可用,但因為系統進入更低功耗模式,因此較少周邊會維持主動。在更低功耗模式中,主動時脈與功能區塊的減少會大幅降低功耗位準:
- 在睡眠模式 (EM1) 下為 17 μA/MHz
- 在深眠模式 (EM2) 搭配 32 KB RAM 保存性以及從 LFXO 運行即時時脈的情況下為 1.40 μA
- 在停止模式 (EM3) 搭配 8 KB RAM 保存性以及從 SoC 整合式超低頻率 1 kHz 電阻電容 (RC) 振盪器 (ULFRCO) 運行 RTC 的情況下為 1.05 μA
- 在關斷模式下為 0.17 μA
有些電池供電式裝置需要的不僅僅是以低功耗模式來操作處理器而已。許多藍牙功能應用通常會長時間處於低度活動甚至零活動的情況中,但在恢復活動時就需要達到低延遲的反應。實際上,即便應用有較寬鬆的延遲要求,緩慢的喚醒時間一樣會浪費電力,因為處理器在完成喚醒程序並進入主動模式前 (或完成從更高功耗模式轉到更低功耗模式的程序),也無法執行有用的工作。
隨著主動期間之間的間隔縮短,使用低功耗睡眠模式反而影響生產力,因為緩慢的喚醒或電源模式進入時間所消耗的能量,反而比處理器在非主動期間還一直維持更高電源模式還多。因此,想要達到電池續航力最佳化的開發人員有時會讓處理器維持在比應用處理需求更高的電源模式。
使用具有更快喚醒與進入時間的處理器,開發人員就可完整利用處理器更低功耗模式的優勢。在 EM1 中,EFG32BG22 能在 3 次時脈/1.24 μs 內喚醒,進入時間為 1.29 μs,在 EM4 中,則分別延長到 8.81 ms 與 9.96 μs。
|
表 1:EFG32BG22 SoC 的喚醒與電源模式進入時間(表格來源: Silicon Labs)
恢復活動時用來喚醒處理器的方法也會大幅影響電池續航力。雖然有些應用,例如工業等,需要系統使用輪詢處理來確保嚴格的定期計時,但消費性領域的諸多應用則使用事件式處理來因應指定活動。舉例而言,在事件式應用中使用輪詢方法,當處理器持續沒必要的喚醒時,就會大幅折損電池續航力。
同理可證,許多感測器式設計使用中斷喚醒功能以免單純為了檢查活動而持續喚醒處理器,而 EFG32BG22 SoC 的無線電子系統則內建 RF 喚醒功能,可達到類似的中斷導向作法。因此開發人員能讓處理器維持在更低功耗的能源模式,直到發生無線射頻 (RF) 活動為止。
在實務上,開發人員會讓 EFG32BG22 無線 SoC 處於超低功耗的 EM2、EM3 或 EM4 模式中,並依賴 RF 喚醒能力在偵測到 RF 能量時將 SoC 喚醒。若單純偵測高於臨界點的能量,RFSENSE 能力僅會消耗 131 nA。更具選擇性的 RFSENSE 模式會消耗稍微多一點電流,消耗量為 138 nA。但在此模式中,RFSENSE 會過濾傳入的 RF 訊號,以免在偵測到 RF 雜訊時喚醒,而非有效的 RF 訊號。
在某些情況下,EFG32BG22 SoC 可能根本無需喚醒處理器核心,即可因應外部事件:SiLabs 的周邊反射系統 (PRS) 能讓周邊裝置回應事件,並在不需喚醒處理器核心的情況下操作。周邊裝置能彼此直接通訊,且功能可互相結合來提供更複雜的功能。透過 PRS 能力搭配更低功耗的模式,開發人員就可顯著降低功耗,而無損關鍵功能,例如感測器數據採集等。
內建除錯功能且容易擴充
BGM220 探索套件板內建 BGM220P 模組,能為電池供電式藍牙設計帶來 EFR32BG22 SoC 完整的能源管理與處理能力組合。若有需要快速打造原型以探索新設計概念,板件的其他特點有助於加速開發。
板載 SEGGER J-Link 除錯器可透過板件的 USB Micro-B 連接器存取,能進行程式碼下載與除錯,並具有虛擬 COM 埠可讓主機主控台存取。此除錯器亦支援 SiLabs 的封包追蹤介面 (PTI) 功能,可分析透過無線網路傳送或接收的封包。
若要快速原型開發,板件可支援多種擴充選項,能靈活探索需要不同感測器、致動器、連接選項與其他周邊互相組合的新設計想法。透過眾多廠商提供的豐富多樣 mikroBUS 附加板與 Qwiic 連接系統硬體,開發人員可快速配置適合各個應用的開發平台。
插進板件的 mikroBUS 插槽後,mikroBUS 板就可透過 I2C、SPI 或 UART 介面連接 BGM220P 模組。Qwiic 連接器提供 Qwiic 系統的 I2C 介面,可連接一或多個 Qwiic 板件,連接距離最長約四英尺 (ft)。若連接距離較長,開發人員可使用 SparkFun QwiicBus EndPoint 板 (COM-16988),其採用差動訊號來維持 I2C 訊號完整性,距離最長約為 100 ft。
快速應用開發
SiLabs 將快速擴充的概念套用到應用軟體開發上。除了板支援套裝、驅動程式、函式庫以及客製化開發的排針座之外,該公司還提供多個範例應用,都含在 Simplicity Studio 開發環境中,還有提供額外專案,可從 SiLabs 的 GitHub 儲存庫取得。事實上,開發人員可透過隨附的範例溫度應用開始探索感測器應用開發作業,其使用 EFR32BG22 SoC 內部溫度感測器作為資料來源。
以標準藍牙健康溫度服務為基礎打造,此溫度應用開箱立即可用,能透過 SiLabs 軟體架構打造的泛型藍牙 IoT 應用展示處理流程。此應用會調用一連串初始化常式,以便系統服務與應用服務設定中斷處置程式與回呼。完成初始化後,應用程式會進入無窮迴圈等待事件發生 (清單 1)。
複製
int main(void)
{
// Initialize Silicon Labs device, system, service(s) and protocol stack(s).
// Note that if the kernel is present, processing task(s) will be created by
// this call.
sl_system_init();
// Initialize the application. For example, create periodic timer(s) or
// task(s) if the kernel is present.
app_init();
#if defined(SL_CATALOG_KERNEL_PRESENT)
// Start the kernel. Task(s) created in app_init() will start running.
sl_system_kernel_start();
#else // SL_CATALOG_KERNEL_PRESENT
while (1) {
// Do not remove this call: Silicon Labs components process action routine
// must be called from the super loop.
sl_system_process_action();
// Application process.
app_process_action();
#if defined(SL_CATALOG_POWER_MANAGER_PRESENT)
// Let the CPU go to sleep if the system allows it.
sl_power_manager_sleep();
#endif
}
#endif // SL_CATALOG_KERNEL_PRESENT
}
清單 1:SiLabs 的藍牙範例應用採用泛型執行架構,其具有無窮迴圈,能讓回呼與事件處置程式在初始化後處理系統與應用動作。(程式碼來源:Silicon Labs)
在此應用中,當計時器在初始化期間開始倒數時,相關的回呼常式就會執行溫度測量。開發人員建構應用並刷寫板件後,即可使用 SiLabs 的 EFR Connect 應用程式。此泛型藍牙行動應用程式可搭配 Silicon Labs 的所有藍牙套件與裝置使用。除了提供客製化應用程式的架構外,此應用程式亦可協助開發,能一覽與藍牙服務相關的支援特性,力如此範例應用中的藍牙健康溫度計服務 (圖 4)。
圖 4:SiLabs 的 EFR Connect 應用程式會顯示應用中的藍牙服務特性,不僅可加速原型開發,亦可提供客製化應用程式的開發架構。(圖片來源:Silicon Labs)
在 Simplicity Studio 中,開發人員可匯入多個不同的藍牙應用範例,藉此展示不同的使用情境,包括分別或一併使用 Qwiic 或 mikroBUS 板件打造的設計。舉例而言,此範例應用就展示了標準藍牙心率 (HR) 與藍牙脈搏血氧儀 (SpO2) 服務的使用,搭配 MikroElektronika 的 MIKROE-4037 Heart Rate 2 Click mikroBUS 板,其中含有 Maxim Integrated 的 MAX86161 生物感測器。MAX86161 提供完整的低功率子系統,可提供準確的 HR 與 SpO2 量測給透過 I2C 介面連接的主機處理器。(如需更多有關 MAX86161 的使用說明,請參閱 打造真無線健身穿戴裝置 - 第一篇:心率與脈搏血氧測量)。
比起溫度應用來說,還需要額外的驅動程式與更高要求的處理演算法,因此此應用提供更複雜的 IoT 裝置軟體應用架構展示 (圖 5)。
圖 5:HR/SpO2 應用等範例專案有助於加速原型開發,同時可展示典型的低功率藍牙感測器應用處理流程。(圖片來源:Silicon Labs)
如同上述的溫度應用,此應用仰賴一連串初始化常式來設定系統與應用服務。在溫度應用中,app_process_action 常式為空白,但在此應用中,則在 app_process_action 中添加 hrm_loop 常式的調用。如此一來則會在每次通過頂層無窮迴圈時調用 hrm_loop,如之前清單 1 所示。此外,可使用軟體計時器來定期更新 HR 與 SpO2 數據。
hrm_loop 常式反而會調用 maxm86161_hrm_process,其會從協助功能所管理的佇列中拉取樣本,然後轉交給範例處理常式。如此一來就會調用一對常式 maxm86161_hrm_frame_process 與 maxm86161_hrm_spo2_frame_process,然後執行演算法來驗證並分別產生 HR 與 SpO2 結果。開發人員可使用先前提到的 EFR Connect 應用程式來查看結果以及其他服務特性。
另一個範例軟體應用顯示,開發人員如何在延伸其硬體平台時打造複雜的應用,例如此 HR/SpO2 應用。BGM220-EK4314A 探索套件板與 SiLabs 的軟體生態系統,都是以既有的硬體與軟體為基礎打造,因此使用上相對直覺簡便。SiLabs 的範例應用可展示此作法,添加一個 OLED 顯示器在硬體/軟體平台上,可用於上述的 HR/SpO2 應用。在此範例中,SparkFun 的 OLED 顯示器 Qwiic 附加板 (LCD-14532) 連接到板件的 Qwiic 連接器;MikroElektronika Heart Rate 2 Click 附加板則跟之前的 HR/SpO2 範例應用一樣的位置 (圖 6)。
圖 6:開發人員可在 BGM220-EK4314A 探索套件板為基礎而打造的既有設計中快速添加功能 - 在此例中即添加 OLED 顯示器到既有的 HR/SpO2 原型。(圖片來源:Silicon Labs)
除了增加 OLED 板的驅動程式與支援服務外,延伸版本的 HR/SpO2 應用,軟體應用程式幾乎也維持一樣。之前提到的 HR/SpO2 應用軟體計時器增加 hrm_update_display 函數的調用,可用來顯示 HR 與 SpO2 數據 (清單 2)。
複製
/* Software Timer event */
case sl_bt_evt_system_soft_timer_id:
/* Check which software timer handle is in question */
if (evt->data.evt_system_soft_timer.handle == HEART_RATE_TIMER) {
heart_rate_send_new_data(connection_handle);
break;
}
if (evt->data.evt_system_soft_timer.handle == PULSE_OXIMETER_TIMER) {
pulse_oximeter_send_new_data(connection_handle);
break;
}
if (evt->data.evt_system_soft_timer.handle == DISPLAY_TIMER) {
hrm_update_display();
break;
}
break;
清單 2:透過此套件與軟體生態系統,開發人員就可在既有的 HR/SpO2 應用中添加顯示功能,只要連接顯示器板,以及在既有應用的軟體計時器處置程式中進行最低度的軟體變更即可 (新增 hrm_update_display 的函數調用)。(程式碼來源:Silicon Labs)
此可延伸的硬體與軟體作法能讓開發人員快速打造可行的 IoT 應用。由於硬體與軟體皆可輕易添加或移除,開發人員能更輕鬆探索新的設計方案並且評估替代配置。
結論
電池供電的藍牙功能 IoT 裝置已躋身進入熱門應用核心,並提供關鍵的臨門一腳,能滿足對更多功能與更長久工作續航力的攀升需求。對開發人員來說,要有效滿足這些彼此衝突的要求,需要快速探索新設計並評估替代的設計概念。透過 Silicon Labs 的開發套件與相關軟體,開發人員就可快速打造原型、添加並移除必要的硬體,來滿足特定的應用需求。

聲明:各作者及/或論壇參與者於本網站所發表之意見、理念和觀點,概不反映 DigiKey 的意見、理念和觀點,亦非 DigiKey 的正式原則。