Porte de poulailler automatique

Bonjour Je me suis procuré un poulailler de ville et je désire me fabriquer une porte automatique. Je me suis procuré une carte Arduino Uno r3, une shield contrôleur de moteurs Ardumoto, une photorésistance (et une carte Light Sensor Photoresistor LM393), un moteur courant continu avec réduction de 5V 1500 Ma et plusieurs autres bricoles. Je cherche à avoir un système qui, avec commutateurs de fin de course, ouvrira la porte environ 30 minutes après le lever du jour et la fermera environ 30 minutes après le soir venu et un commutateur pour activation par l’extérieur. J’ai fait avec succès le ‘’test code’’ proposé sur le site de Sparkfun avec la carte Ardumoto installer sur l’Arduino Uno, voilà où j’en suis. Je n’ai aucune idée où connecter la photorésistance, les commutateurs et comment fabriquer le code binaire à installer sur la carte Arduino qui ferais mon bonheur. Je commence à comprendre un peu le système Arduino mais le printemps et les poules arrivent bientôt, je fais donc appel à vos connaissances pour m’aider à mener à bien mon projet. Merci

https://labitat.dk/wiki/Arduino_beginners_workshop ==> CRC07 et CRC09

Merci B@tto de m'avoir lu et répondu, je suis aller sur les liens que tu m'a suggéré c'est bien, je cherche à comprendre le système Arduino depuis le début de l'hiver, (J'étais soudeur avant ma retraite) ça rentre pas vite mais ça rente, je suis tenace et je vais y arriver même si je traduit l'anglais avec Lingoes faute de ne parler que le français. J'espère réussir mon projet avant que mes poules ai de dents. ;)

bonjour, moi je ne partirai pas sur une photorésistance. pourquoi? simplement, que si un jour un orage ou une averse de neige ou du gel arrive, la détection sera totalement faussée. du coup te spoules vont se retrouver dehors pendant un moment, le temps que la cellule retrouve le seuil désiré. de plus, si un lampadaire éclaire pas loin ou même la pleine lune, ta porte va s'ouvrir en pleine nuit.

le mieux et plus simple est d'utiliser une horloge rtc. tu programme l'ouverture à 9h et fermeture à 21h par exemple. ou alors tu couple les deux modules avec une condition si luminosite > seuil et heure 9h, ouverture porte si luminosite > seuil et heure 21h, fermeture porte

infobarquee: bonjour, moi je ne partirai pas sur une photorésistance. pourquoi? simplement, que si un jour un orage ou une averse de neige ou du gel arrive, la détection sera totalement faussée. du coup te spoules vont se retrouver dehors pendant un moment, le temps que la cellule retrouve le seuil désiré. de plus, si un lampadaire éclaire pas loin ou même la pleine lune, ta porte va s'ouvrir en pleine nuit.

le mieux et plus simple est d'utiliser une horloge rtc. tu programme l'ouverture à 9h et fermeture à 21h par exemple. ou alors tu couple les deux modules avec une condition si luminosite > seuil et heure 9h, ouverture porte si luminosite > seuil et heure 21h, fermeture porte

La RTC seule est la meilleure solution pas besoin de rentrer dans des calculs compliqués , determiner une heure d'ouverture et une de fermeture par mois, c'est amplement suffisant pour "des poulettes" :grin: ne pas oublier de prendre en compte "à la louche" le changement d'heure été/hiver"

Re Bonjour Merci de vos réponses, c’est vrai qu’un système avec une photorésistance pourrait apporter des réactions intempestives, à moins qu’il soit possible de programmer un délai avant l’action de 10 minutes pour éviter les fausses alertes. Pour un système avec RTC qui est intéressant et le moins compliqué mais qui se complique lorsque vient le temps de sortir tout l’ensemble du poulailler pour le reprogrammer au nouvel horaire des saisons, à moins de pouvoir le reprogrammer par un shield wifi, par un shield ethernet ou par un shield sd ou la Micro SD serait accessible pour la reprogrammer avec l’ordi dans la maison. Bien sûr que pour le moment je cherche à avoir le système le plus simple vu les connaissances que je possède aujourd’hui, quitte à le rendre plus performant dans l’avenir car j’apprends les possibilités d’Arduino un peu plus chaque jour. Vos suggestions sont très appréciées.

Gozo: ...mais qui se complique lorsque vient le temps de sortir tout l’ensemble du poulailler pour le reprogrammer au nouvel horaire des saisons...

Meme pas :grin: la gestion eté/hiver peut etre embarquée sur l'arduino il y a eu un topic dédié là dessus il n'y a pas tres longtemps

Gozo: Pour un système avec RTC qui est intéressant et le moins compliqué mais qui se complique lorsque vient le temps de sortir tout l’ensemble du poulailler pour le reprogrammer au nouvel horaire des saisons

en général les portes de ce style se mettent dehors, dans un boitier ip66, donc accessible facilement. et puis, reprogrammer 2 fois par an, c'est pas la mère a boire :) tu vas bien sortir tous les jours pour les voir et leur donner a manger. donc tu pourras en profiter pour changer l'heure. pourquoi ne pas monter un petit keypad lcd pour le faire.

sinon, oui via un module wifi c'est faisable avec une synchro sur un server, ca permet en plus d'ouvrir ou fermer a distance la porte si besoin.

infobarquee: ... sinon, oui via un module wifi c'est faisable avec une synchro sur un server, ca permet en plus d'ouvrir ou fermer a distance la porte si besoin.

:grin: et on peut rajouter aussi une camera IP pour regarder si il a des oeufs frais --->[]

Et si une poule n'est pas rentrée à l'heure .. Elle reste dehors ?

B83s: Et si une poule n'est pas rentrée à l'heure .. Elle reste dehors ?

nan ! , avec la solution d'infobarquee, il suffit qu'elle tape le code d'entrée sur le keypad , et alors la porte s'ouvrira :grin:--->[]

Une reconnaissance par empreinte digitale.... :grin:

MDRRRRRRRR pourquoi ne pas prendre un yun simplement. récupération de la date et heure sur un server distant via wifi ;) après il suffit de faire le sketch et quelques minutes. possibilité de mettre une cam pour faire du timelaps pour voir les poules pendant la nuit en vidéo le matin :)

si elle a pas le digicode "son ami", pan un coup de douze ============>[] suis dehors :grin:

Je suis pas spécialement spécialiste en gallinacé mais il me semble les poules et leurs maris s'en foutent pas mal de l'horaire d'été/hiver ;)

Déjà que moi il me casse les bonbons alors je les imagine ...

Justement comme ils se foutent de l'heure d'hiver ou d'été il faut compenser ou travailler en temps universel.

Re Bonjour Merci de vos réponses et de votre humour. ‘’oui via un module wifi c'est faisable avec une synchro sur un server, ca permet en plus d'ouvrir ou fermer a distance la porte si besoin.’’ ‘’pourquoi ne pas prendre un yun simplement.’’ C’est quoi un Yun? (Intéressant mais très avancer pour moi) Dites- moi serait-t ’il plus simple pour démarrer mon projet d’utiliser sur le secteur 115V un timer pour ouvrir et fermer la porte ou deux timer, un pour ouvrir et un pour fermer la porte combiné à l’Arduino? Je suis à me préparer une autre commande de pièces : une autre carte Arduino Uno, et autres bricoles pour étudier et pouvoir faire d’autres tests. Pour voir mon poulailler aller sur http://coop-la-basse-cour.forumactif.com/t14820-voici-leur-poulailler-presque-termine?highlight=leur+poulailler (il y a trois pages à voir)

c'est quoi un yun? un arduino avec une carte réseau rj45 et un module wifi, le tout basé sur openwrt (linux modifié) et la possibilité de faire la même chose qu'un arduino http://boutique.semageek.com/fr/208-arduino-yun.html

tu peux utiliser un timer aussi, mais il faudra bien faire quelque chose pour inverser le sens du moteur si en haut ou en bas ;) avec un nono, tu fais tout ca et bien plus encore. ex : compter le nombre de cocottes qui sont rentrées ou sorties mettre une télécommande IR pour ouvrir/fermer la porte mettre une balance sous le nid pour savoir s'il y a des oeufs :) allumer un spot pour aller voir la nuit, ou si quelque chose s'approche de trop du poulailler etc...

Artouste:
il y a eu un topic dédié là dessus il n’y a pas tres longtemps

Je dirais que c’est celui-ci:

Pour lequel j’avais donné la synchro NTP et la routine DST:

#include <EthernetUdp.h>
// Configuration pour connection à un serveur NTP pour mise à jour de l'heure
unsigned int localPort = 8888;             // local port to listen for UDP packets
IPAddress timeServer(95, 130, 9, 77);      // http://Ntp.crashdump.fr se synchronise sur les serveur de strate 1
//IPAddress timeServer(193, 79, 237, 14);
//IPAddress timeServer(193, 52, 137, 193);   //http://www.pool.ntp.org/fr/
byte pb[48];                  // buffer to hold incoming and outgoing packets // NTP time stamp is in the first 48 bytes of the message

//Déclaration Internet
EthernetServer server(80);//déclaration du serveur internet de la carte Arduino.
// A UDP instance to let us send and receive packets over UDP
EthernetUDP Udp;

void ntpUpdate(void)
{
    lcd.setCursor(0,0);
    lcd.print("NTP Time sync...");
    Udp.begin(localPort);
    delay(250);
    // send an NTP packet to a time server
    sendNTPpacket(timeServer);
 
    // wait to see if a reply is available
    delay(1000);
 
    if ( Udp.parsePacket() ) {
          // read the packet into the buffer
       
          Udp.read(pb, 48);
       
          // NTP contains four timestamps with an integer part and a fraction part
          // we only use the integer part here
          unsigned long t1, t2, t3, t4;
          t1 = t2 = t3 = t4 = 0;
          for (int i=0; i< 4; i++)
          {
            t1 = t1 << 8 | pb[16+i];      
            t2 = t2 << 8 | pb[24+i];      
            t3 = t3 << 8 | pb[32+i];      
            t4 = t4 << 8 | pb[40+i];
          }
            
          // part of the fractional part
          // could be 4 bytes but this is more precise than the 1307 RTC
          // which has a precision of ONE second
          // in fact one byte is sufficient for 1307
            float f1,f2,f3,f4;
            f1 = ((long)pb[20] * 256 + pb[21]) / 65536.0;      
            f2 = ((long)pb[28] * 256 + pb[29]) / 65536.0;      
            f3 = ((long)pb[36] * 256 + pb[37]) / 65536.0;      
            f4 = ((long)pb[44] * 256 + pb[45]) / 65536.0;
            //Serial.println(f1);
            //Serial.println(f2);
            //Serial.println(f3);
            //Serial.println(f4);
            const unsigned long seventyYears = 2208988800UL;
            t1 -= seventyYears;
            t2 -= seventyYears;
            t3 -= seventyYears;
            t4 -= seventyYears;
       
            //Serial.println("T1 .. T4 && fractional parts");
            //PrintDateTime(DateTime(t1)); Serial.println(f1,4);
            //PrintDateTime(DateTime(t2)); Serial.println(f2,4);
            //PrintDateTime(DateTime(t3)); Serial.println(f3,4);
            
            //PrintDateTime(DateTime(t4)); Serial.println(f4,4);
            //Serial.println();
            // Adjust timezone and DST... in my case substract 4 hours for Chile Time
            // or work in UTC?
            t4 += adjustDstEurope(t4); // Adjustig Time with DST Europe/France: UTC+1h in winter, UTC+2h in summer
            t4 += 1;                // adjust the delay(1000) lost at begin of loop
            if (f4 > 0.4) t4++;     // adjust fractional part, see above
            clock__rtc.adjust(DateTime(t4)); // update RTC DS 1307 Clock
            lcd.setCursor(0,0);
            lcd.print("NTP sync OK!    ");
            delay(2000);
            lcd.clear();
      }
      else
      {
      lcd.setCursor(0,0);
      lcd.print("NTP sync not OK!");
      delay(2000);
      lcd.clear();
      }
}


int adjustDstEurope(DateTime t)
{
 /*You can use the following equations to calculate when DST starts and ends.
 The divisions are integer divisions, in which remainders are discarded.
 "mod" means the remainder when doing integer division, e.g., 20 mod 7 = 6.
 That is, 20 divided by 7 is 2 and 6/7th (where six is the remainder).
 With: y = year.
        For the United States:
            Begin DST: Sunday April (2+6*y-y/4) mod 7+1
            End DST: Sunday October (31-(y*5/4+1) mod 7)
           Valid for years 1900 to 2006, though DST wasn't adopted until the 1950s-1960s. 2007 and after:
            Begin DST: Sunday March 14 - (1 + y*5/4) mod 7
            End DST: Sunday November 7 - (1 + y*5/4) mod 7;
        European Economic Community:
            Begin DST: Sunday March (31 - (5*y/4 + 4) mod 7) at 1h U.T.
            End DST: Sunday October (31 - (5*y/4 + 1) mod 7) at 1h U.T.
            Since 1996, valid through 2099
(Equations by Wei-Hwa Huang (US), and Robert H. van Gent (EC))
 
 Adjustig Time with DST Europe/France/Paris: UTC+1h in winter, UTC+2h in summer
 
 */
 
  // last sunday of march
  int beginDSTDate=  (31 - (5* t.year() /4 + 4) % 7);
  //Serial.println(beginDSTDate);
  int beginDSTMonth=3;
  //last sunday of october
  int endDSTDate= (31 - (5 * t.year() /4 + 1) % 7);
  //Serial.println(endDSTDate);
  int endDSTMonth=10;
  // DST is valid as:
  if (((t.month() > beginDSTMonth) && (t.month() < endDSTMonth))
      || ((t.month() == beginDSTMonth) && (t.day() >= beginDSTDate)) 
      || ((t.month() == endDSTMonth) && (t.day() <= endDSTDate)))
  return 7200;      // DST europe = utc +2 hour (summer time)
  else return 3600; // nonDST europe = utc +1 hour (winter time)
}

T’a jusqu’à samedi pour programmer, sinon il faudra attendre 6 mois pour tester si ça fonctionne :grin: :grin:

Salut à tous Merci de vos commentaires, avec RTC, Arduino Yum, serveur NTP, routine DST, je suis certain que je pourrais avoir un système performant mais vous m’avez perdu bin raide :grin:. Pour le moment je dois faire plus simple, une carte avec un L298N Dual-H Bridge ou une Ardumoto, une Uno, une photorésistance ou une carte Light Sensor Photoresistor LM393 et si c’est possible d’installer dans le code un délai de quelques minutes pour laisser le temps à la photocellule de se réinitialiser pour éviter les fausses alertes. Est-ce possible? Merci, vos suggestions sont très appréciées.

Bonjour Je vous remercie de vos réponses, j’ai bien compris que je dois étudier le système Arduino, pour réussir mon projet et ne pas m’attendre à avoir tout cuit dans le bec. Je me suis procuré: « Tous les cours Arduino en 1 clic ! » (45 PDF) sur le site : http://www.mon-club-elec.fr/ et les recommande à tous les newbies comme moi. J’espère un jour devenir assez bon pour aider un autre membre. Merci encore Gozo