Header Ads

Spark Core: Lire la température avec un TMP36

Jusqu'ici nous avons appris comment envoyer des commandes personnalisée à notre Core et comment contrôler le matériel.
Mais comment lire des données sur notre Core?

Dans cet exemple, nous allons brancher un senseur de température TMP36 sur le Core et lire des valeurs via Internet (avec un navigateur Internet).
Contrairement à l'envoi de commande, la valeur sera lisible en utilisant une simple requête WEB (de type GET).

Petit retour sur le Spark Core
Spark Core
Pour ceux qui ne connaissent pas encore, Spark Core est une petite carte de développement WiFi qui facilite la création de matériel et périphérique connecté sur Internet. Le "Core" (coeur en Français) est tout ce dont vous avez besoin pour démarrer; alimentez le via son connecteur USB et dans la minute qui suit vous contrôlerez des LEDs, boutons et moteurs... vous pourrez également collecter les données des senseurs par Internet! Whoaw!!!

La gamme Spark.IO est maintenant disponible chez MCHobby.

Introduction au TMP36
Un senseur de température Analogique est vraiment facile à expliquer, c'est une puce qui vous informe sur la température ambiante actuelle!

Ces senseur utilisent la technologie des états solides (wikipédia) pour déterminer la température. Donc, il n'utilise pas de mercure (comme les vieux thermomètres), bilames (comme certains thermomètres ou thermomètre pour four), ni de thermistance (résistance qui varie avec la température). A la place, il utilise la caractéristique qui dit que "la tension aux bornes d'une diode augmente dans des proportions connues lorsque la température augmente". Techniquement, il s'agit de la chute de tension entre la base et l'émetteur - le Vbe - d'un transistor.
En amplifiant cette tension avec grande précision, il est facile de générer un signal analogique qui est directement proportionnel à la température. Il y a bien eu quelques améliorations sur la technique utilisée mais c'est essentiellement la technique utilisée pour mesurer la température.

Comment mesurer la température

Comment calculer la température Il faut donc convertir la tension analogique en degré. Comme le TMP36 permet de mesurer des température négatives, le 0 degré Celsius est placé à une offset de 500 milliVolts. Ainsi, toute mesure inférieur à 500 mv correspondra à une température négative.

La formule est la suivante pour le TMP36:

Temp en °C = ( Tension_de_sortie_en_milliVolts - 500) / 10

Donc, si la tension de sortie est de 1 Volts, la température correspondante est de
(1000 - 500)/10
Soit 50 degrés Celcius.
si vous utilisez un LM35 ou similaire, la température se calcule comme suit (utiliser la ligne 'a' sur le graphique):
 
Temp en °C = ( Tension_de_sortie_en_millivolts) / 10

Montage avec filtrage

Source: notre tutoriel sur le TMP36 avec Spark Core

Si vous prêtez attention au plan de montage, vous noterez que le senseur est alimenté à l'aide de la broche 3.3V* à la place de la sortie standard 3.3V. C'est parce que la sortie 3.3V* offre une tension filtrée (via un filtre LC), idéal pour les application analogique comme celle-ci.
Si les mesures que vous obtenez sont inconsistantes (ou paraissent parasitées), ajoutez une capacité céramique de 0.01µF (10nF) entre l'entrée analogique (A7 dans ce cas) et la masse/GND.
Le senseur devrait idéalement se trouver à une certaine distance du Core afin de ne pas être affecté par les dissipations de chaleur du Core.

Le code
Voici le code proposé par Spark que nous avons traduit pour faciliter la compréhension.
Notez que ce montage utilise le deuxième schéma de raccordement (lecture sur la broche analogique A7 et filtrage).
// -----------------
// Lecture de la température
// -----------------

// Créer une variable qui pour stocker la valeur
// de la température
double temperature = 0.0;

void setup()
{
  // Enregistrer la variable sur Spark Cloud
  Spark.variable("temperature", &temperature, DOUBLE);

  // Active la broche A0 comme entrée (broche
  // sur laquelle le senseur de température est connecté)
  pinMode(A0, INPUT);
}

void loop()
{
  int reading = 0;
  double voltage = 0.0;

  // Lire continuellement la valeur du senseur. De sorte que
  // lorsque nous faisons un appel sur l'API pour lire la valeur
  // nous obtenons la dernière valeur disponible.
  reading = analogRead(A0);

  // La lecture analogique retourne une valeur entre 0 et 4095
  // pour une tension entre 0 et 3.3V.
  // Calculer la tension correspondante 
  voltage = (reading * 3.3) / 4095;

  // Calculer la valeur de la température (formule pour un TMP36)
  // et stocker la valeur dans notre variable statique 'temperature'
  temperature = (voltage - 0.5) * 100;
}

Faire un appel d'API
Voici un exemple de requête Curl, Core_ID est 0123456789abcdef et un Access Token 123412341234.
Notre tuto sur la LED internet explique comment identifier votre CORE_ID et votre ACCESS TOKEN.

curl -G https://api.spark.io/v1/devices/0123456789abcdef/temperature -d access_token=123412341234

Le -G de la commande curl indique que nous voulons utiliser une requête de type GET.
Ce qui produit un résultat comparable à celui-ci:
{
  "cmd": "VarReturn",
  "name": "temperature",
  "result": 23.413919413919405,
  "coreInfo": {
    "last_app": "",
    "last_heard": "2014-12-08T11:55:38.292Z",
    "connected": true,
    "deviceID": "0123456789abcdef"
  }
}  

Il est également possible d'effectuer cette requête directement dans un navigateur


Le tutoriel
Venez découvrir le tutoriel complet sur notre wiki.
Où acheter