Система доступа rfid-rc522

Тема в разделе "Arduino & Shields", создана пользователем thesatellite, 17 апр 2017.

  1. thesatellite

    thesatellite Нерд

    Доброго времени суток народ. Прошу у вас помощи. Имеется RFID-RC522 и скетч

    #include <RFID.h>
    #include <SPI.h>

    #define SS_PIN 10
    #define RST_PIN 9
    #define BLUE_LED 6
    #define YELLOW_LED 7
    #define but 2

    RFID rfid(SS_PIN, RST_PIN);

    unsigned char reading_card[5]; //for reading card
    unsigned char master[5] = {219, 188, 39, 15, 79}; // allowed card
    unsigned char master2[5] = {72, 125, 151, 16, 178}; // allowed card
    unsigned char master3[5] = {11, 41, 39, 15, 10}; // allowed card
    unsigned char master4[5] = {113, 148, 19, 74, 188}; // allowed card
    unsigned char master5[5] = {226, 117, 65, 125, 171}; // allowed card
    unsigned char master6[5] = {213, 190, 211, 101, 221 }; // allowed card
    unsigned char master7[5] = {1, 83, 230, 41, 157}; // allowed card
    unsigned char master8[5] = {1, 83, 230, 41, 157}; // allowed card
    unsigned char master9[5] = {1, 83, 230, 41, 157}; // allowed card
    unsigned char master10[5] = {1, 83, 230, 41, 157}; // allowed card
    unsigned char i;

    void indication(int led);
    void allow();
    void denied();


    void setup()
    {
    Serial.begin(9600);
    SPI.begin();
    rfid.init();
    pinMode(BLUE_LED, OUTPUT);
    pinMode(YELLOW_LED, OUTPUT);
    }

    void loop()
    {
    if (rfid.isCard())
    {
    if (rfid.readCardSerial())
    {
    /* Reading card */
    Serial.println(" ");
    Serial.println("Card found");
    Serial.println("Cardnumber:");
    for (i = 0; i < 5; i++)
    {
    Serial.print(rfid.serNum);
    Serial.print(" ");
    reading_card = rfid.serNum;
    }
    Serial.println();
    //verification
    for (i = 0; i < 5; i++)
    {
    if (reading_card != master
    & reading_card != master2
    & reading_card != master3
    & reading_card != master4
    & reading_card != master5
    & reading_card != master6
    & reading_card != master7
    & reading_card != master8
    & reading_card != master9[i]
    & reading_card[i] != master10[i]
    )

    {
    break;
    }
    }
    if (i == 5)
    {
    allow();
    }
    else
    {
    denied();
    }
    }
    }
    rfid.halt();
    }

    void allow()
    {
    Serial.println("Access accept!");
    indication(BLUE_LED);
    }
    void denied()
    {
    Serial.println("Access denied!");
    indication(YELLOW_LED);
    }
    void indication(int led)
    {
    digitalWrite(led, HIGH);
    delay(1000);
    digitalWrite(led, LOW);
    }

    Как добавить кнопку для открывания изнутри (кнопка на замыкание) Желательно на порт 6 чтобы выпадало тоже, так как на нем висит релюшка, а на вход 2 порт к примеру сигнал. Прошу помощи у гуру. Карты я добавил на 10 пользователей.[/i][/i][/i]
     
  2. Tomasina

    Tomasina Сушитель лампочек Модератор

    А можно другими словами выразить сию глубокую мысль?

    P.S. оформите код правильно, чтобы его можно было прочесть.
     
  3. Можно через кнопку подать 5 вольт, на контакт реле который висит на 6 пине, через диод к 6 пину...
     
  4. DetSimen

    DetSimen Guest

    Можно по нажатию кнопки Ардуиной вывести +5В на 6-й пин. Программно, безо всяких диодов.
     
  5. thesatellite

    thesatellite Нерд

    Спасибо всем, всё сделал
    #include <RFID.h>
    #include <SPI.h>

    #define SS_PIN 10
    #define RST_PIN 9
    #define BLUE_LED 6
    #define YELLOW_LED 7

    RFID rfid(SS_PIN, RST_PIN);

    unsigned char reading_card[5]; //for reading card
    unsigned char master[5] = {219, 188, 39, 15, 79}; // allowed card
    unsigned char master2[5] = {72, 125, 151, 16, 178}; // allowed card
    unsigned char master3[5] = {11, 41, 39, 15, 10}; // allowed card
    unsigned char master4[5] = {113, 148, 19, 74, 188}; // allowed card
    unsigned char master5[5] = {226, 117, 65, 125, 171}; // allowed card // Карточки и метки. Метка смотрится через монитор порта
    unsigned char master6[5] = {213, 190, 211, 101, 221 }; // allowed card
    unsigned char master7[5] = {1, 83, 230, 41, 157}; // allowed card
    unsigned char master8[5] = {1, 83, 230, 41, 157}; // allowed card
    unsigned char master9[5] = {1, 83, 230, 41, 157}; // allowed card
    unsigned char master10[5] = {1, 83, 230, 41, 157}; // allowed card
    unsigned char i;

    void indication(int led);
    void allow();
    void denied();


    void setup()
    {
    Serial.begin(9600);
    SPI.begin();
    rfid.init();
    pinMode(BLUE_LED, OUTPUT);
    pinMode(YELLOW_LED, OUTPUT);
    pinMode(A0, INPUT); // Порт внутренней кнопки
    pinMode(3, OUTPUT); // Порт управления реле (твердотельное)
    pinMode(4, OUTPUT); // Порт сигнала (пьезо)
    }

    void loop()
    {
    if (rfid.isCard())
    {
    if (rfid.readCardSerial())
    {
    /* Reading card */
    Serial.println(" ");
    Serial.println("Card found");
    Serial.println("Cardnumber:");
    for (i = 0; i < 5; i++)
    {
    Serial.print(rfid.serNum);
    Serial.print(" ");
    reading_card = rfid.serNum;
    }
    Serial.println();
    //verification
    for (i = 0; i < 5; i++)
    {
    if (reading_card != master
    & reading_card != master2
    & reading_card != master3
    & reading_card != master4
    & reading_card != master5
    & reading_card != master6 //Количество карточек/меток
    & reading_card != master7
    & reading_card != master8
    & reading_card != master9[i]
    & reading_card[i] != master10[i]
    )

    {
    break;
    }
    }
    if (i == 5)
    {
    allow();
    }
    else
    {
    denied();
    }
    }
    }
    rfid.halt();
    {
    if (digitalRead(A0) == HIGH)
    {
    digitalWrite(3, LOW); // Реле магнита кнопки (твердотельное на пропадание сигнала)
    digitalWrite(4, HIGH); // Порт сигнала кнопки
    delay(2000);
    digitalWrite(3, HIGH);
    digitalWrite(4, LOW);
    }
    }
    }

    void allow()
    {
    Serial.println("Access accept!");
    indication(BLUE_LED);
    }
    void denied()
    {
    Serial.println("Access denied!");
    indication(YELLOW_LED);
    }
    void indication(int led)
    {
    digitalWrite(led, HIGH);
    digitalWrite(3, LOW);
    digitalWrite(4, HIGH); // Порт сигнала
    delay(2000);
    digitalWrite(led, LOW);
    digitalWrite(3, HIGH);
    digitalWrite(4, LOW); // Порт сигнала
    }
    [/I][/I][/I]

    какнал alliance alliance на ютубе www youtube com/watch?v=VgyuYO3Txpc
     
  6. Tomasina

    Tomasina Сушитель лампочек Модератор

    и как в этой каше разобраться?
     
    Cynep нравится это.
  7. Airbus

    Airbus Радиохулиган Модератор

    Как то так видимо?
    Код (C++):
    #include <RFID.h>
    #include <SPI.h>

    #define SS_PIN 10
    #define RST_PIN 9
    #define BLUE_LED 6
    #define YELLOW_LED 7

    RFID rfid(SS_PIN, RST_PIN);

    unsigned char reading_card[5]; //for reading card
    unsigned char master[5] = {219, 188, 39, 15, 79}; // allowed card
    unsigned char master2[5] = {72, 125, 151, 16, 178}; // allowed card
    unsigned char master3[5] = {11, 41, 39, 15, 10}; // allowed card
    unsigned char master4[5] = {113, 148, 19, 74, 188}; // allowed card
    unsigned char master5[5] = {226, 117, 65, 125, 171}; // allowed card // Карточки и метки. Метка смотрится через монитор порта
    unsigned char master6[5] = {213, 190, 211, 101, 221 }; // allowed card
    unsigned char master7[5] = {1, 83, 230, 41, 157}; // allowed card
    unsigned char master8[5] = {1, 83, 230, 41, 157}; // allowed card
    unsigned char master9[5] = {1, 83, 230, 41, 157}; // allowed card
    unsigned char master10[5] = {1, 83, 230, 41, 157}; // allowed card
    unsigned char i;

    void indication(int led);
    void allow();
    void denied();


    void setup()
    {
    Serial.begin(9600);
    SPI.begin();
    rfid.init();
    pinMode(BLUE_LED, OUTPUT);
    pinMode(YELLOW_LED, OUTPUT);
    pinMode(A0, INPUT); // Порт внутренней кнопки
    pinMode(3, OUTPUT); // Порт управления реле (твердотельное)
    pinMode(4, OUTPUT); // Порт сигнала (пьезо)
    }

    void loop()
    {
         if (rfid.isCard())
    {
         if (rfid.readCardSerial())
    {
    /* Reading card */
    Serial.println(" ");
    Serial.println("Card found");
    Serial.println("Cardnumber:");
    for (i = 0; i < 5; i++)
    {
    Serial.print(rfid.serNum);
    Serial.print(" ");
    reading_card = rfid.serNum;
    }
    Serial.println();
    //verification
    for (i = 0; i < 5; i++)
    {
    if (reading_card != master
    & reading_card != master2
    & reading_card != master3
    & reading_card != master4
    & reading_card != master5
    & reading_card != master6 //Количество карточек/меток
    & reading_card != master7
    & reading_card != master8
    & reading_card != master9[i]
    & reading_card[i] != master10[i]
    )

    {
    break;
    }
    }
    if (i == 5)
    {
    allow();
    }
    else
    {
    denied();
    }
    }
    }
    rfid.halt();
    {
    if (digitalRead(A0) == HIGH)
    {
    digitalWrite(3, LOW); // Реле магнита кнопки (твердотельное на пропадание сигнала)
    digitalWrite(4, HIGH); // Порт сигнала кнопки
    delay(2000);
    digitalWrite(3, HIGH);
    digitalWrite(4, LOW);
    }
    }
    }

    void allow()
    {
    Serial.println("Access accept!");
    indication(BLUE_LED);
    }
    void denied()
    {
    Serial.println("Access denied!");
    indication(YELLOW_LED);
    }
    void indication(int led)
    {
    digitalWrite(led, HIGH);
    digitalWrite(3, LOW);
    digitalWrite(4, HIGH); // Порт сигнала
    delay(2000);
    digitalWrite(led, LOW);
    digitalWrite(3, HIGH);
    digitalWrite(4, LOW); // Порт сигнала
    }
     
  8. Cynep

    Cynep Нерд

    И это работает?