Birden Fazla SPI Cihaz
  • Merhaba,

    NRF24L01+ ve RC522 RFID okuyucu modüllerini birlikte kullanmak istiyorum.

    MISO, MOSI ve SCK pinlerini 11,12,13 olarak ortak bağladım. NRFF24L01+ için CE: 7 CSN: 8 seçtim. RC522 için ise RST: 9 SDA: 10 olarak seçtim.

    Bu pinlere HIGH LOW değerleri yazarak modül seçip çeşitli denemeler yaptım. Ancak verici Arduino'da RFID ile NRF24L01+'ı birlikte çalıştıramadım bir türlü. 2 modül ayrı ayrı çalışıyor. Aşağıdaki kodlarda RFID çalışmıyor. Bunu başarabilirsem bir sonraki aşamada da alıcı tarafında W5100 Ethernet Shield ile NRF24L01+'ı birlikte çalıştırmayı deneyeceğm..

    Bağlantı şeması aşağıdaki gibi.
    https://hizliresim.com/X0QAd6

    ------------------
    Alıcı arduino kodu
    ------------------

    #include SPI.h
    #include nRF24L01.h
    #include RF24.h

    RF24 radio(7, 8); // CNS, CE

    const byte address[6] = "00001";

    void setup() {
    Serial.begin(9600);
    radio.begin();
    radio.openReadingPipe(0, address);
    radio.setPALevel(RF24_PA_LOW);
    radio.startListening();
    }

    void loop() {
    if (radio.available()) {
    char text[32] = "";
    short say = 0;
    radio.read(&text, sizeof(text));
    radio.read(&say, sizeof(say));
    Serial.println(text);
    Serial.println(say);
    Serial.println(millis());
    }
    }


    ------------------
    Verici arduino kodu
    ------------------


    #include SPI.h
    #include nRF24L01.h
    #include RF24.h
    #include RFID.h

    #define NRF_CE_PIN 7
    #define NRF_CSN_PIN 8

    RF24 radio(7, 8);

    short say = 1;
    const byte address[6] = "00001";

    #define RFID_RST_PIN 9
    #define RFID_SS_PIN 10

    RFID rfid(RFID_SS_PIN, RFID_RST_PIN);

    int serNum0;
    int serNum1;
    int serNum2;
    int serNum3;
    int serNum4;


    void setup() {
    Serial.begin(9600);

    pinMode(RFID_RST_PIN, OUTPUT);
    pinMode(RFID_SS_PIN, OUTPUT);
    pinMode(NRF_CE_PIN, OUTPUT);
    pinMode(NRF_CSN_PIN, OUTPUT);

    digitalWrite(RFID_SS_PIN, HIGH); //close RFID

    SPI.begin();

    radio.begin();
    radio.openWritingPipe(address);
    radio.setPALevel(RF24_PA_LOW);
    radio.stopListening();

    }

    void loop() {

    Serial.println(millis());

    //rfid

    digitalWrite(NRF_CSN_PIN, HIGH);
    digitalWrite(RFID_SS_PIN, LOW); //open RFID

    rfid.init();

    if (rfid.isCard()) {
    Serial.println("KART BULUNDU");
    if (rfid.readCardSerial()) {
    Serial.println("KART OKUNDU");
    serNum0 = rfid.serNum[0];
    serNum1 = rfid.serNum[1];
    serNum2 = rfid.serNum[2];
    serNum3 = rfid.serNum[3];
    serNum4 = rfid.serNum[4];

    Serial.print(rfid.serNum[0],DEC);
    Serial.print(", ");
    Serial.print(rfid.serNum[1],DEC);
    Serial.print(", ");
    Serial.print(rfid.serNum[2],DEC);
    Serial.print(", ");
    Serial.print(rfid.serNum[3],DEC);
    Serial.print(", ");
    Serial.print(rfid.serNum[4],DEC);
    Serial.println(" ");
    }
    }

    rfid.halt();
    say = rfid.serNum[0];

    //radio
    digitalWrite(RFID_SS_PIN, HIGH); //close RFID
    digitalWrite(NRF_CSN_PIN, LOW);

    const char text[] = "rfid plus nrf24l01 test";
    radio.write(&text, sizeof(text));
    radio.write(&say, sizeof(say));
    //say = say + 1;
    delay(1000);
    }
  • Birden fazla spi cihaz kullanırken ss pinlerini kullanman lazım hangi cihazı kullanacaksan onun ss pinini LOW a çekiceksin
  • Ben de onu yapmaya çalıştım. Rfid için SS 10. Nrf için CSN pin 8 ile işlem yapmaya çalıştım. Ama rfid çalışmıyor. Bi sıkıntı var ama çözemedim.
  • rfid entegrenın datasheeti inceleyin bazı spi cihazlarda ss pini low iken çalışır bazılarında high iken çalışır başka bir spi cihazla çakışıyordur. birde rfid yi eneble yaptıgınızda diğerini disable yapın
  • diyelim ki SS pine HIGH verince pasif oluyor. aktif etmek için LOW vermek yeterli mi? yani aşağıdaki komutlar void setup'ta olsa yeterli mi? yoksa loop'ta LOW ile birlikte kullanmalı mıyım acaba?

    rfid.init();
    radio.begin();
  • rfid nin ss pininde bir led bağlayın dirençle beraber bu komutları verdiğinizde duruma bakın. kutuphaneyi de ıncelemek gerek bu pinler nasıl kullanılıyor hemen cevap veremem.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook

Tagged

Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.