#1 2016-03-21 13:07:19

panalex
Учасник
Зареєстрований: 2016-03-21
Повідомлень: 4

Помогите подружить RFID c SD картридером

Имеем следующее:
Arduino UNO к которому подключены RFID и SD карт ридеры.
При выполнении скетча инициализация SD карты проходит (сообщение Card Ready), но перестают читаться карты RFID, хотя SS_PIN согласно скетча переводится в LOW, а CS_pin (для SD card) соответственно в HIGH.

Заранее благодарен за подсказки!!!

//
// ----------------------------------------------------------------------------------- 
// * Pin layout should be as follows:
// * Signal     Pin              Pin              Pin
// *            Arduino Uno      MFRC522 board    Micro SD Card
// * ---------------------------------------------------------------------------------
// * Reset      9                RST              
// * SPI SS     10               SDA
// * SPI MOSI   11               MOSI             MOSI
// * SPI MISO   12               MISO             MISO
// * SPI SCK    13               SCK              SCK
// * SPI SS 2   4                                 CS
// * Power                       3.3V             5V
//

#include <SPI.h>
#include <MFRC522.h>
#include <SD.h>


#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);        // Create MFRC522 instance.


int CS_pin = 4;

void setup() {
        Serial.begin(9600);        // Initialize serial communications with the PC
        
        //Disable SD Card
        pinMode(CS_pin, OUTPUT);
        digitalWrite(CS_pin, HIGH);
        
        // Enable RFID
        pinMode(SS_PIN, OUTPUT);
        digitalWrite(SS_PIN, LOW);
        
        SPI.begin();               // Init SPI bus
        mfrc522.PCD_Init();        // Init MFRC522 card
       
        // Disable RFID and enable SD
        digitalWrite(CS_pin, LOW);
        digitalWrite(SS_PIN, HIGH);
        
        
        Serial.println("Initializing Card");

        if (!SD.begin(CS_pin)) {
           Serial.println("Card Failed");
           return; 
        }
        else Serial.println("Card Ready");

        // Enable RFID and disable SD
        Serial.println("Waiting for RFID Card");
        digitalWrite(CS_pin, HIGH);
        digitalWrite(SS_PIN, LOW);  
             
}

void loop() {
  
        // Prepare key - all keys are set to FFFFFFFFFFFFh at chip delivery from the factory.
        MFRC522::MIFARE_Key key;
        for (byte i = 0; i < 6; i++) {
                key.keyByte[i] = 0xFF;

        }
        // Look for new cards
        if ( ! mfrc522.PICC_IsNewCardPresent()) { 
                return;
        }

        // Select one of the cards
        if ( ! mfrc522.PICC_ReadCardSerial()) {          
                return;
        }
        // Now a card is selected. The UID and SAK is in mfrc522.uid.
        
        String UIDString = "";
        
        // Dump UID
        Serial.print("Card UID:");
        for (byte i = 0; i < mfrc522.uid.size; i++) {
                Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
                UIDString = UIDString + String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
                Serial.print(mfrc522.uid.uidByte[i], HEX);
                UIDString = UIDString + String(mfrc522.uid.uidByte[i], HEX);
        } 
        Serial.println();
}

Неактивний

#2 2016-03-21 13:13:13

panalex
Учасник
Зареєстрований: 2016-03-21
Повідомлень: 4

Re: Помогите подружить RFID c SD картридером

Пробовал назначить #define SS_PIN 5 (Slave Select для RFID на пин 5), но результат аналогичный ...

Неактивний

#3 2016-03-21 13:19:13

panalex
Учасник
Зареєстрований: 2016-03-21
Повідомлень: 4

Re: Помогите подружить RFID c SD картридером

Ещё странная ситуация:
После того как отключаю MISO от SD ридера согласно скетча SS_PIN остаётся в HIGH и вроде бы как RFID ридер не должен читать карточки, но он их читает. Объяснить почему так происходит вообще не могу ...

Неактивний

#4 2016-03-21 14:32:16

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Помогите подружить RFID c SD картридером

http://www.nxp.com/documents/data_sheet/MFRC522.pdf
умеет общаться по UART/SPI/I2C
по телу текста догадался что вы подключили  SD  и  MFRC522 на один порт SPI и пытаетесь развязать их по чип селекту?  я правильно понял?

если так - переделайте  эту либу на програмный  SPI или ног свободных мало осталось?
MFRC522 mfrc522(SS_PIN, RST_PIN);        // Create MFRC522 instance.
я бы не смешивал по сигналам эти устройства, 
I2C, UART  все занято?
NSS I SPI signal input[2]
и есть у меня подозрение что NSS это не CS, и не переводит  в третье состояние интерфейсние ноги mfrc522

Остання редакція NoName (2016-03-21 14:32:29)

Неактивний

#5 2016-03-21 15:12:29

panalex
Учасник
Зареєстрований: 2016-03-21
Повідомлень: 4

Re: Помогите подружить RFID c SD картридером

Спасибо за ответ!
Да всё правильно, хочу подружить SD  и  MFRC522 по одному SPI и развязать чип селектом.
со свободными ножками конечно напряг, но со временем планирую весь проект перевести на мегу, так что ножек должно добавиться.
Может есть где-то статья как для начинающего как MFRC522 перевести на программный интерфейс?
UART пока свободен.

Остання редакція panalex (2016-03-21 15:13:52)

Неактивний

#6 2016-03-21 16:12:24

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Помогите подружить RFID c SD картридером

https://github.com/zodier/MFRC522-UART-Arduino
гугл забанил Вас? )

я бы так не делал, все что можно вынести в отдельный "поток"  я бы вынес,  и конфликтов нет, и по питанию погасить можно если не используете )
у Вас так получилось, потому что были примеры реализации?
если со свободными ногами напряг - меняйте контроллер,
а если жесткое ТЗ - тогда мучайтесь )

есть у меня подозрение что MFRC522 по всем интерфейсам может работать одновременно, подключайте и работайте
хоть по UART,  хоть по I2C

Остання редакція NoName (2016-03-21 16:14:06)

Неактивний

#7 2016-03-21 16:35:20

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Помогите подружить RFID c SD картридером

очень важно что б Вы сами разобрались ), прямой ответ ничему не научит, Вы закроете задачу и больше вспоминать не будете, но похоже что Ваша тема такова что будет только развиваться
например начальству нужно будет на телефон слать смской всех опоздавших на работу ) ( так чисто для примера ) , не делайте такого ) добра не будет )
и Вам нужно обязательно знать до последнего винтика Вашу систему )

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму