====== Realized projects 2018 ====== * ** Aplikace pro spolehlivé ovládání hardware s pomocí sériové komunikace (Application used for reliable serial communication)** - (DP - Martin Chudoba) * Navrhněte jádro aplikace umožňující výměnu informací s pomocí spolehlivé komunikační linky. * Zařízení bude podporovat minimálně 2 sériová rozhraní. * Komunikace bude probíhat v textové i binární podobě zabezpečené jednoduchým bezpečnostním kódem. * Jádro bude umožňovat kontrolovat i parametry navrženého protokolu. * Se zařízením bude možné vyměňovat jednoduché parametry, pole parametrů a bloky dat z paměti. * Pro spolehlivé zpracování komunikace navrhněte vhodné spolehlivé schéma - například několik vláken. * Navržené jádro otestuje a nasimulujte různé způsoby uváznutí částí programu. * Pro jádro napište aplikaci, která bude umožňovat testování schopnosti jádra odolat různým situacím při selhání linek. * **Aplikace pro zpracování a prezentaci dat z experimentů pro OS Windows (Application used for management and presentation of experimental data based on OS Windows platform)** - (BP - Roman Artemov) * Navrhněte a implementujte aplikaci pro zpracování a prezentaci experimentálních dat. * Aplikace bude napsána v Microsoft ASP.NET MVC. * Aplikace bude umožňovat s pomocí jednoduchého skriptu zpracovat výsledky z naměřených experimentálních dat. * Zpracovaná data bude možné prezentovat jako tabulku nebo graf. * Nastavování plánování extrakce dat s pomocí jednoduchého skriptu bude možné s pomocí Windows task scheduleru. * Extrahovaná data budou exportována do generického XML dokumentu a následně zpracována implementovanou aplikací. * Autentizace pro přístup k webové stránce bude řešena s pomocí SSO ve federaci cvutID. * Vzdálená zpráva aplikace (nastavení plánování, šablon a základní konigurace) bude umožněna přes zabezpečené webové rozhraní. * Pro výslednou aplikaci vytvořte několik testovacích dat pro ověření správné funkce. * **Dohledové zařízení pro chytrou domácnost založené na platformě Arduino (Monitoring device used in smart home based on Arduino platform)** - (BP - Martin Dvořák) * Navrhněte a realizujte zařízení umožňující monitorování a ovládání chytré domácnosti. * Zařízení bude obsahovat analogové a digitální vstupy/výstupy. * Pro komunikaci bude zařízení obsahovat GSM a Ethernet modem. * Při volbě periferií se zaměřte zejména na možnost sledování stavu zálohovací baterie a možnosti ovládat externí zařízení s pomocí Relé. * Zařízení bude umožňovat přijmout SMS a následně odeslat ethernetový rámec s požadovaným obsahem. * Zrealizované zařízení následně propojte s vývojovou deskou Raspberry PI, na které bude nainstalován vhodný operační systém včetně jednoduchého dohledového software. * Funkčnost výsledného zařízení demonstrujte na několika příkladech. * **Nástroj pro generování vývojových diagramů z podmnožiny jazyka C (A tool for generating flowcharts from a subset of C language)** - (BP - Vojtěch Procházka) * Cílem práce je vytvořit nástroj pro generování vývojových diagramů zejména pro vyjádření funkce mikroprogramového automatu. * Prostudujte existující řešení a vyberte vhodnou cílovou aplikaci pro zobrazení vývojového diagramu. * Důraz bude kladen na jednoduchou konverzi mezi jazykem C a vnitřní formou popisu v cílové aplikaci. * Navrhněte řešení pro automatické generování vývojových diagramů pomocí podmnožiny příkazů jazyka C. * Navržené řešení zrealizujte a otestujte. * Vytvořte několik ukázek možného popisu vývojového diagramu v jazyce C. * **Inteligentní ovládání a správa běžných zařízení v domácnosti (A device for controlling and managing of smart home)** - (BP - Vojtěch Pail) * Prostudujte existující řešení pro ovládání a správu zařízení používaných pro chytré domácnosti. * Navrhněte vlastní systém založený na modulární architektuře. * Řešení bude obsahovat základní jednotku pro správu a řízení a univerzální modul umístěný u ovládaného zařízení. * Pro propojení těchto modulů navrhněte vhodnou propojovací strukturu včetně komunikačního protokolu. * Navržené řešení zrealizujte a otestujte. * Vytvořte několik ukázek možných aplikaci pro ovládání jednotlivých zařízení jakou jsou světla, zásuvky apod. * **Generátor elektrických obvodů pro předmět ČAO** (Automatic analog circuit generator)(BP - Branda Šimon) * Prozkoumejte existující řešení pro kreslení elektrických obvodů. * Vytvořte aplikaci, která bude umožňovat na základě zadaných parametrů automaticky náhodně generovat jednoduché obvody složené ze zdroje napájení, kondenzátorů, rezistorů a cívek. * Aplikace bude umožňovat nastavit hodnoty a typ součástky v obvodu. * Výsledné schéma bude možné překreslit tak, aby se změnila pouze pozice součástky. * Vygenerované schéma bude možné uložit do formátu XML a opětovně načíst. * Aplikace bude umožňovat popsat obvod s pomocí rovnic a to jak v časové oblasti, tak s pomocí fázorů. * Vygenerované rovnice bude možné bez úprav vložit do programu Wolfram Mathematica a zpracovat. * Při generování rovnic bude možné zvolit směr proudu a napětí ručně, popřípadě automaticky. * Výsledné řešení otestujte. * **Univerzální vývojová deska s Arduinem** (Universal development board with Arduino)(BP - Jan Kubát) * Prozkoumejte existující vývojové desky s Arduinem a zaměřte se zejména na množství a typ periferií. * Navrhněte vlastní vývojovou desku obsahující velké množství periferií. * Vývojová deska by měla obsahovat zejména tyto periferie: grafický display, tlačítka, lineární potenciometr, teploměr/vlhkoměr, ultrazvukový měřic vzdálenosti, wifi/ethernet, bluetooth, RFID. * Navržené řešení zrealizujte a otestuje. * Pro demonstraci správné funkce periferií vytvořte několik demonstračních aplikací. * **Programovatelné zařízení s nízkou spotřebou pro ochranu baterie** (Low power programmable device for battery protection) (BP - Miroslav Kallus) * Prozkoumejte existující řešení. * Navrhněte vlastní řešení zařízení zajišťující ochranu baterie proti úplnému vybití. * Zařízení bude umožňovat nastavení minimální úrovně napětí, při kterém má být baterie odpojena od spotřebiče. * Zařízení bude navrženo tak, aby v klidovém stavu odebíralo minimální proud ze zdroje napájení. * Pro ovládání a nastavení celého zařízení vyberte vhodný mikrokontrolér. * Nastavení bude možné provést s pomocí několika tlačítek a jednoduchého displeje. * Navržené řešení zrealizujte a otestujte. * Pro výsledné řešení s mikrokontrolérem napište aplikaci umožňující nastavit a sledovat celé zařízení. * **Nástroj pro analýzu procesů v jádře os Android na platformě Raspberry PI** (Android core process analysis tool on Raspberry PI platform) (BP - Roman Vaivod) * Explore existing projects that support porting of os Android to the Raspberry PI platform. * Select the most suitable project and port it on the Raspberry PI platform. * Find a good place in the architecture of Android for the placement of the diagnostic tool. * Design a tool for performance analysis of Android components. * Tool will be developed in C++ language * Tool will allow to trace events happening with specified process in specified period of time and create a list where each entry is described by at least three parameters: CPU usage, memory usage, system/process event. * Based on this list, tool will detect possible performance problems in execution of the process and output problematic sequence of events to user. * Tool will be written with respect to the next extension. * Implement the proposed tool and write tests for it. * Create some examples to demonstrate usage of the tool. * **Inteligentní zrcadlo s Raspberry Pi pro ovládání chytré domácnosti** (Intelligent mirror with Raspberry Pi for smart home control) (BP - Frederik Štefaniak) * Prozkoumejte existující řešení inteligentních zrcadel * Zvolte vhodný typ dotykové obrazovky a zrcadlové vrstvy * Pro platformu Raspberry Pi vyberte vhodný OS * Napište konfigurační soubor pro připojení displeje přes HDMI port a dotykové vrstvy připojené přes USB port * Naprogramujte knihovnu pro ovládání periferií (světlá, bluetooth reproduktor, zásuvky) * Naprogramujte knihovnu pro získávání různých dát z internetu (počasí, čas, doprava, atp.) * Navrhněte a naprogramujte aplikaci umožňující ovládat dostupné periférie a zobrazovat výstupy z nich * Výsledné řešení otestujete