RASP-SENSE-HAT-ASTRO-PI-Temperature

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

Senseur de température

Le Sense HAT met en oeuvre un certain nombre de senseurs... dont un senseur de température.

La source anglaise de cette traduction se trouve ici www.raspberrypi.org/learning/astro-pi-guide/sensors/temperature.md

RASP-SENSE-HAT-ASTRO-PI-Temperature-00.jpg

L'image ci-dessus présente un thermomètre clinique. Il sert à prendre votre température (par exemple dans la bouche) afin de savoir si vous êtes malade. Notez que les nombres commencent 35, ce thermomètre ne peut donc être utilisé que pour mesurer la température humaine. Le senseur de température du Sense HAT peut mesurer des températures aussi basse que -40 degrés Celsius jusqu'a +120 degrés Celsius, ce senseur est nettement plus flexible que le thermomètre clinique.

Le Sense HAT dispose de deux senseurs de températures. L'un d'entre eux est incorporé au senseur d'humidité et l'autre est incorporé au senseur de pression. Vous pouvez choisir lequel des deux vous voulez utiliser pour relever la température ou vous pouvez utiliser les deux pour faire une moyenne de la température relevée.

Qu'est ce que la température?

1. Ouvrez Python 3 depuis un terminal en tapant la commande suivante:

sudo idle3 &

2. Saisissez le code suivant dans la nouvelle fenêtre:

from sense_hat import SenseHat

sense = SenseHat()
sense.clear()

temp = sense.get_temperature()
print(temp)

3. Selectionnez File > Save (Fichier > Sauver) et choisissez un nom pour votre programme.

4. Selectionnez Run > Run module Executer > Exécuter module.

5. Si vous voyez l'erreur Humidity Init Failed, alors exécutez le programme en tant que root en utilisant sudo (voyez la dernière ligne en rouge du message), cela signifie que vous n'avez pas scrupuleusement suivit les instructions ci-dessus. Fermer tout er revenez au point 1.

6. Vous devriez voir quelque-chose comme ceci:

Humidity sensor Init Succeeded
28.6293258667

La première ligne "Humidity sensor Init Succeeded" signifie Senseur d'humidité initialisé avec succès. Il se fait que le senseur de température est embarqué sur le senseur d'humidité et c'est via le senseur d'humidité que la température est relevée (un autre senseur de température est embarqué sur le senseur de pression).

7. Juste avant la ligne contenant le print(temp), saisissez la ligne suivante:

temp = round(temp, 1)

8. Vous devriez maintenant voir quelque chose similaire à ceci (il n'y a plus toutes les décimales après le point):

Humidity sensor Init Succeeded
28.6

9. Vous pouvez également essayer les fonctions suivantes à la place de get_temperature.

  • get_temperature_from_humidity (utilise le senseur d'humidité, get_temperature est un raccourcis vers cette fonction)
  • get_temperature_from_pressure (utilise le senseur de pression pour relever la température)

Par exemple:

from sense_hat import SenseHat

sense = SenseHat()
sense.clear()

temp = sense.get_temperature_from_pressure()
temp = round(temp, 1)
print(temp)

Votre code prend une mesure puis sort du programme.

Surveiller la température

1. Cela serait bien de surveiller les changements de température. Nous allons donc placer notre code dans une boucle while puis nous allons redémarrer notre programme.

while True:
  temp = sense.get_temperature()
  temp = round(temp, 1)
  print(temp)

Lorsque vous exécutez le code, les valeurs de la température vont s'afficher et défiller à l'écran avec la mesure la plus récente en bas.

2. Placez votre pouce au dessus du senseur... et maintenez le là. Vous devriez voir les mesures augmenter.

3. Ventilez le (ou utilisez un peu d'air comprimé). Les mesures devraient chuter.

4. Pressez Ctrl + c pour arrêter le programme.

Afficher la température sur la matrice LED

Réfléchissez au différentes façons d'afficher l'information de température sur la matrice LED (voyez le guide consacré à la Matrice LED pour plus d'information). Le choix le plus évident est d'utiliser la fonction show_message, mais même si cela fonctionnerait, il y a probablement de meilleures façon de le faire.

Par exemple, vous pourriez:

  • Utiliser la fonction clear pour afficher une couleur prédéfinie correspondant à une gamme de température. Par exemple, en bleu pour une température de 0 à 5 degrees.
  • Utiliser la fonction clear pour afficher une seule couleur mais en modulant la quantité de rouge (0 to 255) en fonction de la mesure de la température?
  • Utiliser la fonction set_pixel pour afficher une graphique (bar graph) qui monte ou descend comme le ferait un thermomètre.

Vous trouverez ci-dessous un embryon de code basé sur la dernière suggestion. Ce code affiche un niveau (une barre) qui couvre 8 degrés Celsius (une ligne horizontal de LEDs pour chaque degré). Le maximum qu'il peut afficher est 31 (hard codé dans le programme; n'hésitez pas à modifier cette valeur). Par conséquent, le minimum est 31 - 8, ce qui fait 23 degrés celcius. Une erreur survient si la mesure de température se trouve hors de cette gamme de valeur.

Si vous le voulez, vous pouvez ajouter ajouter du code pour prévenir une telle erreur.

  from sense_hat import SenseHat

  sense = SenseHat()
  sense.clear()

  tmax = 31
  tmin = tmax - 8

  while True:
      temp = sense.get_temperature()
      print(temp)
      temp = int(temp) - tmin
      for x in range(0, 8):
          for y in range(0, temp):
              sense.set_pixel(x, y, 255, 0, 0)
          for y in range(temp, 8):
              sense.set_pixel(x, y, 0, 0, 0)

Ce programme fonctionne par soustrayant la valeur minimale à la mesure de température. Cela produit un résultat entre 0 et 8. Nous utilisons ensuite deux boucles for imbriquée pour l'affichage. La boucle externe pour l'axe des x et deux boucles pour l'axe y (ces deux boucles se succèdents). Nous utilisons deux boucles pour y parce que nous voulons activer toutes les LEDs sous la température en rouge avec set_pixel tandis que la boucle suivante éteint toutes les LEDs au dessus de la température.

De cette façon, la barre donnera l'impression de monter/descendre sur l'axe Y pour suivre la mesure de la température.

Si vous voulez modifier l'orientation de votre barre, vous pouvez utiliser sense.set_rotation(n) au démarrage du programme (où n est 0, 90, 180 ou 270) juste après sense.clear().


Source: Getting Started with Astro PI et Astro-Pi Guide proposé par Raspberry Pi Learning Resource (www.raspberrypi.org)

Licence Creative Commons - CC-BY-SA
The learning resource is provided for free by the Raspberry Pi Foundation under a Creative Commons licence.
Find more at raspberrypi.org/resources and github.com/raspberrypilearning.

Traduction réalisée par Meurisse. D pour shop.MCHobby.be - Licence CC-BY-SA.
Crédit de traduction: Toute référence, mention ou extrait de cette traduction doit également être explicitement accompagné du crédit de traduction suivant : «  Traduction par MCHobby (shop.MCHobby.be) » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.