Thermomètre sauce geek !

Par :
francoistonic
mer, 02/09/2015 - 13:15
Niveau :
Avancé

Horreur, en plein été, par 42° à l’ombre, le thermomètre de ma copine casse ! Que faire ? Pas de problème ! Je propose une solution : je vais en monter avec une Arduino Nano. Ce n’est pas parce que l’on est en vacances qu’il ne faut pas rester geek.

François Tonic

Pour ce rapide projet Maker / DIY, le matériel est très simple :

  • capteur de température / humidité DHT11
  • 1 carte Arduino Nano
  • 1 écran LCD RGB 2 lignes
  • 1 bouton poussoir
  • 1 sonde étanche DS18B20
  • câble alimentation DC vers pile 9V
  • divers câbles et fils rigides
  • poste à soudure

Attention : respectez les consignes de sécurité. Utilisez avec précaution le poste à soudure. Programmez ! ne sera pas tenu responsable de mauvais montage et de dégâts éventuels.

Un montage simple et rapide

Le montage est plutôt simple. Le câble d’alimentation est sondé sur les broches VIN et GND. Cela permettra de rendre notre thermomètre totalement indépendant.

Nous sondons à la broche GND une broche supplémentaire, car plusieurs capteurs vont devoir s’y connecter.

Nous utilisons un écran LCD de type Grove LCD RGB 2 lignes. Très pratique d’usage. Il se connecte en A4 et A5  (pour les broches SDA et SCL). Il fonctionne en 5V.

Le capteur DHT11 servira à relever la température et l’humidité intérieures. Il est branché en D2 et sur la bronche 3,3V.

La sonde DS18B20 servira à la température extérieure ou pour la piscine / la mer. Elle est totalement étanche. Pour le moment, elle n’a pas été intégrée sur l’Arduino Nano. Elle le sera en D3 et nécessite une résistance 4,7K sur les fils GND – Vdd.

Le bouton poussoir a été testé, mais pas totalement intégré. Il sera branché sur une broche digitale.

La partie code

Le but de notre thermomètre est d’afficher la température et l’humidité ambiante grâce au DHT11. L’affichage des valeurs se fait sur les 2 lignes du LCD. Le bouton poussoir servira à afficher les valeurs de la sonde DS18B20. L’affichage de la sonde restera à l’écran x secondes.

Nous utilisons les librairies suivantes :

  • dht11.h : pour le capteur DHT11
  • wire.h
  • rgb_lcd.h : pour gérer l’écran LCD
  • OneWire.h / DallasTemperature : pour la sonde DS18B20

Nous utilisons les couleurs RGB (Rouge / Vert / Bleu) de l’écran pour changer la couleur d’affichage selon la température :

< 26° : couleur bleue

> 26° : couleur rouge

Les prochaines étapes : intégrer le bouton poussoir et la sonde externe, imprimer le boîtier. Un mini interrupteur permettra d’allumer et d’éteindre le thermomètre.

Le code actuel (sans le code DS18B20), code brut :

#include <dht11.h>
#include <Wire.h>
#include "rgb_lcd.h"

#define buttonPin 4
int buttonState = 0;

rgb_lcd lcd;

dht11 DHT11;

const int colorR = 0;
const int colorG = 0;
const int colorB = 0;

void setup()
{
  lcd.begin(16, 2);
  lcd.setRGB(colorR, colorG, colorB);
  DHT11.attach(2);

  pinMode(buttonPin, INPUT);      // initialize the pushbutton pin as an input
  digitalWrite(buttonPin, HIGH);

   Serial.begin(9600);

void loop()
{
  Serial.println("\n");
 
  buttonState = digitalRead(buttonPin); 

  int chk = DHT11.read();

  Serial.print("Humidite (%): ");
  Serial.println((float)DHT11.humidity, DEC);

  Serial.print("Temperature : ");
  Serial.println((float)DHT11.temperature, DEC); 

  delay(2000);

  lcd.setCursor(0, 1);
  lcd.print("humidite (%):");
  lcd.print(DHT11.humidity);

  if (DHT11.temperature > 26) {
    lcd.setCursor(0, 0);
    lcd.setRGB(255, 0, 0);
    lcd.print("temperature :");
    lcd.print(DHT11.temperature);

  } else {
    lcd.setRGB(0, 0, 255);
    lcd.setCursor(0, 0);
    lcd.print("temperature :");
    lcd.print(DHT11.temperature);
  }

  Serial.print(buttonState); 

  if (buttonState == 0) {
    lcd.setCursor(0, 0);
    lcd.setRGB(255, 0, 0);
    lcd.print("test :");
    delay(2000);
  }
  else {
  }

}


Sonde étanche DS18B20