27 févr. 2016

Arduino : dht 11, hd44780 4 lignes en I2C.

Depuis quelques hivers, je m'intéresse au microcontrôleur Arduino uno.


              



Le projet présenté est la lecture sur un affichage LCD de la température et de l'humidité ambiant grâce à une sonde dht11. La contrainte est d'utiliser la communication I2C entre l'affichage et la carte uno pour réduire au maximum le nombre de connections de 10 à seulement 4 grâce à la microcarte I2C.

Il est important d'ajouter une résistance de 10Kohm entre l'alimentation 5V et la connexion data de la sonde pour que ça marche correctement.

L'écriture du sketch, le premier où je ne fais pas un simple copier coller, a été orienté par le strict minimum. Il est donc assez court :

Il vous faut mettre les librairies, wire.h, LiquidCrystal_I2C.h,  DHT.h, OneWire.h, vous mêmes dans votre application pc arduino et sur ce sketch après "include"  car elles disparaissent de mon blog quand j'enregistre celui-ci?! 

#include
#include
#include
#include

LiquidCrystal_I2C lcd(0x27, 16, 4);
DHT dht;

void setup()
{
  // initialise LCD
lcd.begin();
        lcd.setCursor (0,0);
lcd.print("Humidite");
lcd.setCursor (0,1);
lcd.print("Temperature ");
  // initialise DTH
 dht.setup(7); // data pin 7
}

void loop() {

  // DHT 11
  delay(dht.getMinimumSamplingPeriod());

  float humidity = dht.getHumidity();
  float temperature = dht.getTemperature();

  lcd.print(humidity, 1);
  lcd.setCursor(12,1);
  lcd.print(temperature, 1);
lcd.setCursor(12,0);
}

Il utilise 5 librairies, je dois utiliser par la suite des sondes dallas pour compléter mon projet. Il nécessite de souder la carte I2C avec le LCD.

Au final, la sonde DHT11 est un peu longue à se stabiliser, elle ne prend pas les températures négatives, sa précision est assez moyenne.  

Le 27/02/2016