Detekcia pohybu v nositeľných zariadeniach

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
Stu wiki.png
Slovenská technická univerzita
Materiálovotechnologická fakulta so sídlom v Trnave
Mtf wiki.png
Detekcia pohybu v nositeľných zariadeniach

Bakalárska práca


Autor:
Pedagogický vedúci: Ing. Juraj Ďuďák, PhD.
Študijný odbor: Aplikovaná informatika a automatizácia v priemysle

Akademický rok

2018/2019


Abstrakt

Abstract

The aim of this thesis is to desing and construct a device designed to sense the position of an object in three-dimensional space. The first chapter is devoted to the description of used devices and the summary of acquired theoretical knowledge. In the second chapter one can find a catalog of functional and non-functional requirements drawn in the context of this work. The next chapter is focused on the description of the solution as well as desing and implementation of the firmware for microcontroller and the computre application for the visualization of the results. Result of this solution is device capable of detecting orientation of an object in space and application that displays obtained data in three-dimensional space.

Úvod

Problematika detekcie pohybu je jednou z hlavných tém v oblasti rozšírenej reality a herného priemyslu. S detekciou pohybu sa bežne stretávame v mobilných telefónoch, smart hodinkách a fit náramkoch, ako aj vo VR ovládačoch pre počítačové hry. Základom takýchto riešení sú vždy senzory pre určenie polohy (akcelerometer, gyroskop, prípadne magnetometer), miniatúrny mikrokontrolér pre spracovanie nameraných údajov a v prípade herných ovládačov aj komunikačné rozhranie.
V práci budú opísané princípy určenia polohy objektu v priestore a prehľad senzorov pre získavanie polohy. Podrobnejšie bude opísaný senzor, ktorý bude použitý v praktickej časti. Pre ovládanie senzorov a načítanie nameraných údajov bude použitý mikrokontrolér STM32L432KC z kategórie ARM. Tento mikrokontrolér obsahuje jadro Cortex-M4 a vyznačuje sa nízkou spotrebou elektrickej energie. Vyhodnocovanie údajov bude vykonávané v samostatnej aplikácii, ktorá bude spúšťaná na počítači a bude vizualizovať získané údaje. Komunikácia medzi počítačom a mikrokontrolérom bude prebiehať cez sériový port za použitia nami navrhutého komunikačného protokolu.
Ciele bakalárskej práce:

  1. Navrhnúť zapojenie mikrokontroléra a senzorov akcelerometra a gyroskopu.
  2. Vytvoriť firmvér pre načítanie a uloženie nameraných údajov.
  3. Navrhnúť komunikačný protokol riadiaci komunikáciu cez sériový port.
  4. Navrhnúť a vytvoriť desktopovú aplikáciu pre vizualizovanie zosnímanej polohy.

Kompletný katalóg funkčných a nefunkčných požiadaviek sa nachádza v 2. kapitole.

Opis použitých technológií

Pri vypracovaní bakalárskej práce budú použité viaceré technológie. Spomedzi mikrokontrolérov na trhu sme vybrali mikrokontrolér z rodiny ARM, konkrétne STM32L4xx, ktorý sa vyznačuje nízkou spotrebou a zároveň patrí do skupiny výkonných riešení [20]. Komunikačné rozhrania, ktoré je pri komunikácii so senzormi možné použiť, sú [math]I^2C[/math] a SPI. Pre komunikáciu s PC môže byť použité sériové rozhranie USART alebo USB.

Mikrokontroléry rodiny STM32Lxx

V tejto kapitole sa zameriame na krátky opis ARM procesorov, priblížime si rodinu Cortex-M jadier a rovnako aj rodinu mikrokontrolérov STM32Lxx, medzi ktoré patrí mikrokontrolér STM32L432KC, ktorý sme si na základe nízkej spotreby, dostatočného výkonu a nízkej ceny zvolili pre pre náš systém.

ARM Cortex-M

ARM architektúra je súbor špecifikácií týkajúcich sa množiny inštrukcií, exekučného modelu, organizácie a rozloženia pamäte, inštrukčných cyklov a ďalších informácií [13]. Spoločne opisujú stroj, ktorý bude danú architektúru implementovať. Ide o RISC architektúru, teda počítač s obmedzenou inštrukčnou sadou [4]. Využíva sa najmä v procesoroch, ktoré slúžia na vykonávanie jednoduchých inštrukcií. Tie vyžadujú menšie množstvo tranzistorov v porovnaní s procesormi s komplexnejšou CISC architektúrou, čo znižuje nielen náklady na výrobu, ale aj spotrebu energie pri ich používaní. Z tohto dôvodu sa veľmi často využívajú v moderných prenosných zariadeniach, ktoré sú napájané batériou ako napríklad smartfóny, tablety či vnorené systémy.

ARM Cortex-M4 je široká sada vysoko škálovateľných, kompatibilných a energeticky úsporných procesorov [17]. Vďaka svojej architektúre sú jednoducho použiteľné. Boli navrhnuté s cieľom zníženia nákladov pri výrobe čipu a sú optimalizované pre použitie v energeticky šetrných a cenovo dostupných mikrokontroléroch. Aj napriek veľmi nízkej spotrebe a priaznivej cene sa však vyznačujú vynikajúcim výpočtovým výkonom a implementáciou užitočných funkcií a vlastností, akými sú napríklad prerušenia.

STM32Lxx

Mikrokontroléry rodiny STM32Lxx sú zariadenia vyznačujúce sa veľmi nízkou spotrebou . Sú založené na vysokovýkonných jadrách rodiny ARM Cortex-M4, ktoré pracujú pri frekvencii až do 80MHz. Disponujú vysokorýchlostnými pamäťami a SPI rozhraním, ktoré umožňuje použitie komunikácie na štyroch komunikačných linkách. Zároveň ponúkajú podporu širokej škály vstupno-výstupných periférií. Disponujú hneď niekoľkými ochrannými mechanizmami pre zabudovanú flash a SRAM pamäť, ako napríklad ochrana proti zápisu či Firewall. Okrem toho ponúkajú podporu viacerých štandardných a pokročilých komunikačných rozhraní: SPI, [math]I^2C[/math], USART, ADC, DAC, QSPI, USB. Navyše sú schopné pracovať pri rôznych teplotách okolia od -40C až do +125C.

STM32 Nucleo-L432KC

STM32 Nucleo je nízkonákladová a ľahko použiteľná vývojová doska, ktorá umožňuje rýchly a jednoduchý vývoj s STM32 mikrokontrolérmi [21]. Umožňuje používateľom skúšať nové koncepty a prototypy zariadení, pričom je dostupná v rôznych výkonnostne a energeticky náročných kombináciách. Súčasťou dosky je integrovaný programátor ST-LINK/V2-1 a debugovací nástroj. Firma STMicroelectronics zároveň ponúka podpornú knižnicu pre programovanie mikrokontrolérov s názvom HAL, viaceré softvérové nástroje (STM32CubeProgrammer, STM32CubeMX) a online zdroje, ako napríklad technickú dokumentáciu, programátorský manuál alebo aplikačné poznámky výrobcu. Na doskách sa nachádzajú mikrokontroléry zapuzdrené v 32-pinových schránkach, resetovacie tlačidlo a 3 programovateľné signalizačné LED diódy.

Pre náš systém určený na detekciu pohybu sme sa rozhodli použiť dosku STM32 Nucleo-L432KC. Tá disponuje mikrontrolérom STM32L432KC, založeným na Cortex-M4 architektúre, ktorého maximálna frekvencia je až 80MHz [17]. Napájacie napätie tohto mikrokontroléra sa pohybuje v rozsahu 1.71V až 3.6V. Disponuje 256KB flash pamäťou pre uloženie kódu a 64KB pamäťou SRAM. Pre pripojenie periférnych zariadení ponúka doska 26 vstupno-výstupných pinov. Tie môžu byť použité aj ako piny pre sériovú komunikáciu. Ďalej disponuje adaptívnym real-time urýchľovačom pamäte ART Accelerator™, ktorý prispôsobuje rýchlosť spracovania informácií balansovaním výkonnostného rozdielu medzi Cortex-M4 procesorom a flash pamäťou. STM32L432KC ponúka širokú škálu komunikačných rozhraní, z ktorých pre komunikáciu s pripojeným senzorom akcelerometra a gyroskopu využijeme SPI. Zvolený senzor LSM9DS1 podporuje komunikačné rozhranie [math]I^2C[/math] a SPI. Vzhľadom na to, že rozhranie SPI dovoľuje použiť rádovo vyššiu prenosovú rýchlosť, sme sa rozhodli využiť túto alternatívu. Ďalej budú použité rozhrania USB a USART, pre prenos nameraných údajov zo senzorov do počítača.

Doska STM32 Nucleo-L432KC
Obr. 1.1: Doska STM32 Nucleo-L432KC

Senzory určené na meranie pohybu

Na meranie pohybu je možné použiť viacero zariadení, od kamier cez infračervené senzory až po zariadenia na detekciu hybnosti, akými sú napríklad gyroskop či akcelerometer. Moderné kamery disponujú veľmi dobrou presnosťou a v zložitých sústavách sa bežne používajú na zaznamenanie pohybu, sú však veľmi nákladné a rozmerné a ich využitie v automatizácii tak neprichádza do úvahy. Ich výhoda spočíva v tom, že pri použití v sústave dokážu presne určovať polohu zariadenia alebo človeka a v schopnosti sledovať viacero objektov naraz. Gyroskop a akcelerometer v týchto oblastiach zaostávajú a určenie presnej polohy zariadenia je za samostatného použitia nemožné, majú však iné výhody. Medzi ne môžeme zradiť nízku nákladovosť a kompaktné rozmery. Vďaka malým rozmerom sa veľmi často používajú aj v moderných zariadeniach ako sú smartfóny, kvadrokoptéry, či medicínske zariadenia na monitorovanie pohybu. Kombináciou gyroskopu a akcelerometra získame zariadenie, ktoré bude schopné zaznamenávať naklonenie a pohyb a umožní nám tak získavať údaje pre snímanie pohybu v 3D priestore. V nasledujúcich podkapitolách sú bližšie opísané obe tieto zariadenia a senzor, ktorý bude pre meranie pohybu použitý.

Vývojová doska so senzorom LSM9DS1

LSM9DS1 je SiP zariadenie, ktoré obsahuje 3D digitálny akcelerometer, 3D gyroskop a 3D digitálny magnetometer [19]. Dokáže pracovať pri teplotách od -40C až do +85C. Podporuje kominukáciu cez [math]I^2C[/math] zbernicu a rovnako aj cez rozhranie SPI, vďaka čomu si možno vybrať preferovaný komunikačný protokol. Ponúka možnosť nastavenia rozsahu pre všetky tri senzory a to [math]\pm[/math]2g, [math]\pm[/math]4g, [math]\pm[/math]8g, [math]\pm[/math]16g pre akcelerometer; [math]\pm[/math]4, [math]\pm[/math]8, [math]\pm[/math]12, [math]\pm[/math]16 Gauss pre magnetometer a [math]\pm[/math]245, [math]\pm[/math]500, [math]\pm[/math]2000 dps pre gyroskop. Zároveň poskytuje možnosť zníženia spotreby prostredníctvom osobitného nastavenia senzorov do režimu s nízkou spotrebou. Na čipe sa nachádza aj vstavaný senzor pre meranie teploty.

Doska LSM9DS1
Obr. 1.2 Doska LSM9DS1

Gyroskop

Gyroskop je zariadenie, ktoré dokáže zmerať a určiť rotačný pohyb objektu. Produkuje kladne orientovaný digitálny výstup. MEMS gyroskopy sú malé, cenovo dostupné zariadenia, ktoré vďaka Coriolisovej sile dokážu určiť uhlovú rýchlosť a zrýchlenie objektu [18]. Používajú sa na určenie zmeny polohy alebo natočenia objektu v priestore.

Väčšina MEMS gyroskopov využíva pri meraní konfiguráciu dvoch periodicky sa pohybujúcich štruktúr/telies, ktoré sú prostredníctvom pružín upevnené vo vonkajšom ráme [25]. Tieto telesá majú navzájom opačný smer pohybu, ktorý je kolmý na smer otáčania. Potom, čo do rovnice vstúpi uhlová rýchlosť, začne na obe individuálne hmotné telesá pôsobiť Coriolisova sila v protismere pohybu danej hmoty, ktorá je úmerná hodnote uhlovej rýchlosti. Dôsledkom pôsobenia tejto sily je stlačenie pružín vo vnútri rámu, čo spôsobí posuv meracích telies. Výslednou hodnotou je zmena kapacity, ktorá je úmerná uhlovej rýchlosti otáčania. Pri analógových gyroskopoch sa jej hodnota mení na výstupné napätie a pri digitálnych gyroskopoch na hodnoty LSB. Keď je dvom hmotným telesám udelené lineárne zrýchlenie, začnú sa pohybovať v rovnakom smere. Výsledkom toho nebude zistená zmena kapacity a na výstupe gyroskopu sa objaví nula. MEMS gyroskopy totiž nedokážu zaznamenať lineárne zrýchlenie akým je napríklad náraz telesa, z tohto dôvodu sa najčastejšie používajú v kombinácii s akcelerometrom, ktorý toto zrýchlenie dokáže zmerať.

Ukážka Coriolisovho efektu v dôsledku zmeny kapacity
Obr. 1.3 Ukážka Coriolisovho efektu v dôsledku zmeny kapacity

[math]{\vec {F}}_{C}=-2m\; {\vec {\omega }}\times {\vec {v}}[/math]

  • [math]{\vec {F}}_{C}[/math] - Coriolisova sila
  • [math]m[/math] - Hmotnosť telesa
  • [math]{\vec {\omega }}[/math] - Vektor uhlovej rýchlosti
  • [math]{\vec {v}}[/math] - Vektor rýchlosti

MEMS gyroskopy majú v moderných zariadeniach nespočetné množstvo využití. Digitálne kamery využívajú ich schopnosť na detekciu otáčania rúk, čo využívajú na stabilizáciu obrazu. V autách sa používajú na aktiváciu ESC, ktoré pomáha zabrániť nehodám spôsobeným ostrým zatočením vozidla a svoju funkciu plnia aj pri aktivácii airbagov v prípade prevrátenia vozidla. Kombinácia viacerých gyroskopov v IMU zariadeniach rozmiestnených po ľudskom tele sa dá použiť pri zaznamenávaní pohybu celého tela. IMU zariadenia majú svoje využitie aj v hernom priemysle, kde sa dajú použiť pri ovládaní hier v rozšírenej a virtuálnej realite alebo môžu plniť funkciu virtuálnej myši pri ovládaní systému.

Akcelerometer

Akcelerometer je zariadenie schopné merať zrýchlenie, naklonenie a vibrácie objektu v priestore [14]. Existuje mnoho druhov akcelerometrov, no jedným z najpoužívanejších sú kapacitné MEMS akcelerometre. Vyznačujú sa totiž vysokou citlivosťou a presnosťou aj v extrémnych podmienkach ako napríklad vysoká teplota [6] alebo vysoká nadmorská výška.

Základné jadro MEMS akcelerometrov sa skladá z dvoch sád paralelne upevnených ručičiek. Prvá sada je pevne pripevnená k doske. Druhá sada je pripevnená k telesu, ktoré je uchytené na dvoch pružinách. Pružiny sa pod vplyvom zrýchlenia začnú hýbať, čo spôsobí pohyb telesa a k nemu pripevnených ručičiek, čoho výsledkom je zmena kapacity medzi dvomi sadami ručičiek.

Jednoduchý model akcelerometra
Obr. 1.4 Jednoduchý model akcelerometra

[math]{C}_{0}\; =\; \epsilon_{0}\epsilon\; \frac{A}{d}[/math]

  • [math]{C}_{0}[/math] - Kapacita paralelných ručičiek
  • [math]\epsilon_{0}[/math] - Permitivita vákua
  • [math]\epsilon[/math] - Permitivita oddeľujúceho materiálu
  • [math]A[/math] - Plocha elektród
  • [math]d[/math] - Vzdialenosť medzi elektródami

MEMS akcelerometre majú široké využitie v moderných zariadeniach. Ich schopnosť detegovať orientáciu sa využíva v smartfónoch, hodinkách a rôznych ovládačoch. Svoju úlohu zohrávajú aj pri riadení dronov, kde sa používajú pri stabilizácii letu. Uplatnenie si našli dokonca aj v automobiloch a vďaka schopnosti detekcie nárazu slúžia na spustenie systému airbagov.

Komunikačné protokoly

V dnešnej dobe sa medzi najzákladnejšie komunikačné protokoly radia [math]I^2C[/math] a SPI [7]. Používajú sa najmä pri komunikácii v integrovaných obvodoch a vnorených systémoch. Za oboma technológiami stoja veľké spoločnosti - u SPI to je Motorola a u [math]I^2C[/math] Philips. Oba protokoly plnia vo vnorených systémoch rovnakú úlohu a tou je zabezpečenie komunikácie medzi zariadeniami. Aj napriek tomu sú však medzi nimi veľké rozdiely, podľa ktorých je nutné vybrať ten správny protokol pre danú komunikáciu.

Zbernica [math]I^2C[/math] potrebuje na komunikáciu len dve komunikačné linky, zatiaľ čo SPI rozhranie potrebuje tri až štyri, v závislosti od počtu použitých slave zariadení. [math]I^2C[/math] zároveň podporuje komunikáciu viacerých zariadení na jednej zbernici bez nutnosti pridávania ďalších komunikačných liniek pre zvolenie signálu a umožňuje použitie viacerých master zariadení. Ďalšou výhodou tohto riešenia, je dobrá schopnosť overenia odoslania dát a možnosť prenosu na väčšie vzdialenosti. Výhoda SPI však spočíva v oveľa rýchlejšej obojsmernej komunikácii a nižšej spotrebe v porovnaní s [math]I^2C[/math]. [math]I^2C[/math] podporuje prenosovú rýchlosť 100kHz v štandardnom móde, 400kHz vo rýchlom móde, 1MHz v móde fast mode plus a 3,4MHz vo vysokorýchlostnom móde [16]. Naopak rozhranie SPI disponuje rýchlosťou až 40MHz v móde master a 24MHz v móde slave pre mikrokontrolér STM32L432KC [17]. Práve z dôvodu vyššej rýchlosti prenosu dát sme sa rozhodli v tejto práci uprednostniť komunikácii cez SPI rozhranie. Do úvahy sme brali aj druhý spomínaný faktor, nakoľko sa snažíme o vytvorenie zariadenia s najnižšou možnou spotrebou. V nasledujúcej časti sa preto zameriame na podrobnejší opis SPI rozhrania.

SPI

Sériové periférne rozhranie (v skratke SPI) je rozhranie, ktoré sa bežne používa pri komunikácii medzi rôznymi zariadeniami, ako napríklad mikrokontrolérom a senzormi [13]. Ide o synchrónne obojsmerné prepojenie medzi riadiacou jednotkou a perifériami. SPI je komunikačným štandardom, ktorý bol navrhnutý spoločnosťou Motorola v sedemdesiatych rokoch minulého storočia. Komunikácia prebieha na báze komunikačného modelu master/slave, kde sa do pozície master stavia riadiaca jednotka, v tomto prípade mikrokontrolér a pozíciu slave zaujme senzor. SPI rozhranie navyše podporuje možnosť zapojenia viacerých zariadení, pričom pozíciu master zaujme vždy len jedno zariadenie a všetky zvyšné musia plniť úlohu slave.

SPI rozhranie je takmer vždy tvorené štyrmi logickými signálmi, ktorých základnú štruktúru možno vidieť na obrázku [fig:SPI_Basic]. Niektoré zariadenia je možné ovládať aj prostredníctvom troch vstupno-výstupných signálov. Medzi tieto signály patria:

  • SCK (Serial Clock) - slúži na generovanie taktu, ktorým sa určuje frekvencia prenosu údajov cez rozhranie SPI. Generuje ho master, čo znamená, že každý prenos údajov cez rozhranie je inicializovaný master.
  • MOSI (Master Output Slave Input) - používa sa na posielanie údajov od master k slave.
  • MISO (Master Input Slave Output) - používa sa na posielanie údajov od slave k master.
  • [math]\overline{SS}[/math] (Slave Select) - slúži na výber aktívneho zariadenia slave.
Základná štruktúra SPI rozhrania
Obr. 1.5 Základná štruktúra SPI rozhrania

[fig:SPI_Basic]

Vďaka tomu, že SPI disponuje dvomi samostatnými komunikačnými linkami (MOSI, MISO), umožňuje plne duplexnú (obojsmernú) komunikáciu medzi master a slave zariadeniami. V praxi to znamená, že slave môže odosielať získané dáta a zároveň prijímať príkazy a údaje od nadradeného master zariadenia. Každá akcia vykonaná cez rozhranie SPI je inicializovaná zopnutím SCK signálu. SPI rozhranie dokáže pracovať v troch režimoch [12]:

  • Run Mode - základný režim prevádzky
  • Wait Mode - konfigurovateľný režim zníženej spotreby
  • Stop Mode - v tomto režime je rozhranie neaktívne

Prenos sa začne tým, že master určí frekvenciu taktu na SCK pine, ktorý zabezpečí synchronizáciu toku dát [2]. Následne zmení úroveň SS pinu z logickej 1 na úroveň logickej 0, čím aktivuje zariadenie slave. Master následne posiela dáta po bitoch použitím komunikačneh linky MOSI. Slave tieto dáta číta po bitoch a to v poradí, v akom ich prijme. Ak sa v prečítaných dátach nachádzala požiadavka na odpoveď, odpovie prostredníctvom MISO signálu. Ak je potrebné získavať dáta po dlhšiu dobu, prenos môže pokračovať niekoľko cyklov, dokým ho master neukončí a zruší výber zariadenia slave.

Prenos dát medzi zariadeniami (prevzaté z )
Obr. 1.6 Prenos dát medzi zariadeniami (prevzaté z 12)

Opis Registrov SPI

Táto časť je zameraná na podrobnejší opis základných registrov rozhrania SPI. Tieto registre sú súčasťou každého rozhrania SPI. Zameriame sa na to, akú úlohu zohrávajú individuálne bity v týchto registroch. Medzi tieto registre patria:

  1. SPI Control Register 1

    SPI Control Register 1 (prevzaté z )
    Obr. 1.7 SPI Control Register 1 (prevzaté z [12])

    [fig:SPICR_1]

    Prístup pre zapisovanie a čítanie do a z tohto registra je povolený kedykoľvek .

    • SPIE (Interrupt Enable Bit) - povolenie a zakázanie SPI prerušení

    • SPE (System Enable Bit) - spustí SPI systém a vyhradí vybrané piny, ktorým pridelí funkciu v SPI rozhraní

    • SPTIE (Transmit Interrupt Enable) - povoluje odosielanie žiadosti o prerušenie

    • MSTR (Master/Slave Mode Select Bit) - nastavenie režimu, v ktorom bude dané SPI zariadenie pracovať.

    • CPOL (Clock Polarity Bit) - nastavenie polarity/úrovne hodín

    • CPHA (Clock Phase Bit) - bit určený na nastavenie formátu hodín

    • SSOE (Slave Select Output Enable) - výber režimu (vstupný/výstupný) signálu [math]\overline{SS}[/math]

    • LSBFE (LSB-First Enable) - umožňuje prenos dát od LSB

  2. SPI Baud Rate Register

    SPI Baud Rate Register (prevzaté z )
    Obr. 1.8 SPI Baud Rate Register (prevzaté z [12])

    [fig:SPI_Baud_Rate]

    Prístup pre zapisovanie a čítanie do a z tohto registra je povolený kedykoľvek [12]. Zápis dát do rezervovaných bitov však nemá žiaden efekt.

    • SPPR2-SPPR0 - bity obsahujúce predvoľby prenosovej rýchlosti

    • SPR2-SPR0 - bity obsahujúce predvoľby prenosovej rýchlosti

    Tieto bity slúžia na nastavenie prenosovej rýchlosti SPI rozhrania. Zmena týchto bitov v režime master preruší prenos a celý systém prejde do stavu nečinnosti.

  3. SPI Status Register

    SPI Status Register (prevzaté z )
    SPI Status Register (prevzaté z [12])

    [fig:SPI_Status_Reg]

    Prístup pre čítanie z tohto registra je povolený kedykoľvek [12]. Do tohto registra však nemožno zapisovať žiadne dáta, nakoľko zápis dát do rezervovaných bitov nemá žiaden efekt.

    • SPIF (Interrupt Flag) - nastaví sa, ak dátový register príjme dáta

    • SPTEF (Transmit Empty Interrupt Flag) - indikuje stav dátového registra

    • MODF (Mode Fault Flag) - nastaví sa v prípade, že sa signál [math]\overline{SS}[/math] zmení na aktívny a SPI zariadenie je v režime master

Softvérové nástroje

STM32CubeMX

STM32CubeMX je softvérový nástroj s grafickým rozhraním [23], ktorý umožňuje jednoduchú počiatočnú konfiguráciu mikrokontrolérov STM32. Aplikácia dokáže vygenerovať inicializačný zdrojový kód v programovacom jazyku C, ktorý je základom firmvéru, ktorý budeme vytvárať pre zvolený mikrokontrolér.

Program obsahuje zoznam podporovaných mikrokontrolérov, spomedzi ktorých si vyberieme zvolený mikrokontrolér. Za pomoci dostupných nástrojov je možné prispôsobiť nastavanie jednotlivých pinov či frekvencie, na ktorej bude mikrokontrolér pracovať a povoliť či zakázať rôzne podporované komunikačné rozhrania a funkcie mikrokontroléra. Aplikácia poskytuje možnosť generovať kód pre široké spektrum vývojových prostredí, akými sú napríklad System Workbench for STM32 alebo Keil.

Tento program využijeme na počiatočnú konfiguráciu použitých komunikačných rozhraní, jednotlivých vstupno/výstupných pinov a nastavenie frekvencie jadra mikrokontroléra. Následne vygenerejume kód v programovacom jazyku C pre vývojové prostredia System Workbench for STM32, kde sa zamierame na tvorbu firmvéru.

System Workbench for STM32

System Workbench for STM32 je sada nástrojov od spoločností STMicroelectronics a AC6. Jedná sa vývojové prostredie založené na programe Eclipse [24]. Medzi hlavné vlastnosti programu patrí podpora pre všetky STM32 mikrokontroléry, Nucleo a Evaluation dosky, sady Discovery a zároveň STM32 firmvér. Tento program disponuje GCC kompilátorom a ponúka ladiaci nástroj/debugger založený na GDB. Zároveň podporuje prácu vo viacerých operačných systémoch a to Windows, Linux a OS X.

V tomto vývojovom prostredí budeme v programovacom jazyku C tvoriť firmvér pre mikrokontrolér STM32L432KC, ktorý bude zabezpečovať komunikáciu medzi mikrontrolérom a pohybovými senzormi cez SPI rozhranie a ukladanie získaných dát. Dáta sú následne odosielané do aplikácie slúžiacej na spracovanie a vizualizáciu získaných hodnôt. Na komunikáciu medzi aplikáciou a mikrokontrolérom použijeme prototyp jednoduchého komunikačného protokolu, ktorý sme navrhli.

Visual Studio 2017

Visual Studio je vývojový nástroj od spoločnosti Microsoft, ktorý umožňuje upravovať, debugovať a tvoriť zdrojový kód vo viacerých jazykoch [11]. Visual Studio disponuje mnohými pokročilými funkciami a nástrojmi, ktoré uľahčujú vývoj softvéru. Podporuje množstvo kompilátorov ako napríklad Intel C++, PGC++ a Visual C++. Taktiež disponuje podporou IntelliSense, čo zahŕňa rôzne funkcie na doplnenie kódu, informácie o parametroch či zoznam paramatetrov. Zároveň umožňuje návrh a tvorbu používateľského rozhrania aplikácií za použitia WinForms a WPF. Pre prácu s grafikou a 3D obsahom poskytuje možnosť využiť hneď niekoľko API knižníc ako GDI+, OpenGL a DirectX.

Vo Visual Studiu budeme pracovať na vytvorení aplikácie, ktorá spracuje namerané hodnoty v 3D priestore a zobrazí vizuálnu reprezentáciu výsledkov. Kód aplikácie bude napísaný v objektovo-orientovanom programovacom jazyku C# a používateľské rozhranie bude vytvorené za pomoci grafického systému WPF, ktorý sa používa pri renderovaní používateľských rozhraní vo Windows aplikáciách. Pri tvorbe používateľského rozhrania využijeme značkovací programovací jazyk XAML.