Форум программистов, компьютерный форум, киберфорум
Arduino
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/65: Рейтинг темы: голосов - 65, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 15.06.2016
Сообщений: 8
1

Устройство неправильно читает rfid карту

15.06.2016, 09:22. Показов 13098. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста времени нету, у меня не правильно читает rfid карту само устройство, вот вам рисунок и код помогите кто как и чем может буду вам благодарна!!!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
/*
 -----------------------------------------------------------------------------
 * Pin layout should be as follows:
 * Signal     Pin              Pin               Pin
 *            Arduino Uno      Arduino Mega      MFRC522 board
 * ------------------------------------------------------------
 * Reset      9                5                 RST
 * SPI SS     10               53                SDA
 * SPI MOSI   11               51                MOSI
 * SPI MISO   12               50                MISO
 * SPI SCK    13               52                SCK
 *
 *  
 */
 
#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
 
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);        // Create MFRC522 instance.
Servo myservo;
boolean doorOpen;
 
/*
Users
*/
int countUsers = 2;
byte Users[2][16] = {{1,2,3,4, 5,6,7,8, 9,10,255,12, 13,14,15,16},
                              {0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,1}};
 
void setup() {
        Serial.begin(9600);    // Инициализируем монитор последовательного порта
        pinMode(8, INPUT);     //button open/close door
        pinMode(7, OUTPUT);    //load transistor
        digitalWrite(7, LOW);
        pinMode(5, OUTPUT);    //LED open/close door
        myservo.attach(6);
        SPI.begin();           // Инициализируем SPI шину
        mfrc522.PCD_Init();
}
 
void loop() {
      // Подготовим ключ
    // используем ключ FFFFFFFFFFFFh который является стандартом для пустых карт  
        MFRC522::MIFARE_Key key;
        for (byte i = 0; i < 6; i++) {
                key.keyByte[i] = 0xFF;
        }
 // Ищем новую карту
        if ( ! mfrc522.PICC_IsNewCardPresent()) {
           if (digitalRead(8) == HIGH) {
            digitalWrite(7, HIGH);
            delay(500);
            //if (doorOpen)
           // {
              //delay(10000);
             // myservo.write(80);
             // doorOpen = false;
             // Serial.println("CLOSED!");
             // digitalWrite(5, HIGH);
           // }
         // else
            {
             myservo.write(2);
             //doorOpen = true;
            Serial.println("OPENED!");
            digitalWrite(5, LOW);
            delay(10000);
            myservo.write(80);
            //doorOpen = false;
            Serial.println("CLOSED!");
            digitalWrite(5, HIGH);
            }
            delay(500);
            digitalWrite(7, LOW);
          }
            return;
        }
 
 // Выбираем одну из карт
        if ( ! mfrc522.PICC_ReadCardSerial()) {
                return;
        }
 
        Serial.print("!");
        Serial.print("\r\n");
 
        for (byte i = 0; i < mfrc522.uid.size; i++) {
                Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
                Serial.print(mfrc522.uid.uidByte[i], HEX);
        }
        Serial.print("\r\n");
 
        byte piccType = mfrc522.PICC_GetType(mfrc522.uid.sak);
        //Serial.print(mfrc522.PICC_GetTypeName(piccType));
        //Serial.print("\r\n");
        if (        piccType != MFRC522::PICC_TYPE_MIFARE_MINI
                &&        piccType != MFRC522::PICC_TYPE_MIFARE_1K
                &&        piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
                return;
        }
// В этом примере мы используем первый сектор данных карты, блок 4
        byte sector         = 1;
        byte valueBlockA    = 4;
        byte valueBlockB    = 5;
        byte valueBlockC    = 6;
        byte trailerBlock   = 7;
        MFRC522::StatusCode status;
 // Аутентификация
        status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, trailerBlock, &key, &(mfrc522.uid));
        if (status != MFRC522::STATUS_OK) {
                Serial.print("PCD_Authenticate() failed: ");
                Serial.println(mfrc522.GetStatusCodeName(status));
                return;
        }
 
        status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_B, trailerBlock, &key, &(mfrc522.uid));
        if (status != MFRC522::STATUS_OK) {
                Serial.print("PCD_Authenticate() failed: ");
                Serial.println(mfrc522.GetStatusCodeName(status));
                return;
        }
 
        byte buffer[18];
        byte size = sizeof(buffer);
 
        status = mfrc522.MIFARE_Read(valueBlockA, buffer, &size);
        Serial.print(buffer[0]);
        Serial.print("\r\n");
        Serial.print(buffer[1]);
        Serial.print("\r\n");
        Serial.print(buffer[2]);
        Serial.print("\r\n");
        Serial.print(buffer[3]);
        Serial.print("\r\n");
        Serial.print(buffer[4]);
        Serial.print("\r\n");
        Serial.print(buffer[5]);
        Serial.print("\r\n");
        Serial.print(buffer[6]);
        Serial.print("\r\n");
        Serial.print(buffer[7]);
        Serial.print("\r\n");
        Serial.print(buffer[8]);
        Serial.print("\r\n");
        Serial.print(buffer[9]);
        Serial.print("\r\n");
        Serial.print(buffer[10]);
        Serial.print("\r\n");
        Serial.print(buffer[11]);
        Serial.print("\r\n");
        Serial.print(buffer[12]);
        Serial.print("\r\n");
        Serial.print(buffer[13]);
        Serial.print("\r\n");
        Serial.print(buffer[14]);
        Serial.print("\r\n");
        Serial.print(buffer[15]);
        Serial.print("\r\n");
//Читаем данные снова, чтобы проверить, что запись прошла успешно
        byte trueBytes = 0;
        boolean acceptUser = false;
        for (int i = 0; i < countUsers; i++) {
          if (!acceptUser) {
            for (int j = 0; j < 16; j++) {
              if (buffer[j] == Users[i][j]) {
                trueBytes++;
              }
            }
          }
          if (trueBytes == 16) {
            digitalWrite(7, HIGH);
            delay(500);
           //if (doorOpen)
            //{
              //delay(10000);
             // myservo.write(80);
             // doorOpen = false;
             // Serial.println("CLOSED!");
             // digitalWrite(5, HIGH);
           // }
         // else
            {
             myservo.write(2);
             //doorOpen = true;
            Serial.println("OPENED!");
            digitalWrite(5, LOW);
            delay(10000);
            myservo.write(80);
            //doorOpen = false;
            Serial.println("CLOSED!");
            digitalWrite(5, HIGH);
            }
            delay(500);
            digitalWrite(7, LOW);
            acceptUser = true;
            trueBytes = 0;
          } else trueBytes = 0;
        }
          // Выводим данные
        mfrc522.PICC_HaltA();
 
        mfrc522.PCD_StopCrypto1();
        
        
}
 
так выглядит на мониторе
 
!
 56 2F FC 11
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.06.2016, 09:22
Ответы с готовыми решениями:

Arduino не читает RFID карту (RFID_RC522)
Ниже приведены 2 кода с библиотеки MFRC522(пример автора библиотеки) и сайта крафтдуино ...

USBasp неправильно читает Flash, но правильно читает EEprom
Ребята выручайте, нужен мозговой штурм... Пару лет назад собрал USBasp, до недавнего времени...

usb - устройство не опознано. последнее usb - устройство, подключенное к этому компьютеру, работает неправильно, и Windo
Доброго времени суток. Usb - накопитель появляется на секунд 10 и пропадает. Проверял на Win 10,...

Не правильно читает карту для игры
Всем привет! Разбираю как делать 2д игру, вопросов конечно много, но вроде статей пока хватает....

15
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
15.06.2016, 10:34 2
C чего взяли что не правильно?
В нулевом секторе доступен только индификатор карты (4 байта) для чтения.
Далее 16 чистых или закрытых секторов. Карта новая или формотнули сектора не правильно.
1
0 / 0 / 0
Регистрация: 15.06.2016
Сообщений: 8
16.06.2016, 08:23  [ТС] 3
да карта новая только подключила как на других сайтах было написано в скетч написала, но почему то не хочет записывать его грамотно, а можете помочь решить этот вопрос??
0
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
16.06.2016, 08:51 4
Иришечкка, с кодом для ардуино помочь не могу, ибо не знаю её и знать не хочу(смотрите мои посты здесь), но с данным чипом работал( пока игрался, запорол пару карт)и могу помочь именно по чипу и карте, но не с кодом. Свою библиотеку не выложу ибо продукт коммерческий
0
0 / 0 / 0
Регистрация: 15.06.2016
Сообщений: 8
16.06.2016, 09:41  [ТС] 5
спасибо! с кодом я сама разберусь мне с rfid картами разобраться и самим считывателем! библиотеку тоже нужную подключила....
0
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
16.06.2016, 10:01 6
а что Вы строите?
PS живу в Москве, карту метро ломаю враз, правда работает она один раз клиент серверные технологии однако
0
0 / 0 / 0
Регистрация: 15.06.2016
Сообщений: 8
16.06.2016, 10:27  [ТС] 7
Card UID: D9 E2 9B E2
Card SAK: 08
PICC type: MIFARE 1KB
Sector Block 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 AccessBits
15 63 00 00 00 00 00 00 FF 07 80 69 FF FF FF FF FF FF [ 0 0 1 ]
62 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 0 0 0 ]
61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 0 0 0 ]
60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 0 0 0 ]
14 59 PCD_Authenticate() failed: Timeout in communication.
13 55 PCD_Authenticate() failed: Timeout in communication.
12 51 PCD_Authenticate() failed: Timeout in communication.
11 47 PCD_Authenticate() failed: Timeout in communication.
10 43 PCD_Authenticate() failed: Timeout in communication.
9 39 PCD_Authenticate() failed: Timeout in communication.
8 35 PCD_Authenticate() failed: Timeout in communication.
7 31 PCD_Authenticate() failed: Timeout in communication.
6 27 PCD_Authenticate() failed: Timeout in communication.
5 23 PCD_Authenticate() failed: Timeout in communication.
4 19 PCD_Authenticate() failed: Timeout in communication.
3 15 PCD_Authenticate() failed: Timeout in communication.
2 11 PCD_Authenticate() failed: Timeout in communication.
1 7 PCD_Authenticate() failed: Timeout in communication.
0 3 PCD_Authenticate() failed: Timeout in communication.
вот я даже стандарт залила, но он вот что мне выдает при поднесении к считывателю, вы можете как объяснить мало мальски?

Добавлено через 11 минут
это мой диплом!! проблема только в в rfid ни как ни хочет работать у меня, только вот живу очень далеко от вас в 3000 км от Москоу сити
0
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
16.06.2016, 13:15 8
Что именно не работает?
Считали Вы карту правильно!
0
0 / 0 / 0
Регистрация: 15.06.2016
Сообщений: 8
16.06.2016, 22:27  [ТС] 9
PCD_Authenticate() failed: Timeout in communication., тогда почему он выводит это сообщение?
и почему не все сектора заполнены?
0
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
17.06.2016, 08:29 10
Либо карта не совсем новая, либо Вы делаете что то не так.
Я когда начинал делать свой считыватель первым делом купил заводской что бы видеть свои косяки.
Так как у Вас все же что то читается без эталона помочь даже не знаю как.
Цитата Сообщение от Иришечкка Посмотреть сообщение
только вот живу очень далеко от вас в 3000 км от Москоу сити
жаль, просто "метро" карты этим чипом читаются и можно было использовать как эталон
Вы так и не сказали что "строите", может Вам и не надо возможности мифаре, а подойдет банальный иммарин на порядок проще.
0
0 / 0 / 0
Регистрация: 15.06.2016
Сообщений: 8
17.06.2016, 08:43  [ТС] 11
Электронный замок
0
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
17.06.2016, 08:50 12
Так используйте только ID карты. Насколько я вижу его Вы читаете. Он уникальный(гусары молчать, я в курсе про зеро карты)
Во флешку в специальном режиме пишете IDы карт
В рабочем режиме контроллер считывает ID если такой есть в памяти замок открываем
так все делают
1
0 / 0 / 0
Регистрация: 15.06.2016
Сообщений: 8
17.06.2016, 09:03  [ТС] 13
без аутентификации?
0
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
17.06.2016, 09:13 14
А зачем она нужна, этот чип работает с картами S50, S70 их взломали через три месяца после выпуска(лет 15 назад) сейчас их не взломает только ленивый, порты "взломщиков" даже под виндовс бесплатно лежат в инете. Безопастность метро с начало строилось на спец. картах (однократное ПЗУ), а после появления зеро на клиент серверных технологиях.
1
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320
15.07.2017, 14:39 15
Тема конечно интересная вот есть источник хороший:
http://randomport.com/doxygen/... 91ff88320e
http://www.neftocard.ru/articl... lassic.php

Добавлено через 13 часов 58 минут
Цитата Сообщение от Витальич Посмотреть сообщение
А зачем она нужна, этот чип работает с картами S50, S70 их взломали через три месяца после выпуска(лет 15 назад) сейчас их не взломает только ленивый, порты "взломщиков" даже под виндовс бесплатно лежат в инете. Безопастность метро с начало строилось на спец. картах (однократное ПЗУ), а после появления зеро на клиент серверных технологиях.
Можете проконсультировать по вопросу ... изучаю работу с картой и вот тут засада записал пароль, затем пытаюсь его ввести а меня посылает карта..в баню. Можете подсказать что ей не понравилось?

Добавлено через 20 минут
Цитата Сообщение от Витальич Посмотреть сообщение
А зачем
можешь подсказать по RFID я так понял ты давно эту систему практикуешь, у меня получилась засада. Я в заводскую карту которая в трелере имеет по умолчанию такие значения:
00 00 00 00 : 00 00 FF 07 : 80 69 FF FF : FF FF FF FF
я туда записал такие значения:
00 00 00 00 : 00 00 FF 07 : 80 69 FF FF : FF FF FF 254
затем пробую снова прочитать данные трелера и он меня посылает хотя key я указываю как 00 00 00 00 : 00 00 FF 07 : 80 69 FF FF : FF FF FF 254 в чем косяк?
0
0 / 0 / 0
Регистрация: 05.02.2022
Сообщений: 1
05.02.2022, 23:46 16
60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 0 0 0 ]
14 59 PCD_Authenticate() failed: Timeout in communication.
13 55 PCD_Authenticate() failed: Timeout in communication.
Причина ошибки аутентификации есть в описании пробного скетча библиотеки MFRC522, а именно:

"Note: you may see "Timeout in communication" messages when removing the PICC from reading distance too early. If your reader supports it, this sketch/program will read all the PICCs presented (that is: multiple tag reading). So if you stack two or more PICCs on top of each other and present them to the reader, it will first output all details of the first and then the next PICC. Note that this may take some time as all data blocks are dumped, so keep the PICCs at reading distance until complete."

У меня на связке Arduino MEGA + MFRC522, время полного считывания карты занимает шесть секунд!!! Очень медленно. Причину не знаю. Но сообщения типа:
14 59 PCD_Authenticate() failed: Timeout in communication.
13 55 PCD_Authenticate() failed: Timeout in communication.
пропадают. Вопрос как ускорить считывание карты остаётся открытым.
0
05.02.2022, 23:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.02.2022, 23:46
Помогаю со студенческими работами здесь

Фотоаппарат Olympus VG-130 не читает карту памяти
Всем привет. Возник с такой проблемой. Имею цифровой фотоаппарат Olympus VG-130. Проблема в том,...

Неправильно читает из файла
Привет. Не могу разобраться почему не работает код. На вход из файла подается три числа: 2, 4, 6. ...

Неправильно читает файл
Вот код программы (суть в тесте методов С++ по работе с бинарными файлами): #include &quot;stdafx.h&quot;...

getline() неправильно читает числа
Я использую std::getline() для чтения данных из текстового файла построчно. Файл открыт с помощью...

Неправильно читает данные из файла
Ситуация следующая. Выполняю ввод данных(фамилия и возраст), затем они записываются в...

Неправильно читает двоичный файл
#include &lt;iostream&gt; #include &lt;locale.h&gt; using namespace std; /*14.Информационная система «Детали...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru