Publié le

Construire son thermomètre

Review et partage :

Introduction Materiel Objectif

Description

Vous vous souvenez tous du thermomètre au mercure ?

Et bien voici sa version revisitée: Le thermomètre électronique à graduation.

Des leds indiquent la température actuelle grâce au célèbre capteur de température : le DS18B20.

Vous n’avez plus qu’a compter le nombre de leds allumées en vous aidant des graduations.

C’est parti !

materiaux

Afin de réaliser ce montage vous aurez besoin :

Objectifs

Le but de ce projet est de vous familiariser avec le code , l’impression 3D et l’électronique, le tout en un seul objet simple et personnalisable.

Nous allons donc vous accompagner tout au long de l’assemblage: de l’impression du boîtier, au chargement du code votre thermomètre.

Les pièces à imprimer

Les fichiers

Afin d’assembler notre thermomètre nous allons avoir besoin des fichiers .STL pour l’impression et du code pour le Pro Trinket qui se trouvent dans l’archive disponible en cliquant sur le bouton ci-dessous.

Thermometre Master

Il ne vous restera plus qu’a décompresser votre dossier et récupérer les fichiers contenus dans le dossier « 3D model ». Ne supprimez pas le reste car nous aurons besoin du fichier thermometre.ino qui se trouve à la racine pour le code.

Le socle

Il viendra accueillir le Trinket Pro , la batterie , l’interrupteur ainsi que le capteur de température.

Le logement de la batterie permet de mettre une batterie légèrement plus grosse ou de rajouter d’autres modules (capteur, actuateurs).

Le couvercle

Il viendra s’emboîter dans le socle, sans colle, il pourra donc être enlevé facilement.

On pourra y glisser le stick neopixel grâce aux glissières présentes sur son autre face. L’emplacement du neopixel nécessite de coller celui-ci à la colle chaude.

Le diffuseur

Le diffuseur permet comme son nom l’indique de diffuser la lumière émise par les différentes LED mais aussi de donner une graduation, les petites barres définissant les unités (comme par exemple 5) et les grandes les dizaines.

Le chargeur de batterie

Afin de pouvoir recharger notre thermomètre nous aurons besoin d’un système permettant de le recharger grâce à l’USB du Pro Trinket.

C’est ici qu’intervient le Lipo Back Pack !

Soudez le header fourni avec votre Lipo Back Pack dans les trois pastilles.

Ensuite coupez le morceau de piste qui permet de garder le Pro Trinket constamment allumé.

Pour cela munissez-vous d’un cutter ou un scalpel et faites une incision entre les deux pastilles. Répétez plusieurs fois la manipulation pour vous assurer d’avoir bien séparé les deux.

Afin de vous assurer que la piste est bien coupée, utiliser un multimètre en position « testeur » (il émettra un bip lorsque vous venez toucher entre eux les deux pointes de tests).

Vous pouvez également le mettre en mode ohmmètre si vous ne disposez pas de la fonction « bip », il suffira alors de lire à l’écran une résistance infinie (souvent définie par 1).

Placez les pointes de test sur les pastilles comme sur la photo, si le multimètre ne sonne pas ou n’indique pas une résistance faible (quelques Ohm), alors vous avez réussi à couper le lien.

Dans le cas contraire vérifiez et tentez de séparer les deux pastilles à nouveau.

Maintenant placez le Lipo Backpack comme sur la photo au-dessus du Pro Trinket au niveau des pastilles BUS, GND et BAT.

Afin de faciliter la soudure, vous pouvez utiliser une pince pour garder le Lipo Back Pack en place lorsque vous retournez le Pro Trinket.

Soudez les trois pattes en vérifiant bien que le Lipo BackPack est bien parallèle au Pro Trinket.

Coupez les trois pattes qui dépassent.

Il ne vous reste plus qu’à couper les pattes qui dépassent au-dessus.

Voilà maintenant grâce à lui vous pourrez recharger votre batterie par le biais du connecteur USB du Pro Trinket mais aussi couper l’alimentation.

 

L’interrupteur

Tout d’abord nous allons préparer deux fils d’environ 80mm chacun.

Dénudez-les à chaque extrémité sur environ 5 mm. Pour cela utilisez une pince à dénuder.

Puis appliquez un peu d’étain afin de solidariser les brins.

Répétez cette étape pour les quatre extrémités.

A l’aide de la troisième main, placez l’un des fils devant la patte de gauche ou de droite de l’interrupteur.

Puis soudez le fil.

Répétez cette action pour la patte du milieu.

Faites glisser deux morceaux de gaine thermo-rétractable et utiliser un décapeur thermique ou un briquet pour la faire se rétracter.

Coupez le bout des deux fils afin de rendre la partie étamée (avec de l’étain) plus petite afin d’éviter tout risque de court-circuit lors de l’insertion.

Placez et soudez l’un des fils comme sur la photo, peu importe le fil, l’interrupteur n’a pas de sens (polarité).

Soudez l’autre fil de la même manière dans l’autre trou.

Votre interrupteur est en place et fonctionnel.

Nous en avons donc fini avec la partie alimentation.

Le capteur de température

Dans ce projet nous allons utiliser un capteur de température portant le joli nom de DS18B20.

C’est un capteur de température numérique et il utilise un protocole de communication nommé 1-wire.

Ce protocole permet de chainer plusieurs capteurs l’un à la suite de l’autre, il suffira donc d’utiliser un fil de données (bidirectionnel), un fil de masse et un fil d’alimentation avec une tension allant de 3V à 5V.

Nous aurons besoin également d’une résistance (fourni dans le kit) afin de tirer vers le haut (3.3V ou 5V) le fil de données.

Préparez également trois fils de couleurs différentes (pour faciliter l’identification) de 50mm environ, dénudés et étamés.

Afin de vous aider voici une représentation du composant tirée de la feuille technique du composant. On appelle ça le PINOUT.

Nous utilisons dans notre cas la version traversante du composant c’est  à dire avec un boitier TO-92.

Tout à gauche nous avons donc la masse (GND), au milieu le signal (DQ) et enfin à droite l’alimentation (VDD).

Séparez les pattes les unes des autres afin de faciliter la soudure.

Placez ensuite une goutte d’étain sur chacune des pattes.

Soudez le premier fil noir correspondant à la masse sur la patte du bas (n’hésitez pas à consulter à nouveau le PINOUT du composant).

Effectuez la même chose avec le second fil vert en le connectant sur la patte du milieu.

Enfin placez le fil rouge sur la dernière patte, puis vérifiez à nouveau que tout correspond.

Nous allons maintenant rajouter la résistance. Afin de faciliter la connexion, nous allons la placer directement sur le DS18B20 au niveau des pattes.

Pliez l’une des pattes à 180° vers l’autre comme sur la photo.

Puis coupez-les de manière à coller au mieux avec la taille des pattes du capteur.

A l’aide de la troisième main, placez la résistance juste au-dessus des pattes d’alimentation et de signal.

Soudez une patte sur la patte du signal et l’autre sur la patte d’alimentation afin de tirer vers le haut la patte de signal, ainsi elle ne subira pas des perturbations qui pourraient entraîner des erreurs de communication.

Préparez trois morceaux de gaine thermo-rétractable d’une longueur d’environ 20mm.

Faites-les glisser le long des câbles afin de couvrir les pattes et la résistance pour éviter tout risque de court-circuit et empêcher les fils de se détacher avec le temps puis rétractez les gaines à l’aide d’un briquet ou d’un décapeur.

Nous allons maintenant connecter le capteur au Trinket Pro. Pour cela nous allons connecter le GND sur la pastille se trouvant sur la ligne de connexion du FTDI (en haut à gauche comme sur la vue Fritzing),

puis l’alimentation sur la pastille 5V (4ème en bas en partant de la droite) et enfin le signal sur la pastille #4 (indiquée sur le circuit imprimé).

Retournez le circuit imprimé et soudez les 3 fils.

Coupez les morceaux qui dépassent et voilà votre capteur de température est connecté et opérationnel.

 

 

Les leds et Neopixel

Une fois le couvercle imprimé vous pourrez y insérer le Neopixel Stick ainsi que placer le Neopixel.

Faites glisser délicatement le stick le long des glissières en faisant bien attention au sens, il peut ne rentrer que dans un sens donc vous ne pouvez pas vous tromper.

Une fois en place vous pourrez déposer le Neopixel dans son emplacement, la pastille « DIN » vers le Stick.

Préparez trois fils de couleurs différentes d’environ 20mm pour le Neopixel.

Placez les deux fils noir et rouge dans les trous d’alimentation : rouge pour le VIN et noir pour le GND.

Une fois les deux fils soudés, placez le dernier fil dans le trou DIN, puis soudez-le.

Coupez les morceaux de fils qui dépassent.

Maintenant nous allons nous occuper du côté du Stick. Appliquez de l’étain sur les pastilles de chaque côté du Stick.

Soudez le fil rouge du Neopixel sur la pastille « 5VDC ».

Puis soudez le fil noir sur la pastille « GND » et le fil vert sur la pastille « DOUT ».

Il ne vous reste plus qu’à replacer le Neopixel en attendant de le fixer avec de la colle.

Pour le Stick, préparez trois fils, avec les mêmes couleurs que précédemment, d’environ 90mm.

Soudez-les de la même manière que précédemment : rouge sur « 5VDC », noir sur « GND » et vert sur « DIN ».

Vous pouvez rajouter un morceau de gaine thermo-rétractable afin d’éviter que les fils partent dans tous les sens lorsque vous allez refermer le boîtier.

Nous allons souder à présent les fils du Stick sur le Trinket Pro.

Le fil noir ira sur la deuxième pastille GND (en dessous de la précédente pour le capteur), le fil rouge juste sur la patte du Lipo Backpack (voir photo finale) et le fil vert sur la pastille #3 (indiqué sur le Trinket Pro).

Sur cette photo vous pouvez voir l’emplacement des fils vert et noir.

Et sur celle-là le fil rouge. Soudez le fil rouge sur le morceau de métal qui dépasse puis soudez les fils vert et noir.

Enfin coupez les fils qui dépassent.

N’hésitez pas à vérifier à nouveau vos connexions pour plus de sûreté.

Assemblage du thermomètre

Le Pro Trinket

Placez le Pro Trinket dans son logement, d’abord l’arrière du côté des fils puis du côté de l’USB.

Ensuite vous pouvez placer la batterie. Elle n’a pas de logement particulier vous pourrez donc la garder en place grâce à du double-face par exemple.

L’interrupteur

L’interrupteur se glisse dans la fente sur le côté. Vous pouvez le maintenir en place avec de la colle chaude si nécessaire.

L’avantage de la colle chaude, c’est que vous pouvez l’enlever sans abîmer le composant en cas de problème.

Le couvercle

Maintenez en place le Neopixel grâce à de la colle chaude, un point de chaque côté.

Le diffuseur

Il ne reste plus qu’à déposer de la colle sur le diffuseur, en haut et en bas.

Une fois fini voici à quoi ressemble votre thermomètre.

Programmation

Télécharger les fichiers

Nous allons maintenant travailler avec le fichier thermometre.ino qui correspond au code à charger dans Arduino IDE mais vous aurez également besoin des librairies Neopixel, One wire et Dallas temperature que vous pouvez télécharger ci-dessous:

Une fois les librairies installées dans le dossier /libraries de votre Arduino IDE  et l’IDE redémarré, vous êtes fin prêt pour charger le code dans votre micro-contrôleur.

Configuration de l’IDE

Ouvrez le code dans l’IDE et changez la carte dans le menu /OUTILS/TYPE DE CARTE pour PRO TRINKET 5V/18MHz.

Puis changez le programmateur:

/OUTILS/PROGRAMMATEUR/USBtinyISP

Charger le code

Connectez le Pro Trinket sur votre ordinateur et appuyez  en même temps sur le bouton « téléverser », cela vous permettra  de charger le code durant le Bootloader et ainsi vous épargner le fait de devoir appuyer sur le bouton RESET du Pro Trinket ;).

Une fois le téléversement réussi vous verrez écrit en bas « Téléversement terminé ».

Si vous n’avez pas ce message (et donc un message d’erreur), assurez-vous d’avoir bien respecté toutes les consignes et répétez l’action une nouvelle fois.

Analyse du code

//importer les librairies pour NeoPixel, OneWire et capteur de température
#include <Adafruit_NeoPixel.h>
#include <OneWire.h>
#include <DallasTemperature.h>

 

Vous l’avez deviné , nous allons utiliser 3 librairies en particulier :

  • Adafruit_NeoPixel.h => pour contrôler les leds
  • OneWire.h => pour le protocole de communication OneWire
  • DallasTemperature.h => pour communiquer avec le capteur de température
// définir la PIN pour les données du capteur de température
#define ONE_WIRE_BUS 4

Le capteur de température sera connecté sur la PIN #4 du Pro Trinket.

// PIN de connexion des NEOPIXELS
#define PIN 3

Et les NeoPixels sur la PIN #3.

// nombre de NEOPIXELS connectés
#define NUMPIXELS 9

Pour un nombre total de 9 NeoPixels.

long interval = 120000; // temps entre chaque coupure
long interval2 =1800000; // bonus "STAND UP"

 

Nous allons ici définir le temps des timers afin d’afficher la température dans ce cas présent toute les 120 000 millisecondes => 2 minutes,

et l’intervalle entre chaque « chenillards » : 1 800 000 millisecondes => 30 minutes.

void setup() {
//initialiser les NEOPIXELS
pixels.begin();
//initialiser le capteur de température
sensors.begin();
}

Ensuite on initialise les leds et le capteur dans la fonction setup().

void loop() {
// créer un delai pour économiser la batterie:
unsigned long currentMillis = millis();

Dans la fonction principale nous allons travailler sur une base de temps afin de ne pas afficher continuellement la température (et ainsi économiser la batterie).

if(currentMillis - previousMillis > interval) {
//on stock la nouvelle valeur de temps
previousMillis = currentMillis;
//lancer le sous programme getTemp
getTemp();

if(currentMillis - previousMillis2 > interval2) {
//on stock la nouvelle valeur de temps
previousMillis2 = currentMillis;
//on répète dix fois la fonction:
for(int x=0 ;x<=10;x++){
//pour les leds de 8 a 0:
for(int z = 8;z >= 0;z--){
//on allume les leds en bleu
pixels.setPixelColor(z,blue);
//on éteint les leds progressivement
pixels.setPixelColor(z+1,0,0,0);
pixels.show();
delay(50);
}
//puis on éteint la dernière led
pixels.setPixelColor(0,0,0,0);
pixels.show();
}
}

Pour cela à chaque fois que l’on dépassera les valeurs des variables « interval » et « interval2 », on effectuera une action.

void getTemp(){
sensors.requestTemperatures(); // envoi la commande pour obtenir la température
tempC = sensors.getTempCByIndex(0); //stock la température dans la variable tempC

 

Dans le premier cas, nous faisons appelle à la sous fonction « getTemp() » qui va nous permettre de demander au capteur la température actuelle et de stocker la réponse dans la variable « tempC ».

Dans le deuxième cas nous effectuons un « chenillard » de couleur bleu afin de vous alerter.

//Si nous sommesseuils de température:
if(tempOK){
for(int y = ledMap;y >= 0;y--){// éteindre toutes les leds progressivement
pixels.setPixelColor(y,0,0,0);
pixels.show();
delay(100);
}
delay(100);//marquer une pause
for(int x =8;x>=ledMap;x--){ //allumer les leds jusqu'à la température actuelle
pixels.setPixelColor(x,color);
pixels.show();
delay(100);
}
}

 

Après avoir analysé la valeur de la température nous pouvons configurer les leds et ainsi allumer progressivement les leds jusqu’à la valeur voulue, puis après un petit temps, les éteindre progressivement.

Si les leds sont rouges alors la température est positive et si elles sont bleues, négative. Chaque leds allumées correspondent à 5°C (sauf la première qui représente 0°C).

Il vous suffit alors de lire cette température grâce à la graduation: les petits bâtons pour 5, 15, 25, 35°C et les grands pour 10, 20, 30, 40°C.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *