-
Notifications
You must be signed in to change notification settings - Fork 0
/
uvod.tex
122 lines (107 loc) · 5.7 KB
/
uvod.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
\chapter{Úvod}
Cílem tohoto projektu je vytvořit elektronický budík s~pokročilými funkcemi,
který lze snadno vyrobit v~amatérských podmínkách a~přizpůsobit tak, aby
vyhovoval i~požadavkům náročného uživatele.
Zařízení nebude přímo připojené k~síti Internet. Namísto toho bylo zvoleno
přípojení k~serveru rozhraním UART. Server obsluhuje síťové funkce a~poskytuje
například webové rozhraní, které umožňuje pohodlné nastavování časů a~parametrů
buzení. Budík musí být možné plně využívat i~bez serveru. Server tak ani nemusí
běžet po celý den (na takovou aplikaci je vhodný například jednodeskový počítač
Raspberry Pi), lze použít i~běžný, na noc vypínaný osobní počítač.
Zdrojový kód firmware a~serverového software, schéma zapojení, návrh desky
plošných spojů i~3D model krabičky budou uvolněny pod svobodnou
licencí MIT\footnote{\url{https://cs.wikipedia.org/wiki/Licence_MIT}}.
Projekt tak vyhovuje filozofii svobodného
software\footnote{\url{https://www.gnu.org/philosophy/free-sw.html}}
a~open-source
hardware\footnote{\url{https://cs.wikipedia.org/wiki/Open-source_hardware}}.
Zdrojový kód firmware musí být opatřen komentáři, z~nichž lze generovat
dokumentaci pomocí nástroje \shellcmd{doxygen}. To je důležité pro usnadnění
orientace v~projektu a~umožňuje, aby si i~běžný uživatel se základní znalostí
programování implementoval dodatečné funkce, které potřebuje.
Budík je zařízení, jehož selhání může uživateli způsobit problémy,
a~v~některých případech i~finanční škodu. Velká pozornost proto musí být
věnována zajištění spolehlivosti. Nechtěné vzbuzení uživatele například při
výpadku napájení je přitom preferováno před rizikem nevzbuzení. Preventivní
opatření budou uplatněna jak na úrovni firmware (aktivace časovače \acs{WDT},
automatické testy), tak i~na úrovni hardware (použití antistatického vybavení
při osazování desky plošných spojů).
\paragraph{Motivace}
Mnoho požadavků na funkce budíku vychází ze zkušenosti s~komerčně dostupnými
řešeními. Autor této práce po několik let používal budík Sencor SRC~330~GN.
Během jeho užívání bylo odhaleno několik problému, především nedostatek
nastavitelných časů buzení (pouze 2), nemožnost přiřadit budicímu času
libovolnou skupinu dní v~týdnu (například pouze úterý a~čtvrtek) a~problémy se
zrušením budíku v~průběhu odložení pomocí funkce \uv{snooze}. Nepříjemná byla
také chyba ve firmware, která se projevovala nepřerušitelným pískáním, ke
kterému docházelo náhodně v~první hodině po stisku tlačítka nastavujícího dobu
nečinnosti, po které dojde ke zhasnutí displeje. Protože tento komerčně
dostupný budík neumožňuje zásah uživatele do firmware, neexistuje žádná
možnost, jak tyto nedostatky odstranit. Mezi další problémy patřilo
i~slyšitelné bzučení o~frekvenci \SI{50}{\hertz} vydávané interním
transformátorem (zařízení je napájeno síťovým napětím).
\begin{figure}[htbp]
\centering
\includegraphics[width=0.8\textwidth]{sencor-SRC-330-GN}
\caption{Komerčně dostupný budík Sencor SRC~330~GN}
\label{fig:sencor}
\end{figure}
\paragraph{Struktura práce}
Práce je členěna do kapitol (viz \hyperref[toc]{Obsah}). Jedna kapitola se
věnuje hardwarové části výrobku a~programu, který běží na jeho mikrokontroléru
(firmware).
Další kapitola se věnuje software, tedy programům bežícím na serveru.
Samostatné celky (zdrojové kódy firmware, software, návrh hardware) jsou
umístěny v~oddělených repozitářích verzovacího systému
\shellcmd{git}\footnote{\url{https://git-scm.com/}}. V~repozitáři se zdrojovými
kódy této práce jsou ale všechny části vloženy jako submoduly v~adresáři
\repopath{prilohy/}. Více informací o~členění elektronické přílohy práce lze
nalézt v~příloze~\vref{app:dirtree}.
Dokument obsahuje výpisy jednoduchých programů a~ukázky zdrojového kódu.
Ty jsou otištěny písmem s~pevnou šířkou (neproporcionálním písmem). Pro různé
programovací jazyky jsou využívány vhodné zvýrazňovače syntaxe. Příliš dlouhé
řádky jsou zalamovány, pokračování zalomeného řádku je označeno symbolem
\lstpostbreak{}.
\begin{lstlisting}[language=hashcomment]
Toho je ukázkový výpis.
Běžný text.
# komentář
Další Řádek.
Tento text je tak dlouhý, že se nevejde na jeden řádek a musí být zalomen, přičemž jeho pokračování je jasně označeno.
Další Řádek.
\end{lstlisting}
Řádky úplných výpisů jsou číslovány:
\begin{lstlisting}[language=hashcomment,style=numbers]
Toho je ukázkový výpis.
Běžný text.
# komentář
Další Řádek.
Tento text je tak dlouhý, že se nevejde na jeden řádek a musí být zalomen, přičemž jeho pokračování je jasně označeno.
Další Řádek.
\end{lstlisting}
Při práci s~programy pro příkazový řádek je využíván unixový shell.
Text zkopírovaný z~terminálu je tisknut následujícím stylem:
\begin{lstlisting}[style=terminal]
$ lsb_release -a 2>/dev/null | pr -Td | cowsay -f tux
_________________________________
/ Distributor ID: Ubuntu \
| |
| Description: Ubuntu 20.04.4 LTS |
| |
| Release: 20.04 |
| |
\ Codename: focal /
---------------------------------
\
\
.--.
|o_o |
|:_/ |
// \ \
(| | )
/'\_ _/`\
\___)=(___/
$
\end{lstlisting}
Řádky začínající znakem \texttt{\$} obsahují zadávaný příkaz, na následujících
řádcích je jeho textový výstup.