Rev Author Line No. Line
2974 poskozby 1 % <<< zdrojový kód pro typografický systém TeX >>>
2 % <<< >>>
3 % <<< formát: LaTeX >>>
4  
5 % (cokoliv za znakem procento je ignorováno až do konce øádku)
6  
7 % -------<<< Definice parametrù formátu >>>-------
8 \documentclass[a4paper, 12pt]{article}
9 \usepackage[IL2]{fontenc}
10 \usepackage[czech]{babel} %kvuli cestine
11 \usepackage[cp1250]{inputenc} %kvuli cestine
12 \usepackage{graphicx}
13 \usepackage{epstopdf}
14 \usepackage{float}
15 \usepackage[hang]{caption}
16 \usepackage[top=3cm, bottom=3cm, right=2.5cm, left=2.5cm]{geometry}
17 \usepackage{hyperref} %jako HTML odkaz
18 %\usepackage{showframe} %zobrazí okraje
19 \usepackage{fancyhdr} %zahlavi a zapati
20 \pagestyle{fancy} %zahlavi a zapati
21 \usepackage{enumerate} % abych mohl používat i jiné, než èíslované seznamy
22 % --------<<< ------------------------- >>>--------
23  
24  
25 % -------<<< Zde zaèíná vlastní dokument >>>-------
26 \begin{document}
27 % zahlavi vlevo
28 \lhead{Firmware Automatický vypouštìè meteobalónù}
29 % zahlavi vpravo
30 \rhead{Bc. Zbynìk Poskoèil}
31  
32 \section{Firmware}
33 \subsection{Real-time operaèní systém}
34 Pro ovládání celého systému byl zvolen real-time operaèní systém (ROS). Ten byl zvolen pøedevším pro zjednušení programování vypouštìèe, konkrétnì nastavování periférií procesoru a øízení vícevláknové aplikace na nìm bìžící.\\
35 Jako ROS pro tuto aplikaci tak byl zvolen ChibiOS, který splòuje standardní požadavky na ROS a také s ním máme zkušenosti s programováním jiných aplikací pod procesory ARM.
36 \subsection{Vysvìtlení funkce firmwaru}
37 Aplikace pro ovládání odpalování se dá rozdìlit na ètyøi funkèní bloky, které jsou realizovány pomocí vláken. Funkèní diagram je zobrazen na Obr. \cite{Diag_firmware}. V následujících kapitolách bude podrobnìji rozebrána funkce jednotlivých vláken aplikace.
38 \subsubsection{Blikání LED}
39 V tomto vláknì je realizované prosté blikání LED, které slouží pro signalizaci bìhu programu. Mezi tím, kdy dioda svítí a nebo je vypnutá je vlákno uspáno. Tím je vyøešeno jak èasování tak úspora prostøedkù procesoru.
40 \subsubsection{Vypouštìní}
41 Toto vlákno se stará o kompletní sekvenci pro vypuštìní balónu. Po spuštìní a inicializaci promìnných spadne program do nekoneèné smyèky ve které je následnì uspán a èeká na probuzení. To nastane ve tøech pøípadech:\\
42 \begin{enumerate}
43 \item Pøíjem pøíkazu pro odpal
44 \item Pøíjem pøíkazu pro zrušení odpalu
45 \item Probuzení od èasovaèe
46 \end{enumerate}
47 Ad. 1. Po pøíjmu pøíkazu, který zahajuje celou sekvenci odpalování se vypíše na terminál zpráva o zahájení vypouštìní a sepne se pin, na kterém je pøipojen aktuátor, který otevírá víko krabice, ve které je balón uložen (v dobì vykonávání každého kroku je na terminál vypisována informace o tom, kolik procent z daného kroku je již vykonáno). Pomocí koncového spínaèe je snímána informace o tom, zda se støecha opravdu otevøela, pokud se tak nestalo, je celá sekvence ukonèena. Pokud snímaè indikuje otevøení støechy, pøistupuje se k dalším kroku.\\
48 Tím je otevøení ventilu a tím pádem zahájení napouštìní balónu. Tento krok není nijak v souèasné chvíli zpìtnovazebnì snímán - je dán pouze èas kdy je ventil otevøen. Do budoucna bychom rádi použili mìøení prùtoku k získání informace, zda je balón opravdu napuštìn daným množstvím plynu.\\
49 Tøetím krokem celé sekvence je pøepálení plastové pojistky, která spouští tavící lis. Po pevnì dané èasové prodlevì, která by mìla staèit pro pøetavení, je pomocí koncového spínaèe zjištìno, zda se pojistka pøetavila. Pokud ano, pokraèuje se posledním krokem, pokud ne, dochází opìt k pøerušení sekvence a návrat do výchozího stavu.\\
50 Posledním krokem je zatavení naplnìného balónu. V tomto kroku je opìt nadefinován èas, po který dochází k zatavování balónu pomocí odporového drátu. Po uplynutí nadefinované doby je balón zataven a na terminál je vypsána informace o ukonèení vypouštìní a všechny výstupy jsou v neaktivním stavu.\\
51 Ad. 2. V pøípadì pøíjmu zprávy, která pøikazuje ukonèení procesu odpalování, se deaktivují výstupy aktivní bìhem vypouštìní a uživatel je informován o úspìšném pøerušení celé sekvence.\\
52 Ad. 3. Pro pøesné èasování bìhem celého procesu odpalování je využito funkce èasovaèe. Ten se v každém kroku odpalování sepne na urèitou dobu, která je celoèíselným násobkem celkové doby, kterou se èeká v daném kroku. Tento postup byl zvolen z toho dùvodu, aby mohla být prùbìžnì aktualizována zpráva pro uživatele vyjadøující èas, který zbývá do ukonèení daného úkolu.
53 \subsubsection{Pøíjem pøíkazu od uživatele}
54 Pro komunikaci s uživatelem je využito sériové linky. Ta se využívá jak pro informování uživatele o aktuálním stavu programu tak zároveò k pøíjmu pøíkazù od uživatele. Celý algoritmus pøíjmu pøíkazu spoèívá ve vyèítání znakù zadaných uživatelem znak za znakem až do té chvíle, kdy je stisknut ENTER a nebo je pøekroèena maximální délka pøíkazu. Poté se buï zadaný pøíkaz dekóduje a následnì provede a nebo je vypsána informace, že pøíkaz nebyl rozeznán.
55 \subsubsection{Pøíjem dat z GPS modulu}
2976 jichapav 56 Posledním vláknem využívaném ve firmwaru vypouštìèe je vlákno, které se stará o pøíjem a dekódování NMEA zprávy posílané po sériové lince z GPS modulu
57 \cite{GPS_ublox}. Každou vteøinu je vyèítána NMEA zpráva a z ní je vybrána GPRMC zpráva, ze které je následnì získána informace o aktuálním èase, datu a poloze stanice. Tato informace slouží jednat pro pøesné logování událostí a zároveò v budoucnu pro snadné lokalizování vypouštìcí stanice.\subsection{Uživatelské rozhraní terminálu}
58 Pøi spuštìní terminálu se po resetu programu procesoru vypíše úvodní zpráva s nápovìdou, na které výstupní kontakty procesoru jsou pøipojeny jednotlivé akèní èleny. Následnì je program v pohotovostním režimu a oèekává pøíkaz. Jednotlivé pøíkazy jsou:\\
59 \begin{enumerate}
60 \item odpal
61 \item zrus (nebo písmeno "s")
62 \item help
63 \item check
64 \end{enumerate}
65 Pøíkaz \textbf{odpal} spustí vypouštìcí sekvenci probuzením daného vlákna pro vypouštìní. Pøíkaz \textbf{zrus} zastaví vypouštìcí sekvenci, pokud byla zahájena a indormuje o tom výpisem o ukonèení vypouštìní. Zároveò jde vypouštìní zrušit okamžitì stisknutím "s" bez nutnosti potvrzovat pøíkaz enterem. Pøíkaz \textbf{help} vypíše stejnou úvodní zprávu jako po resetu programu. Poslední pøíkaz \textbf{check} lze použít pro kontrolu stavu vypouštìèe pøed zaèátkem vypouštìní. Po zadání tohoto pøíkazu jsou na terminál vypsány informace o aktuálních stavech použitých senzorù. Lze tak napøíklad zkontrolovat, že støecha není zajištìna, nebo že je lis již spuštìn.
2974 poskozby 66  
67 \begin{figure}[hbtp]
68 \centering
69 \includegraphics[scale=0.6]{program_flow.png}
70 \caption{Funkèní diagram firmwaru Automatického vypouštìèe}
71 \label{Diag_firmware}
72 \end{figure}
73  
74  
75 \begin{flushleft}
76 \begin{thebibliography}{99}
77 \bibitem {GPS_ublox} $UBLOX. <i>LEA-6 series</i> [online]. 2013 [cit. 2013-05-12]. Dostupné z: http://www.u-blox.com/en/gps-modules/pvt-modules/lea-6-family.html$
78 \end{thebibliography}
79 \end{flushleft}
80  
81  
82 \end{document} %tímto pøíkazem musí soubor konèit