trame du sujet
This commit is contained in:
parent
55ef22bd17
commit
26c3d77e47
@ -1,24 +1,48 @@
|
||||
import os
|
||||
import glob
|
||||
import time
|
||||
|
||||
# On active le capeteur dans le système
|
||||
os.system('modprobe w1-gpio')
|
||||
os.system('modprobe w1-therm')
|
||||
# --------------------------------------------------------------------------------
|
||||
# Gestion des pages web
|
||||
# --------------------------------------------------------------------------------
|
||||
|
||||
import bottle, threading
|
||||
|
||||
def nouvelle_temp_cible (temperature):
|
||||
""" Cette fonction sauvegarde la température cible """
|
||||
with open('cible.txt', 'w', coding="utf8") as f:
|
||||
f.write(température)
|
||||
|
||||
def temp_format_html ():
|
||||
""" Cette fonction retourne un texte HTML contenant les mesures de températures"""
|
||||
return 'Non implémenté'
|
||||
|
||||
|
||||
@bottle.get('/')
|
||||
def get_temp():
|
||||
return temp_format_html()
|
||||
|
||||
threading.Thread(target=bottle.run, kwargs=dict(host='', port=8080)).start()
|
||||
|
||||
# --------------------------------------------------------------------------------
|
||||
# Gestion du capteur de température
|
||||
# --------------------------------------------------------------------------------
|
||||
|
||||
import os
|
||||
import glob
|
||||
|
||||
# On trouve où sont les valeurs du capteurs
|
||||
dossier_base = '/sys/bus/w1/devices/'
|
||||
dossier_capteur = glob.glob(base_dir + '28*')[0]
|
||||
dossier_capteur = glob.glob(dossier_base + '28*')[0]
|
||||
fichier_capteur = dossier_capteur + '/w1_slave'
|
||||
fichier_actionneur = 'TODO'
|
||||
|
||||
def lecture_temp_brute():
|
||||
"""Cette fonction retourne la valeur du capteur sans traitement"""
|
||||
""" Cette fonction retourne la valeur du capteur sans traitement """
|
||||
with open(fichier_capteur, 'r') as f:
|
||||
lines = f.readlines()
|
||||
return lines
|
||||
|
||||
def lecture_temp():
|
||||
"""Cette fonction calcule la température à partir des mesures brutes"""
|
||||
""" Cette fonction calcule la température à partir des mesures brutes """
|
||||
lines = lecture_temp_brute()
|
||||
while lines[0].strip()[-3:] != 'YES':
|
||||
time.sleep(0.2)
|
||||
@ -29,7 +53,40 @@ def lecture_temp():
|
||||
temp_c = float(temp_string) / 1000.0
|
||||
return temp_c
|
||||
|
||||
# Programme principal
|
||||
# --------------------------------------------------------------------------------
|
||||
# Gestion du capteur de température
|
||||
# --------------------------------------------------------------------------------
|
||||
|
||||
def chauffage_on ():
|
||||
""" Cette fonction allume le chauffage de la cuve """
|
||||
with open(fichier_actionneur, 'w') as f:
|
||||
f.write('1')
|
||||
|
||||
def chauffage_off ():
|
||||
""" Cette fonction éteint le chauffage de la cuve """
|
||||
with open(fichier_actionneur, 'w') as f:
|
||||
f.write('0')
|
||||
|
||||
# --------------------------------------------------------------------------------
|
||||
# Fonctions d’aide
|
||||
# --------------------------------------------------------------------------------
|
||||
|
||||
def ajout_ligne_fichier(nom_fichier, ligne):
|
||||
""" Cette fonction ajoute le texte dans la variable ligne à la fin du fichier « nom_fichier » """
|
||||
with open(nom_fichier, 'a', encoding="utf8") as f:
|
||||
f.write(ligne)
|
||||
|
||||
def temp_cible():
|
||||
""" Cette fonction retourne la température cible qui doit être maintenue pendant la fermentation """
|
||||
with open("cible.txt", 'r', coding="utf8") as f:
|
||||
return f.read().strip()
|
||||
|
||||
# --------------------------------------------------------------------------------
|
||||
# Programme principal
|
||||
# --------------------------------------------------------------------------------
|
||||
|
||||
while True:
|
||||
print(read_temp())
|
||||
print(lecture_temp())
|
||||
time.sleep(1)
|
||||
|
||||
|
||||
|
BIN
projets/projet_biere/sujet.pdf
Normal file
BIN
projets/projet_biere/sujet.pdf
Normal file
Binary file not shown.
@ -8,6 +8,7 @@
|
||||
\def\thesequence{Données structurées, web}
|
||||
|
||||
\begin{document}
|
||||
Ceci est une trame à suivre, les détails techniques ne sont pas réglés.
|
||||
Durée : 3h
|
||||
|
||||
%
|
||||
@ -15,22 +16,63 @@ Durée : 3h
|
||||
\section{Microcontrolleur programmable}
|
||||
Nous travaillerons sur un raspberry pi pour récupérer les valeurs des capteurs.
|
||||
|
||||
\subsection{Mesure de la température}
|
||||
% En vrai on peut aussi mesurer la pression et le pH
|
||||
Durée : 1h
|
||||
\begin{exercice}
|
||||
Connectez le capteur de température et la résistance au raspberry pi comme sur le shéma suivant :
|
||||
\includegraphics[width=\textwidth]{circuit.png}
|
||||
\end{exercice}
|
||||
|
||||
\begin{exercice}
|
||||
Récupérez le fichier python à cette adresse : \url{https://git.jean-cloud.net/adrian/cours-snt/raw/branch/master/projet_bière/main.py}
|
||||
Récupérez le fichier python à cette adresse : \url{https://git.jean-cloud.net/adrian/cours-snt/raw/branch/master/projets/projet_biere/main.py}
|
||||
\\
|
||||
et exécutez-le sur votre raspberry pi.
|
||||
Vérifiez qu’il affiche bien la valeur de la température chaque seconde
|
||||
\end{exercice}
|
||||
|
||||
\begin{exercice}
|
||||
Modifiez le programme principal pour qu’il écrive dans un fichier CSV, la date, l’heure actuelle et la température mesurée.
|
||||
Votre fichier CSV devra ressembler à cela :
|
||||
\begin{verbatim}
|
||||
date;heure;temperature
|
||||
11/02/2021;15:14:10;22
|
||||
11/02/2021;15:15:10;21
|
||||
11/02/2021;15:16:10;21
|
||||
11/02/2021;15:17:10;20
|
||||
11/02/2021;15:18:10;20
|
||||
\end{verbatim}
|
||||
|
||||
Vous pourrez vous aider de la fonction « ajout\_ligne\_fichier » disponible dans le fichier python que vous avez téléchargé.
|
||||
\end{exercice}
|
||||
|
||||
|
||||
\subsection{Mesure de la température}
|
||||
% En vrai on peut aussi mesurer la pression et le pH
|
||||
\subsection{Régulation du chauffage}
|
||||
Durée 1h
|
||||
|
||||
\begin{exercice}
|
||||
Le chauffage de la cuve de fermentation n’est pas réglable, le chauffage est donc mis à fond pour faire monter la température, puis eteint lorqu’elle est acceptable.
|
||||
\\
|
||||
La fonction « temp\_cible » retourne la valeur de la température idéale pour la fermentation.
|
||||
\\
|
||||
Dans votre programme principal, activez le chauffage si nécessaire (en fonction de la température relevée) pour que la température soit optimale dans la cuve.
|
||||
\\
|
||||
Vous vous aidere des fonctions « chauffage\_on » et « chauffage\_off » fournies.
|
||||
|
||||
\end{exercice}
|
||||
|
||||
\subsection{Affichage des mesures sur une page web}
|
||||
Durée 1h
|
||||
\begin{exercice}
|
||||
Exécutez votre programme python puis rendez-vous à l’adresse \url{http://localhost:8080}. Vous devriez voir le message « Non implémenté ».
|
||||
\\
|
||||
Pour que cette page web affiche la liste des températures mesurées, modifiez la fonction « temp\_format\_html » pour qu’elle génère un code HTML qui met en forme les mesures dans un tableau.
|
||||
\end{exercice}
|
||||
|
||||
\begin{exercice}
|
||||
Bonus : Ajoutez une page « /reglage » qui affiche un formulaire pour que l’utilisateur puisse renseigner une température à maintenir.
|
||||
\\
|
||||
Faites en sorte que lorsque l’utilisateur valide le formulaire, la valeur qu’il a entré soit passée à la fonction « nouvelle\_temp\_cible ».
|
||||
\end{exercice}
|
||||
|
||||
\end{document}
|
||||
|
Loading…
Reference in New Issue
Block a user