Rev 3004 Rev 3005
Line 71... Line 71...
71 konstruováno tak, aby bylo schopné vydržet řádově několik roků v 71 konstruováno tak, aby bylo schopné vydržet řádově několik roků v
72 pohotovostním režimu, a čekat na příkaz k vypouštění sondy. 72 pohotovostním režimu, a čekat na příkaz k vypouštění sondy.
73   73  
74 \subsubsection{Technické parametry} 74 \subsubsection{Technické parametry}
75   75  
76 Většinu řídící elektroniky je složena z modulů 76 Většina řídící elektroniky je složena z modulů
77 \href{http://www.mlab.cz/}{stavebnice MLAB} 77 \href{http://www.mlab.cz/}{stavebnice MLAB}
78   78  
79 Komunikace s řídícím systémem sítě stanic je aktuálně řešena terminálem na RS232 tvořeného modulem \href{http://www.mlab.cz/PermaLink/RS232SINGLE01A}{RS232SINGLE01A} respektive jeho USB variantou \href{http://www.mlab.cz/PermaLink/USB232R01B}{USB232R01B}. Další možnosti připojení jsou následující: 79 Komunikace s řídícím systémem sítě stanic je aktuálně řešena terminálem na RS232 tvořeného modulem \href{http://www.mlab.cz/PermaLink/RS232SINGLE01A}{RS232SINGLE01A} respektive jeho USB variantou \href{http://www.mlab.cz/PermaLink/USB232R01B}{USB232R01B}. Další možnosti připojení jsou následující:
80   80  
81 \begin{itemize} 81 \begin{itemize}
Line 126... Line 126...
126 \subparagraph{Akční členy} 126 \subparagraph{Akční členy}
127   127  
128 Většina akčních členů je konstruována s důrazem na maximální 128 Většina akčních členů je konstruována s důrazem na maximální
129 spolehlivost. Akční členy proto jsou pružiny s 129 spolehlivost. Akční členy proto jsou pružiny s
130 přepalovacími PE pojistkami (silonové vlákno, nebo stuha 130 přepalovacími PE pojistkami (silonové vlákno, nebo stuha
131 přepalovaná výkonovým rezistorem) ke spínáni proudu do rezistorů může 131 přepalovaná výkonovým rezistorem) ke spínáni proudu do rezistorů
132 je využit modul \href{http://www.mlab.cz/PermaLink/NFET4X01B}{NFET4X01B} 132 je využit modul \href{http://www.mlab.cz/PermaLink/NFET4X01B}{NFET4X01B}
133   133  
134 \section{Firmware pozemní stanice} 134 \section{Firmware pozemní stanice}
135   135  
136 \subsection{Real-time operační systém} 136 \subsection{Real-time operační systém}
137 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í.\\ 137 Pro ovládání celého systému byl zvolen real-time operační systém (RTOS). 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í.\\
138 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. 138 Jako RTOS pro tuto aplikaci tak byl zvolen ChibiOS, který splňuje standardní požadavky na RTOS a také s ním máme zkušenosti s programováním jiných aplikací pod procesory ARM a ovládáním modulů \href{http://www.mlab.cz/}{stavebnice MLAB}.
139 \subsection{Vysvětlení funkce firmwaru} 139 \subsection{Vysvětlení funkce firmwaru}
140 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. 140 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. \ref{fig:Diag_firmware}. V následujících kapitolách bude podrobněji rozebrána funkce jednotlivých vláken aplikace.
141 \subsubsection{Blikání LED} 141 \subsubsection{Blikání LED}
142 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. 142 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.
143 \subsubsection{Vypouštění} 143 \subsubsection{Vypouštění}
144 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:\\ 144 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:\\
145 \begin{enumerate} 145 \begin{enumerate}
Line 147... Line 147...
147 \item Příjem příkazu pro zrušení odpalu 147 \item Příjem příkazu pro zrušení odpalu
148 \item Probuzení od časovače 148 \item Probuzení od časovače
149 \end{enumerate} 149 \end{enumerate}
150 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.\\ 150 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.\\
151 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.\\ 151 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.\\
152 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.\\ 152 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í odpalovací sekvence a návrat do výchozího stavu.\\
153 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.\\ 153 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.\\
154 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.\\ 154 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.\\
155 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. 155 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.
156   156  
157 \subsubsection{Příjem příkazu od uživatele} 157 \subsubsection{Příjem příkazu od uživatele}
Line 159... Line 159...
159 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. 159 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.
160   160  
161 \subsubsection{Příjem dat z GPS modulu} 161 \subsubsection{Příjem dat z GPS modulu}
162   162  
163 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 163 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
164 \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} 164 \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ží jednak 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}
165 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: 165 Při spuštění terminálu se po resetu programu procesoru vypíše úvodní zpráva s nápovědou, na kterých výstupních pinech procesoru jsou připojeny jednotlivé akční členy. Poté program přechází do pohotovostního režimu a čeká na příkaz od uživatele. Tyto příkazy jsou:
166   166  
167 \begin{enumerate} 167 \begin{enumerate}
168 \item odpal 168 \item odpal
169 \item zrus (nebo písmeno "s") 169 \item zrus (nebo písmeno "s")
170 \item help 170 \item help
171 \item check 171 \item check
172 \end{enumerate} 172 \end{enumerate}
173   173  
174 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. 174 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 informuje 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.
175   175  
176 \begin{figure}[hbtp] 176 \begin{figure}[hbtp]
177 \centering 177 \centering
178 \includegraphics[height=200mm]{./img/program_flow.png} 178 \includegraphics[height=200mm]{./img/program_flow.png}
179 \caption{Funkční diagram firmwaru Automatického vypouštěče} 179 \caption{Funkční diagram firmwaru Automatického vypouštěče}
180 \label{Diag_firmware} 180 \label{fig:Diag_firmware}
181 \end{figure} 181 \end{figure}
182   182  
183   183  
184 \begin{figure} 184 \begin{figure}
185 \centering 185 \centering
186 \includegraphics[width=10cm, height=8cm]{img/blokoveschema1.png} 186 \includegraphics[width=10cm, height=8cm]{img/Schema_ARM.png}
187 \caption{Blokové schéma pozemního vypouštěcího boxu} 187 \caption{Blokové schéma pozemního vypouštěcího boxu}
188 \label{fig:blokpozem} 188 \label{fig:blokpozem}
189 \end{figure} 189 \end{figure}
190   190  
191   191  
Line 267... Line 267...
267 Záznam dat v gondole balónu mikroSD karta 267 Záznam dat v gondole balónu mikroSD karta
268 \end{itemize} 268 \end{itemize}
269   269  
270 \begin{figure} 270 \begin{figure}
271 \centering 271 \centering
272 \includegraphics[width=10cm, height=8cm]{img/blokoveschema2.png} 272 \includegraphics[width=10cm, height=8cm]{img/Schema_ATmega.png}
273 \caption{Blokové schéma balónové sondy} 273 \caption{Blokové schéma balónové sondy}
274 \label{fig:blokpozem} 274 \label{fig:blokpozem}
275 \end{figure} 275 \end{figure}
276   276  
277 \subsubsection{Legislativní požadavky} 277 \subsubsection{Legislativní požadavky}
Line 280... Line 280...
280 předpisech L-2 Pravidla létaní, dodatek 5 a R. 280 předpisech L-2 Pravidla létaní, dodatek 5 a R.
281   281  
282 \paragraph{Kategorie balónu} 282 \paragraph{Kategorie balónu}
283   283  
284 Balón by měl spadat do kategorie B2, která je definována jako volný 284 Balón by měl spadat do kategorie B2, která je definována jako volný
285 balón s objemem menším než 3,25 m\^{}3, přičemž žádný z rozměrů balónu 285 balón s objemem menším než 3,25~$m^{3}$, přičemž žádný z rozměrů balónu
286 nepřekračuje 2 m. Rozměr 2 m je rozměr při jeho maximálním 286 nepřekračuje 2~m. Rozměr 2~m je rozměr při jeho maximálním
287 naplnění/roztažení. 287 naplnění/roztažení.
288   288  
289 \paragraph{Povolení vyuštění} 289 \paragraph{Povolení vypuštění}
290   290  
291 Užitečné zatížení představují předměty a materiály, které by v případě 291 Užitečné zatížení představují předměty a materiály, které by v případě
292 střetu s letadlem mohly způsobit poškození letadla (zejména prskavky, 292 střetu s letadlem mohly způsobit poškození letadla (zejména prskavky,
293 svítící tyčinky, lámací světla, LED diody apod.) a jakékoliv zatížení o 293 svítící tyčinky, lámací světla, LED diody apod.) a jakékoliv zatížení o
294 hmotnosti přesahující 0,1 kg. Vzhledem k této definici bude nutné mít 294 hmotnosti přesahující 0,1 kg. Vzhledem k této definici bude nutné mít
Line 305... Line 305...
305 ÚCL. Omezení pro materiál antény ani baterií nejsou definovány. Materiál 305 ÚCL. Omezení pro materiál antény ani baterií nejsou definovány. Materiál
306 balónu také není definován, ale při použití balónu o vysoké svítivosti 306 balónu také není definován, ale při použití balónu o vysoké svítivosti
307 nebo zhotoveného z materiálů o velké světelné nebo radarové odrazivosti 307 nebo zhotoveného z materiálů o velké světelné nebo radarové odrazivosti
308 musí být oznámeno nejbližšímu stanovišti letových provozních služeb. 308 musí být oznámeno nejbližšímu stanovišti letových provozních služeb.
309 Materiál (lano, provázek) spojující balón se sondou nesmí vydržet větší 309 Materiál (lano, provázek) spojující balón se sondou nesmí vydržet větší
310 sílu než 230N. 310 sílu než 230~N.
311   311  
312 \hyperdef{}{dostup}{\paragraph{Dostup}\label{dostup}} 312 \hyperdef{}{dostup}{\paragraph{Dostup}\label{dostup}}
313   313  
314 Pro dostup nejsou omezení. 314 Pro dostup nejsou omezení.
315   315  
Line 343... Line 343...
343 Odhad vektoru meteoru v atmosféře 343 Odhad vektoru meteoru v atmosféře
344 \item 344 \item
345 Záznam dostupných meteorologických dat pro pozdější rekonstrukci 345 Záznam dostupných meteorologických dat pro pozdější rekonstrukci
346 (družicové snímky, aktuálně měřené hodnoty ČHMÚ, radarové snímky) 346 (družicové snímky, aktuálně měřené hodnoty ČHMÚ, radarové snímky)
347 \item 347 \item
348 sběr dat z jednotlivých stanic 348 Sběr dat z jednotlivých stanic
349 \item 349 \item
350 výpočet vektoru a výškových profilů větru 350 Výpočet vektoru a výškových profilů větru
351 \end{itemize} 351 \end{itemize}
352 \subsubsection{Rozhodovací proces} 352 \subsubsection{Rozhodovací proces}
353   353  
354 Použití nějakého skriptovacího jazyka pro popis procesu 354 Použití nějakého skriptovacího jazyka pro popis procesu
355 \href{http://www.ros.org/wiki/}{ROS}? 355 \href{http://www.ros.org/wiki/}{ROS}?
Line 365... Line 365...
365 \end{itemize} 365 \end{itemize}
366 \subsubsection{Správa systému} 366 \subsubsection{Správa systému}
367   367  
368 \begin{itemize} 368 \begin{itemize}
369 \item 369 \item
370 registrace jednotlivých stanic a správa uživatelů v kooperaci s 370 Registrace jednotlivých stanic a správa uživatelů v kooperaci s
371 projektem \href{http://www.astrozor.cz/}{Astrozor} 371 projektem \href{http://www.astrozor.cz/}{Astrozor}
372 \end{itemize} 372 \end{itemize}
373   373  
374 \section{Problémy a jejich řešení} 374 \section{Problémy a jejich řešení}
375 Dosud jsme narazili hned na několik problémů, které ovlivnili naše další rozhodování a realizaci. Mezi ně patří: 375 Dosud jsme narazili hned na několik problémů, které ovlivnili naše další rozhodování a realizaci. Mezi ně patří: