Semestrální projekt Petr Kučera & Jan Tonner vypracován studenty v rámci předmětu PSR.
Cílem semestrálního projektu je vytvořit digitální řízení motoru. Program má za úkol snímat polohu motoru na prvním zařízení, pomocí UDP protokolu ji přenést na zařízení druhé, nastavit motor na druhém motoru do stejné polohy a zobrazit informace jako živý graf na webovém serveru.
První zařízení, které snímá polohu nazýváme master. Program tento mód pozná tak, že při spuštění mu je jako parametr IP adresy zadána adresa cílového (salve) zařízení. Program následně funguje tak, že neustále čte polohu motoru a tu odesílá pomocí UDP protokolu do cílového zařízení. Program je ukončen stisknutím klávesy q
či Q
.
Druhé zařízení nazýváme slave. To pracuje poněkud komplikovaněji. Program do toho módu přejde v případě že parametr IP adresy je roven prázdnému stringu. Následně se vytvoří struktury nutné pro fungování tásků a spawnou se následující tasky:
- tWebServer - Spustí webový server, který čeká na dotazy zařízení a následně tvoří nové dílčí tasky, které mají za úkol odpovědět na HTTP Request.
- pracuje se strukturou
HTTP_D
- pracuje se strukturou
- tUDPHandler - Zpracovává pakety přicházející pomocí UDP protokolu a ukládá pozici motoru na master zařízení do proměnné
wanted_position
, která je vUDP
struktuře.- pracuje se strukturou
UDP
- pracuje se strukturou
- tHTTPDHandler - Vzorkuje data po 2 ms a ukládá je do struktury
HTTP_D
.- pracuje se strukturami
UDP
,psrMotor
aHTTP_D
- pracuje se strukturami
- tMotorControl - Čte data z proměnné
wanted_position
, která je vUDP
struktuře a snaží se otočit motorem do dané pozice.- pracuje se strukturami
UDP
apsrMotor
- pracuje se strukturami
Jednotlivé tasky běží dokud nejsou stejně jako v předchozím módu ukončeny stisknutím klávesy q
či Q
.
Workflow data je zobrazen ve schématu data_chart.drawio
, který si je možno zobrazit např. s rozšířením Drawio Preview ve VS Code.
Dookumentaci je možné vygenerovat automaticky pomocí Doxygen.
sudo apt install doxygen # install doxygen to creating a documentation
doxygen # generate documentation