[TUTORIEL] Thermocouple

Forum dédié aux produits Adafruit

[TUTORIEL] Thermocouple

Message non lude Florian » Mar 24 Déc 2013 13:56

Bonjour,

Aujourd'hui, nous allons utiliser un thermocouple afin de connaitre la température intérieure de la pièce où nous nous trouvons. Et récupérer ces informations pour les envoyer sur internet sous forme de graphique. Ainsi, vous pourrez vérifier la température qu'il fait chez vous n'importe quand.
Bien évidemment, ce n'est qu'un simple exemple d'utilisation. Vous pourrez vous en servir pour connaître la température intérieure de votre four ou encore de la chaleur au centre du foyer de votre cheminée... Les utilisations sont très nombreuses.

Pour la partie traitement de données nous utiliserons le CC3000 Breakout de chez Adafruit qui enverra nos informations sur Xively. C'est une plateforme qui gère les données que vous lui transmettez et qui peut les retranscrire sous forme de graphique. Donc dans un premier temps je vais vous expliquer comment paramétrer Xively. Il faudra avant toute chose se créer un compte (c'est gratuit).

-XIVELY:
Ouvrez la page Xively, dans l'onglet "Get Started" et enregistrez-vous pour créer votre compte.
Xively.png
Xively.png (320.75 Kio) Vu 3742 fois


Une fois votre compte ouvert, direction l'onglet "Web Tools" puis "Develop". Vous devriez être sur une page similaire à la suivante:
Xively1.png
Xively1.png (56.21 Kio) Vu 3742 fois


Cliquez sur "Add Device" pour rajouter des équipements. En l’occurrence, il s'agira ici du CC3000. Après avoir cliquer dessus vous pouvez rentrer le nom du matériel, CC3000 par exemple, et un descriptif du projet que vous êtes en train de réaliser. On peut mettre "Thermocouple et CC3000 pour température de la maison".
Maintenant que votre matériel est ajouté vous devriez être sur une page qui contient plusieurs codes. Repérez et notez quelque part les codes "Feed ID" et "API Keys" (celui-ci est très long avec des chiffres et des lettres minuscules et majuscules). Ils seront nécessaires plus tard car il faudra les rentrer dans le sketch Arduino. Il devrait normalement y avoir un rectangle bleu (avec inscrit dedans "Add Channel") présent sur la page, cliquez dessus. Nous allons y rentrer les paramètres pour le graphique.
Remplissez les cases comme suit:
Xively2.png
Xively2.png (6.41 Kio) Vu 3742 fois


Voilà pour ce qui est de Xively, c'est prêt à être utilisé. Nous devons maintenant faire le circuit et le code.

- MATÉRIEL:

-Arduino Uno
-CC3000 Breakout
-Thermocouple Amplifier MAX31855 breakout board - v2.0
-Thermocouple Type-K

- SCHÉMA DU MONTAGE:

Thermocouple.png
Thermocouple.png (109.33 Kio) Vu 3742 fois


Connection des pins à l'Arduino Uno:

Thermocouple:

-Vin au 5V.
-GND au GND.

-DO à la pin 7.
-CS à la pin 8.
-CLK à la pin 9.

CC3000 Breakout:

-GND au GND.
-Vin au 5V.

-CLK à la pin 13.
-MISO à la pin 12.
-MOSI à la pin 11.
-CS à la pin 10.

-Vben à la pin 5.
-IRQ à la pin 3.

Si vous utilisez la version 1.0 du Thermocouple Amplifier MAX31855, il vous faudra rajouter un condensateur de 10 microfarads pour ne pas être gêner par de potentiels parasites. Sur la v2.0, cela n'est pas nécessaire puisqu'il y a été ajouté.


- CODE:
Code: Tout sélectionner
// Librairies
#include <Adafruit_CC3000.h>
#include <ccspi.h>
#include <SPI.h>
#include <string.h>
#include "utility/debug.h"
#include<stdlib.h>
#include "Adafruit_MAX31855.h"


// Définition des pins du CC3000
#define ADAFRUIT_CC3000_IRQ   3
#define ADAFRUIT_CC3000_VBAT  5
#define ADAFRUIT_CC3000_CS    10

// Capteur
// Thermocouple_1:
  int thermo_1_DO = 7;  // Pin Data.
  int thermo_1_CS = 8;  // Pin Chip Select.
  int thermo_1_CLK = 9;  // Pin Clock.

   
Adafruit_CC3000 cc3000 = Adafruit_CC3000(ADAFRUIT_CC3000_CS, ADAFRUIT_CC3000_IRQ, ADAFRUIT_CC3000_VBAT,
                                         SPI_CLOCK_DIV2);
                                         
Adafruit_MAX31855 thermocouple_1(thermo_1_CLK, thermo_1_CS, thermo_1_DO);


// Paramètres WLAN
#define WLAN_SSID       "votre SSID"
#define WLAN_PASS       "votre PASS"
// Sécurité de type WLAN_SEC_UNSEC, WLAN_SEC_WEP, WLAN_SEC_WPA or WLAN_SEC_WPA2
#define WLAN_SECURITY   WLAN_SEC_WPA2


// Paramètres Xively
#define WEBSITE  "api.xively.com"
#define API_key  "votre API_key"
#define feedID  "votre feed ID"

uint32_t ip;


void setup()
{
  // Initialisation
  Serial.begin(115200);
 
  Serial.println("Test MAX31855");  // Attendre que le circuit MAX se stabilise.
  Serial.println(F("\nInitialisation..."));
  if (!cc3000.begin())
  {
    Serial.println(F("Ne peut demarrer! Verifie tes connections!?"));
    while(1);
  }
 
}


void loop()
{
  // Connection Wifi
  cc3000.connectToAP(WLAN_SSID, WLAN_PASS, WLAN_SECURITY);
  Serial.println(F("Connectee!"));
 
  /* Attendre la connection DHCP */
  Serial.println(F("Requete DHCP"));
  while (!cc3000.checkDHCP())
  {
    delay(100);
  } 

  // Obtenir l'adresse IP de la page
  ip = 0;
  Serial.print(WEBSITE); Serial.print(F(" -> "));
  while (ip == 0) {
    if (! cc3000.getHostByName(WEBSITE, &ip)) {
      Serial.println(F("default!"));
    }
    delay(500);
  }
  cc3000.printIPdotsRev(ip);
 
  // Obtenir les données et les transformer pour les intégrer
  float c_1 = thermocouple_1.readCelsius();
 
  int thermocouple_1 = (double) c_1;
 
  // Préparation JSON pour Xively
  int length = 0;

  String data = "";
  data = data + "\n" + "{\"version\":\"1.0.0\",\"datastreams\" : [ {\"id\" : \"Thermocouple_1\",\"current_value\" : \"" + String(thermocouple_1) + "\"}]}";
 
  length = data.length();
  Serial.print("Data length");
  Serial.println(length);
  Serial.println();
 
  // Requêtes système
  Serial.print("PUT /v2/feeds/");
  Serial.print(feedID);
  Serial.println(".json HTTP/1.0");
  Serial.println("Host: api.xively.com");
  Serial.print("X-ApiKey: ");
  Serial.println(API_key);
  Serial.print("Content-Length: ");
  Serial.println(length, DEC);
  Serial.print("Connection: close");
  Serial.println();
  Serial.print(data);
  Serial.println();
 
  // Envoi des requêtes
  Adafruit_CC3000_Client client = cc3000.connectTCP(ip, 80);
  if (client.connected()) {
    Serial.println("Connected!");
    client.println("PUT /v2/feeds/" + String(feedID) + ".json HTTP/1.0");
    client.println("Host: api.xively.com");
    client.println("X-ApiKey: " + String(API_key));
    client.println("Content-Length: " + String(length));
    client.print("Connection: close");
    client.println();
    client.print(data);
    client.println();
  } else {
    Serial.println(F("Echec connection"));   
    return;
  }
 
  Serial.println(F("-------------------------------------"));
  while (client.connected()) {
    while (client.available()) {
      char c = client.read();
      Serial.print(c);
    }
  }
  client.close();
  Serial.println(F("-------------------------------------"));
 
  Serial.println(F("\n\nDeconnection"));
  cc3000.disconnect();
 
  // Pause de 1 seconde avant la prochaine prise de données
  delay(1000);
 
}


Pour utiliser ce code vous aurez besoin d'inclure les librairies du thermocouple et du CC3000 breakout dans votre IDE Arduino.
Librairie du CC3000 Breakout, https://github.com/adafruit/Adafruit_CC3000_Library.
Librairie du Thermocouple Amplifier MAX31855, https://github.com/adafruit/Adafruit-MAX31855-library.
N'oubliez pas d'entrer vos identifiants réseau dans les déclarations du sketch, ainsi que les codes "Feed ID" et "API Keys".

Une fois le code téléversé et si tous les paramètres ont été rentrés correctement vous devriez obtenir quelque chose de similaire à ceci sur votre moniteur:
Moniteur.png
Moniteur.png (64.61 Kio) Vu 3742 fois


Et sur Xively, vous devriez au bout d'un moment obtenir quelque chose comme ceci:
GrapheXively.png
GrapheXively.png (11.96 Kio) Vu 3742 fois



C'est fini. Maintenant à vous d'adapter en fonction de vos idées et vos projets. Vous pouvez par exemple rajouter des thermocouples pour savoir si la chaleur de votre four est uniforme partout pendant une cuisson. Vérifier que vos radiateurs émanent bien à la température souhaitée ou encore la température de votre cave à vin... Ou que sais-je encore?

Ce sera tout pour aujourd'hui, j'espère que le tutoriel vous aura plu.
Florian
 
Messages: 75
Inscription: Mer 24 Juil 2013 17:36

Re: [TUTORIEL] Thermocouple

Message non lude EricDuino » Mer 1 Jan 2014 01:35

Beau travail mais pas passionnant :!:
Avatar de l’utilisateur
EricDuino
 
Messages: 233
Inscription: Sam 5 Mai 2012 10:10
Localisation: Toulouse


Retourner vers Adafruit

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron