Hey guys,
ein Freud und ich versuchen unser Projekt zum laufen zu bringen, wir bekommen aber nicht raus was falsch an unserem Setup ist. Wir haben 16 RFID Module mit dem Arduino verbunden. Die RFID Module haben ihr eigenes Netzteil, wir haben aber auch versucht sie direkt mit dem Arduino zu verbinden. SCK, MISO, MOSI und RST sind in einem Grid miteinander verbunden, sodass jeder Port mit dem Arduino verbunden ist und nur ein Kabel benötigt wird. Das gleiche mit 3,3v und GND. Jedes Modul hat seinen eigenen SDA Pin, welcher auf einem eigenen Port mit dem Arduino verbunden ist.
Wenn wir das externe Netzteil verwenden, verbinden wir den GND mit dem Arduino.
Das lustige ist, dass nur die ersten 4 RFID Module funktionieren. Wir haben alle RFID Module getestet bevor wir sie in das Grind zusammengeschlossen haben. Wir haben vorher sogar probiert, ob 6 RFID Module gleichzeitig funktionieren, was funktioniert hat. Ich denke dass irgendwas an dem Grid nicht richtig ist und sich irgendwelche Signale gegenseitig auslöschen oder sowas.
Wir haben auch eine andere Library probiert, was aber das selbe Ergebnis brachte.
Hier ist ein Paint Bild von unserem Grid. Nur die vier in der rechten Spalte funktionieren. Die Pfeile markieren die Verbindung mit dem Arduino und dem Netzteil.
Hier ist noch der Code, falls der von nutzen ist.
#include <SPI.h>
#include <MFRC522.h>
#define NR_OF_READERS 16
//
byte ssPins[] = {22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37};
MFRC522 mfrc522[NR_OF_READERS]; // Create MFRC522 instance.
/**
* Initialize.
*/
void setup() {
Serial.begin(115200); // Initialize serial communications with the PC for debugging.
SPI.begin();
for (uint8_t reader = 0; reader < NR_OF_READERS; reader++) {
mfrc522[reader].PCD_Init(ssPins[reader], 9); // Init each MFRC522 card
Serial.print(F("Reader "));
Serial.print(reader);
Serial.print(F(": "));
mfrc522[reader].PCD_DumpVersionToSerial();
}
}
/**
* Main loop.
*/
void loop() {
for (uint8_t reader = 0; reader < NR_OF_READERS; reader++) {
// Look for new cards
if (mfrc522[reader].PICC_IsNewCardPresent() && mfrc522[reader].PICC_ReadCardSerial()) {
Serial.print(F("Reader "));
Serial.print(reader);
// Show some details of the PICC (that is: the tag/card)
Serial.print(F(": Card UID:"));
dump_byte_array(mfrc522[reader].uid.uidByte, mfrc522[reader].uid.size);
Serial.println();
Serial.print(F("PICC type: "));
MFRC522::PICC_Type piccType = mfrc522[reader].PICC_GetType(mfrc522[reader].uid.sak);
Serial.println(mfrc522[reader].PICC_GetTypeName(piccType));
// Halt PICC
mfrc522[reader].PICC_HaltA();
// Stop encryption on PCD
mfrc522[reader].PCD_StopCrypto1();
} //if (mfrc522[reader].PICC_IsNewC
} //for(uint8_t reader
}
/**
* Helper routine to dump a byte array as hex values to Serial.
*/
void dump_byte_array(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer[i] < 0x10 ? " 0" : " ");
Serial.print(buffer[i], HEX);
}
}
Ich hoffe ihr könnt uns helfen.
Danke im voraus ^^
