trappe poulailler

Bonjour à tous, comme promis je vous présente mon projet terminé (depuis un certain temps maintenant)
à savoir , automatiser l'ouverture de mon poulailler.
J'ai donc utiliser une arduino uno, un module L298N,une capteur de luminosité, des capteurs de contact, un vieux moteur de porte de garage actionnant une chaine , des fils, leds, résistances, buzzer, boutons, et pour finir un peu de fil d'étain !

Pour expliquer simplement, je voulais que, dès qu'il fait completement nuit, la trappe se ferme.
A l'inverse, quand il fait completement jour, la trappe s'ouvre. Entre les 2 il ne se passe rien.
Je voulais également pouvoir l'actionner grace à un bouton, mais également à distance via une application iOS, pour pouvoir éventuellement la fermer plus tôt (quand jai pu voir sur la camera qu'elles sont bien toutes dedans) .

Ensuite, en cas de problème (contacteur ne faisant pas sont travail), le moteur s'arrête apres qu'un certain temps soit passé pour éviter de l'endommager.
Et pour finir, si la trappe est en milieu de course, le buzzer emet un son.

Je voulais aussi remercier tous les membres du forum qui m'ont permis d'avancer, et notamment à tahitibob !!!!!

/Users/fredericzimmermann/Documents/App Preview poule.mp4

Bonjour,
Nous on veut bien regarder ta vidéo mais on n'a pas accès à ton disque dur :smiling_imp:

Hello

je suis fort intéressé par ta réalisation. Serait-il possible d'avoir la video (sur youtube par exemple?)

vincent

Oui, je voulai la poster mais ça ne fonctionnait pas, je vais voir ça

voici le lien :App Preview poule - YouTube

Petite précision , mon application est disponible sur l'appstore : Agridomotique

Pour plus d'infos visitez mon site agridomotique.com

Bonjour,

Je trouve dommage de présenter dans cette section un projet dont on ne peut obtenir les sources.

Cela ressemble plus à une publicité commerciale qu'un partage d'information.
:-X

Cest n'est absolument pas une présentation commercial. Je posterai le code des que j'aurai 5 mn

OK, merci :slight_smile:

voici mon code :

//************************************************//
//  GESTION D'UNE TRAPPE DE POULAILLER EN FONCTION DE LA LUMIERE
//  zimmermann frédéric
//  18 01 2015
//************************************************

unsigned long tempsdebutouv  = 0;
unsigned long tempsdebutferme = 0 ;


int PinLumiere=0;        //Broche Analogique de mesure d'éclairement
int PinSeuilLumiere=3;   //Broche Numérique mesure d'éclairement
int tension=0;     //Mesure de tension (valeur élevée si sombre)
int eclaire =0;    //0 ou 1 (0=éclairé>seuil, 1=ombre<seuil)
int ENB = 11; //  Reglage vitesse moteur
int IN3 = 8; // pont en H moteur A
int IN4 = 9; // pont en H moteur A
int fin_coursebas = 2; // bouton pin 2
int fin_coursehaut = 4; // bouton pin 2
int ledbas = 6;
int ledhaut= 5;
int etatcapteurbas= HIGH;  // etat du capteur bas
int etatcapteurhaut = LOW; // etat du capteur haut
int bouton = 12;
int iphone = 13;
int etatiphone = 0;
int etatbouton = 0;
int buzzer = 7;
int etatmoteur = 0;  // 0 = moteurarret , 1 = moteur fermeture, 2= moteur ouverture

boolean trappe_ferme ;
boolean trappe_ouverte;
boolean trappe_milieu_course;



void setup() { 
    
    Serial.begin(9600);  //Connection série à 9600 baud
    pinMode(PinLumiere,INPUT);       //pin A0 en entrée analogique
    pinMode(PinSeuilLumiere,INPUT);  //pin 3 en entrée numérique
    pinMode(ENB,OUTPUT);
    pinMode(IN3,OUTPUT);
    pinMode(IN4,OUTPUT);
    pinMode(fin_coursebas,INPUT);
    pinMode(fin_coursehaut,INPUT);  
    pinMode(ledbas, OUTPUT);
    pinMode(ledhaut, OUTPUT);
    pinMode(bouton, INPUT);
    pinMode(buzzer,OUTPUT);
    pinMode(iphone, INPUT);
}

void loop() { //boucle principale

    etatbouton = digitalRead(bouton);
    etatiphone = digitalRead(iphone);
    etatcapteurbas = digitalRead(fin_coursebas);
    etatcapteurhaut = digitalRead(fin_coursehaut);
   tension = analogRead(PinLumiere); // Lit la tension analogique
    eclaire = digitalRead(PinSeuilLumiere); 
    Serial.begin(9600);  //Connection série à 9600 baud
    Serial.println(etatiphone); 
    
    Serial.println( tension);
    
    
    
 delay (400);
   //---------------------------------------------------//  VERIF DE L'ETAT DE LA TRAPE
   // verif si trappe fermé 
   
   if (etatcapteurbas == LOW && etatcapteurhaut == HIGH)
         { trappe_ferme = true;
           
           digitalWrite(ledbas, HIGH);
           
          }  // la trappe est fermé
             else { digitalWrite(ledbas, LOW);
                    trappe_ferme = false;}
     
         
   // Vérif si trappe ouverte  
    
    if (etatcapteurhaut == LOW && etatcapteurbas == HIGH)
         {trappe_ouverte = true;
          
          
           digitalWrite(ledhaut, HIGH); 
           
          }  // la trappe est ouverte                        
      
              else { digitalWrite(ledhaut, LOW);
                     trappe_ouverte = false; }
     
          
     // si la trappe se trouve à mi-course
        
    if (etatcapteurhaut == HIGH  && etatcapteurbas == HIGH)
         {trappe_milieu_course = true;
                    
              digitalWrite (buzzer, HIGH);  // buzzer en route
                   delay (300);
              digitalWrite (buzzer, LOW);
                   delay (300);                  }
   

    
    //____________________________________________________//   ACTIONNEMENT DU MOTEUR DANS LES 2 SENS
       
       // si il fait nuit et la trappe est ouverte 
       
         if (analogRead(PinLumiere) > 1015  &&  trappe_ouverte == true)
       
         {   
             moteurfermeture();  // on ferme
             etatmoteur = 1;  // le moteur est actionné en fermeture
                          }
            
         
        // si il fait jour et trappe fermé
        
        if (analogRead(PinLumiere) < 610  &&  trappe_ferme == true)
         { 
           moteurouverture(); // on ouvre
           etatmoteur = 2;
            
                                             }
     
         
        
     //_______________________________________________________//   ARRET DU MOTEUR
       // si moteur fermeture en route et si trappe fermé
          
           if (  etatmoteur == 1 && trappe_ferme == true)
             { moteurarret();
                  etatmoteur = 0;
                     } 
       
       // si moteur ouverture en route et si trappe ouverte
          
           if (  etatmoteur == 2 && trappe_ouverte == true )
               
                { moteurarret();
                etatmoteur = 0;
                  }
                  
               // gestion bloquage moteur 
     
          
           // __________________________________________________________GESTION DU BOUTON    
        // bouton appuyé et trappe ouvert
     
        if ( etatbouton == 1 && trappe_ouverte == true)
            {moteurfermeture();
             etatmoteur = 1 ;
              etatbouton = !etatbouton ;
}

         // bouton appuyé et trappe fermé
     
        if ( etatbouton == 1 && trappe_ferme == true)
            {moteurouverture();
             etatmoteur = 2 ;
              etatbouton = !etatbouton ;
              
            }
        
        // trappe mi-course et bouton appuyé
        
        if (trappe_milieu_course == true) 
           { while( etatbouton == HIGH)
              {moteurouverture();
             etatmoteur=2 ;
              etatbouton = !etatbouton ;
        
      }}
// __________________________________________________________GESTION DE L'IPHONE    
        // iphone appuyé et trappe ouvert
        if ( etatiphone == 1 && trappe_ouverte == true)
            {moteurfermeture();
             etatmoteur = 1 ;
              etatiphone = !etatiphone ;
}

         // iphone appuyé et trappe fermé
     
        if ( etatiphone == 1 && trappe_ferme == true)
            {moteurouverture();
             etatmoteur = 2 ;
              etatiphone = !etatiphone ;
              
            }
        
        // trappe mi-course et iphone appuyé
        
        if (trappe_milieu_course == true) 
           { while( etatiphone == HIGH)
              {moteurouverture();
             etatmoteur=2 ;
              etatiphone = !etatiphone ;
        
      }}
      
      //____________________________________________________ GESTION PROBLEME MOTEUR 
    
    // blocage pendant la fermeture
    
     if ((etatmoteur == 1) && (trappe_milieu_course == true) && (( millis()-tempsdebutferme)>= 20000))
     { moteurarret();
        etatmoteur = 4;}
        
         // blocage pendant l'ouverture
    
     if ((etatmoteur == 2) && (trappe_milieu_course == true) && (( millis()-tempsdebutouv)>= 28000))
     { moteurarret();
        etatmoteur = 4;}
        
} 
       
       
       
void moteurouverture(){
    
    tempsdebutouv = millis();
     digitalWrite(ENB, HIGH);
     digitalWrite(IN3, LOW);
     digitalWrite(IN4, HIGH);   
     }
       
       
void moteurfermeture() 
      
       { tempsdebutferme = millis();
     
     digitalWrite(ENB, HIGH);
     digitalWrite(IN3, HIGH);
     digitalWrite(IN4, LOW);
     }


void moteurarret()
     {digitalWrite(ENB, LOW);
              }
     
[code]

Merci pour le partage.

En fait tu gère 3 états :
trappe fermé, ouverte et entre les deux.
Pas besoin de mode économiseur ?
La chance d'avoir de l'électricité à proximité ?
Tu as prévu une tempo en cas de moteur bloqué, mais tu pourrais détecter la surconsommation du moteur :wink:

En effet, j'ai gérer un éventuel problème moteur avec un tempo , c ce qu'il y avait de plus simple pour moi . Et comme tu dis, mon poulailler se trouve à proximité d'une source électrique, je n'ai donc pas eu besoin de batteries .

Bonjour,
est ce qu'il serait possible d'avoir pour les novices comme moi un schéma ou autre des branchements à faire autour de la carte Arduino, moteur ...

Un plan ne t'avancera pas à grand chose. Chaque projet est différent , dans mon cas j'ai utilisé un ancien système de porte de garage , j'ai viré toute la partie électronique pour repartir de 0. Mais en gros il te faut un moteur qui tournera dans les 2 sens grâce à un pont en H ( module l298), tu devras gérer son arrêt grâce à des fins de courses. Tu devras également te poser la question de : quel événement va actionner le moteur , la luminosité, l'heure, une commande à distance , etc....
C pourquoi, je te conseil de commencer par le début en mettant sur papier toutes tes idées ! Bonne chance et n'hésite pas à venir demander de l'aide !

Bonjour,
Je suis parti du même principe, sauf que j'ai installé un moteur moins puissant, un moto-réducteur de jouet fonctionnant en 6 v. Le tout fonctionnant sur batterie, j'ai utilisé un pro mini.
Avec le mode économiseur, led power désactivée, la conso en veille descend à 0,5 mA.
J'avais mis aussi des contacts fin de course. Maintenant ils sont désactivés, car j'ai opté pour l'arrêt sur courant de blocage moteur.
En pont H, j'ai utilisé des transistors récupérés.
Beaucoup de pièces recyclées dans ce montage.
La prochaine modification sera de déterminer plus précisément le courant de blocage moteur qui varie en fonction de la tension et de l'usure des éléments mécaniques.
Détail ici http://moncastel.free.fr/forum/trappePoule/