česky english Vítejte, dnes je sobota 05. říjen 2024

Zpracování dat uvnitř MEMS senzoru pomocí vestavěných programovatelných funkcí

DPS 2/2024 | Články
Autor: Ing. Zuzana Jiránková
web_úvod.jpg

Senzory pohybu MEMS od STMicroelectronics (ST) obsahují dva typy vestavěných funkcí. Oba typy funkcí se zaměřují na zpracování dat přímo uvnitř senzoru namísto v mikroprocesoru.

Díky tomu je možné dosáhnout nižší spotřeby finální aplikace. Vestavěné konfigurovatelné funkce (např. wake-up, free-fall, 4D/6D orientation) jsou obsaženy ve většině senzorů pohybu od ST. Nicméně jak název napovídá, tyto funkce jsou pouze konfigurovatelné a není možné pomocí nich realizovat vlastní zpracování dat. Novější senzory pohybu od ST obsahují programovatelné funkce jako Finite State Machine (FSM), Machine Learning Core (MLC) nebo Intelligent Sensor Processing Unit (ISPU), které umožňují vlastní zpracování dat přímo v senzoru. Na základě těchto informací můžeme rozlišit 3 hlavní přístupy implementace zpracování dat ze senzoru. Jejich rozdělení je popsané v seznamu a na obr. 1:

  • Standardní přístup – mikroprocesor čte ze senzoru nezpracovaná data a zpracovává je.
  • Přístup pomocí programovatelné logiky – cílí na nejnižší možnou spotřebu v rámci specifického modelu pro zpracování dat. Mikroprocesor čte výstupy modelu a případně při přerušení i nezpracovaná data.
  • Přístup pomocí plně programovatelného DSP − jakýkoliv vlastní kód (v rámci výpočetních a paměťových možností) může být spuštěn uvnitř senzoru a mikroprocesor čte zpracovaná data ze senzoru.

Obr. 1

Obecně používání přístupu pomocí programovatelné logiky nebo plně programovatelného DSP přináší pro konečnou aplikaci následující výhody:

  • Spotřeba energie vestavěné funkce je výrazně nižší než spotřeba stejné funkce běžící v mikroprocesoru.
  • Čtení dat ze senzoru je limitováno na případy, kdy nastane přerušení -> mikroprocesor může být v režimu spánku po zbytek času.
  • Komunikace na I2C/SPI sběrnici mezi mikroprocesorem a senzorem je redukována.
  • Odlehčení mikroprocesoru – procesorový čas může být využit pro jinou část aplikace nebo může být použit méně výkonný procesor.

V tomto článku stručně představíme vestavěné programovatelné funkce: FSM, MLC (přístup pomocí programovatelné logiky) a ISPU (přístup pomocí plně programovatelného DSP) tak, aby si uživatel mohl
vybrat nejvhodnější funkci pro svou aplikaci.

Finite State Machine (FSM)

Finite State Machine (konečný automat) je behaviorální model složený z konečného počtu stavů a určitých přechodů mezi nimi, podobný vývojovému diagramu, umožňující zpracování jak interních, tak externích (v případě, že senzor podporuje funkci sensor hub) dat. Model může obsahovat dva typy stavů – Reset/Next Condition (RNC) a Command (CMD). Stav typu RNC obsahuje dvě podmínky – jednu k resetování a druhou k přechodu do následujícího stavu. Detailní popis stavu typu RNC je zobrazen na obr. 2. První podmínka, která se kontroluje, je podmínka reset. Pokud je tato podmínka splněna, konečný automat je zresetován, jinak se přejde ke kontrole podmínky next. Pokud je podmínka next splněna, přejde se do dalšího stavu. Pokud podmínka splněna není, automat čeká na nový datový vzorek a podmínky (jak reset, tak next) jsou znovu kontrolovány s novým datovým vzorkem. Příklady podmínek pro stav typu Reset/Next jsou: žádná operace, časovač, porovnání senzorových dat s referenčním prahem atd. Druhý typ stavu (CMD) vykoná daný příkaz ke změně chování programu ve smyslu řízení vývoje konečného automatu a výstupu. Příklady příkazů pro stav typu CMD jsou: stop execution, reset pointer, set/reset atd. Přerušení z FSM je vygenerováno, pokud je dosažen koncový stav a nebo pokud je vykonán specifický příkaz. Je možné mít více paralelně běžících konečných automatů. Na obr. 2 je ukázán příklad jednoduché funkce wake-up založené na datech z akcelerometru.

Obr. 2

Přístup pomocí FSM je vhodný pro takové aplikace, kde je potřeba detekovat uživatelem nadefinovaný datový vzorec typu gesta. Nejnovější senzory pohybu od ST s FSM obsahují tzv. adaptive self-configuration (ASC). To znamená, že přerušení od FSM může být použito ke změně nastavení senzoru (vč. frekvence vzorkování, měřícího rozsahu nebo FIFO) a mikroprocesor může zůstat v režimu spánku.

Více informací lze nalézt v GitHub repozitáři STMems_Finite_State_Machine, včetně předpřipravených příkladů, ale také konfiguračních příkladů, které obsahují příklady postupu vytvoření finální konfigurace s FSM pro senzor. Konfigurační příklady využívají software Unico-GUI1 (nově součástí MEMS studia2), který umožňujě graficky vytvářet kód pro FSM.

Podporované senzory:

  • Consumer: LSM6DSO, LSM6DSOX, LSM6DSO32, LSM6DSO32X, LSM6DSR, LSM6DSRX, LSM6DSV, LSM6DSV16X, LSM6DSV16BX, LIS2DUX12, LIS2DUXS12
  • Industrial: ISM330DHCX, IIS2ICLX
  • Automotive: ASM330LHHX, ASM330LHHXG1

Machine Learning Core (MLC)

MLC je složeno ze sady konfigurovatelných statistických parametrů (také zvané features) a rozhodovacích stromů. Rozhodovací strom je reprezentován jako binární strom složený ze dvou typů uzlů – vnitřní uzly a listy. Vnitřní uzel rozhodovacího stromu je takový uzel, který má pod sebou navazující uzly. Vzhledem k tomu, že rozhodovací strom v MLC je binární strom, vnitřní uzel má dva navazující uzly. Vnitřní uzly rozhodovacího stromu reprezentují tu část, kde je statistický parametr vypočítaný z nezpracovaných dat porovnán s referenčním prahem (if-then-else), a v závislosti na výsledku je vybrán další uzel k zpracování. List je takový uzel stromu, který nemá žádné další navazující uzly a obsahuje jednu z uživatelem nadefinovaných tříd − výsledek. Jednoduchý příklad rozhodovacího stromu k rozpoznání aktivního a neaktivního stavu založeného na datech z akcelerometru je zobrazen na obr. 3. Statistické parametry, které jsou porovnávány proti referenčnímu prahu v rámci vnitřního uzlu rozhodovacího stromu, jsou parametry zvolené uživatelem (např. střední hodnota, rozptyl atd.) v definovaném časovém okně z dostupných dat senzoru – interních i externích (pokud je funkce sensor hub dostupná). Přínos parametrů zvolených uživatelem pro rozhodovací strom je posuzován během trénování rozhodovacího stromu. Po natrénování výsledný rozhodovací strom obsahuje pouze statisticky významné parametry.

Obr. 3

K využití MLC je potřeba tzv. učení s učitelem, které zahrnuje následující kroky:

  • Definování tříd, které mají být rozpoznány a zahrnují všechny možnosti.
  • Získání dostatečného množství dat pro každou třídu.
  • Zvolení parametrů pro výpočet (může být iterativní proces a není garantováno, že vhodné parametry budou nalezeny během první iterace).
  • Vytvoření rozhodovacího stromu pomocí softwarového nástroje.
  • Transformace rozhodovacího stromu na konfiguraci pro senzor a nahrání konfigurace do senzoru.

Software Unico-GUI1 (nově součástí MEMS studia2) obsahuje MLC nástroj, který provede uživatele celým procesem vytvoření rozhodovacího stromu – od rozřazení dat k třídám až po vytvoření konfigurace pro konkrétní senzor. Vhodné aplikace pro rozhodovací strom jsou takové, kde je možné nalézt určitý opakující se vzor chování z pozorování. Takovými aplikacemi jsou: activity recognition, fitness activity recognition, motion intensity detection, vibration intensity detection, carrying position recognition, context awareness atd.

Více informací o senzorech s MLC je možné nalézt na st.com/MLC nebo také v GitHub repozitáři STMems_Machine_Learning_Core. Tento repozitář obsahuje jak předpřipravené příklady, tak i konfigurační příklady, které obsahují postup vytvoření finální konfigurace s MLC pro senzor.

Podporované senzory:

  • Consumer: LSM6DSOX, LSM6DSO32X, LSM6DSRX, LSM6DSV16X, LSM6DSV16BX, LIS2DUX12, LIS2DUXS12
  • Industrial: ISM330DHCX, IIS2ICLX
  • Automotive: ASM330LHHX, ASM330LHHXG1

Intelligent Sensor Processing Unit (ISPU)

ISPU je kompaktní programovatelné jádro s vysokým výkonem a velmi malou spotřebou založené na proprietální architektuře vyvinuté firmou ST. ISPU jádro umožňuje zpracovávat jak interní (akcelerometr, gyroskop a teplotní senzor), tak externí (připojené k senzoru přes funkci sensor hub) data v až 30 separátních, uživatelem nadefinovaných algoritmech. Tyto algoritmy se spouští pokaždé, když jsou navzorkována nová data postupně od algoritmu 29 po algoritmus 0. ISPU obsahuje dvě separátní RAM paměti – 32kB paměť pro kód a 8kB paměť pro data. Frekvence hodin je nastavitelná na 5 nebo 10 MHz. Obr. 4 obsahuje schéma zpracování dat a propojení mezi senzorem, mikroprocesorem a externím senzorem.

Obr. 4

ISPU je možné naprogramovat v jazyce C a programy mohou být zkompilovány pomocí nástroje ISPU toolchain. Pro senzor ISM330ISN je také možné v aplikaci NanoEdge AI Studio vytvořit knihovnu pro detekci anomálií. Softwarový balíček X-CUBE-ISPU obsahuje příklady programů (včetně kalibračních algoritmů, senzorové fúze, algoritmů pro chytré hodinky atd.), šablonu pro nový program, integrační kód pro knihovnu detekce anomálií a firmware pro logování dat. Více informací o senzorech s ISPU je možné nalézt na st.com/ISPU.

Podporované senzory:

  • Consumer: LSM6DSO16IS
  • Industrial: ISM330IS, ISM330ISN

Závěr

V tomto článku jsou popsány vestavěné programovatelné funkce obsažené v některých MEMS senzorech pohybu firmy ST a jejich benefity pro finální aplikaci. ST je jediným dodavatelem na trhu, který nabízí všechny zmiňované funkce a umožňuje uživateli vlastní zpracování dat přímo uvnitř senzoru. Díky kompatibilnímu rozložení pinů senzorů je pro uživatele používající standardní přístup jednoduché přejít na jeden z diskutovaných přístupů a využít výhody vestavěných funkcí. Pro více informací o celém MEMS portfoliu navštivte st.com/mems.


1 https://www.st.com/unico-gui

2 https://www.st.com/mems-studio