modularisation du source de la documentation, LaTeX p0w4
This commit is contained in:
parent
1290ee1dff
commit
c0f3e128aa
39
doc/automate.tex
Normal file
39
doc/automate.tex
Normal 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}.
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -14,7 +14,7 @@
|
||||
\usepackage[verbose]{layout}
|
||||
|
||||
\makeindex
|
||||
\setlength{\parskip}{0.21cm plus 0.21cm}
|
||||
% \setlength{\parskip}{0.16cm plus 0.16cm}
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
\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é,
|
||||
\texttt{pH}, transparence, lumière, vibrations\dots
|
||||
|
||||
\setlength{\parskip}{0.05cm plus 0.05cm}
|
||||
% \setlength{\parskip}{0.01cm plus 0.01cm}
|
||||
\tableofcontents
|
||||
\setlength{\parskip}{0.16cm plus 0.16cm}
|
||||
% \setlength{\parskip}{0.16cm plus 0.16cm}
|
||||
|
||||
\vspace{5cm}
|
||||
\vspace{4cm}
|
||||
|
||||
Bonne lecture.
|
||||
|
||||
@ -61,8 +61,6 @@ Bonne lecture.
|
||||
\pagebreak
|
||||
\section{Présentation générale}
|
||||
|
||||
|
||||
|
||||
\subsection{Capteurs} \index{capteurs}
|
||||
|
||||
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 liaison série, cf page \pageref{serial})
|
||||
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}
|
||||
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}
|
||||
|
||||
\subsection{Simulations}
|
||||
@ -191,7 +196,8 @@ si on lui demande gentiment.
|
||||
|
||||
\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}) :
|
||||
|
||||
\begin{verbatim}
|
||||
@ -215,6 +221,9 @@ __EOC__
|
||||
|
||||
\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
|
||||
de la ligne de commande\index{cli} ou des variables d'environnement.
|
||||
|
||||
% ===================================================================
|
||||
|
||||
\section{Flatfile} \label{flatfile}
|
||||
@ -254,7 +264,7 @@ numériques peuvent suffire à beaucoup de \textsl{usecases} de la
|
||||
vie courante.
|
||||
|
||||
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}
|
||||
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
|
||||
\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}
|
||||
@ -353,7 +360,7 @@ Au programme : écriture d'un injecteur en Perl\index{Perl}, en suivant
|
||||
plus ou moins l'exemple de rrdb..
|
||||
|
||||
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.
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
@ -376,52 +383,7 @@ NodeJs\index{nodejs} peut-il lire du Sqlite ?
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
|
||||
\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}
|
||||
|
||||
TODO\index{TODO}
|
||||
|
||||
\input{serial}
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
|
||||
|
58
doc/serial.tex
Normal file
58
doc/serial.tex
Normal 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}
|
||||
|
||||
|
||||
% ===================================================================
|
Loading…
Reference in New Issue
Block a user