#1 Re: Програмування Arduino » Помогите подружить RFID c SD картридером » 2016-03-21 15:12:29

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

#2 Re: Програмування Arduino » Помогите подружить RFID c SD картридером » 2016-03-21 13:19:13

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

#3 Re: Програмування Arduino » Помогите подружить RFID c SD картридером » 2016-03-21 13:13:13

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

#4 Програмування Arduino » Помогите подружить RFID c SD картридером » 2016-03-21 13:07:19

panalex
відповідей: 6

Имеем следующее:
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();
}

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