Projet complet

Sonde de température complète

Prérequis :

- Savoir programmer un Attiny85. (Voir l'article comment programmer un Attiny85)

Le schéma :

Notre montage sera alimenté par une pile 9V. Un régulateur de voltage abaisse cette tension à 5V. Le régulateur est accompagné de 2 condensateur (C3 et C1) comme préconisé dans la datasheet. Le condensateur C2 sert de condensateur de découplage à l'Attiny85.

Notre sonde sera branché sur la broche 3 (D4) de l'Attiny85 avec une résistance de tirage (R4).
L'afficheur LCD sera branché sur la broche 7 (SCL) et 5 (SDA) de l'Attiny85. 

Branchement :

Notre montage sera installé sur une plaque de prototypage 3x7cm. 

Voici un exemple d'implantation des composants :

 

Attention au sens de branchement de la pile 9V. Il n'y a pas de protection contre l'inversion de polarité.
Vous pouvez  souder directement les fils du connecteur de batterie, lcd et sonde de température ou utiliser des connecteurs.

Programme.

Le programme va être sensiblement le même que l'article 9/ L'afficheur LCD

Pour fonctionner le programme a besoin de 2 librairies : 

Il faudra également connaitre l'adresse I2C de votre afficheur. Pour cela je vous invite à consulter l'article :  9/ L'afficheur LCD

#include 
#include "OneWire.h"
#include "DallasTemperature.h"

// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x3f, 16, 2);

#define ONE_WIRE_BUS 4

// On définit le OneWire
OneWire oneWire(ONE_WIRE_BUS);
// Et on le passe en réfence de la librairie Dallas temperature
DallasTemperature sensors(&oneWire);

// On définit les variables
float tmin,tmax,tnow,tlast;

// Flèche haut
byte upArrow[8]={
  B00100,
  B01110,
  B10101,
  B00100,
  B00100,
  B00100,
  B00100,
  B00100
};

// Flèche bas
byte downArrow[8]={
  B00100,
  B00100,
  B00100,
  B00100,
  B00100,
  B10101,
  B01110,
  B00100
};

void setup() {
  // On initialise le LCD
  lcd.begin();

  // On allume le rétroéclairage
  lcd.backlight();
  lcd.clear();
  lcd.createChar(0, upArrow);
  lcd.createChar(1, downArrow);

  // on initialise la librairie Dallas
  sensors.begin();

  // on initialise la température max et min.
  tmin = 125;
  tmax = -55;
  tlast = 0;
}

void loop() {
  //On demande la température
  sensors.requestTemperatures();

  tnow = sensors.getTempCByIndex(0);
  if(tnow!=tlast) {
    tlast=tnow;
    if(tnow<tmin)
      tmin=tnow;
     if(tnow>tmax)
      tmax=tnow;
    
    // On affiche le résultat sur le LCD.
    lcd.clear();
    lcd.print("    ");
    lcd.print(tnow);
    lcd.write(223);
    lcd.print("C");
  
    // Température mini
    lcd.setCursor(0,1);
    lcd.write(1);
    lcd.print(tmin);
    lcd.write(223);
    
    lcd.print(" ");
  
    // Température maxi
    lcd.write(0);
    lcd.print(tmax);
    lcd.write(223);
  }
    
  // on attend 1 seconde
  delay(1000); 
}

Mise en boitier.

Si vous avez une imprimante 3D, je met à votre disposition les fichiers STL du boitier.

Télécharger l'archive en cliquant ici.

L'archive contient 4 fichiers STL : 

Base.stl

Chapeau.stl

Face.stl

Lcd.stl

Et voici le résultat :