bonjour,
voici mon premier projet concret avec un arduino.
Comme noël approche j'aimerais faire une gestion de température et d'humidité au niveau de la serre de mon père je pense que cela pourrai en intéresser plus d'un car beaucoup de topic pour ma part ne sont pas assez détailler.
pour cela je vais détaillé dans un premier temps les achats que j'ai effectué et j’espère avoir de nombreux retour et critique des choix que j'ai effectué. le cahier décharge:
serre à tube qui se trouve à peu près 25-30m de la maison.
deux boitiers : un dans la maison pour recueillir les données, un dans la serre pour les capteurs, et déclenchement d'un chauffage électrique.
-les deux boitiers sont alimentés en 220V.
-les obstacles de communication sont:
-une porte fenêtre.
la toile de la serre.
- boitier maison :
un ecran "LCD 2004 20 * 4 LCD 20 X 4 5 V jaune - vert ", un buzzer (alarme sonnore) "Passif Buzzer"
, led (alarme visuelle) interrupteur on\off, interrupteur de navigation sur l'ecran "Tactile Push Button Switch Tact commutateur 6 X 6 X 5 mm",
relais 220V, capteur de temperature " DALLAS DS18B20" , capteur d'humidité "Dht22",
arduino uno
Pour la communication entre les deux boitiers plusieurs choix:
- module RF 433 MHZ
ou
- NRF 24L01 2.4 GHz
voila pour le moment j’attends de recevoir ma commande.
je vais m'attaquer au câblage puis au code. j’espère avoir de nombreux retour de votre part merci par avance.
aurel35:
je vais m'attaquer au câblage puis au code. j’espère avoir de nombreux retour de votre part merci par avance.
bonjour
Déjà tu dispose du secteur dans la serre , ça evacue pas pas de problemes concernant l'alim
pour la transmission je te conseille les nrf , tu a l'avantage avec d'avoir la possibilité de faire du bidirectionnel.
Jambe:
Alléluia, enfin quelqu'un qui produit des plans Fritzing clairs et lisibles! Merci
Bon courage pour ton projet, À suivre!
;D
bonjour
oui ça donnerait presque envie (nan , je plaisante )
Une chose est quasi certaine, aurel35 est quelqu'un de bien "structuré" et c'est déjà un excellent gage de reussite pour son projet
Bonsoir, Merci pour vos encouragements.
je vous transmet la modification du câblage du boitier extérieur au niveau des capteurs DS18B20.
je poursuis mes recherches pour la programmation de tout cela et pour le moment ça n'avance pas beaucoup, plein de questions et d’incompréhensions.
comme vous me le conseiller je vais faire ça étape par étape.
bonjour,
je vais commencer par déterminer le code pour le dht22.
#include "DHT.h" // librairie du DHT
#define DHTPIN 4 // la PIN
#define DHTTYPE DHT22 // type de sonde dans la librairie
DHT dht(DHTPIN, DHTTYPE);//pour configurer (4 et DHT22)
void setup() {
dht.begin(); // pour démarrer la lecture?
}
void loop() {
float h = dht.readHumidity(); //lecture de l’humidité dans h
float t = dht.readTemperature(); //lecture de la température dans t
[/color]
if (isnan(t) || isnan(h)) { contrôle du retour t valide
return false;
else { ACTION // sinon
}
je pense m'occuper maintenant de la communication entre les deux arduino une tache bien plus compliquée.(surtout n'ayant pas encore le matériel)
Bonjour,
n'ayant pas encore reçu le matériel, j'aurais voulu savoir si le code ci-joint était bon (j'y ai mis ce que je ne comprenais pas en rouge.
le code fournit est pour la partie émettrice.
#include "DHT.h" // librairie du DHT #define DHTPIN 4 // la connexion avec la PIN #define DHTTYPE DHT22 // type de sonde dans la librairie
#include <SPI.h> #include <RF24.h>
DHT dht(DHTPIN, DHTTYPE);//pour configurer (4 et DHT22)
RF24 radio(9,10); //création instance radio (pin ce,csn)
void setup() {
dht.begin(); // pour démarrer la lecture?
radio.begin();
radio.openWritingPipe(0xF0F0F0F0F0LL); //cela correspond à quoi?
}
void loop() {
float h = dht.readHumidity(); //lecture de l’humidité dans h
float t = dht.readTemperature(); //lecture de la température dans t
aurel35:
Bonjour,
n'ayant pas encore reçu le matériel, j'aurais voulu savoir si le code ci-joint était bon (j'y ai mis ce que je ne comprenais pas en rouge.
le code fournit est pour la partie émettrice.
bonjour
Perso je te conseillerais une fois ton materiel reçu de tester chaque module avec ses exemples.
et de ne te lancer dans l'integration qu'une fois chaque brique de base validée et comprises.
Je comprend ton impatience , mais d'experience je pense qu'il est quelquefois "urgent d'attendre"
aurel35 très beau projet.
Il y à quelques temps j'avais démarrer un projet similaire et j'ai été bloquer car en voulant développer un petit menu avec ma carte et que m'ont code dépassé la capacité de ma carte donc je me tourne vers méga (qui doit arriver dans la semaine).
Donc si ça intéresse j'ai quelques code sous la main et qui fonctionne (DHT22, menu,capteur lumière etc..).
bonjour,
merci pour ton conseil que je vais suivre de suite.
pourrais tu m'indiquer si tes composants que tu avais sélectionné diffère beaucoup du mien?
et oui je serais très intéresser par tes codes.
merci par avance.
Dans mon projet j'avais utilisé des cartes uno mais je te conseillerai une méga ou due car tu pourra écrire pas mal de ligne de code et même faire un menu ou faire évoluer ton projet par la suite.
et concernant les composants utilisé c'était similaire aux tiens sauf le module NRF 24L01 2.4 GHz.
bonjour,
j'ai suivi ton conseil concernant la méga j'en ai donc commandé une mais il faut que je patiente maintenant.
Pour la communication tu n'as pas utilisé le module NRF 24L01 2.4 GHz, qu'as tu utilisé?
merci pour l’intérêt que tu porte à mon projet.
je vous ferais parvenir des nouvelles dés que je reçois ma commande.
Tu as fait un bon choix pour la méga et pour la communication de mes carte j'avais utilisé des modules 433,92Mhz (module peut fiable mauvaise qualité) avec librairie typeManchester,RCSwitch,virtual wire pour le codage.
Mes émetteur avait une portée de 40 à 50 mètres environ mais normalement il devrait avoir une porté de 100 Mètres si on rajoute une antenne (un fil a souder) et les 5V à son bon fonctionnement.
bonjour
je viens de recevoir enfin un arduino , capteur de température dht22 un double relais et un écran lcd 20*4.
je me suis amusé à faire un petit montage en attendant le reste de ma commande.
principe :
un capteur de température avec deux seuils d'alarme min et max pour l’hystérésis.
un affichage de la température et d'alarme sur écran lcd
et le relais pour le ventilateur.
ci dessous le schéma :
et voici le code
// --- Inclusion ç;àdes librairies utilisées ---
//libreraie dht22
#include <DHT.h>
//librairie afficheur LCD
#include <LiquidCrystal.h> // Inclusion de la librairie pour afficheur LCD
// --- Déclaration pour DTH22 ---
#define DHTPIN 13 // on définie la pin sur la carte arduino pour l’entrée de la sonde
#define DHTTYPE DHT22 //le type de sonde avec laquelle la librarie doit travailler
DHT dht(DHTPIN, DHTTYPE); //on applique à la fonction notre configuration (13 et DHT22)
float minTemp = 19.2; // Consigne de Temperature Minimun
float maxTemp = 19.4; // Consigne de Temperature MAximun
// --- Déclaration pour LCD ---
const int RS=2; //declaration constante de broche
const int E=3; //declaration constante de broche
const int D4=4; //declaration constante de broche
const int D5=5; //declaration constante de broche
const int D6=6; //declaration constante de broche
const int D7=7; //declaration constante de broche
LiquidCrystal lcd(RS, E, D4, D5, D6, D7);// initialisation LCD en mode 4 bits
const int ECRAN=9; //La borne de l'alimentation Ecran
int luminosite = 0; // % de temps où la LED est allumée
int variation = 5; // intervalle de variation de la luminosité
// --- Déclaration pour RELAIS ---
const int RELAIS = 10; //declaration broche 10 output
boolean etatRelais ; // Etat du relais (on / off)
void setup() {
Serial.begin(9600);
//--- Configuration des broches ---
pinMode(RELAIS, OUTPUT);
pinMode(ECRAN, OUTPUT);//met la broche en sortie
digitalWrite(ECRAN,HIGH); // met la broche au niveau haut (5V) – allume la LED
lcd.begin(20,4); // Initialise le LCD avec 20 colonnes x 4 lignes
delay(10); // pause rapide pour laisser temps initialisation
// Test du LCD
lcd.print("test de capteur") ; // affiche la chaîne texte - message de test
delay(2000); // pause de 2 secondes
lcd.clear(); // // efface écran et met le curseur en haut à gauche
delay(10); // pour laisser temps effacer écran
dht.begin(); // c’est parti ^^
}
void loop() {
analogWrite(ECRAN, 255);
Serial.println(RELAIS);
float t = dht.readTemperature(); //lecture de la température et affectation à la variable de type // »float »
lcd.setCursor(1, 3) ; // 10ème col - 2ème ligne - positionne le curseur à l'endroit voulu (colonne, ligne) (1ère=0 !)
lcd.print(t) ; // affiche la chaîne texte - message de test
if(t >= maxTemp ) {
analogWrite(ECRAN, luminosite);
digitalWrite(RELAIS,LOW); // met la broche au niveau haut (5V) – allume la LED
lcd.setCursor(0, 0) ; // positionne le curseur à l'endroit voulu (colonne, ligne) (1ère=0 !)
lcd.print("ATTENTION ") ; // affiche la chaîne texte - message de test
lcd.setCursor(0, 1) ; // positionne le curseur à l'endroit voulu (colonne, ligne) (1ère=0 !)
lcd.print("ventilateur tourne") ; // affiche la chaîne texte - message de test
lcd.setCursor(1, 2) ; // positionne le curseur à l'endroit voulu (colonne, ligne) (1ère=0 !)
lcd.print("temperature > 19") ; // affiche la chaîne texte - message de test
// modifie la luminosité pour le passage suivant dans la boucle loop()
luminosite = luminosite + variation;
// inverse le sens de variation de la luminosité quand on atteint les valeurs extremes 0 ou 255
if (luminosite == 0 || luminosite == 255) {
variation = -variation ;
}
// pause de 30 millisecondes pour voir l'effet de variation
delay(30);
}
if(t <= minTemp ) {
analogWrite(ECRAN, 255);
digitalWrite(RELAIS,HIGH); // met la broche au niveau haut (5V) – allume la LED
Serial.println(etatRelais);
lcd.setCursor(1, 0) ; // positionne le curseur à l'endroit voulu (colonne, ligne) (1ère=0 !)
lcd.print("la temperature") ; // affiche la chaîne texte - message de test
lcd.setCursor(0, 1) ; // positionne le curseur à l'endroit voulu (colonne, ligne) (1ère=0 !)
lcd.print(" ") ; // affiche la chaîne texte - message de test
lcd.setCursor(0, 2) ; // positionne le curseur à l'endroit voulu (colonne, ligne) (1ère=0 !)
lcd.print("est de ") ; // affiche la chaîne texte - message de test
}
}
Bon je me suis inspiré des tuto de droite à gauche.
le ventilateur se déclenche bien quand je le souhaite.
J'ai encore du mal avec l'affichage des alarmes.
t> maxtemp l’écran clignote (plus ou moins)
t entre maxtemp et mintemp le texte reste en alarme car le ventilateur tourne
t<mintemp l’écran redevient normale
j'aurais bien besoin de travailler encore mes alarmes sur le lcd.
si vous avez des exemples de programmation d'alarme je les étudierais .
bon il n'y a plus qu'à attendre le reste de la commande.
merci.
bonjour, je suis entrain de réaliser un projet qui est très similaire a celui-ci, j'ai réussi a envoyer la température et l'humidité a l'autre coté et même faire une communication bidirectionnelle entre les deux rf24, si tu es toujours sur ton projet on peux travailler ensemble si tu veux