Jste zde

Jak na rychlý vývoj Bluetooth IoT zařízení

Dostupnost nízko energetických procesorů s bezdrátovým připojením a široká škála hardwarových periferií nabízí robustní základ pro tvorbu aplikačních systémů pro všechny obory lidské činnosti. Rychlost vývoje od myšlenky k prototypu hraje v konkurenčním prostředí obrovskou roli.

Na začátku vývoje je dobré mít k dispozici flexibilní vývojovou platformu pro rychlou tvorbu prototypů založených na stejné třídě procesorů. Rychle vytvářet funkční prototypy a snadno přidávat funkce je zásadním prvkem pro včasné předložení vítězného konceptu a následný vývoj software. Ukážeme si hardware a software od Silicon Labs, se kterým lze rychle vytvářet energeticky nenáročné prototypy IoT zařízení pomocí širokého výběru snadno dostupných doplňkových desek.

Rychlé vytvoření prototypu

Značné zjednodušení vývoje přichází s integrovanými subsystémy typu SoC (System-on-Chip), ale stále je nutné vybudovat kolem nich podpůrné obvody k vytvoření kompletního systému. K vybudování vhodné vývojové platformy je nutné splnit základní požadavky na výkon a spotřebu energie, ale také se musí myslet na flexibilitu, která umožní splnit specifické požadavky každé aplikace. Sada BGM220-EK4314A Explorer Kit od Silicon Labs tuto kombinaci potřeb splňuje. Díky této sadě vývojářům zbude dostatek času se soustředit na aplikační část.

Flexibilní platforma je základ

Sada BGM220-EK4314A Explorer, která nabízí levnou platformu pro vývoj aplikací založených na technologii Bluetooth, kombinuje modul SiLabs BGM220P Wireless Gecko ( BGM220PC22HNA ), on board debugger SEGGER J-Link, tlačítko, LED diodu a konektory pro další rozšíření (obrázek 1).

Obrázek 1: Sada SiLabs BGM220-EK4314A Explorer Kit nabízí kombinaci výkonu, správy energie a flexibility potřebné k rychlému vytváření prototypů a vyhodnocování různých konfigurací periferií. (Zdroj obrázku: Silicon Labs)

Modul BGM220P slouží jako kompletní řešení pro malá zařízení IoT napájená bateriemi. Modul obsahuje EFR32BG22 Blue Gecko SoC, které nabízí extrémně nízkou spotřebu energie, možnosti Bluetooth angle of arrival (AoA) a angle of departure (AoD). Lze s ním získat přesnost polohy pod jeden metr. Toho se využívá v řadě aplikací typu sledovací tagy, inteligentní dveřní zámky, fitness a další.

Modul BGM220P, který může fungovat jako samostatný systém, obsahuje SoC EFR32BG22 SoC, 512 kB flash a 32 kB SARAM paměť, vysokofrekvenční(HF) a nízkofrekvenčními(LF) krystaly (XTAL) a 2,4 GHz bezdrátovou konektivitu s keramickou anténou (obrázek 2).

Obrázek 2: Modul SiLabs BGM220P může sloužit jako samostatný systém a obsahuje SoC EFR32BG22 Blue Gecko SoC s dalšími komponentami potřebnými k implementaci zařízení podporujícího technologii Bluetooth. (Zdroj obrázku: Silicon Labs)

Kromě své schopnosti pracovat jako samostatný systém pro malé aplikace IoT, může modul pracovat jako síťový koprocesor (NCP) pro hostitelský procesor připojený přes rozhraní UART. Integrovaný Bluetooth stack spouští bezdrátové služby pro aplikace běžící přímo na modulu nebo zpracovává příkazy přijaté od hostitele v případě v zapojení jako koprocesoru.

Energeticky efektivní bezdrátové SoC

SoC EFR32BG22 obsahuje 32bitové jádro Arm Cortex-M33 s frekvencí 2,4 GHz, včetně bezpečnostních funkcí, subsystémů pro správu energie, časovače a rozhraní. EFR32BG22 SoC je navržen speciálně pro extrémně nízkou spotřebu čili pro napájení z baterie. Díky efektivní správy energie je umožněn provoz na knoflíkovou baterii až na deset let.

SoC pracuje z jediného externího zdroje napětí a pomocí vnitřní jednotky si generuje vnitřní napájecí napětí. Během provozu jednotka pro řízení energie řídí přechody mezi pěti energetickými režimy (EM) SoC. Každý režim dále snižuje spotřebu energie, že udržuje jen aktivní funkční bloky. SoC přechází z aktivního režimu (EM0) do režimu spánku (EM1), režimu hlubokého spánku (EM2), režimu zastavení (EM3) nebo režimu vypnutí (EM4) ( Obrázek 3).

Obrázek 3: Energetická řídicí jednotka EFR32BG22 SoC řídí přechody mezi energetickými režimy EM0, EM1, EM2, EM3 a EM4 (barevný kód je v dolní části obrázku). (Zdroj obrázku: Silicon Labs)

V aktivním režimu (EM0) na 76,8 MHz a napětí 3 V pomocí interního převodníku DC/DC SoC spotřebovává jen 27 μA/MHz. EM0 je normální provozní režim a je jediným, kde je k dispozici jádro procesoru Cortex M33 a k tomu všechny periferní bloky. Všechna periferní zařízení jsou k dispozici i ve spánkovém režimu (EM1), přičemž méně jich zůstává aktivních. V režimech s nízkou spotřebou má redukce aktivních hodin a funkčních bloků za následek výrazně nižší spotřebu energie:

  • 17 μA/MHz v režimu spánku (EM1)
  • 1,40 μA režim hlubokého spánku (EM2) s uchováním 32 kB RAM paměti a hodinami reálného času (RTC) běžící od LFXO
  • 1,05 μA v režimu zastavení (EM3) s uchováním RAM 8 kB a RTC běžícím z integrovaného RC oscilátoru s ultra nízkou frekvencí 1 kHz (ULFRCO)
  • 0,17 μA v režimu vypnutí (EM4)

Mnoho aplikací s technologii Bluetooth obvykle vykazuje delší dobu malou nebo žádnou aktivitu, ale při obnovení aktivity se vyžaduje odezva s nízkou latencí. Ve skutečnosti, i když má aplikace mírnější požadavky na latenci, pomalá doba probuzení plýtvá energií, protože procesor neprovádí žádnou užitečnou práci. Procesor se jen snaží dokončit proces probuzení a přejít do aktivního režimu.

Jak se doba mezi aktivními režimy zkracuje, použití režimu spánku může být dokonce kontraproduktivní. Pomalé probuzení nebo čas vstupu do režimu napájení spotřebuje více energie, než by bylo spotřebováno, pokud by procesor zůstal v aktivním režimu i po dobu, kdy by mohl být neaktivní. Proto je nutné najít kompromis mezi těmito všemi požadavky. Díky použití procesoru s rychlejšími časy probuzení lze naplno využívat výhod režimů nižší spotřeby procesoru. V EM1 se EFG32BG22 probouzí ve třech hodinových taktech - 1,24 µs a má startovací čas 1,29 µs,. V EM4 je čas probuzení 8,81 ms a startovací čas 9,96 µs (tabulka 1).


Tabulka 1: Doby probuzení a vstupní časy pro SoC EFG32BG22 v jednotlivých režimech. (Zdroj tabulky: Silicon Labs)

Metoda použitá k probuzení procesoru při obnovení činnosti může také výrazně ovlivnit životnost baterie. Ačkoli některé aplikace ( například průmyslové) vyžadují, aby systémy využívaly zpracování s dotazem k zajištění přísného pravidelného načasování. Mnoho aplikací v oblastech spotřební elektroniky používá zpracování založené na událostech, aby reagovalo na konkrétní aktivitu. Použití metody dotazování pro aplikace založené na událostech může výrazně snížit životnost baterie, jelikož se procesor opakovaně zbytečně probouzí.

Senzorové aplikace využívá funkci probuzení, aby se zabránilo opakovanému probouzení procesoru jen kvůli kontrole aktivity. Funkce probuzení na základě aktivity na rádiovém subsystému SoC EFG32BG22 umožňuje podobný přístup. Díky tomu lze udržovat procesor v režimu nižší spotřeby, dokud nedojde k aktivitě v radiofrekvenční části.

V praxi se bezdrátový SoC EFG32BG22 uvádí do režimu EM2, EM3 nebo EM4 a spoléhá se na probuzení SoC při detekci RF energie. Při detekování energie spotřebuje blok RFSENSE 131 nA. Selektivnější režim RFSENSE spotřebovává o něco více proudu, a to 138 nA, ale v tomto režimu blok RFSENSE filtruje příchozí RF signály, aby se vyhnul probouzení kvůli šumu na RF.

V některých případech nemusí EFC32BG22 SoC vůbec potřebovat probudit jádro procesoru, aby reagovalo na externí události. Periferní reflexní systém SiLabs (PRS) umožňuje periferním reagovat na události a pracovat bez probouzení jádra procesoru. Periferie mohou komunikovat přímo mezi sebou a jejich funkce lze kombinovat, aby poskytovaly komplexní funkci. Díky využití funkcí PRS, která má podstatně nižší spotřebu než jádro, lze ušetřit další energii, a tím prodloužit životnost baterie.

Integrovaný debugger a snadné rozšíření

Modul BGM220P přináší nejen kompletní sadu pro správu energie, ale i další funkce, které zaručují rychlý vývoj prototypu. Mezi ně patří integrovaný ladicí program SEGGER J-Link, který přes USB konektor Micro-B umožňuje stahování a ladění kódu. Další výhodou je virtuální port COM pro přístup k hostitelské konzole. Ladicí program také podporuje SiLabs Packet Traction Interface (PTI) pro analýzu paketů vysílaných nebo přijímaných přes bezdrátovou síť.

Flexibilitu zaručuje mnoho přídavných desek mikroBUS a Qwiic Connect System. Desky mikroBUS se připojují k modulu BGM220P prostřednictvím rozhraní I2C, SPI nebo UART. Pomocí rozhraní I2C lze připojit přídavnou desku do vzdálenosti až 1m. Pro připojení na delší vzdálenosti lze využít desku SparkFun QwiicBus EndPoint ( COM-16988 ), která pomocí diferenciální signalizace udržuje integritu signálu I2C na vzdálenost až 30 metrů.

Rychlý vývoj aplikací

SiLabs nabízí pro vývoj aplikačního software balíčky pro podporu desek, ovladače, knihovny a několik ukázkových aplikací spojených s vývojovým prostředím Simplicity Studio. Další projekty jsou dostupné z úložišť GitHub společnosti SiLabs. Jedna z ukázkových aplikací je monitoring teploty, která jako zdroj dat používá interní teplotní senzor EFR32BG22 SoC. Aplikace je postavená na standardní službě Bluetooth Health Temperature.

Aplikace volá řadu inicializačních rutin pro systémové služby a aplikační služby, které nastavují obsluhy přerušení a zpětná volání. Po dokončení inicializace se aplikace usadí v nekonečné smyčce a čeká na události (Výpis 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
}

Výpis 1: Ukázková aplikace Bluetooth společnosti SiLabs používá obecný framework, kde nekonečná smyčka umožňuje zpětná volání a obsluhy událostí. (Zdroj kódu: Silicon Labs)

V této aplikaci, když časovač nastavený během inicializace vyprší, přidružená rutina zpětného volání provede měření teploty. Pak lze použít mobilní Bluetooth aplikaci EFR Connect od SiLabs, která funguje se všemi Bluetooth produkty Silicon Labs. Tato aplikace poskytuje pohled na službu Bluetooth Health Thermometer, která je používána v této ukázkové aplikaci (obrázek 4).

Obrázek 4: Aplikace SiLabs EFR Connect zobrazuje různé informace včetně použitých služeb a přenesených dat. (Zdroj obrázku: Silicon Labs)

V Simplicity Studio lze importovat řadu příkladů aplikací Bluetooth, které demonstrují různé scénáře použití, včetně zapojení s deskami Qwiic nebo mikroBUS. Například ukázková aplikace, která demonstruje použití standardních služeb Bluetooth Heart Rate (HR) a Bluetooth Pulse Oximeter (SpO2) v kombinaci s mikroBUS deskou MIKROE-4037 Heart Rate 2 Click od MikroElektronika obsahuje biosenzor MAX86161 od Maxim Integrated. MAX86161 je kompletní subsystém schopný poskytovat přesná měření HR a SpO2 přes rozhraní I2C. Více o používání MAX86161 lze najít na stránce „Build a True Wireless Fitness Hearable—Part 1: Heart Rate and SpO2 Measurement“). Díky své potřebě dalšího ovladače a náročnějšímu algoritmu zpracování než v aplikaci s měřením teploty je použita složitější softwarová architektura, která je znázorněna na obrázku 5.

Obrázek 5: Softwarová struktura pro aplikaci HR/SpO2 pomáhá urychlit vývoj prototypu, jelikož znázorňuje typický tok procesů Bluetooth aplikace s nízkou spotřebou. (Zdroj obrázku: Silicon Labs)

Stejně jako u aplikace s měřením teploty, tak i zde se spoléhá na řadu inicializačních rutin pro nastavení systému a aplikačních služeb. Tam, kde je rutina app_process_action v aplikaci s měřením teploty prázdná, tak zde se přidá volání hrm_loop. Výsledkem je volání hrm_loop při každém průchodu nekonečnou smyčkou nejvyšší úrovně ukázanou dříve v seznamu 1. Kromě toho se k periodické aktualizaci dat HR a SpO2 používá softwarový časovač.

Rutina hrm_loop zase volá maxm86161_hrm_process, který načte vzorky z fronty udržované pomocnými funkcemi a předá je k zprocesování. K tomu slouží dvojice rutin, maxm86161_hrm_frame_process a maxm86161_hrm_spo2_frame_process, které provedou ověření a vypočtou hodnoty HR a SpO2. Pak jsou již tyto hodnoty viditelné ve výše uvedené aplikace EFR Connect.

S využitím desky BGM220-EK4314A Explorer Kit a softwarového ekosystému SiLabs je stavění prototypů relativně jednoduché. SiLabs ukazuje tento přístup ukázkovou aplikací, která přidává OLED displej k hardwarové/softwarové platformě použité pro výše uvedenou aplikaci HR/SpO2. V tomto případě je ke konektoru Qwiic na desce připojena přídavná deska Qwiic s displejem SparkFun OLED ( LCD-14532 ), zatímco deska MikroElektronika Heart Rate 2 Click zůstává na místě z předchozí ukázkové aplikace HR/SpO2 (obrázek 6).

Obrázek 6: Vývojáři mohou rychle přidat funkce do stávajícího designu postaveného na desce BGM220-EK4314A Explorer Kit. Zde je ukázka přidání OLED displeje ke stávajícímu prototypu HR/SpO2. (Zdroj obrázku: Silicon Labs)

Kromě přidání ovladače a služeb pro desku OLED zůstává softwarová aplikace pro tuto rozšířenou verzi aplikace HR/SpO2 do značné míry stejná. Softwarový časovač zmíněný dříve pro aplikaci HR/SpO2 přidává volání funkce hrm_update_display, která zobrazuje data HR a SpO2 (Výpis 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;

Výpis 2: Provedením minimálních softwarových změn se přidá obsluha OLED displeje. (Zdroj kódu: Silicon Labs)

Tento jednoduše rozšiřitelný hardwarový a softwarový přístup umožňuje vývojářům rychle vytvářet rozmanité aplikace IoT, a tím zhodnotit alternativní konfigurace.

Závěr

Bateriově napájená zařízení IoT s technologií Bluetooth je v dnešním světe mnoho. Abychom mohli uspět na trhu, je nutné rychle přejít od myšlenky k prototypu a vyzkoušet všechny možné alternativy a vybrat to nejvhodnější řešení. Pomocí vývojářské sady a souvisejícího softwaru od Silicon Labs lze přidávat a odebírat hardware podle potřeby, aby splňovaly specifické požadavky dané aplikace.

 

Článek vyšel v originále na webu DigiKey.com, autorem je Stephen Evanczuk.

Hodnocení článku: