• Derniers Articles

    • Accueil
    • > Créer votre porte de poulailler pour 12€ !!

    Créer votre porte de poulailler pour 12€ !!

    Bonjour à tous,

    Je vais présenter à travers ce blog comment créer une porte de poulailler qui s’ouvre automatiquement en fonction du soleil. Une porte de poulailler coûte dans le commerce environ 100€. Ici je vais vous montrer comment en créer une similaire pour seulement 12€ !!

    Dans le projet que je vais traiter, la porte s’ouvrira le matin à 9h et se fermera en fonction du soleil. Vous pourrez adapter ce projet en fonction de vos besoins. La partie purement électronique sera traitée dans cet article.

     Contexte:  Je possède 12 poules et mon père à l’intention de mettre un coq. La porte sert à l’empêcher de chanter et d’ameuter tout le quartier dès 6h du mat’. Je lui ai donc proposé de fabriquer toute la partie commande pour son moteur.

     

    Matériel nécessaire à la commande du moteur:

    - Un nano arduino    –> 4€ ( Aliexpress)

    - Une carte pour soudure –> 1€

    - Un L298N –> 4€

    - Deux borniers –> 1€

    - Un petit panneau solaire ou_Une photorésistance -> quelques centimes prenez n’importe laquelle

    - Une résistance de 10kohm (ou autre)

    -Un vieux moteur 12 V de récupération

     I- Introduction

    J’ai décidé après divers essais d’utiliser le nano arduino afin de gérer le soleil, l’envoi de commandes au moteur.

    Le nano arduino c’est quoi ?

    L’Arduino nano est un circuit imprimé en matière libre comprenant un Microcontroleur. Le Microcontrôleur c’est la petite puce noire avec plein de pattes. C’est un peu le cerveau d’un objet électronique, une version miniaturisée d’un circuit avec plein de composants. C’est aussi sur ce composant qu’est stocké le programme.

     

    Créer votre porte de poulailler pour 12€ !! ArduinoNanoFront_3_lg
    ArduinoNano

     

    Spécifications techniques

    Micro-contrôleur Atmel ATmega328
    Tension de fonctionnement (niveau logique) 5 V
    Tension d’alimentation (recommandée) 7-12 V
    Tension d’alimentation (maximum) 6-20 V
    E/S digitales 14 (dont 6 peuvent fournir une sortie PWM, notées par un trait blanc)
    E/S analogiques 8
    Courant disponible par pin E/S 40 mA
    Mémoire flash 32 KB (dont 2KB utilisés par le bootloader)
    SRAM 2 KB
    EEPROM 1 KB
    Vitesse d’horloge 16 MHz
    Dimensions 44mm x 18mm

    C’est bien beau tout ça mais qu’est ce que ça fait ?

    En vrai, beaucoup de choses. Les E/S analogiques permettent de récupérer des informations et envoyer des informations. Les E/S digitales permettent elles d’envoyer une sortie 0 ou 5V. Le PWM permet de faire varier par exemple la vitesse d’un moteur mais aussi l’intensité d’une lampe. Broches TX/RX (transmission/réception) permet de dialoguer avec d’autres composants ex:module radio-fréquence.

    II- Mise en place de l’arduino-nano

    Pour le contrôle de la lumière nous devons récupérer les infos du panneau solaire ou de la photorésistance donc utilisation des E/S analogiques. Choix des broches commencant par A (A0 A1…)

    Ici on choisis A0. Soit une broche de la photorésistance sur  le 5V et une autre sur la broche A0. Ensuite on connecte la résistance de 10 kohm sur la masse (GND) et l’autre sur la broche A0. Si vous changer la valeur de la résistance vous allez modifier la sensibilité de votre photorésistance. Pour avoir la résistance la plus adapté vous pouvez par exemple remplacer la résistance par un potentiomètre variable. Regardez le résultat dans la console de l’arduino (Serial monitor, loupe en haut à droite de l’IDE arduino.) Vous pouvez ensuite une fois la valeur optimale trouvé le remplacer si souhaité par une valeur de résistance fixe ;)

    Contrôle du moteur:

    Pour contrôler un moteur avec un ampérage supérieur à 1A cela devient un peu plus compliqué… (Vous pouvez trouver l’indication d’ampérage sur le transformateur de votre moteur. Faites attention car un fort ampérage est dangereux !)

    Nous ne pouvons pas contrôler le moteur en passant directement par le nano-arduino. Pourquoi ?

    1.  Parce que le courant est tellement faible que votre moteur n’arrivera même pas à tourner.
    2. Lorsque le moteur finit sa course lorsqu’il n’est plus alimenté, il génère un courant. Ce courant arrive sur votre arduino et peut, selon l’intensité le griller. Super !

    Du coup on va utiliser un composant intermédiaire qui se nomme « pont en H ». Je ne rentrerais pas dans les détails mais ce composant permet de faire tourner un moteur dans les deux sens sans risquer de griller tous vos composants. Le pont en H utilisé ici est le L298.

    ShemaPortepoulailler

    III- Programmer votre nano-arduino

    Installer sur votre pc Arduino IDE téléchargeable ici

    Configuration:

    1. Ouvrez-le, allez dans tools–> Boards et selectionnez Arduino nano /ATmega 328
    2. Allez dans tools–> serial ports selectionner le port.

    Votre arduino est prêt à être programmé !

    Modification du code le 16/04/2020 !!!

    Suite à vos messages le code ci dessous est mis à jours. Il fonctionne avec un capteur de luminosité et deux contacts fin de course. Un petit message pour me dire que tout marche bien serait appréciable.

    Je peux ajouter un autre code si vous souhaitez ajouter le module RTC pour la programmation en fonction du temps. Bon bricolage !

     

    Pour le module RTC: https://www.robot-maker.com/forum/tutorials/article/120-utilisation-du-module-rtc-ds1307/

    // Déclaration des variables et des constantes
    int PhotoR = A0;// entrée analogique de la photorésistance
    int FinCHaut = 9;// entrée du fin de course HAUT. Une broche sur la masse l'autre sur l'arduino
    int FinCBas = 12;// entrée du fin de course BAS. Une broche sur la masse l'autre sur l'arduino
    int D2 = 2;//monté
    int D3 = 3;//descente
    
    //variable pour stocker la valeur lue après conversion
    int PhotoRLue;
    
    void setup()
    {
    // démarrage la liaison série entre entrée analogique et ordi
    Serial.begin(9600);
    //Déclaration des contacts fin de course en entrée avec utilisation de la fonction PULLUP interne
    pinMode(FinCHaut, INPUT_PULLUP); //Les Pull Up sont des résistances internes à l'arduino.
    //Donc de base lorsque le boutton n'est pas appuyé on lit un état haut (5V = niveau logique 1)
    pinMode(FinCBas, INPUT_PULLUP);
    }
    
    void loop()
    {
        PhotoRLue = analogRead(PhotoR);
        //Valeur comprise entre 0 et 1024
        //on affiche la valeur lue sur la liaison série
        Serial.print("PhotoRLue = ");
        Serial.print(PhotoRLue);
        //on saute une ligne entre deux affichages
        Serial.println();
    
        if (PhotoRLue <520 & digitalRead(FinCBas) == 1)         //Condition : Detection de la nuit et la porte est ouverte
        //Alors on ferme la porte
        {
          while(digitalRead(FinCBas) == 1){  //Tant que la porte n'est pas fermé, le moteur tourne   
              //Fermeture
            digitalWrite(D2, LOW);
            digitalWrite(D3, HIGH);
          }
            digitalWrite(D3, LOW);    //On arrete le moteur car le contact fin de course est activé
        }   
        if (PhotoRLue > 520 && digitalRead(FinCHaut) == 1)         //Condition : Detection du jour et la porte est fermée FinCHaut = 1 signifie le boutton fin de course haut n'est pas appuyé
        {
                while(digitalRead(FinCHaut) == 1){  //Tant que la porte n'est pas ouverte, le moteur tourne   
              //Fermeture
            digitalWrite(D2, HIGH);
            digitalWrite(D3, LOW);
          }
        digitalWrite(D2, LOW);
        }
    }

    Adaptez ce code en fonction de vos besoin. Lorsque vous cliquez sur la petite loupe en haut à droite vous pouvez voir les valeurs lu sur votre panneau solaire.

    Ca y est votre commande moteur est terminée !

    Attention, ici je n’ai pas utilisé de contact d’ouverture ni de fermerture. Je vous conseille fortement d’en utiliser. A quelque centimes l’unité pourquoi s’en priver. On les connectes sur l’arduino.

    Lorsqu’il est activé, la porte est arrivée à la butée et on coupe l’alimentation du moteur. C’est beaucoup plus propre et engendre moins de problèmes.

    Voici le travail gentiment offert par #Duke:

    fichier doc Doc porte poule fichier txt Projet_porte_poule_RTC

    Le .txt est à renommer en .ino ! C’est l’extension du code arduino. J’ai du le renommer pour l’intégrer à la page.

    Connection avec photorésistance réalisé sur thinkercad (Le connecteur 8 broches c’est le L298N – pas d’autres solutions…):

    Screenshot_2020-04-25_06-55-30

    192 Réponses à “Créer votre porte de poulailler pour 12€ !!”

    1 2 3
    1. Pauline dit :

      Bonjour à tous,
      totalement novice en électronique (mais très motivée !) je souhaite me lancer dans ce projet très bien détaillé (avec ouverture au lever et fermeture au coucher du soleil)
      J’ai noté toutes les pièces à commander, il ne me manque plus que l’alimentation (je n’ai pas le courant près du poulailler).
      Que me conseillez-vous pour alimenter le moteur ? (que je dois commander également, j’en ai noté quelques un sur aliexpress, de 12v, dont certains pour lesquels je dois choisir la vitesse de roulement, laquelle me conseillez-vous ? Cela va de 6 rpm à 150 rpm). Est-ce que ce mini moteur ferait l’affaire ?
      https://m.fr.aliexpress.com/item/32991622456.html?trace=wwwdetail2mobilesitedetail&spm=a2g0o.productlist.0.0.4f2959c7oBx2S9&s=p&ad_pvid=202006080654403781924400396400000486372_8&algo_pvid=697c673e-d910-4f3d-bed8-87ed3db04e46&algo_expid=697c673e-d910-4f3d-bed8-87ed3db04e46-7&btsid=0ab6d59515916244804054971e550a&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_
      Un bloc de 8 piles 1,5v ferait l’affaire ? Ou il vaudrait mieux une batterie 12v ?
      Merci d’avance ;)

      • portepoulailler dit :

        Bonjour Pauline,
        Alors je suis désolé mais je ne peux pas te donner une réponse directe. Tout simplement car je ne connais pas ton systeme mecanique pour ouvrir la porte.
        En fait tout dépend de la force necessaire que doit fournir le moteur pour ouvrir la porte.
        La porte est en polystyrene et les frottements sont minimes, alors un moteur 6V peut faire le boulot.
        Les rpm sont les rotations par minute de ton moteur. Plus le rpm est élevé plus ta porte s’ouvrira rapidement. Cependant c’est au detriment de la force de sortie.
        C’est en fait comme les vitesses d’un vélo ou d’une voiture. Petite vitesse plus de couple donc plus de force (montée) grande vitesse moins de couple, moins de force.
        Pour l’alim la encore, 8piles de 1.5V peuvent être plus efficace qu’une batterie 12V. Il faut regarder les caractéristiques. mAh (milliAmpères heure).
        Prenons un exemple: Avec un multimetre à 5 euros, tu mesures le courant que ton moteur demande pour lever la porte. Tu mesures 1A. Tes piles fournissent 1Ah. Ton moteur pourra touner une h. Or tu l’utilises seulement 10secondes donc tu pourras ouvrir 360 fois ta porte avant que tes piles soient vide.
        Donc ce qui est important c’est le mAh ou Ah indiqué sur la batterie ;)
        J’espère ne pas t’avoir trop embrouillée ^^

      • Pauline dit :

        Merci pour ta réponse ! Et surtout merci pour ce tutoriel !
        J’ai très bien compris, merci pour l’explication ! Du coup je vais devoir attendre de recevoir ma commande pour faire les tests (j’ai déjà un multimètre, c’est un bon début), mais du coup ça sera déjà chez moi et ça serait mieux que ça fonctionne ;)
        J’ai commandé un moteur 12V à 100rpm. Ma porte sera en bois, et j’aurai deux poulies placées entre la porte et le moteur, ce qui permettra peut-être d’amoindrir la force nécessaire à l’ouverture de la porte ?
        J’ai commandé le bloc pile, on verra si ça fait l’affaire. Pour le prix, ça n’est pas bien grave si je dois recommander autre chose derrière. Et dans le meilleur des cas, je n’aurai qu’à changer les piles de temps en temps !
        Je reviendrai probablement par ici lorsque toutes les pièces seront arrivées et qu’il faudra s’attaquer au montage :D

    2. Launay dit :

      Je suis très intéressé par ce montage et ne voudrai pas casser l’ambiance, je voudrai simplement savoir si un bon bricoleur mais totalement novice en électronique et informatique a déjà réussi a faire ce montage et si il fonctionne correctement? Merci de vos réponse car j’hésite à me lancer.

    3. Launay dit :

      Bonsoir, je compte alimenter le système avec une batterie rechargé par un panneau photovoltaïque est il possible de récupérer l’information de luminosité de ce dernier pour l’arduino? D’avance merci pour vos retour.

      • portepoulailler dit :

        Bonjour Launay,
        Il doit être possible de faire ce que tu demandes.
        En fait c’est le courant de ton panneau solaire qui varie en fonction de la luminosité. Or l’arduino ne mesure que les tensions pas les courants. Sinon il faut rajouter un autre composant (detecteur de courant).
        Cependant si la luminosité n’est pas suffisante pour maintenir la tension nominale de ton panneau solaire alors, celle-ci va chutter. Et c’est là que ça devient interessant.
        Donc tu fais un pont diviseur de tension avec une résistance pour diminuer ton 12V panneau solaire à du 5V pour le connecter sur la broche analogique de l’arduino.

    4. ydur182be dit :

      Bonjour à tous,

      J’ai fini mon projet et fonctionne très bien 2 mois de tests et confectionné 3 de plus pour un voisin un pote et mais parents juste une précision sur la photorésistance un bon réglage ou même changer de résistance de 10 kΩ 4k7 Ω tous dépend des conditions moi je suis sous un arbre il y a déjà beaucoup d’obscurité et l’idée de l’interrupteur je n’ai pas eu besoin car j’ai réglé par apport à ma poule couche tard si j’ai vraiment besoin d’ouvrir je mets la lampe de mon smartphone sur la photorésistance avec un moteur à du 3 Mrp (+- 5 min de temps fermeture complète) elle a le temps de rentrée sans se faire couper en 2 ;) .
      Pour les LED j’ai mis les 2 LED qui s’allument quand le moteur tourne comme ça je vois tout de suite s’il y a un problème des 2 LED éteints (plus de batterie …) ou trop longtemps allumée (problème de moteur ou de fine course…) pour la mise en service pas de panique si elle s’allume par c’est normal elle doit faire un cycle ouvert et fermer pour que LED s’allume correctement. Je vous partage la programmation avec les liens des images et le schéma de câblage j’espère que se pourras aider ;)
      //LiensImages
      // https://drive.google.com/file/d/1qEC-OJaKNFlBF465NBDdXNY9h14niXCp/view?usp=drivesdk
      //https://drive.google.com/file/d/1tFO1s9_GZ7IiowafpG2MnyopIhsOO7E_/view?usp=drivesdk
      //https://drive.google.com/file/d/1x6sOd8zgwzy8ewMtK13ZWkXkDEsDP79C/view?usp=drivesdk

      //liens du schéma de câblage https://drive.google.com/file/d/1ODS4WtpFs1rBYy9Wm454ebtdqvLcrFOn/view?usp=drivesdk

      // Déclaration des variables et des constantes
      int LDR = A1;// entrée analogique de la photorésistance
      int FDCO = 6;// Fin de course ouvert
      int FDCF = 7;//Fin de course fermer
      int MOTEUROUVERTURE = 4;//Ouverture porte
      int MOTEURFERMETURE = 5;//Fermeture porte
      int LEDF=2;//LED porte fermée Rouge
      int LEDO=3;//LED porte ouverte Vert
      int LDRLue;//variable pour stocker la valeur lue après conversion

      void setup()
      {
      // démarrage la liaison série entre entrée analogique et ordi
      Serial.begin(9600);

      pinMode(FDCO, INPUT_PULLUP); //Les Pull Up sont des résistances internes à l’arduino.
      //Donc de base lorsque le boutton n’est pas appuyé on lit un état haut (5V = niveau logique 1)
      pinMode(FDCF, INPUT_PULLUP);
      pinMode(MOTEUROUVERTURE, OUTPUT);
      pinMode(MOTEURFERMETURE, OUTPUT);
      pinMode(LEDF, OUTPUT);
      pinMode(LEDO, OUTPUT);

      }

      void loop()
      {
      LDRLue = analogRead(LDR);
      //Valeur comprise entre 0 et 1024
      //on affiche la valeur lue sur la liaison série
      Serial.print(« LDRLue = « );
      Serial.print(LDRLue);
      //on saute une ligne entre deux affichages
      Serial.println();

      if (LDRLue 120 && digitalRead(FDCO ) == 1) //Condition : Detection du jour et la porte est fermée FinCHaut = 1 signifie le boutton fin de course haut n’est pas appuyé
      {
      while(digitalRead(FDCO ) == 1){ //Tant que la porte n’est pas ouverte, le moteur tourne
      //Fermeture
      digitalWrite(MOTEUROUVERTURE, HIGH); //Rotation du moteur +
      digitalWrite(MOTEURFERMETURE, LOW);//Rotation du moteur -
      digitalWrite(LEDO,HIGH);//LED porte ouvert allumée vert la Rouge aussi quand le moteur tournne comme ca on voie si il y a un problème ou pas si les 2 LED son allumées trop longtemps

      }
      digitalWrite(LEDF,LOW);//LED porte fermé Rouge s’éteint il reste que la verte d’allumée pour confirmé le fin de course et c’est toujours pas brulé
      digitalWrite(MOTEUROUVERTURE, LOW);//On arrete le moteur car le contact fin de course est activé

      }
      delay(100);
      }

      • ydur182be dit :

        J’ai oublié le principal un grand MERCI à toi maître de ces lieux portepoulailler pour ton aide .

      • Richard dit :

        Bonjour , je ne suis pas spécialiste, mais j’ai deja fait de l’electronique….
        j’ai réalisé le montage avec un arduino Nano 3.0 contrôleur CH340 pilote USB 16Mhz ATMEGA328P/168P de chez ali express.
        le programme a bien été téléversé , mais ca ne tourne pas. la led verte est allumée et rien ne se passe.
        si je connecte le gnd au fin de course et que j’appuie dessus, tout se met en arrêt (court circuit on dirais) car il y a du 5 volt constant en sortie D6 et D7 de l’arduino.
        je ne vois pas quoi faire…
        pouvez-vous m’aider?

    5. ydur182be dit :

      Bonjour à tous,

      J’ai fini mon projet et fonctionne très bien 2 mois de tests et confectionné 3 de plus pour un voisin un pote et mais parents juste une précision sur la photorésistance un bon réglage ou même changer de résistance de 10 kΩ 4k7 Ω tous dépend des conditions moi je suis sous un arbre il y a déjà beaucoup d’obscurité et l’idée de l’interrupteur je n’ai pas eu besoin car j’ai réglé par apport à ma poule couche tard si j’ai vraiment besoin d’ouvrir je mets la lampe de mon smartphone sur la photorésistance avec un moteur à du 3 Rpm (+- 5 min de temps fermeture complète) elle a le temps de rentrée sans se faire couper en 2 ;) .
      Pour les LED j’ai mis les 2 LED qui s’allument quand le moteur tourne comme ça je vois tout de suite s’il y a un problème des 2 LED éteints (plus de batterie …) ou trop longtemps allumée (problème de moteur ou de fine course…) pour la mise en service pas de panique si elle s’allume par c’est normal elle doit faire un cycle ouvert et fermer pour que LED s’allume correctement. Je vous partage la programmation avec les liens des images et le schéma de câblage j’espère que se pourras aider ;)
      //LiensImages
      // https://drive.google.com/file/d/1qEC-OJaKNFlBF465NBDdXNY9h14niXCp/view?usp=drivesdk
      // https://drive.google.com/file/d/1tFO1s9_GZ7IiowafpG2MnyopIhsOO7E_/view?usp=drivesdk
      // https://drive.google.com/file/d/1x6sOd8zgwzy8ewMtK13ZWkXkDEsDP79C/view?usp=drivesdk

      //liens du schéma de câblage https://drive.google.com/file/d/1ODS4WtpFs1rBYy9Wm454ebtdqvLcrFOn/view?usp=drivesdk

      // Déclaration des variables et des constantes
      int LDR = A1;// entrée analogique de la photorésistance
      int FDCO = 6;// Fin de course ouvert
      int FDCF = 7;//Fin de course fermer
      int MOTEUROUVERTURE = 4;//Ouverture porte
      int MOTEURFERMETURE = 5;//Fermeture porte
      int LEDF=2;//LED porte fermée Rouge
      int LEDO=3;//LED porte ouverte Vert
      int LDRLue;//variable pour stocker la valeur lue après conversion

      void setup()
      {
      // démarrage la liaison série entre entrée analogique et ordi
      Serial.begin(9600);

      pinMode(FDCO, INPUT_PULLUP); //Les Pull Up sont des résistances internes à l’arduino.
      //Donc de base lorsque le boutton n’est pas appuyé on lit un état haut (5V = niveau logique 1)
      pinMode(FDCF, INPUT_PULLUP);
      pinMode(MOTEUROUVERTURE, OUTPUT);
      pinMode(MOTEURFERMETURE, OUTPUT);
      pinMode(LEDF, OUTPUT);
      pinMode(LEDO, OUTPUT);

      }

      void loop()
      {
      LDRLue = analogRead(LDR);
      //Valeur comprise entre 0 et 1024
      //on affiche la valeur lue sur la liaison série
      Serial.print(« LDRLue = « );
      Serial.print(LDRLue);
      //on saute une ligne entre deux affichages
      Serial.println();

      if (LDRLue 120 && digitalRead(FDCO ) == 1) //Condition : Detection du jour et la porte est fermée = 1 signifie le boutton fin de course haut n’est pas appuyé
      {
      while(digitalRead(FDCO ) == 1){ //Tant que la porte n’est pas ouverte, le moteur tourne
      //Fermeture
      digitalWrite(MOTEUROUVERTURE, HIGH); //Rotation du moteur +
      digitalWrite(MOTEURFERMETURE, LOW);//Rotation du moteur -
      digitalWrite(LEDO,HIGH);//LED porte ouvert allumée vert la Rouge aussi quand le moteur tourne comme ça on voie si il y a un problème ou pas si les 2 LED son allumées trop longtemps

      }
      digitalWrite(LEDF,LOW);//LED porte fermé Rouge s’éteint il reste que la verte d’allumée pour confirmé le fin de course et c’est toujours pas brulé
      digitalWrite(MOTEUROUVERTURE, LOW);//On arrête le moteur car le contact fin de course est activé

      }
      delay(100);
      }

      Répondre

    6. corentin Valion dit :

      Bonjour
      J’ai réalisé ce montage, problème dès que ma photorésistance passe 520 le moteur ce met a tourner et le moniteur ce fige sur le dernier chiffre envoyé par la photorésistance, et lorsque que j’appuie sur un des deux fin de course rien ne change ! Que faire ? Merci

    7. Pat30170 dit :

      Bonjour n’ayant pas eu de réponse à mes précédents messages, je propose ce programme pour le montage suivant avec boutons de marche manuel ajoutés aux fins de course. https://drive.google.com/file/d/16lFEllJ3g41LepSL8HbOMSi9gjCba3-X/view
      Un programmateur averti peut donner son aval…

      // Déclaration des variables et des constantes
      int PhotoR = A0;// entrée analogique de la photorésistance
      int FinCHaut = 9;// entrée du fin de course HAUT. Une broche sur la masse l’autre sur l’arduino
      int FinCBas = 12;// entrée du fin de course BAS. Une broche sur la masse l’autre sur l’arduino
      int D2 = 2;//monté
      int D3 = 3;//descente
      int FermManuel = 8; // bouton fermeture manuel
      int OuvManuel = 11; // bouton ouverture manuel
      //variable pour stocker la valeur lue après conversion
      int PhotoRLue;

      void setup()
      {
      // démarrage la liaison série entre entrée analogique et ordi
      Serial.begin(9600);
      //Déclaration des contacts fin de course en entrée avec utilisation de la fonction PULLUP interne
      pinMode(FinCHaut, INPUT_PULLUP); //Les Pull Up sont des résistances internes à l’arduino.
      //Donc de base lorsque le boutton n’est pas appuyé on lit un état haut (5V = niveau logique 1)
      pinMode(FinCBas, INPUT_PULLUP);
      //Déclaration des contacts Ouverture Manuel en entrée avec utilisation de la fonction PULLUP interne
      pinMode(FermManuel, INPUT_PULLUP); //Les Pull Up sont des résistances internes à l’arduino.
      //Donc de base lorsque le boutton n’est pas appuyé on lit un état haut (5V = niveau logique 1)
      pinMode(OuvManuel, INPUT_PULLUP);
      }

      void loop()
      {
      PhotoRLue = analogRead(PhotoR);
      //Valeur comprise entre 0 et 1024
      //on affiche la valeur lue sur la liaison série
      Serial.print(« PhotoRLue = « );
      Serial.print(PhotoRLue);
      //on saute une ligne entre deux affichages
      Serial.println();

      if ((PhotoRLue 520 && digitalRead(FinCHaut) == 1) || (digitalRead(FinCHaut) == 1 && digitalRead(OuvManuel) == 1)) //Condition : Detection du jour et la porte est fermée FinCHaut = 1 signifie le boutton fin de course haut n’est pas appuyé
      {
      while (digitalRead(FinCHaut) == 1) { //Tant que la porte n’est pas ouverte, le moteur tourne
      //Fermeture
      digitalWrite(D2, HIGH);
      digitalWrite(D3, LOW);
      }
      digitalWrite(D2, LOW);
      }
      }

      Cordialement
      Pat

      • ydur182be dit :

        bonjour Pat,
        j’ai laissé plusieurs messages sur mon programme fini avec le câblage et des photos de mon montage mais ils n’ont pas été publiée, peut-être trop long? car le message de remerciements est passé je laisse mon email ydur182be@yahoo.fr si vous avez besoin je vous envoie les liens et la programmation ou Mr portepoulailler m’explique pourquoi ça passe pas ;)

    8. timmy dit :

      Bonjour et bravo pour cette réalisation.
      Par contre il est dommage de ne pas présenter la partie mécanique, entre autre le système de couplage moteur et poulie d’entrainement de la porte que je suppose coulissante.J’ai récupéré des moteurs pas a pas bipolaires et un unipolaire avec un engrenage de monté sur l’arbre et je ne sais pas trop comment faire une jonction avec ce type de sortie.
      Merci

    9. ydur182be dit :

      J’ai fini mon projet et fonctionne très bien 2 mois de tests et confectionné 3 de plus pour un voisin un pote et mais parents au prix des pièces, juste une précision sur la photorésistance un bon réglage ou même changer de résistance de 10 kΩ 4k7 Ω tous dépend des conditions moi je suis sous un arbre il y a déjà beaucoup d’obscurité et l’idée de l’interrupteur je n’ai pas eu besoin car j’ai réglé par apport à ma poule couche tard si j’ai vraiment besoin d’ouvrir je mets la lampe de mon smartphone sur la photorésistance avec un moteur à du 3 Rpm (+- 5 min de temps fermeture complète) elle a le temps de rentrée sans se faire couper en 2 ;) .
      Pour les LED j’ai mis les 2 LED qui s’allument quand le moteur tourne comme ça je vois tout de suite s’il y a un problème des 2 LED éteints (plus de batterie …) ou trop longtemps allumée (problème de moteur ou de fine course…) pour la mise en service pas de panique si elle s’allume par c’est normal elle doit faire un cycle ouvert et fermer pour que LED s’allume correctement. Je vous partage la programmation avec les liens des images et le schéma de câblage j’espère que se pourras aider ;) un grand merci pour l’aide et ton blog portepoulailler ;)
      //LiensImages
      // https://drive.google.com/file/d/1qEC-OJaKNFlBF465NBDdXNY9h14niXCp/view?usp=drivesdk
      //https://drive.google.com/file/d/1tFO1s9_GZ7IiowafpG2MnyopIhsOO7E_/view?usp=drivesdk
      //https://drive.google.com/file/d/1x6sOd8zgwzy8ewMtK13ZWkXkDEsDP79C/view?usp=drivesdk

      //liens du schéma de câblage https://drive.google.com/file/d/1ODS4WtpFs1rBYy9Wm454ebtdqvLcrFOn/view?usp=drivesdk

      // Déclaration des variables et des constantes
      int LDR = A1;// entrée analogique de la photorésistance
      int FDCO = 6;// Fin de course ouvert
      int FDCF = 7;//Fin de course fermer
      int MOTEUROUVERTURE = 4;//Ouverture porte
      int MOTEURFERMETURE = 5;//Fermeture porte
      int LEDF=2;//LED porte fermée Rouge
      int LEDO=3;//LED porte ouverte Vert
      int LDRLue;//variable pour stocker la valeur lue après conversion

      void setup()
      {
      // démarrage la liaison série entre entrée analogique et ordi
      Serial.begin(9600);

      pinMode(FDCO, INPUT_PULLUP); //Les Pull Up sont des résistances internes à l’arduino.
      //Donc de base lorsque le boutton n’est pas appuyé on lit un état haut (5V = niveau logique 1)
      pinMode(FDCF, INPUT_PULLUP);
      pinMode(MOTEUROUVERTURE, OUTPUT);
      pinMode(MOTEURFERMETURE, OUTPUT);
      pinMode(LEDF, OUTPUT);
      pinMode(LEDO, OUTPUT);

      }

      void loop()
      {
      LDRLue = analogRead(LDR);
      //Valeur comprise entre 0 et 1024
      //on affiche la valeur lue sur la liaison série
      Serial.print(« LDRLue = « );
      Serial.print(LDRLue);
      //on saute une ligne entre deux affichages
      Serial.println();

      if (LDRLue 120 && digitalRead(FDCO ) == 1) //Condition : Detection du jour et la porte est fermée fin de course ouvert = 1 signifie le boutton fin de course ouvert n’est pas appuyé
      {
      while(digitalRead(FDCO ) == 1){ //Tant que la porte n’est pas ouverte, le moteur tourne
      //Fermeture
      digitalWrite(MOTEUROUVERTURE, HIGH); //Rotation du moteur +
      digitalWrite(MOTEURFERMETURE, LOW);//Rotation du moteur -
      digitalWrite(LEDO,HIGH);//LED porte ouvert allumée vert la Rouge aussi quand le moteur tournne comme ca on voie si il y a un problème ou pas si les 2 LED son allumées trop longtemps

      }
      digitalWrite(LEDF,LOW);//LED porte fermé Rouge s’éteint il reste que la verte d’allumée pour confirmé le fin de course et c’est toujours pas brulé
      digitalWrite(MOTEUROUVERTURE, LOW);//On arrete le moteur car le contact fin de course est activé

      }
      delay(100);
      }

    10. manu dit :

      bonjour,
      Je souhaite utliser un contact d’ouverture ou de fermerture. Je suis totalement novice en rogramation d’arduino.
      Y a t il des lignes de codes a ajouter? Et comment et ou les connecter sur l’arduino.
      Merci

    11. Sido dit :

      Bonjour (à tous),
      nous nous sommes lancés dans la programmation en récupérant un moteur 12V d’une imprimante et forcément tout le kit arduino.
      Par contre, petit problème en vue: notre porte est de type guillotine et en position ouverte, elle redescend toute seule lorsque l’on arrête l’alimentation du moteur.
      Faut-il mettre un contre-poids pour empêcher ce phénomène?
      merci pour votre aide précieuse,

    12. Pauline dit :

      Bonjour à tous ! J’ai déjà reçu tout mon matériel, et vient le moment où il faut mettre les mains dans le cambouis :D
      Je suis totalement novice, j’espère ne pas faire n’importe quoi.
      J’ai fait un schéma pour pouvoir me guider, pouvez-vous me dire si tout est correct ? Sachant que je me suis basée sur le programme de portepoulailler.
      https://drive.google.com/file/d/1bZmtCBilC7gmXXVkilsZIz4mjn1bxWNM/view?usp=sharing

      J’ai par ailleurs deux questions :

      - J’ai acheté des borniers. Sur mon schéma ils n’apparaissent pas car je ne suis pas sûre de leur position. J’imagine que l’on ne peut pas brancher 2 ou 4 fils sur une même sortie, comme c’est fait sur mon schéma. Du coup, les borniers servent à cela ? Par exemple, dois-je brancher un fil sur la sortie GND de l’arduino, et ce fil sur le bornier, et de l’autre côté du bornier, les 4 autres fils qui partent vers les fins de course, la résistance et le moteur ? Ou est-ce que je suis complètement à côté de la plaque ?

      - Le moteur que j’ai reçu est vraiment minuscule ! Avez-vous fait des ajustement pour adapter le bras et pouvoir ainsi facilement enrouler un câble pour pouvoir lever la porte ? Le mien est vraiment trop court actuellement, je pensais le rallonger et fixer une sorte de poulie pour enrouler facilement le câble, en bricolant quelque chose. Bonne idée?

      Belle journée à tous !

      • Pat30170 dit :

        Pauline, regarde le schéma de ydur182be https://drive.google.com/file/d/1ODS4WtpFs1rBYy9Wm454ebtdqvLcrFOn/view?usp=drivesdk, car ton schéma à vraiment trop d’erreur.
        Naturellement tu peux brancher plusieurs fils sur un bornier si tu veux plusieurs fils sur une sortie.
        Pat

      • pauline dit :

        Bonjour Pat30170,
        Merci pour ta réponse. Serait-ce possible de me dire où sont mes erreurs ? Mis à part les sorties d2 et d3 que j’avais mis en d3 et d4, je ne vois pas ce qui ne va pas.
        Je vois que les fins de course de ydur182be sont branchées à la fois sur la masse et sur la sortie 5v, mais d’après le code de portepoulailler et les commentaires précédents, j’avais cru comprendre qu’il fallait les connecter à la masse uniquement ?
        Merci d’avance pour votre aide, j’aimerai comprendre mes erreurs :)

    13. Fred dit :

      Bonjour à tous,
      j’ai réalisé le montage pratiquement à l’identique cependant le L298N chauffe énormément lorsque je connecte les deux fils envoyant les signaux d’ouverture ou de fermeture (j’espère que c’est un peu près clair). J’ai vérifié mon montage plusieurs fois ainsi que mon code que recoupé avec les différente proposition qui ont été faite.
      Je ne sais vraiment pas d’ou peu venir le problème ni par ou chercher.
      Merci et très bonne soirée à tous.

    14. manu dit :

      bonjour,
      j’ai fini le montage et j’ai téléversé le code, cependant cela ne fonctionne pas…
      La seule chose qui a pu faire tourner le moteur c’est lorsque j’ai remplacé dans le code D2 par IN1 et D3 par IN2. Et encore, le moteur ne tourne que lorsque j’appuie sur le contacteur relié au D9 et s’arrête lorsque je relâche. Avec l’autre contacteur rien ne se passe.
      J’ai essayé plusieurs modifs (je suis novice) mais rien ne prends.alors:
      1- est ce que cela peut venir de mes contacteurs (fermé en position normale ou ouvert je ne sais pas…)
      2- lorsque je regarde les valeurs de la photor avec arduino les valeurs sont toujours autour de 950 qu’il y ait de la lumière ou non

    15. MP49250 dit :

      Merci « Portepoulailler « pour ton blog, c’est super car même en étant novice je suis pas trop perdu, j’aurais voulus savoir si il aurait été possible d’ajouter à ton système une télécommande pour fermée à distance la porte.
      Merci par avance.

    16. ydur182be dit :

      Salut Manu,
      je crois que tu as un problème avec ton câblage avec ta photorésistance suit le Schema https://drive.google.com/file/d/1ODS4WtpFs1rBYy9Wm454ebtdqvLcrFOn/view

      bonne journée ;)

    17. Pat30170 dit :

      Salut à tous!
      J’ai trouvé un programme qui fonctionne parfaitement avec les boutons d’ouverture et fermeture manuel.
      https://www.electrotoile.eu/fabrication-diy-porte-poulailler-automatique-arduino.php
      Il fonctionne sur mon Arduino nano.
      Il parait compliqué au premier abord mais est bien structuré (pas assez commenté à mon gout).
      Pat

      • Pat30170 dit :

        Précision : le programme ci dessus commande un moteur pas à pas mais très facilement modifiable pour un moteur simple comme dans le programme proposé ici.

    18. julien dit :

      bonjour tout d’abord merci pour ton programme . Moi j’aimerai bien rajouter un potentiometre pour lea vitesse de mon moteur il tourne trop vite.Pourrais tu m’expliquer comment faire . merci

    19. riton002 dit :

      Bonjour a tous ,

      super post bravo !

      alors un ami ma donné ce lien et une pochette pleins de merveilles et ma dit  » trop compliqué pour moi  »
      j’ai bien sur relevé le défi !!!
      mais voila que, ce n’ai pas si simple:
      j’ai récupéré le schéma de ydur182be :

      tous vas bien. il est super clair, bravo encore une fois

      voici les questions:

      -pour le code,juste besoin de faire un copier/coller ?

      -la cellule que j’ai a 4 bornes : A0 D0 GND et VCC (MH-SENSOR-SERIE) je connecte les quelles?

      -sur le L298N faut-il retirer les cavalier en ENA ?

      en attente de réponces pour continuer l’aventure .
      merci

      https://create.arduino.cc/projecthub/ingo-lohs/light-sensing-with-the-flying-fish-series-from-mh-0e51ab

    20. winz32 dit :

      Bonjour,
      Novice dans l’arduino, je me lance dans la porte électronique de mon poulailler.
      Je suis en train de me faire un montage en suivant le modèle de Duke. La doc est intéressante mais je ne trouve pas de schéma électronique.
      Ou puis je le trouver ?
      HELP

      Merci

    21. Winz32 dit :

      Bonjour
      Merci pour vos réponses c’est très constructifs……………….
      ou alors ma question n’est d’aucune utilité pour ne pas avoir de réponse
      mdr

    22. doub dit :

      Bonjour,

      ma femme a installé un poulailler…bref je dois automatiser la porte maintenant.
      Je suis très très novice en arduino mais ca m’interesse.

      Mon projet est : porte « guillotine », moteur DC, arduino uno, motorshield l393d, RTCds3231, 2 fin de course haut et bas et 2 boutons pour ouverture manuel.
      J’ai du mal à trouver un programme, et galère à organiser le programme avec l’horloge RTC.

      Si quelqu’un peut m’aider ca serait super sympa.

      Merci

    23. Christophe dit :

      Bonjour,

      merci pour le partage, j’avais tenté une automatisation en passant par un kit crépusculaire à souder mais trop de fausses manœuvres et très instable. voici donc mon tout premier projet à base d’arduino.

      je partage ici mes premières évolutions du code original pour rendre un peu de ce que j’ai pu collecter. pour le moment je ne fais que simuler sur thinkerCAD (avec un écran LCD pour apprendre et tester, le projet final n’aura pas de LCD et le code sera plus réduit)
      j’ai principalement modifié la détection jour/nuit sur deux points

      1) il faut n confirmations de jour/nuit cohérentes et consécutives pour valider la bascule, ceci évite la manœuvre en cas d’obscurcissement ou d’éclairage temporaire
      2) un hystérésis entre aube et coucher du soleil pour encore mieux éviter les cycles inutiles à l’aube ou au coucher

      vous pouvez tester la logique jour/nuit ici en jouant avec la photorésistance https://www.tinkercad.com/things/6ztNv1Fo1qJ-porte-poulailler-automatique-v10


      #include

      // Déclaration des variables et des constantes
      byte inPhotoR = A0; // entrée analogique de la photorésistance
      byte inPorteOuverte = 9; // entrée du fin de course HAUT. Une broche sur la masse l'autre sur l'arduino
      byte inPorteFermee = 8; // entrée du fin de course BAS. Une broche sur la masse l'autre sur l'arduino
      byte cmdOuverture = 6; //monté
      byte cmdFermeture = 7; //descente

      //variable pour stocker la valeur lue après conversion
      int PhotoRLue;
      int seuilLuminositeJourNuit = 800;
      int hysteresis = 100;
      unsigned long tempsManoeuvreMax = 3000; // temps max d'operation du moteur: arret en cas de panne fin de course
      byte nbMesuresAConfirmer = 10; // il faut n mesures coherentes pour demarrer une manoeuvre, evite que les obscurcissements/eclairage temporaires declanchent une manoeuvre
      byte nbOuvertureConfirmees = 0;
      byte nbFermetureConfirmees = 0;

      // Initalisation de la librairie
      const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
      LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

      void setup()
      {
      // démarrage la liaison série entre entrée analogique et ordi
      Serial.begin(9600);
      //Déclaration des contacts fin de course en entrée avec utilisation de la fonction PULLUP interne
      pinMode(inPorteOuverte, INPUT_PULLUP); //Les Pull Up sont des résistances internes à l'arduino.
      //Donc de base lorsque le boutton n'est pas appuyé on lit un état haut (5V = niveau logique 1)
      pinMode(inPorteFermee, INPUT_PULLUP);
      digitalWrite(cmdFermeture, LOW);
      digitalWrite(cmdOuverture, LOW);

      // set up the LCD's number of columns and rows:
      lcd.begin(16, 2);
      // Print a message to the LCD.
      lcd.print("hello, world!");
      }

      void loop()
      {
      if ((etatJourNuit() == "NUIT") & digitalRead(inPorteFermee) == 1)
      { // nuit + ouverte : on devrait fermer la porte
      fermerPorte();
      }

      if ((etatJourNuit() == "JOUR") && digitalRead(inPorteOuverte) == 1)
      { //jour + fermée : on devrait ouvrir la porte
      ouvrirPorte();
      }
      delay(1000);
      }

      String etatJourNuit()
      {
      // implemente une double protection
      // Une mesure JOUR/NUIT doit etre constante n fois pour eter validée
      // un hysteresis decalle les seuils aubes et coucher du soleil
      String jourNuit = "BASCULE";
      PhotoRLue = analogRead(inPhotoR);
      Serial.print("PhotoRLue = ");
      Serial.println(PhotoRLue);
      if (PhotoRLue < seuilLuminositeJourNuit) // Nuit
      {
      if (nbFermetureConfirmees (seuilLuminositeJourNuit + hysteresis)) // jour (avec hysteresis)
      {
      if (nbOuvertureConfirmees = nbMesuresAConfirmer)
      {
      jourNuit = "NUIT";
      }
      else if (nbOuvertureConfirmees >= nbMesuresAConfirmer)
      {
      jourNuit = "JOUR";
      }
      else
      {
      jourNuit = "BASCULE";
      }
      lcd.setCursor(0, 0);
      lcd.print("Etat : ");
      lcd.print(jourNuit);
      lcd.print(" ");
      return jourNuit;
      }

      void ouvrirPorte()
      {
      digitalWrite(cmdFermeture, LOW);
      unsigned long tempsDemarrage = millis();
      while (digitalRead(inPorteOuverte) == 1 and (millis() - tempsDemarrage) < tempsManoeuvreMax)
      { //Tant que la porte n'est pas ouverte, le moteur tourne
      digitalWrite(cmdOuverture, HIGH);
      }
      digitalWrite(cmdOuverture, LOW);
      }

      void fermerPorte()
      {
      digitalWrite(cmdOuverture, LOW);
      unsigned long tempsDemarrage = millis();
      while (digitalRead(inPorteFermee) == 1 and (millis() - tempsDemarrage) < tempsManoeuvreMax)
      { //Tant que la porte n'est pas fermée, le moteur tourne
      digitalWrite(cmdFermeture, HIGH);
      }
      digitalWrite(cmdFermeture, LOW);
      }

    24. Jean Bordron dit :

      Bonjour
      Je suis intéressé par ce projet.
      je cherche une carte Arduino v 3.1
      Mais je ne trouve que la version v 3.
      Ou puis je la trouver sur internet
      Merci
      Cordialement

    25. Jean Bordron dit :

      Bonjour
      Pouvez vous me donner les références des pièces à commander.
      Avec les sites internet.
      Merci
      Cordialement

    26. Richard dit :

      Bonjour , je ne suis pas spécialiste, mais j’ai deja fait de l’electronique….
      j’ai réalisé le montage avec un arduino Nano 3.0 contrôleur CH340 pilote USB 16Mhz ATMEGA328P/168P de chez ali express.
      le programme a bien été téléversé , mais ca ne tourne pas. la led verte est allumée et rien ne se passe.
      si je connecte le gnd au fin de course et que j’appuie dessus, tout se met en arrêt (court circuit on dirais) car il y a du 5 volt constant en sortie D6 et D7 de l’arduino.
      je ne vois pas quoi faire…
      pouvez-vous m’aider?

    27. Emmanuel dit :

      bonjour

      j’ai réalisé le montage complet, mais bute sur la programmation de l’Arduino.
      ( un message d’erreur sur PhotoRLue … mais je ne connais pas la programmation de ces bidules!

      une personne un peu calée ? :-)

    1 2 3

    Laisser un commentaire

     

    CDI de l'Institution S... |
    Raisingmountain |
    L'univers de Jenny |
    Unblog.fr | Créer un blog | Annuaire | Signaler un abus | Human
    | Girlinhospital
    | Excellent Soccer Assistance...