Analýza požiadaviek pre detekciu pohybu
1. | Opis použitých technológií |
2. | Analýza požiadaviek pre detekciu pohybu |
3. | Realizácia projektu detekcie pohybu |
4. | Zhodnotenie výsledkov projektu detekcia pohybu
|
Analýza požiadaviek
V tejto kapitole sa zameriame na tabuľky funkčných a nefunkčných požiadaviek, ktoré boli vyvodené z kontextu zadania bakalárskej práce. Zároveň sa budeme sa venovať opisu jednotlivých bodov funkčných požiadaviek. Požiadavky sú rozdelené do dvoch podkapitol. Prvá podkapitola sa venuje opisu požiadaviek firmvéru pre mikrokontrolér. V druhej podkapitole sa nachádza bližší opis požiadaviek desktopovej aplikácie.
Katalóg požiadaviek pre mikrokontrolér
Táto podkapitola je venovaná opisu funkčných a nefunkčných požiadaviek pre mikrokontrolér STM32L432KC. Úvodná časť obsahuje katalóg požiadaviek, ktoré boli navrhnuté v súvislosti s riešením tohto zadania, zatiaľ čo v druhej časti sa nachádza bližší opis požiadaviek.
# | Požiadavka | Poznámka |
---|---|---|
FP01 | Získavanie údajov zo senzorov | Mikrokontrolér komunikuje so senzormi a získava z nich údaje. |
FP02 | Spracovanie nameraných údajov | Dáta získané z 3-osového gyroskopu a akcelerometra budú uložené do buffra. |
FP03 | Rýchlosť spracovania údajov | Prenosová rýchlosť komunikácie medzi mikrokontrolérom a senzorom musí byť dostatočne rýchla a stabilná. |
FP04 | Energeticky nenáročné riešenie. | Zariadenie musí optimalizovať spotrebu elektrickej energie. Je potrebné nájsť optimálnu konfiguráciu mikrokontroléra. |
FP05 | Komunikácia s PC | Zariadenie musí komunikovať s počítačom cez USB v režime virtuálneho sériového portu. |
FP06 | Vnútorná pamäť zariadenia | Zariadenie musí disponovať internou pamäťou, do ktorej bude ukladaný počet vyžiadaných meraní (podľa žiadosti z počítača). |
[tabulka_funkcne_mc]
# | Požiadavka |
---|---|
NP01 | Inicializačný kód v jazyku C bude vygenerovaný prostredníctvom STM32CubeMX. |
NP02 | Firmvér pre zariadenie bude vytvorený v prostredí SW4STM32. |
NP03 | Komunikácia mikrokontroléra a senzorov pobeží cez zbernicu SPI. |
NP04 | Bude vytvorený driver pre komunikáciu cez zbernicu SPI. |
NP05 | Pre prácu s mikrokontrolérom bude použitý programovací jazyk C (verzia C99) a knižnica HAL. |
[tabulka_nefunkcne_mc]
Prvou požiadavkou tejto práce je nadviazanie komunikácie medzi zvoleným mikrokontrolérom a senzorom. Rozhodli sme pre mikrokontrolér STM32L432KC, ktorý disponuje dostatočne vysokým a dobre škáľovateľným výkonom, ktorý potrebujeme pre zvýšenie rýchlosti spracovania príkazov a dát. Tento mikrokontrolér sa zároveň vyznačuje aj veľmi nízkou spotrebou, vďaka čomu môže byť neskôr použitý aj pri napájaní z externej batérie. Dôležitým faktorom pri voľbe bola aj cena, keďže sa snažíme o minimalizovanie nákladov.
Spomedzi širokej ponuky senzorov sme sa rozhodli pre senzor LSM9DS1 od firmy STMicroelectronics. Disponuje trojosovým MEMS akcelerometrom, gyroskopom a magnetometrom a senzorom teploty. Pri našom meraní použijeme len dve z týchto zariadení a to akcelerometer a gyroskop. Vďaka ich kombinácii dokáže senzor určiť naklonenie objektu v trojrozmernom priestore a rovnako aj smer pohybu. Senzor navyše podporuje SPI a $I^2C$ rozhrania, ktoré boli brané do úvahy pri prvotnom návrhu komunikácie. Rovnako ako mikrokontrolér aj tento senzor je dostupný za relatívne nízku cenu, čo nám umožní splniť požiadavku na zníženie nákladov projektu.
Komunikácia medzi mikrokontrolérom a senzorom prebieha cez rozhranie SPI, ktoré pracuje v plne duplexnom režime. Pre toto rozhranie sme sa rozhodli z dôvodu vyššej rýchlosti v porovnaní $I^2C$ rozhraním, ktorá nám umožní znížiť odozvu medzi prijatím a odoslaním dát. Vďaka tomu sme schopní dosiahnuť vyššie a stabilné prenosové rýchlosti, ktoré nám umožnia vykonať väčší počet meraní v krátkom časovom úseku. Keďže ide o komunikačné rozhranie na princípe master/slave, v pozícii master pracuje mikrokontrolér, ktorý inicializuje komunikáciu so senzorom. Senzor čaká na príkazy od zariadenia master, medzi ktorými môže byť príkaz na nastavenie akcelerometra a gyroskopu alebo príkaz so žiadosťou o odoslanie nameraných hodnôt.
Komunikácia medzi mikrokontrolérom a aplikáciou prebieha cez USB port. Pre potrebu komunikácie sme navrhli prototyp komunikačného protokolu, ktorý nám umožňuje odosielať príkazy na zápis a čítanie dát medzi počítačom a mikrokontrolérom. Vďaka tomu dokážeme vykonať nastavenie senzorov akcelerometra a gyroskopu priamo v počítačovej aplikácii a odoslať ho na spracovanie do mikrokontroléra. Ten spracuje získané dáta a vydá pokyn na nastavenie senzorov alebo čítanie dát zo senzorov. Namerané surové dáta spracuje prostredníctvom knižnice vytvorenej na spracovanie nameraných údajov a uloží ich dátového buffra. Dáta z buffra odosiela cez USB port priamo do počítača.
Katalóg požiadaviek pre aplikáciu
V tejto podkapitole sa venujeme opisu funkčných a nefunkčných požiadaviek pre desktopovú aplikáciu. V úvodnej časti sa nachádza katalóg funkčných a nefunkčných požiadaviek a v druhej časti je bližší opis týchto požiadaviek.
# | Požiadavka | Poznámka |
---|---|---|
FP01 | Určenie polohy objektu v priestore | Z dát získaných z 3-osového gyroskopu a akcelerometra vypočíta polohu objektu v priestore. |
FP02 | Komunikácia s mikrokontrolérom | Aplikácia musí komunikovať s mikrokontrolérom prostredníctvom USB v režime virtuálneho sériového portu. |
FP03 | Responzívne používateľské rozhranie | Používateľské rozhranie aplikácie musí byť jednoducho ovládateľné a prehľadné. |
FP04 | Vizualizácia výsledných hodnôt | Aplikácia zobrazí polohu objektu v priestore v trojrozmernom virtuálnom prostredí. |
[tabulka_funkcne_app]
# | Požiadavka |
---|---|
NP01 | Aplikácia na PC bude napísaná v jazyku C#. |
NP02 | Na vizualizáciu budú použité funkcie zbierky DirectX API. |
NP03 | Používateľské rozhranie bude vytvorené pomocou jazyka XAML. |
NP04 | Pre komunikáciu s mikrokontrolérom bude vytvorený prototyp jednoduchého komunikačného protokolu |
[tabulka_nefunkcne_app]
Počítačová aplikácia má za úlohu zabezpečiť nastavenie komunikácie cez USB, nastavenie senzorov, spracovanie nameraných údajov a finálnu vizualizáciu nameraných hodnôt. Nastavenie komunikácie a senzorov sa vykonáva v príslušnom okne, v ktorom sa nachádzajú polia pre výber požadovaných hodnôt. Po vykonaní nastavenia sa sprístupní tlačidlo na nadviazanie spojenia medzi PC a mikrokontrolérom. Stlačením tlačidla sa odošlú nastavenia pre senzory a sprístupní sa tlačidlo pre spustenie merania a vizualizácie nameraných hodnôt.
Nastavenie komunikácie a senzorov prebieha v dvoch samostatných funkciách. Každá z nich číta dáta zvolené v okne pre dané nastavenie. Funkcie sú privolané a vykonané po stlačení tlačidla pre nadviazanie spojenia medzi PC a mikrokontrolérom a dáta pre nastavenie senzorov sú odoslané cez USB port. Ďalšia funkcia zabezpečuje spracovanie príkazu na meranie údajov z mikrokontroléra. Stlačením tlačidla pre spustenie merania sa odošle žiadosť s týmto príkazom a aplikácia čaká na prijatie nameraných dát.
Aplikácia príjme namerané dáta a odošle ich do funkcie pre ich spracovanie. V tejto funkcii sú surové dáta spracované podľa datasheetu a prepočítané do hodnôt použiteľných pri vizualizácii merania. Vizualizácia prebieha v 3D priestore prostredníctvom DirectX API. Vypočítané hodnoty sú priradené 3D objektu, ktorý v 3D priestore znázorňuje natočenie zachytené akcelerometrom a gyroskopom.