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
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.
La formule est la suivante pour le TMP36:
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):
Montage avec filtrage
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).
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.
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:
Il est également possible d'effectuer cette requête directement dans un navigateur
Le tutoriel
Venez découvrir le tutoriel complet sur notre wiki.
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 |
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.
- TMP36 et Spark Core - Lire la température avec un TMP36 sur Spark Core. Utiliser Spark.variable().
Écrire un commentaire