Partage
  • Partager sur Facebook
  • Partager sur Twitter

Chatière Automatisé

    10 avril 2013 à 10:11:20

    Bonjour les zéros !!

    Je suis en terminales S option SI. Du coup j'ai des projet à faire, et j'ai choisit la chatière automatisé. Je doit détecter un chat, grace à un capteur RFID, puis déverrouiller la chatière grâce à un électro-aimant, tout en gérant d'autres conditions (météo, permissions d'entrée/sortie du chat par l'utilisateur). Je suis débutant en arduino (mais je connais le C ^^), et même si j'ai réussi à avancer mon programme, je ne vois pas du tout comment gérer la rfid. J'ai deux lecteurs rfid, 1 à l'interieur et 1 à l'exterieur, et j'ai deux emmetteurs (pour deux chat éventuellement).

    J'ai une arduino Uno, et voici mon capteur rfid:

    http://www.gotronic.fr/art-lecteur-rfid-grove-125-khz-sen11425p-19038.htm

    Merci d'avance pour votre aide ! :)

    • Partager sur Facebook
    • Partager sur Twitter
      10 avril 2013 à 11:30:54

      Le lecteur marche avec une communication série à 9600 bauds.
      Arrives tu à communiquer avec ?
      • Partager sur Facebook
      • Partager sur Twitter

      Retrouvez moi sur mon blog et ma chaine Youtube !

        11 avril 2013 à 15:10:15

        je m'excuse pour mon ignorance mais ça veut dire quoi 9600 bauds ? ^^

        Sinon pour connecter mes capteurs, j'ai besoin d'une base shield à connecter sur l'arduino. Je l'ai commandé mais en attendant, je peux juste faire le programme pour l'arduino, sans avoir branché quoi que ce soit dessus.

        En attendant voici mon programme et des informations complémentaires :

        /*Le but de ce programme est de restreindre les entrées et sorties du chat selon les désirs du propriétaire
        Le propriétaire peut choisir entre 4 choix: le chat entre mais ne sort pas, le chat sort mais n'entre pas, le chat peut entrer et sortir, le chat ne peut ni entrer ni sortir
        Un humidistance permet de capter l'humidité de l'air ainsi que la température exterieure. Si les conditions météo sont défavorables, le chat ne peut pas sortir mais peut entrer, quel que soit le choix de l'utilisateur.
        Deux lecteurs rfid (un à l'interieur et un à l'exterieur), me permettent de capter le chat et de connaitre sa position.
        Un temoin sur la chatière me permet de savoir quand elle est fermée, et de refermé la chatière grâce à un electro-aimant tirant*/
        
        #include "DHT.h" // bibliothèque des fonctions de l'humidistance
        
        #define DHTPIN 2 // pour l'humidistance
        #define DHTTYPE DHT22 // pour l'humidistance
        
        DHT dht(DHTPIN, DHTTYPE); // pour l'humidistance
        
        int humidistance ();
        
        const int rfidDedans = 10;
        const int rfidDehors = 11;
        const int temoin = 13;
        const int electroAimant = 14;
        const int tto = 15; // tout ouvert
        const int smpe = 16; // sortie mais pas entrée
        const int emps = 17; // entrée mais pas sortie
        const int ttf = 18; // tout fermé
        
        int etat = 0;
        int i = 0;
        
        void setup()
        {
          Serial.begin(9600);
          pinMode (rfidDedans, INPUT);
          pinMode (rfidDehors, INPUT);
          pinMode (temoin, INPUT);
          pinMode (electroAimant, OUTPUT);
          pinMode (tto, INPUT); // tout ouvert
          pinMode (smpe, INPUT); // sortie mais pas entrée
          pinMode (emps, INPUT); // entrée mais pas sortie
          pinMode (ttf, INPUT); // tout fermé
          dht.begin();
        }
        
        void loop()
        {
        
         if (digitalRead (rfidDedans)==HIGH || digitalRead (rfidDehors)==HIGH ) // on attend qu'un des capteurs rfid détecte le chat
         {
           
         if (digitalRead (tto) == HIGH) {etat = 1;}
         else if (digitalRead (smpe) == HIGH) {etat = 2;}
         else if (digitalRead (emps) == HIGH) {etat = 3;}
         else if (digitalRead (ttf) == HIGH) {etat = 4;} // selon le choix de l'utilisateur, on affecte un certain nombre à "etat"
         
         
         /*****LE CHAT EST DEDANS*****/ 
         if (rfidDedans == HIGH) //si le chat est dedans
         {
           if (humidistance()== 0) // et qu'il ne pleut pas
           {
             if (etat == 1 || etat == 2) // et que l'utilisateur l'a permit
             {
               digitalWrite (electroAimant, LOW); //on arrete de faire passer le courant vers l'electro-aimant (dévérouillage)
               do 
                 {
                   delay (5000);
                   i = 1;
                   if (digitalRead (rfidDedans)==HIGH || digitalRead (rfidDehors)==HIGH) { i = 0;} // si le chat est encore là, alors i=0
                   else if (digitalRead (temoin)==LOW) {i = 0;} // si le témoin n'est pas allumé, alors i=0
                   // sinon i reste à 1
                 } while (i);
               
               digitalWrite (electroAimant, HIGH); //on refait passer le courant dans l'électro-aimant (vérouillage)
             }
           }
         }
        
        
        /*****LE CHAT EST DEHORS****/ 
         else 
         {
           
           if (humidistance() == 1) // si il pleut
           {
             digitalWrite (electroAimant, LOW); //on arrete de faire passer le courant vers l'electro-aimant (dévérouillage)
             do 
               {
                 delay (5000);
                 if (digitalRead (rfidDedans)==HIGH || digitalRead (rfidDehors)==HIGH) { i = 0;}
                 if (digitalRead (temoin)==LOW) {i = 0;}
               } while (i);
             digitalWrite (electroAimant, HIGH); //on refait passer le courant dans l'électro-aimant (vérouillage)
           }
           
           else if (etat == 1 || etat == 3) //si il pleut pas et que l'utilisateur le permet
           { 
             digitalWrite (electroAimant, LOW); //on arrete de faire passer le courant vers l'electro-aimant (dévérouillage)
             do 
               {
                 delay (5000);
                 if (digitalRead (rfidDedans)==HIGH || digitalRead (rfidDehors)==HIGH) { i = 0;}
                 if (digitalRead (temoin)==LOW) {i = 0;}
               } while (i);
             digitalWrite (electroAimant, HIGH); //on refait passer le courant dans l'électro-aimant (vérouillage)
           }
         }
           
        }
        
        }
        
        
        int humidistance () // cette fonction humidistance renvoie 1 si les condition météo sont défavorables et 0 si elles sont favorables
        {
          float h = dht.readHumidity(); // variable humidité
          float t = dht.readTemperature(); // variable température
          
          if (isnan(t) || isnan(h)) //le capteur ne renvoie rien donc celà signifie que la température est inferieure à 0°C, car le constructeur précise que l'humidisance ne marche plus en dessous de cette température. 
            {
              return 1; // les conditions sont défavorables
            }
          else if (h >= 93) // le pourcentage d'humidité dans l'air est de 93%, il pleut
            {
              return 1; // conditions défavorables
            }
          else 
            {
              return 0; // conditions favorable
            }
        }
        
        
        
        • Partager sur Facebook
        • Partager sur Twitter
          17 avril 2013 à 15:18:59

          ça y'est !! J'ai reçu ma base shield (ENFIN !! ^^) . J'ai connecté un de mes deux lecteurs RFID, et il fait une super petite lumière rouge encourageante, youpii :)

          Par contre je sais pas comment communiquer avec la rfid... J'ai juste trouvé un programme dans la fiche technique http://www.seeedstudio.com/wiki/Grove_-_125KHz_RFID_Reader

          Mais je ne comprend pas ce qu'il est censé me faire... :(

          Pleeeasssee heeelp  !! :)

          • Partager sur Facebook
          • Partager sur Twitter

          Chatière Automatisé

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown