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ří: |