Alerte canicule ! - niveau facile
Dans ce mini-projet, nous allons lire régulièrement la température grâce au capteur de température intégré à la carte microbit, et afficher une alerte à l'écran si la température atteint un niveau trop élevé.
Dans cet exemple simple nous mettrons en pratique l'utilisation de capteurs et d'actionneurs et interagirons avec l'utilisateur par le biais des boutons. Le projet commencera par une première version très simple puis évoluera petit à petit avec de nouvelles fonctionnalités.
Méthode : Première version
Nous allons commencer par interroger le capteur et afficher l'alerte si la température dépasse la valeur inscrite dans la variable seuil. Voici le code de cette première version :
# Mini projet : alerte canicule
# Olivier Lecluse 11/2019
# Version 1
from microbit import *
# Variables globales
seuil = 20
# Boucle principale
while True:
if temperature() > seuil:
display.show(Image.SAD)
else:
display.show(Image.HAPPY)
Méthode : Seconde version
Nous pouvons regretter de ne pas connaître la température. Dans cette seconde version, nous allons faire appel à l'accéléromètre intégré à la carte afin de détecter si la carte a été secouée. Si une secousse a été enregistrée, alors la température sera affichée à l'écran.
Indication : La détection de secousse de la carte est très simple à faire puis qu'il suffit de tester la condition accelerometer.was_gesture("shake")
.
# Mini projet : alerte canicule
# Olivier Lecluse 11/2019
# Version 2
from microbit import *
# Variables globales
seuil = 20
# Boucle principale
while True:
temp = temperature()
if temp > seuil:
display.show(Image.SAD)
else:
display.show(Image.HAPPY)
# Detection de la secousse
if accelerometer.was_gesture("shake"):
display.show(temp)
Complément :
L'utilisation des gestes sur la carte micro:bit est très simple comme on vient de le voir. Elle est aussi très pratique car elle évite de devoir faire appel aux boutons (il n'y en a que 2 sur la carte). Les gestes détectables par la cartes sont en comparaison assez nombreux ce qui offre des opportunités intéressantes en termes d'Interface Homme-Machine.
Les gestes reconnus sont : up, down, left, right, face up, face down, freefall, 3g, 6g, 8g, shake
Méthode : Troisième version
A présent, nous allons vouloir modifier la valeur du seuil d'alerte afin de le régler au degré près. Puisque nous n'avons pas encore utilisé les boutons ceux-ci sont disponibles. Nous allons donc utiliser le bouton A pour diminuer le seuil d'un degré, et le bouton B pour augmenter le seuil d'un degré. Le nouveau seuil sera alors affiché.
Voici le code correspondant à cette 3ème version
# Mini projet : alerte canicule
# Olivier Lecluse 11/2019
# Version 3
from microbit import *
# Variables globales
seuil = 20
# Boucle principale
while True:
temp = temperature()
if temp > seuil:
display.show(Image.SAD)
else:
display.show(Image.HAPPY)
# Detection de la secousse
if accelerometer.was_gesture("shake"):
display.show(temp)
# Reglage du seuil
if button_a.was_pressed():
seuil += 1
display.show(seuil)
if button_b.was_pressed():
seuil -= 1
display.show(seuil)
Complément : Pour aller plus loin
Nous avons donc vu 3 déclinaisons possibles autour de la problématique de détection d'un seuil de température, de la plus simple à la plus élaborée. Ce projet modeste est réalisable par des élèves de seconde dans le cadre de l'enseignement SNT.
Il est possible d'approfondir encore davantage la question pour des élèves désireux d'aller plus loin ou très à l'aise avec la programmation et les possibilités offertes par la carte. On peut citer quelques évolutions possibles :
Déclencher une alerte sonore en cas de dépassement de la température seuil. On pourra se référer à la page dédiée à la gestion du son sur micro:bit
Calculer la température moyenne sur une période (une heure, une journée)
Déclencher un ventilateur en cas de dépassement de seuil afin de réguler la température (par exemple en commandant un relais)
Envoyer une notification par radio à une seconde carte distante en cas de dépassement de seuil
Mettre en place plusieurs capteurs communiquant par radio et afficher les capteurs qui sont en surchauffe