Thermomètre sauce geek !
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
Commentaires
DIFFICILE
DIFFICILE
Ajouter un commentaire