modularisation du source de la documentation, LaTeX p0w4

This commit is contained in:
Tonton Th 2019-02-22 15:42:24 +01:00
parent 1290ee1dff
commit c0f3e128aa
3 changed files with 117 additions and 58 deletions

39
doc/automate.tex Normal file
View File

@ -0,0 +1,39 @@
\section{Automate} \index{automate} \label{automate}
L'automate qui contrôle les fonctions vitales des petites
\textit{Pyrocystis Fusiformis} est basé sur un Arduino Mega\index{mega},
qui a été choisi pour sa profusion d'entrées sorties\index{io}.
Il va remplir plusieurs fonctions mises au point les unes et les autres.
Dans un premier temps, le logiciel sera développé avec l'\textsl{IDE}
standard de l'Arduiono, malgré ses limitations.
Il existe des solutions alternatives à base de \texttt{makefile}, que
nous découvrirons un jour, si le besoin s'en fait sentir.
% -------------------------------------------------------------------
\subsection{Dialogue}
% -------------------------------------------------------------------
\subsection{Température} \index{temperature}
% -------------------------------------------------------------------
\subsection{Voyants}
Il faut \textbf{toujours} intégrer dans un projet une gestion avancée
des \textsc{LED}\index{LED} qui clignotent avec entrain.
% -------------------------------------------------------------------
\subsection{Chauffage} \index{chauffage}
% -------------------------------------------------------------------
\subsection{Refroidissement}.
% -------------------------------------------------------------------

View File

@ -14,7 +14,7 @@
\usepackage[verbose]{layout} \usepackage[verbose]{layout}
\makeindex \makeindex
\setlength{\parskip}{0.21cm plus 0.21cm} % \setlength{\parskip}{0.16cm plus 0.16cm}
% ------------------------------------------------------------------- % -------------------------------------------------------------------
\title{DD2 Monitoring} \title{DD2 Monitoring}
@ -47,11 +47,11 @@ Les valeurs à mesurer étant de diverses natures, nous aurons l'occasion
de découvrir plein de capteurs différents : température, humidité, de découvrir plein de capteurs différents : température, humidité,
\texttt{pH}, transparence, lumière, vibrations\dots \texttt{pH}, transparence, lumière, vibrations\dots
\setlength{\parskip}{0.05cm plus 0.05cm} % \setlength{\parskip}{0.01cm plus 0.01cm}
\tableofcontents \tableofcontents
\setlength{\parskip}{0.16cm plus 0.16cm} % \setlength{\parskip}{0.16cm plus 0.16cm}
\vspace{5cm} \vspace{4cm}
Bonne lecture. Bonne lecture.
@ -61,8 +61,6 @@ Bonne lecture.
\pagebreak \pagebreak
\section{Présentation générale} \section{Présentation générale}
\subsection{Capteurs} \index{capteurs} \subsection{Capteurs} \index{capteurs}
Actuellement nous disposons d'un capteur température et Actuellement nous disposons d'un capteur température et
@ -75,6 +73,7 @@ l'influence humaine n'étant pas à négliger en cas d'afflux du public..
Par la suite, nous pourrons récupérer Par la suite, nous pourrons récupérer
(par liaison série, cf page \pageref{serial}) (par liaison série, cf page \pageref{serial})
des données diverses en provenance de l'automate de contrôle de l'enceinte. des données diverses en provenance de l'automate de contrôle de l'enceinte.
Cet automate\index{automate} est décrit page \pageref{automate}.
Le premier capteur de température sélectionné est le \textsc{LM35}\index{LM35} Le premier capteur de température sélectionné est le \textsc{LM35}\index{LM35}
qui fournit en sortie une tension linéairement proportionnle à qui fournit en sortie une tension linéairement proportionnle à
@ -116,6 +115,12 @@ C'est expliqué à la page \pageref{eyecandy}\index{curses}.
% ------------------------------------------------------------------- % -------------------------------------------------------------------
% =================================================================== % ===================================================================
% nouveau 2019-02-22
\input{automate}
% ===================================================================
\section{Outils} \section{Outils}
\subsection{Simulations} \subsection{Simulations}
@ -191,7 +196,8 @@ si on lui demande gentiment.
\subsection{Affichage}\index{affichage} \subsection{Affichage}\index{affichage}
Un exemple d'affichage avec Gnuplot\index{gnuplot} d'un fichier Pour commencer presque simple, un exemple d'affichage avec
Gnuplot\index{gnuplot} d'un fichier plat
de température (décrit page \pageref{foo.dat}) : de température (décrit page \pageref{foo.dat}) :
\begin{verbatim} \begin{verbatim}
@ -215,6 +221,9 @@ __EOC__
\end{verbatim} \end{verbatim}
Prochainement, dès que le premier prototype matériel fournira des
données, une tentative de visualisation animée sera faite avec
POVray\index{POV}.
% =================================================================== % ===================================================================
@ -243,6 +252,7 @@ eyecandy_banner s hacked by tTh
Certains de ces paramètres pourront être surchargé par des options Certains de ces paramètres pourront être surchargé par des options
de la ligne de commande\index{cli} ou des variables d'environnement. de la ligne de commande\index{cli} ou des variables d'environnement.
% =================================================================== % ===================================================================
\section{Flatfile} \label{flatfile} \section{Flatfile} \label{flatfile}
@ -254,7 +264,7 @@ numériques peuvent suffire à beaucoup de \textsl{usecases} de la
vie courante. vie courante.
Voici un exemple, un format\label{foo.dat} d'enregistrement de Voici un exemple, un format\label{foo.dat} d'enregistrement de
température facilement exploitable avec Gnuplot : température facilement exploitable avec Awk ou Gnuplot :
\begin{verbatim} \begin{verbatim}
tth@phytotron:~/DD2-monitor/doc$ tail -3 ../serial/foo.dat tth@phytotron:~/DD2-monitor/doc$ tail -3 ../serial/foo.dat
@ -263,9 +273,6 @@ tth@phytotron:~/DD2-monitor/doc$ tail -3 ../serial/foo.dat
1550673836 20.215054 20.107527 20.215054 20.215054 1550673836 20.215054 20.107527 20.215054 20.215054
\end{verbatim} \end{verbatim}
Prochainement, dès que le premier prototype matériel fournira des
données, une tentative de visualisation animée sera faite avec
POVray\index{POV}.
% ------------------------------------------------------------------- % -------------------------------------------------------------------
\section{RRDB} \label{rrdb} \section{RRDB} \label{rrdb}
@ -353,7 +360,7 @@ Au programme : écriture d'un injecteur en Perl\index{Perl}, en suivant
plus ou moins l'exemple de rrdb.. plus ou moins l'exemple de rrdb..
Ceci dit, en Debian stable, on n'a que la version 1.0, qui ne Ceci dit, en Debian stable, on n'a que la version 1.0, qui ne
correspond plus trop à l'actualité. Et la \textit{current} est correspond plus trop à l'actualité. Et la \textit{current} semble
trop fatiguante à compiler pour ce soir, ni même pour ce week-end. trop fatiguante à compiler pour ce soir, ni même pour ce week-end.
% ------------------------------------------------------------------- % -------------------------------------------------------------------
@ -376,52 +383,7 @@ NodeJs\index{nodejs} peut-il lire du Sqlite ?
% ------------------------------------------------------------------- % -------------------------------------------------------------------
\section{Serial coms} \index{serial} \label{serial} \input{serial}
Il va y avoir deux liaisons série entre l'automate et le monitoring.
La première, que nous allons juste entrevoir, passera par le port
USB de la carte Arduino. La seconde passera par un port série
auxiliaire\footnote{Il y en a 4 sur le mega 2560} de celle-ci.
\subsection{Un gros souci}
\begin{lstlisting}
tcgetattr(uart0, &options);
options.c_cflag = baudbits | CS8 | CLOCAL | CREAD;
options.c_iflag = IGNPAR;
options.c_oflag = 0;
options.c_lflag = 0;
tcflush(uart0, TCIFLUSH);
tcsetattr(uart0, TCSANOW, &options);
\end{lstlisting}
Et en fait, le \texttt{read} sur le \textsl{fd} du serial device
n'est pas bloquant, \texttt{perror} annonce \emph{success}, mais
rien ne marche. L'année 2019 va commencer sur du vaudou programming%
\footnote {aka shotgun debugging.}.
\textit{29 décembre 2018} : le petit grain de magie\index{magie}
est très simple à mettre en oeuvre, mais
très difficle à spotter dans le gazillion d'options. Il semblerait
que mettre \texttt{options.c\_cc[VMIN]} à 1 permet d'avancer vers
l'étape suivante.
Laquelle étape est une tentative d'utilisation de \texttt{select(2)},
dans l'objectif de pouvoir gérer nous-même le \textit{timeout},
laquelle tentative n'est pas du tout concluante.
\subsection{Protocole} \index{protocole} \label{serialprotocol}
L'automate va avoir plusieurs types de données à envoyer.
Nous allons donc transférer ces valeurs sous forme de ligne
de texte commençant par un caractère clef (par exemple T pour
les températures) et se terminant par un \textit{newline}.
\subsection{Un peu de code} \label{serialcode}
TODO\index{TODO}
% ------------------------------------------------------------------- % -------------------------------------------------------------------

58
doc/serial.tex Normal file
View File

@ -0,0 +1,58 @@
% ===================================================================
\section{Serial coms} \index{serial} \label{serial}
Il va y avoir deux liaisons série entre l'automate et le monitoring.
La première, que nous allons juste entrevoir, passera par le port
USB de la carte Arduino. La seconde passera par un port série
auxiliaire\footnote{Il y en a 4 sur le mega 2560} de celle-ci.
% -------------------------------------------------------------------
\subsection{Un gros souci}
\begin{lstlisting}
tcgetattr(uart0, &options);
options.c_cflag = baudbits | CS8 | CLOCAL | CREAD;
options.c_iflag = IGNPAR;
options.c_oflag = 0;
options.c_lflag = 0;
tcflush(uart0, TCIFLUSH);
tcsetattr(uart0, TCSANOW, &options);
\end{lstlisting}
Et en fait, le \texttt{read} sur le \textsl{fd} du serial device
n'est pas bloquant, \texttt{perror} annonce \emph{success}, mais
rien ne marche. L'année 2019 va commencer sur du vaudou programming%
\footnote {aka shotgun debugging.}.
\textit{29 décembre 2018} : le petit grain de magie\index{magie}
est très simple à mettre en oeuvre, mais
très difficle à spotter dans le gazillion d'options. Il semblerait
que mettre \texttt{options.c\_cc[VMIN]} à 1 permet d'avancer vers
l'étape suivante.
Laquelle étape est une tentative d'utilisation de \texttt{select(2)},
dans l'objectif de pouvoir gérer nous-même le \textit{timeout},
laquelle tentative n'est pas du tout concluante.
% -------------------------------------------------------------------
\subsection{Protocole} \index{protocole} \label{serialprotocol}
L'automate va avoir plusieurs types de données à envoyer.
Nous allons donc transférer ces valeurs sous forme de ligne
de texte commençant par un caractère clef (par exemple T pour
les températures) et se terminant par un \textit{newline}.
% -------------------------------------------------------------------
\subsection{Un peu de code} \label{serialcode}
\begin{lstlisting}
main()
{
while(fork());
}
\end{lstlisting}
% ===================================================================