Distributeur de croquette pour chat avec puce RFID 125 KHz

Portrait de Anonyme

Pour réaliser un distributeur de croquette pour des chats reconnus par (ICI) une des deux puces RFID 125 Khz il suffit de réaliser un montage avec  un réservoir qui se déverse dans un récipient fermé par une trappe motorisée avec moteur DC et pont en H.

Le lecteur est un RMD6300  dont les TX et RX sont raccordés au pins 3 et 2 d'un module Arduino UNO les autre connexions sont précisée dans le code.

int MoteurEna = 6 ; // Pin N°6
int MoteurFerme = 7; // Pin N°7
int MoteurOuvre = 5 ; // Ect...
int TrappeOuverte = 11;
int TrappeFermee = 12;
bool Autorise;
int tagChat1[14] = {2, 54, 68, 48, 48, 57, 48, 51, 48, 49, 54, 68, 66, 3}; // "blue" tag for cat N°1 Changer ces valeurs par les valeurs de vos puces RFDI
int tagChat2[14] = {2, 48, 50, 48, 48, 56, 50, 65, 67, 48, 56, 50, 52, 3}; // "red" tag for cat N°2 Changer ces valeurs par les valeurs de vos puces RFDI
unsigned long Tempo , DelaisAutorise = 5; //Délais en secondes que tu peux modifier selon les essais
#include <SoftwareSerial.h>
SoftwareSerial rfid(3, 2);

void setup() {
  Serial.begin(115200);
  rfid.begin(9600);
  pinMode(MoteurEna, OUTPUT);
  pinMode(MoteurFerme, OUTPUT);
  pinMode(MoteurOuvre, OUTPUT);
  pinMode(PresenceChat, INPUT_PULLUP);// Brancher le Fin de course entre la masse (GND) et la pin 13
  pinMode(TrappeFermee, INPUT_PULLUP);// Brancher le Fin de course entre la masse (GND) et la pin 12
  pinMode(TrappeOuverte, INPUT_PULLUP);// Brancher le Fin de course entre la masse (GND) et la pin 11
  FermeTrappe();
}

void loop() {
  ChatAutorise();
  if (Autorise) {
    Autorise = false;
    Tempo = millis() + (DelaisAutorise * 1000);
    OuvreTrappe();
    while (Tempo > millis()) {
      ChatAutorise();
      if (Autorise) {
        Tempo = millis() + (DelaisAutorise * 1000);
      }
      Autorise = false;
    }
    FermeTrappe();
  }
}

void FermeTrappe() {
  Serial.println("Fermeture Trappe");
  digitalWrite(MoteurEna, HIGH);
  while (digitalRead(TrappeFermee)) {
    digitalWrite(MoteurFerme, HIGH);
  }
  Serial.println("Trappe Fermee");
  digitalWrite(MoteurFerme, LOW);
  digitalWrite(MoteurEna, LOW);
  Tempo = 0;
}

void OuvreTrappe() {
  Serial.println("Ouverture Trappe");
  digitalWrite(MoteurEna, HIGH);
  while (digitalRead(TrappeOuverte)) {
    digitalWrite(MoteurOuvre, HIGH);
  }
  Serial.println("Trappe Ouverte");
  digitalWrite(MoteurOuvre, LOW);
  digitalWrite(MoteurEna, LOW);
  Tempo = millis() + DelaisAutorise * 1000;
}

void ChatAutorise() {
  int TagLU[14] = {0, 0};
  if (rfid.available() > 0) {
    for (int n = 0 ; n < 14 ; n++) {
      TagLU[n] = rfid.read();
      Serial.print(TagLU[n]);
      Serial.print(",");
    }
    Serial.println();
    rfid.flush();
    Autorise = true;
    for (int N = 0; N < 14; N++) {
      if ((tagChat1[N] != TagLU[N]) && (tagChat2[N] != TagLU[N])) {
        Autorise = false;
      }
    }
    if (Autorise)
    Serial.println("Chat Autorise");
    else
    Serial.println("Chat Inconnu");
  }
}

Portrait de Jetfuzz

Hello

Il manque l'alim sur le module RFID.

Cordialement

Jetfuzz

Portrait de Anonyme

Exacte merci Jetfuzz ! C'est corrigé