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}
|
\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
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