diff --git a/doc/automate.tex b/doc/automate.tex new file mode 100644 index 0000000..38850e4 --- /dev/null +++ b/doc/automate.tex @@ -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}. + +% ------------------------------------------------------------------- + + + + + + + diff --git a/doc/dd2-monitoring.tex b/doc/dd2-monitoring.tex index 3ae1300..9957913 100644 --- a/doc/dd2-monitoring.tex +++ b/doc/dd2-monitoring.tex @@ -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} % ------------------------------------------------------------------- diff --git a/doc/serial.tex b/doc/serial.tex new file mode 100644 index 0000000..aa55089 --- /dev/null +++ b/doc/serial.tex @@ -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} + + +% ===================================================================