Pages: [1]   Go Down
Author Topic: Projet de domotique Arduino  (Read 1647 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour a tous,

Je suis débutant en domotique et je souhaiterais réaliser un projet de domotique dans une pièce de ma maison qui gerera l'éclairage et les volets roulants de cette pièce.

Voici deux tableaux qui montrent comment j'aimerais gérer l'éclairage et les volets:

Le premier sur l'éclairage.J'aimerais avoir 3 boutons poussoirs.
*Le premier pour mettre l'éclairage sur OFF
*Le second pour mettre l'éclairage sur ON
*Le troisième pour mettre l'éclairage sur AUTO
http://www.hostingpics.net/viewer.php?id=786856lumire.png

Le second sur les volets.J'aimerais que:
*quand une personne est détectée dans la pièce, le système passe en mode manuel et peut donc être commandé avec une tellecomande
*quand personne n'est détecté dans la pièce, le système passe en mode auto et gère l'ouverture et la fermeture grâce aux capteurs de luminosité et de température
http://www.hostingpics.net/viewer.php?id=644532voletsroulants.png

J'ai pensé aux éléments suivants pour réaliser le projet:
carte arduino uno: http://mchobby.be/PrestaShop/product.php?id_product=10
capteur de lumière: http://www.frduino.com/module/dfr0026.html#BtnAddCart ou http://boutique.semageek.com/fr/73-ldr-photor%C3%A9sistance.html
capteur de température: http://boutique.semageek.com/fr/112-capteur-de-temp%C3%A9rature-tmp36.html

J'ai plusieurs questions:
J'aimerais savoir si le matériel est bon ou sinon le matériel a acheter pour réaliser ce projet?
j'aimerais avoir de l'aide sur la marche a suivre ainsi que sur le code car j'ai quelques problèmes avec ArduBlock?

Merci d'avance



Logged

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 24
Posts: 3171
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Première chose, poster dans la bonne rubrique.

Sujet déplacé.
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci je croyais que c'était la bonne rubrique.
Logged

France
Offline Offline
Faraday Member
**
Karma: 52
Posts: 5341
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

J'aimerais savoir si le matériel est bon ou sinon le matériel a acheter pour réaliser ce projet?
Il te manque un capteur de présence non ?
Un capteur infrarouge devrait faire l'affaire.

Sinon pour le reste c'est pas mal.
Juste une petite remarque : pour le capteur de température un DS18B20 ou un LM35 serait bien plus simple à utiliser smiley-wink

j'aimerais avoir de l'aide sur la marche a suivre ainsi que sur le code car j'ai quelques problèmes avec ArduBlock?
Oublie ArduBlock, ce logiciel est bien pour faire des programmes extrêmement simple mais pas plus.
Or dans ton cas il faudra faire un algorithme pour le mode auto.
Regarde sur le site du zero la syntaxe du langage C smiley-wink
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,
Merci de vos réponses. J'ai fais ma liste de matériel et j'aimerais savoir si je pouvais me lancer dans la commande sans pour autant m'être renseigné sur la marche a suivre. J'aimerais juste savoir si tout les matériaux sont compatibles entre eux et est-ce qu'ils me permettront de réaliser mon projet?

Matériel
Arduino UNO : http://www.frduino.com/microcontroleur/dfr0216.html
Capteur de proximité : http://mchobby.be/PrestaShop/product.php?id_product=61
Capteur de lumière : http://www.frduino.com/module/dfr0026.html#BtnAddCart
Capteur de température : http://mchobby.be/PrestaShop/product.php?id_product=59
Clavier boutons : http://www.frduino.com/module/dfr0075.html#BtnAddCart
3 relais : http://www.frduino.com/module/dfr0017.html

J'aimerais aussi savoir si à la place des petits boutons je pouvais utiliser des interrupteurs classiques? MERCI.
Logged

France
Offline Offline
Faraday Member
**
Karma: 52
Posts: 5341
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Si tu prend des modules prend aussi les câbles et la carte de connexion smiley-wink
http://www.frduino.com/cable-et-fil/fit0011.html
http://www.frduino.com/carte-d-extension/dfr0088.html

Pour les interrupteurs tu peut utiliser des interrupteurs classique à condition de leurs mettre une résistance de tirage (10K c'est pas mal).
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci de ton aide  smiley
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,
J'ai reçu le matériel hier.
Voici les photos:

tout le matériel (finalement je ne me servirais pas du petit interrupteur car je vais recevoir le volet avec son interrupteur)


L'Arduino UNO,Le shield ethernet et la carte de connexion.


J'ai du surelever la carte de connexion car alle touchait le port ethernet


Les relais


Le capteur de température DS18B20


Le capteur de présence PIR


Le capteur de luminosité DFR0026



J'ai réussi a cabler les capteurs et a faire des petits programmes pour les faire réagir mais j'ai un probleme pour faire le programme final de mon projet.

J'ai trois questions
*La première est est-ce que  quelqu'un aurait un programme adapté a mon projet ou meme plusieurs programmes que je pourrais modifier pour n'en faire qu'un, sinon est ce que quelqu'un pourrait m'aider a le réaliser?
*La seconde est est-ce je peux brancher tous les capteurs sur les sorties DIGITAL ou je dois utiliser les sorties ANALOG?
*La troisième est a quoi va me servir la carte de connexion et est ce que je pourrais m'en dispenser?

je vous met les schémas pour ma réalisation

Ce premier est un tableau qui représente ce que j'aimerais faire avec l'arduino


Ce second est un schéma de cablage (il manque le capteur de température qui sera sur la borne 2,Le capteur de présence sur la borne 3,Le capteur de luminosité sur la borne 4.


Merci d'avance et n'hésitez pas a me poser des questions si vous ne comprenez pas.
« Last Edit: May 07, 2013, 04:14:01 am by jajprt » Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 164
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mon sketch utilise certains de tes éléments mais sur mega car il n'y avait pas assez de place sur le uno.

http://arduino.cc/forum/index.php/topic,82555.0.html
« Last Edit: May 07, 2013, 04:40:28 am by bluemax2001 » Logged

Offline Offline
Full Member
***
Karma: 2
Posts: 143
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,
Pour quelqu'un qui ne connaît pas le C, ton projet est a la foi assez simple (en terme de capteurs/actionneurs) et lourd en terme de nombre de paramètre. Je te conseil donc de faire d'abord un programme par fonction voulue. Ça va te permettre de debugguer sans t'arracher les cheveux. Ensuite tu les réunira en un seul à grand coups violents de copier/coller.


*La seconde est est-ce je peux brancher tous les capteurs sur les sorties DIGITAL ou je dois utiliser les sorties ANALOG?
[...]
il manque le capteur de température qui sera sur la borne 2,Le capteur de présence sur la borne 3,Le capteur de luminosité sur la borne 4.

Les "entrées" DIGITALES sont prévues pour des signaux "tout ou rien" (je schématise) et les analogiques pour des signaux à valeur variable. Donc les digitales vont lire des bits, et les analogiques vont mesurer des tensions. C'est très important ! Il faut savoir comment communiquent tes capteurs.
Donc à priori :
Capteur PIR - digital
Température - digital
Luminosité - analogique

Donc la luminosité DOIT être câblée sur un analogique.
Si tu manque de pin digitaux, les analogiques peuvent fonctionner en digital (pas l'inverse).
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,
Merci de votre aide.
J'ai réalisé le programme mais comme prévu il y a des erreurs.
je vous le met en espérant que vous puissiez m'aider

Code:
#define PIR 12 //PIR sur sortie 2
#define TEMP 11 //cAPTEUR DE TEMP sur sortie 11
#define RELAISUN 10 //relais1 sur sortie 10 <<relais lumiere>>
#define RELAISDEUX 9 //relais2 sur sortie 9 <<relais montée volet>>
#define RELAISTROIS 8 //relais3 sur sortie 8 <<relais descente volet>>
#define INTEUN 7 //inte1 sur sortie 7
#define INTEDEUX 6 //inte2 sur sortie 6
#define INTETROIS 5 //inte3 sur sortie 5
#define INTEQUATRE 4 //inte4 sur sortie 4
int val = 0;            // état du capteur
int pirState = LOW; // précédent état du capteur
int relaisunState = HIGH; //précadent état du relais1
int relaisdeuxState = HIGH; //précadent état du relias2
int relaistroisState = HIGH; //précédent état du relais3
int inteun = HIGH; //précédent état de l'inte1
int intedeux = HIGH; //précédent état de l'inte2
int intetrois = HIGH; //précédent état de l'inte3
int intequatre = HIGH; //précédent état de l'inte4
void setup()
{
  pinMode(PIR, INPUT); //PIR est une entrée
  pinMode(TEMP, INPUT); //TEMP est une entrée
  pinMode(RELAISUN, OUTPUT); //RELAISUN est une sortie
  pinMode(RELAISDEUX, OUTPUT); //RELAISDEUX est une sortie
  pinMode(RELAISTROIS, OUTPUT); //RELAISTROIS est une sortie
  pinMode(INTEUN, INPUT); //INTEUN est une entrée
  pinMode(INTEDEUX, INPUT); //INTEDEUX est une entrée
  pinMode(INTETROIS, INPUT); //INTETROIS est une entrée
  pinMode(INTEQUATRE, INPUT); //INTEQUATRE est une entrée
  Serial.begin(9600);
}

void loop()  //Boucle
{
  Serial.println(digitalRead(PIR));
  valpir = digitalRead(PIR);
  Serial.println(digitalRead(TEMP));
  valtemp= digitalRead(TEMP);
  vallum=analogRead(0);   //capteur de lum sur analog 0
  Serial.println(vallum,DEC);//print the value to serial       
  delay(100);
 
  if(digitalRead(INTEUN) == LOW);          // si l'interrupteur1 est sur >>>>>>>>>>>>>>>>>>>>>>>> AUTO <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  {
    if(pirState == LOW);      // si il y a une présence
    {
      if((vallum,DEC) > 800);   //si la lumière est faible donc > a 800
      {
      digitalWrite(RELAISUN, LOW); //on allume la lumière donc relais1
      digitalWrite(RELAISDEUX, HIGH); //on desactive le relais de montée du volet
      digitalWrite(RELAISTROIS, LOW); //on active le relais de descente du volet
      }
    }
      else
      {
       digitalWrite(RELAISDEUX, LOW); //on active le relais de montée du volet
       digitalWrite(RELAISTROIS, HIGH); //on desactive le relais de descente du volet
       digitalWrite(RELAISUN, HIGH); //on éteint la lumière
      }
    else //au sinon
    {
     digitalWrite(RELAISUN, HIGH); //on éteint la lumière
    }
      if((vallum,DEC) > 800);   //si la lumière est faible donc > a 800
      {
        digitalWrite(RELAISTROIS, LOW); //on active le relais de descente du volet
        digitalWrite(RELAISDEUX, HIGH); //on desactive le relais de montée du volet
      }
      else
        if((valtemp,DEC) < 25); //si la température est < a 25°C
        {
          digitalWrite(RELAISDEUX, LOW); //on active le relais de montée du volet
          digitalWrite(RELAISTROIS, HIGH); //on desactive le relais de descente du volet
        }
        else  //au sinon
        {
           digitalWrite(RELAISDEUX, HIGH); //on desactive le relais de montée du volet
           digitalWrite(RELAISTROIS, LOW); //on active le relais de descente du volet
        }
    }
  else         // si l'interrupteur1 est sur >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> MANU <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  {
    if(digitalRead(INTEDEUX) == LOW) //si l'interrupteur2 est actionne
    {
      digitalWrite(RELAISUN, LOW); //on allume la lumière
     }
     else
     {
      digitalWrite(RELAISUN, HIGH); //on éteind la lumière
     }
     if(digitalRead(INTETROIS) == LOW) //si l'interrupteur3 poussoir qui commande la montée du volet est actionne
     {
       digitalWrite(RELAISDEUX, LOW); //on active le relais de montée du volet
       digitalWrite(RELAISTROIS, HIGH); //on desactive le relais de descente du volet
     }
     if(digitalRead(INTEQUATRE) == LOW) //si l'interrupteur4 poussoir qui commande la descente du volet est actionne
     {
       digitalWrite(RELAISDEUX, HIGH); //on desactive le relais de montée du volet
       digitalWrite(RELAISTROIS, LOW); //on active le relais de descente du volet
     }
  }
}
Logged

Offline Offline
Full Member
***
Karma: 2
Posts: 143
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si tu nous mettais les erreurs de compilation, ça aiderait !
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Voici les erreurs que j'ai:

sketch_may22a.ino: In function 'void loop()':
sketch_may22a:36: error: 'valpir' was not declared in this scope
sketch_may22a:38: error: 'valtemp' was not declared in this scope
sketch_may22a:39: error: 'vallum' was not declared in this scope
sketch_may22a:54: error: 'else' without a previous 'if'
sketch_may22a:60: error: 'else' without a previous 'if'
sketch_may22a:69: error: 'else' without a previous 'if'
sketch_may22a:75: error: 'else' without a previous 'if'
sketch_may22a:81: error: 'else' without a previous 'if'


PS:si quelqu'un aurait le temps de regarder si le programme est juste par rapport a mon projet se serait sympa

Merci
Logged

France
Offline Offline
Faraday Member
**
Karma: 23
Posts: 3011
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Voici les erreurs que j'ai:

sketch_may22a.ino: In function 'void loop()':
sketch_may22a:36: error: 'valpir' was not declared in this scope
sketch_may22a:38: error: 'valtemp' was not declared in this scope
sketch_may22a:39: error: 'vallum' was not declared in this scope
sketch_may22a:54: error: 'else' without a previous 'if'
sketch_may22a:60: error: 'else' without a previous 'if'
sketch_may22a:69: error: 'else' without a previous 'if'
sketch_may22a:75: error: 'else' without a previous 'if'
sketch_may22a:81: error: 'else' without a previous 'if'


PS:si quelqu'un aurait le temps de regarder si le programme est juste par rapport a mon projet se serait sympa

Merci

Les 3 variables ne sont pas déclarées. Faire une déclaration globale en début de programme ou si tu préfères laisser leur déclaration dans loop, déclares le type devant la première utilisation des variables.

Pour les erreurs sur les else il ne faut pas terminer les lignes de if avec un point virgule
Code:
  if(digitalRead(INTEUN) == LOW);   <----- erreur
  {
    if(pirState == LOW);      <----- erreur
    {
      if((vallum,DEC) > 800);     <----- erreur
      {
Le point virgule à la fin de la ligne fait croire au compilateur que le if est terminé et qu'il n'y a plus de code associé à ce if
Code:
  if(digitalRead(INTEUN) == LOW)
  {
    if(pirState == LOW)      // si il y a une présence
    {
      if((vallum,DEC) > 800)   //si la lumière est faible donc > a 800
      {
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour merci de votre aide, j'ai corrigé le programme mais j'ai encore quelques erreurs.

Nouveau programme:

Quote
#define PIR 12 //PIR sur sortie 2
#define TEMP 11 //cAPTEUR DE TEMP sur sortie 11
#define RELAISUN 10 //relais1 sur sortie 10 <<relais lumiere>>
#define RELAISDEUX 9 //relais2 sur sortie 9 <<relais montée volet>>
#define RELAISTROIS 8 //relais3 sur sortie 8 <<relais descente volet>>
#define INTEUN 7 //inte1 sur sortie 7
#define INTEDEUX 6 //inte2 sur sortie 6
#define INTETROIS 5 //inte3 sur sortie 5
#define INTEQUATRE 4 //inte4 sur sortie 4
int val = 0;            // état du capteur
int valpir = 0;
int valtemp = 0;
int vallum = 0;
int pirState = LOW; // précédent état du capteur
int relaisunState = HIGH; //précadent état du relais1
int relaisdeuxState = HIGH; //précadent état du relias2
int relaistroisState = HIGH; //précédent état du relais3
int inteun = HIGH; //précédent état de l'inte1
int intedeux = HIGH; //précédent état de l'inte2
int intetrois = HIGH; //précédent état de l'inte3
int intequatre = HIGH; //précédent état de l'inte4
void setup()
{
  pinMode(PIR, INPUT); //PIR est une entrée
  pinMode(TEMP, INPUT); //TEMP est une entrée
  pinMode(RELAISUN, OUTPUT); //RELAISUN est une sortie
  pinMode(RELAISDEUX, OUTPUT); //RELAISDEUX est une sortie
  pinMode(RELAISTROIS, OUTPUT); //RELAISTROIS est une sortie
  pinMode(INTEUN, INPUT); //INTEUN est une entrée
  pinMode(INTEDEUX, INPUT); //INTEDEUX est une entrée
  pinMode(INTETROIS, INPUT); //INTETROIS est une entrée
  pinMode(INTEQUATRE, INPUT); //INTEQUATRE est une entrée
  Serial.begin(9600);
}

void loop()  //Boucle
{
  Serial.println(digitalRead(PIR));
  valpir = digitalRead(PIR);
  Serial.println(digitalRead(TEMP));
  valtemp= digitalRead(TEMP);
  vallum=analogRead(0);   //capteur de lum sur analog 0
  Serial.println(vallum,DEC);//print the value to serial       
  delay(100);
 
  if(digitalRead(INTEUN) == LOW)         // si l'interrupteur1 est sur >>>>>>>>>>>>>>>>>>>>>>>> AUTO <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  {
    if(pirState == LOW)      // si il y a une présence
    {
      if((vallum,DEC) > 800)  //si la lumière est faible donc > a 800
      {
      digitalWrite(RELAISUN, LOW); //on allume la lumière donc relais1
      digitalWrite(RELAISDEUX, HIGH); //on desactive le relais de montée du volet
      digitalWrite(RELAISTROIS, LOW); //on active le relais de descente du volet
      }
    }
      else
      {
       digitalWrite(RELAISDEUX, LOW); //on active le relais de montée du volet
       digitalWrite(RELAISTROIS, HIGH); //on desactive le relais de descente du volet
       digitalWrite(RELAISUN, HIGH); //on éteint la lumière
      }
    else //au sinon
    {
     digitalWrite(RELAISUN, HIGH); //on éteint la lumière
    }
      if((vallum,DEC) > 800)   //si la lumière est faible donc > a 800
      {
        digitalWrite(RELAISTROIS, LOW); //on active le relais de descente du volet
        digitalWrite(RELAISDEUX, HIGH); //on desactive le relais de montée du volet
      }
      else
        if((valtemp,DEC) < 25) //si la température est < a 25°C
        {
          digitalWrite(RELAISDEUX, LOW); //on active le relais de montée du volet
          digitalWrite(RELAISTROIS, HIGH); //on desactive le relais de descente du volet
        }
        else  //au sinon
        {
           digitalWrite(RELAISDEUX, HIGH); //on desactive le relais de montée du volet
           digitalWrite(RELAISTROIS, LOW); //on active le relais de descente du volet
        }
    }
  else         // si l'interrupteur1 est sur >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> MANU <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  {
    if(digitalRead(INTEDEUX) == LOW) //si l'interrupteur2 est actionne
    {
      digitalWrite(RELAISUN, LOW); //on allume la lumière
     }
     else
     {
      digitalWrite(RELAISUN, HIGH); //on éteind la lumière
     }
     if(digitalRead(INTETROIS) == LOW) //si l'interrupteur3 poussoir qui commande la montée du volet est actionne
     {
       digitalWrite(RELAISDEUX, LOW); //on active le relais de montée du volet
       digitalWrite(RELAISTROIS, HIGH); //on desactive le relais de descente du volet
     }
     if(digitalRead(INTEQUATRE) == LOW) //si l'interrupteur4 poussoir qui commande la descente du volet est actionne
     {
       digitalWrite(RELAISDEUX, HIGH); //on desactive le relais de montée du volet
       digitalWrite(RELAISTROIS, LOW); //on active le relais de descente du volet
     }
  }
}

Erreurs:

Quote

programme final 1.ino: In function 'void loop()':
programme final 1.ino:65: error: expected `}' before 'else'
programme final 1.ino: At global scope:
programme final 1.ino:86: error: expected unqualified-id before 'else'

Merci
Logged

Pages: [1]   Go Up
Jump to: