Go Down

Topic: Chatiere automatisée ! (Read 1 time) previous topic - next topic

Hache76

Bonjour,

Je me doute qu'a la vu du titre vous devez vous dire : " encore un !".

C'est certainement qu'on est plusieurs amateur d'Arduino et de chats :)

Pour remettre les choses dans leurs contextes je vous dis d'où me vient cette idée.

J'ai eu un chat l'année dernière et évidement depuis qu'il sort je passe mon temps a faire le portier, ce genre de petit problème m'a poussé a regarder les chatières électroniques grand public.
Ces modèles a battants coutent environ une centaine d'euros, elles fonctionnent avec la puce implanter dans l'épaule du chat mais lorsque l'on regarde les commentaires, beaucoup de gens se plaignent que leurs chats sont capable de lever le battant avec leurs griffes et du coup de sortir lors de créneaux interdits.


Je me suis donc fait un cahier des charges :
Je vais me fabriquer une chatière "impiratable" par le chat qui pourra trier les sorties en fonction de l'heure de la journée et qui autorisera uniquement mon chat a entrer en permanence pour un budget maxi de 200€. Concernant l'encombrement j'ai pas vraiment de contraintes puisque aucune porte ne peut recevoir cette chatière donc elle sera posée sur un mur dans la buanderie. L'ensemble fonctionnera sur le 220V pour ne pas être embêter avec une batterie.



Niveau matériel j'ai commandé :

- 1 arduino Uno avec un shield sensor pour gerer tout ca
- 1 horloge RTC
- 1 vérin 12 volt
- 1 alime 220v vers 12volt
- 1 ecran lcd i2c
- des relais 5 volt
- 1 capteur de présence (pour l'intérieur)

voici quelques photos de la construction :





La trappe avec le systeme anti pincement.







aujourd'hui je suis arrivé a ça :








l'ensemble fonctionne bien (cela mériterait d'être optimisé), mais je ne l'ai pas encore installé car impossible de trouver un detecteur RFID à 139.5KHz pour lire l'implant du chat... c'est un sujet beaucoup discuter sur internet et je n'ai pas trouver de solution.

Tellement désespérer que j'ai même commandé un badgeur RFID 125KHz avec des tags mais la distance de détection est extrêmement courte ( maxi 3cm), Sachant que la trappe fait 18 cm par 18 cm, le tunnel qui va traverser le mur fera au minimum 15 cm par 15cm je cherche une technologie de capteur capable de détecter mon chat pour que la chatière s'ouvre lorsqu'il rentre dans le tunnel...

Quelqu'un saurait m'orienter soit vers un capteur RFID 139.5 KHz compatible arduino (je n'ai trouvé nul part) ou soit vers un système RFID "classique" avec une distance de fonctionnement d'au moins 15 centimètres ?

Merci d'avance !








Hache76

Je mets le code dans un second message car sinon cela ne passé pas dans un seul post :

Code: [Select]



#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include "RTClib.h"

RTC_DS1307 RTC; //Classe RTC_DS1307



//entrées

int BPdroit = 2;
int BPgauche = 3;
int Securite = 4;
int Detection = 8;// detection de presence pour sortie
int Blocage = 9; // blocage de la sortie par l'utilisateur


//sorties
int Buzzer = 5;
int Relais1 = 6;
int Relais2 = 7;
int Relais12v = 10;

 
//variables globale

//heure de debut de sortie autorisée
int H1 = 8;
int M1 = 0;
//heure de fin de sortie autorisée
int H2 = 23;
int M2 = 0;
//heure de derniere manoeuvre
int HD = 12;
int MD = 0;

int Autorisation = 0; // autorisation de sortie ou pas !

int Tempo = 20000;


LiquidCrystal_I2C lcd(0x3F,16,2);  
    

void setup() {

  //Serial.begin(57600); //Démarrage de la communication
  Wire.begin(); //Démarrage de la librairie wire.h  

  
//LiquidCrystal_I2C lcd(0x3F,16,2);  


  lcd.init();                      
  lcd.backlight(); // allume le LCD  
  
  
RTC.begin();  



DateTime now = RTC.now();


  Serial.print(now.hour(), DEC);
  Serial.print(':');
  Serial.print(now.minute(), DEC);
  Serial.print(':');
  Serial.print(now.second(), DEC);






//declaration des entrées

pinMode(BPdroit, INPUT);           // declare une entrée de maniere classique dans le Setup
digitalWrite(BPdroit, HIGH);       // Active le pull-up (resistance interne de l'arduino) quand le contact est ouvert l'entrée voit un 1 (logique negative), le contact doit etre branché à la masse et non au 5V !!!

pinMode(BPgauche, INPUT);           // declare une entrée de maniere classique dans le Setup
digitalWrite(BPgauche, HIGH);       // Active le pull-up (resistance interne de l'arduino) quand le contact est ouvert l'entrée voit un 1 (logique negative), le contact doit etre branché à la masse et non au 5V !!!

pinMode(Blocage, INPUT);           // declare une entrée de maniere classique dans le Setup
digitalWrite(Blocage, HIGH);       // Active le pull-up (resistance interne de l'arduino) quand le contact est ouvert l'entrée voit un 1 (logique negative), le contact doit etre branché à la masse et non au 5V !!!

pinMode(Detection, INPUT);           // declare une entrée de maniere classique dans le Setup
digitalWrite(Detection, HIGH);       // Active le pull-up (resistance interne de l'arduino) quand le contact est ouvert l'entrée voit un 1 (logique negative), le contact doit etre branché à la masse et non au 5V !!!

pinMode(Securite, INPUT);           // declare une entrée de maniere classique dans le Setup
digitalWrite(Securite, HIGH);       // Active le pull-up (resistance interne de l'arduino) quand le contact est ouvert l'entrée voit un 1 (logique negative), le contact doit etre branché à la masse et non au 5V !!!



//declaration des sorties

pinMode(Buzzer, OUTPUT);
pinMode(Relais1, OUTPUT);
pinMode(Relais2, OUTPUT);
pinMode(Relais12v, OUTPUT);

      
      digitalWrite(Relais1, HIGH);
      digitalWrite(Relais2, HIGH);
      digitalWrite(Relais12v, LOW);


lcd.clear();
lcd.setCursor(0, 0);// Colone 1 Ligne 0
lcd.print(" Chatiere") ;
lcd.setCursor(0, 1);// Colone 1 Ligne 1
lcd.print(" Automatique") ;
delay(2000); // pause
  






lcd.clear();



int Minute = now.minute();
int Heure = now.hour();


int bpdroit;
int bpgauche;




}// Fin du SETUP
 
 

 
 
void loop() {
  

DateTime now = RTC.now();

  
//LiquidCrystal_I2C lcd(0x3F,16,2);  
//lcd.init();


                      

  

int Minute = now.minute();
int Heure = now.hour();
int Seconde = now.second();
int bpdroit = digitalRead(BPdroit);
int bpgauche = digitalRead(BPgauche);  
int detection = digitalRead(Detection);
int blocage = digitalRead(Blocage);
int securite = digitalRead(Securite);

if ( ((Heure > H1) && (Heure < H2)) ||  ((Heure == H1) && (Minute >= M1) ) || ((Heure == H2) && (Minute <= M2)) )
{

   lcd.setCursor(0, 0);// Colone 1 Ligne 0
   lcd.print(F("Sortie Autorisee")) ;
   lcd.setCursor(0, 1);
   lcd.print(F("Der.Mvt "));
   if ( HD < 10)// Affiche d'un 0 si les heures sont plus petites que 10
   lcd.print("0") ;
   lcd.print(HD);
   lcd.print(F(":"));
   if ( MD < 10)// Affiche d'un 0 si les heures sont plus petites que 10
   lcd.print("0") ;
   lcd.print(MD);
  
   Autorisation = 1;
   lcd.backlight();

  
}// Fin du if d'autorisation de sortie
else{
  
   lcd.setCursor(0, 0);// Colone 1 Ligne 0
   lcd.print(F("Sortie interdite")) ;
   lcd.setCursor(0, 1);
   lcd.print(F("Der.Mvt "));
   if ( HD < 10)// Affiche d'un 0 si les heures sont plus petites que 10
   lcd.print("0") ;
   lcd.print(HD);
   lcd.print(F(":"));
   if ( MD < 10)// Affiche d'un 0 si les heures sont plus petites que 10
   lcd.print("0") ;
   lcd.print(MD);
  
   Autorisation = 0;
   lcd.noBacklight();

  
}



// cas du blocage par l'inter
if ( blocage == 1)
{
  lcd.clear();
  do{
   lcd.setCursor(0, 0);// Colone 1 Ligne 0
   lcd.print(F("Sortie interdite")) ;
   lcd.setCursor(0, 1);// Colone 1 Ligne 0
   lcd.print(F("Par utilisateur")) ;
   blocage = digitalRead(Blocage);
   delay(1000);
  }while( blocage == 1);

  lcd.clear();
   lcd.setCursor(0, 0);// Colone 1 Ligne 0
   lcd.print(F("Sortie debloquee")) ;
   lcd.setCursor(0, 1);// Colone 1 Ligne 0
   lcd.print(F("Par utilisateur")) ;
   delay(2000);
  
  
}


// Cas d'une detection de presence en sortie
if ( (detection == 1) && (Autorisation == 1) && (securite == 0))
{

  // attente de 150 ms pour etre sur qu'il ne s'agit pas d'une detection intempestive
  delay(150);
  detection = digitalRead(Detection);
 
  if (detection == 1)
{
   lcd.clear();
   lcd.setCursor(0, 0);// Colone 1 Ligne 0
   lcd.print(F("Ouverture en ")) ;
   lcd.setCursor(0, 1);// Colone 1 Ligne 0
   lcd.print(F("cours")) ;
  
  HD = Heure;
  MD = Minute;
  Ouverture();
}else{

   lcd.clear();
   lcd.setCursor(0, 0);// Colone 1 Ligne 0
   lcd.print(F("Detection trop")) ;
   lcd.setCursor(0, 1);// Colone 1 Ligne 0
   lcd.print(F("courte !")) ;
   delay(2000);
   lcd.clear();
  
  
}

  
}



// si appui sur le bouton gauche
if( bpgauche == 0)
{
HD = Heure;
MD = Minute;
   lcd.clear();
   lcd.setCursor(0, 0);// Colone 1 Ligne 0
   lcd.print(F("Ouverture en ")) ;
   lcd.setCursor(0, 1);// Colone 1 Ligne 0
   lcd.print(F("cours")) ;
   delay(1000);
Ouverture();
}


// si appui sur le bouton droit
if( bpdroit == 0)
Horaire();


}// FIN DU PROGRAMME


steph-ero

bonjour,
Ce projet m'intéresse mais le photo n'apparaissent  pas ?
Avez vous un schéma d'implantation des composants ?

Cordialement

pomme-poire

ouais chez moi  non plus, les photos son blanches
CDTE

Artouste

Bonjour,

Je me doute qu'a la vu du titre vous devez vous dire : " encore un !".

C'est certainement qu'on est plusieurs amateur d'Arduino et de chats :)
...
Tes photos n'apparaissent pas 8)

biggil

#5
Feb 21, 2019, 04:00 pm Last Edit: Feb 21, 2019, 04:01 pm by biggil
Il y un risque que tu n'as pas prévu.
J'avais une chatière "libre", c-à-d sans aucun mécanisme de reconnaissance des chats, juste un battant que les chats poussent pour entrer/sortir.
Du coup j'avais des chats étrangers qui rentraient chez moi, pour bouffer les croquettes des miens, et également pour pisser un peu partout :-((((((

J'ai fini par acheter une chatière électronique, j'ai fait mettre une puce à mes chats (les + vieux étaient juste tatoués), et là surprise, la plupart des chats ont refusé la chatière !
Quand un chat s'approche et est reconnu, la chatière produit un "clac" (électro-aimant de son verrou).
Du coup le chat a peur et il ne passe plus la chatière.

J'ai du me transformer en portier... Après quelques mois j'ai remis une chatière simple.
Donc pour ça comme pour tout le reste ... ce sont les chats qui décident :-)

Hache76

salut, c'est en effet un vieux projet et les photos ont du disparaitre... ceci dit c'est un projet qui n'a jamais vu le jour mais qui est ressortis de ma cave il y a 15 jours (comme par hasard !).
En effet, j'ai trouvé sur aliexpress un capteur 134.2Kh qui correspond à la fréquence des puces des chats/chiens en France :
https://fr.aliexpress.com/item/134-2-KHz-ISO11784-ISO11785-Int-gr-tiquette-D-oreille-Lecteur-Module-5-V-TTL-Ardunio/32861558032.html?spm=a2g0s.9042311.0.0.13fa6c37T0Qass

Mais avec le câblage du fournisseur j'ai jamais réussi à lire la puce de mon chat (et c'est pas faute de l'avoir scanner un paquet de fois :) )
Si quelqu'un à une solution à mon  problème je suis preneur sinon la chatiere retournera dans le placard des projets ratés :(

Sinon j'ai retrouvé quelques photos ! :









Artouste

salut, c'est en effet un vieux projet et les photos ont du disparaitre...

Mais avec le câblage du fournisseur j'ai jamais réussi à lire la puce de mon chat (et c'est pas faute de l'avoir scanner un paquet de fois :) )
Si quelqu'un à une solution à mon  problème je suis preneur sinon la chatiere retournera dans le placard des projets ratés :(
Bonsoir
Une bonne demarche/approche pragmatique necessiterait  au moins des essais/ tentatives avec  au moins 2 tag distincts  et verifiés avec un autre "lecteur"

Hache76

En effet, j'ai commandé un tag 134.2 kHz la semaine dernière ! Car c'est pas évident de courir après le chat pour les tests

Hache76

#9
Feb 23, 2019, 07:28 pm Last Edit: Feb 23, 2019, 07:34 pm by Hache76
J'ai reçu aujourd'hui mon tag RFID 134.2 kHz (de pigeon en espérant que ce ne soit pas moi !)

Le module que j'ai acheté est celui ci https://fr.aliexpress.com/item/134-2-KHz-ISO11784-ISO11785-Int-gr-tiquette-D-oreille-Lecteur-Module-5-V-TTL-Ardunio/32861558032.html

Le schéma de cablage est dans le lien de vente...

J'utilise ce code :

Code: [Select]

#include <SoftwareSerial.h>
SoftwareSerial RFID(2, 3); // RX and TX
 
int i;
 
void setup()
{
  RFID.begin(9600);    // start serial to RFID reader
  Serial.begin(9600);  // start serial to PC

  Serial.print("RFID");
  Serial.print("\n");
}


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void loop()
{
  if (RFID.available() > 0)
  {
    Serial.print("Detection = ");
     i = RFID.read();
     Serial.print(i, DEC);
     Serial.print("\n");
     //delay(1000);
  }
}
[\code]

J'ai essayé avec une alim externe aussi pour le module RFID meme si il consomme 30 mA d'après le vendeur. Je ne détecte rien du tout...

Une idée pour m'aider ?

lesept

En effet, j'ai trouvé sur aliexpress un capteur 134.2Kh qui correspond à la fréquence des puces des chats/chiens en France
Mes chats ont aussi des puces mais je ne savais pas que ces petits insectes communiquaient sans fil ! On n'arrête pas le progrès !
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

Gazelle911

#11
Apr 15, 2019, 01:20 pm Last Edit: Apr 16, 2019, 01:25 pm by Gazelle911
Je trouve votre blog très technique et intéressant.
Je m'intéresse beaucoup à l'article sur les chatière fonctionnant avec la puce implantée dans les chiens.
 je possède une chatière à guillotine de marque Power pet  fonctionnant avec un boîtier fixé sur le collier comprenant un tag et des piles.
J'aimerais pouvoir le faire fonctionner avec les puces  implantée dans mes chiens.
J'ai consulté le lien mes je ne n'ai aucune idée de ce qu'il faut acheter et surtout comment le programmer.
Merci d'avance pour une aide

Hache76

Je trouve votre blog très technique et intéressant.
Je m'intéresse beaucoup à l'article sur les chatière fonctionnant avec la puce implantée dans les chiens.
 je possède une chatière à guillotine de marque Power pet  fonctionnant avec un boîtier fixé sur le collier comprenant un tag et des piles.
J'aimerais pouvoir le faire fonctionner avec les puces  implantée dans mes chiens.
J'ai consulté le lien mes je ne n'ai aucune idée de ce qu'il faut acheter et surtout comment le programmer.
Merci d'avance pour une aide
je n'arrive pas communiquer avec le module 134.2 KHz  donc le projet est reparti au oubliettes...

aladec

Bonjour,
Jadis, j'avais un chat équipé d'un collier avec un aimant. La chatière était pourvue d'un électroaimant et un cliquet de blocage de la porte descendait sous l'effet de forces magnétiques lorsque le chat se présentait près de l'entrée. Inconvénients en cas de perte de collier (rare) ou présence d'un autre chat avec un collier de même type (rare). Ce système m'a donné entière satisfaction.
On pourrait imaginer le même type de collier avec un contact magnétique au niveau de la chatière (genre système d'alarme) couplé à un Arduino avec un relais commandant l'ouverture/fermeture.
Arduino Yun et Arduino Uno R3

Hache76

Bonjour,
Jadis, j'avais un chat équipé d'un collier avec un aimant. La chatière était pourvue d'un électroaimant et un cliquet de blocage de la porte descendait sous l'effet de forces magnétiques lorsque le chat se présentait près de l'entrée. Inconvénients en cas de perte de collier (rare) ou présence d'un autre chat avec un collier de même type (rare). Ce système m'a donné entière satisfaction.
On pourrait imaginer le même type de collier avec un contact magnétique au niveau de la chatière (genre système d'alarme) couplé à un Arduino avec un relais commandant l'ouverture/fermeture.
J'aime vraiment ton idée, j'ai commandé quelques pieces pour faire ca... je vais mettre ma femme a contribution pour faire un collier avec aimant :)

Merci de l'idée je n'y avait pas pensé !

Go Up