Arduino mega mit zwei oder mehreren RFID-Lesegeräten verbinden klappt nicht?!

Hallo an alle da draußen,

bin seit heute neu in dem Forum und seit kurzer Zeit auch neu in der Programmierung des Arduinos.

Nun zu meinem Problem: Ich versuche derzeit den Arduino Mega 2650 mit zwei oder mehreren RFID-Lesegeräten auszustatten. Leider gelingt mir dies nicht.

Ich benutze die Beispiele aus der Libary von miguelbalboa bzw das Beispiel "ReadUidMultiReader" aus der neusten Version direkt über die Software zum programmieren heruntergeladen. Die Pins schließe ich alle zusammen bis auf SS, dort benutze ich jeweils SS1=53 und SS2=43.

Problem hierbei ist, das er wenn ich beide zusammenstecke der arduino keins von beiden Lesegeräten findet. Nehme ich ein Lesegerät hingegen vom Strom weg und benutze trotzdem den gleichen Code erkennt er das lesegerät welches noch verbunden ist. Das verbundene Lesegerät kann dann auch Tags auslesen..

PS: Beide Lesegeräte funktionieren
RFID-RC522

Gibt es hier noch etwas zu beachten? Bzw was mache ich falsch? Funktioniert dies einfach nicht auf dem Mega?

Gib uns doch bitte mal einen Link zur Lib.

Gruß Tommy

Korekktur: Arduino Mega 2560 (Tippfehler)

Hier der Link zur Libary: https://github.com/miguelbalboa/rfid

In der Library gibt es ein Beispiel mit mehreren RFID-Readern.
Hast du das ausprobiert?

Hey uxomm,

ja das ist ja das Beispiel welches ich versuche zu verwenden. Leider gibt er mir immer die Ausgabe:

Reader 0: Firmware Version: 0x0 = (unknown)
WARNING: Communication failure, is the MFRC522 properly connected?
Reader 1: Firmware Version: 0x0 = (unknown)
WARNING: Communication failure, is the MFRC522 properly connected?

Pin Belegung habe ich auch beachtet und schon locker 10 mal kontrolliert. Wenn ich das MISO Kabel des einen Lesegerätes trenne geht der andere auch wieder.
Aber halt immer nur einer. Egal welchen ich abziehe, der andere geht danach.

Anscheinend ist hier ein Fehler bei der Kommunikation. Ich wüsste aber nicht wie ich das verändern soll, das der zweite Reader einen extra MISO anschluss bekommt. Schließlich ist der RFID-RC522 ja nur über SS und RST definiert.

Es gibt auch manches Mal fehlerhafte SPI-Module, die sich nicht hochohmig schalten, wenn sie nicht angewählt sind. Viele Ethernetmodule hatten/haben z.B. diesen Fehler.

Gruß Tommy

Hey Tommy,

was bedeutet das für mich? Muss ich mir einen anderen Arduino zulegen oder kann man das reparieren oder ähnliches. habe von dem Arduinno noch nicht wirklich die Ahnung.

Bzw wie kann ich dieses problem beheben?

Gruß Orste

Nimm nur 1 Modul. Setze SS des Moduls auf HIGH. Messe die Spannung am MISO -Ausgang.
Ist sie LOW oder HIGH ist das Modul evtl. defekt.

Gruß Tommy

Habe das mal nachgebaut.
2 Module "RFID-RC522"
Hab zurzeit aber keinen Mega zur Hand, deshalb getestet an einem UNO.

Es funktioniert bei mir mit dem Sketch aus den Beispielen der Library (ReadUidMultiReader).
Serielle Ausgabe:

Reader 0: Firmware Version: 0x92 = v2.0
Reader 1: Firmware Version: 0x92 = v2.0
Reader 0: Card UID: 85 86 12 02
PICC type: MIFARE 1KB
Reader 1: Card UID: 85 86 12 02
PICC type: MIFARE 1KB

Der Aufbau (damit gewinnt man natürlich keinen Schönheitswettbewerb)
2_rc522_an_uno.jpg

Die verwendeten Module: Typ "no name" - :slight_smile:
rc522_modul.jpg

2_rc522_an_uno.jpg

rc522_modul.jpg

hey Tommy,

wie setze ich den SS auf High? Nur Über das Programm, also mit digitalWrite?
Habe leider kein Mulltimeter da.

Aber wenn sie einzeln funktionieren mit einem anderen Sketch, dürften sieja nicht kaputt sein, oder?

@uxomm,

dann mache ich anscheinend irgendwas falsch, nur was?

habe gerade eben alles nochmls neu verbunden. Auch jetzt geht es immer noch nicht.

Wieder einen abgesteckt und nun wieder, einer Empfangbar, der andere nicht.

Reader 0: Firmware Version: 0x0 = (unknown)
WARNING: Communication failure, is the MFRC522 properly connected?
Reader 1: Firmware Version: 0x12 = counterfeit chip
Reader 1: Card UID: 04 DA 9F 32 8D 58 80
PICC type: MIFARE Ultralight or Ultralight C

Findet sich denn hier niemand der einen Mega 2560 hat und das mal eben esten würde?

orste:
Habe leider kein Mulltimeter da.

Dann sollte das Deine nächste Anschaffung werden.

Das Problem dieses Fehlers ist ja gerade, dass die Module einzeln funktionieren, aber nicht gemeinsam mit einem 2. Busteilnehmer.

Gruß Tommy

Ein Arduino lässt sich begrenzt als Multimeter, und als Oszi oder LA nutzen.
Tipp: Serial Plotter

Auch lässt sich mit einem Widerstand und Multimeter prüfen, ob der Reader den SPI Bus los lässt.

@Tommy

Nimm nur 1 Modul. Setze SS des Moduls auf HIGH. Messe die Spannung am MISO -Ausgang.
Ist sie LOW oder HIGH ist das Modul evtl. defekt.

Bei laufendem Betrieb oder ohne andere Anbindungen,Strom etc?

Passt der Code dann so?

#include <SPI.h>

byte ssPin = 53;
byte miPin = 50;

void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
SPI.begin();
pinMode(ssPin,OUTPUT);
pinMode(miPin,INPUT);

}

void loop() {
  // put your main code here, to run repeatedly:
digitalWrite(ssPin,HIGH); 

Serial.print("Status des ssPin ist:");
Serial.println(digitalRead(ssPin)); 
Serial.print("Status des miPin ist:");
Serial.println(digitalRead(miPin)); 
delay(1000);
}

digitalWrite(ssPin,HIGH); //SS auf High gesetzt

Was soll der Kommentar? DAS sehe ich - steht doch klar direkt davor! WAS bezweckst Du damit?
DAS gehört in einen Kommentar!

MfG

@postmaster-ino

Der Kommentar war lediglich für mich.
Ich habe noch nicht viel Ahnung vom Programmieren und deswegen der Kommentar.

Was dein Kommentar jetzt hier zu suchen hat ist wohl die wichtigere Frage, helfen tut er mir nämlich bei meinem Problem mit den RFID-Lesegeräten nicht.

MFG

Hi

Doch doch - Der hilft Dir - denn auch Du wirst Dich, gerade in Deiner Situation - noch nicht wirklich viel Durchblick, in zwei Wochen fragen, WAS MACHE ICH HIER ÜBERHAUPT - und dann ist der Kommentar 'digitalWrite(ssPin,HIGH)' leider Nichts wert - denn genau Das steht schon vorne.

Sollten die Kommentare nicht allgemein für die Leser Deiner Sketche gedacht sein, müssen wir hier gar nicht weiter machen - ohne Kommentaren ist JEDER Sketch nach kürzester Zeit kaum noch zu verstehen - wenn dann noch 'interessante' Programmier-Wege hinzu kommen, war's Das komplett.

Wenn Du keine Hilfe haben möchtest, verstehe ich Dich aber noch viel weniger - angeben täte man eher mit einem funktionierendem Sketch.

MfG

PS: Ich kann aber auch locker ohne Dich - weil Dein Kommentar hilft nun wirklich Keinem!
Dein Problem habe ich durchaus verinnerlicht, Du aber die Lösungswege der anderen Kommentatoren, noch nicht wirklich.

@postmaster-ino

Danke, werde ich mir merken.

Angeben würde ich, wenn ich es könnte.
Dies ist derzeit noch nicht der Fall.

Ich versuche ja mit disem Sketch den Tipp von Tommy nachzugehen, ob dieser stimmt habe ich gerade eben ja gefragt.

Gruß

Orste

Hi

Den SS-Pin HIGH setzen ginge auch mit einem Stück Draht.
Du kannst aber auch mit dem Arduino messen, was der Miso-Pin so treibt.

Dazu den MISO-Pin an einen analogIN, gerne je Widerstände >1K nach Vdd und GND - somit ergibt sich aufgrund dieses Spannungsteiler Vdd/2 auf dem MISO-Pin - können wir am Analog-Pin A0 messen (und ausgeben).
Wenn SS auf HIGH gesetzt ist, MUSS der Wert 'auf der Hälfte' liegen - der SPI-Slave MUSS den MISO-Pin 'los lassen' - wenn der Pin weiter auf HIGH oder LOW liegt - ist der Slaver 'nicht teamfähig' - dann braucht's auch keinen Bus - Single-Sensoren gehen auch an Single-Pins :wink: (aber eben keine SPI-Sensoren, Die brauchen SPI, auch, wenn Sie nicht ruhig werden -> Ausschuss).

MfG

Hi ortse,

postmaster-ino hat es auf den Punkt gebracht:

Sollten die Kommentare nicht allgemein für die Leser Deiner Sketche gedacht sein, müssen wir hier gar nicht weiter machen - ohne Kommentaren ist JEDER Sketch nach kürzester Zeit kaum noch zu verstehen - wenn dann noch 'interessante' Programmier-Wege hinzu kommen, war's Das komplett.

und das kann ich nur bestätigen.
Ein schlecht kommentierter Code ist kein brauchbarer Code.
Spätestens wenn der Code in mehr als einem Tab steht und eher zusammenkopiert als selber geschrieben, wird es später ganz schwer durchzusteigen.

Was mich aber viel mehr ärgert, das Du Deinen Code im Post offenbar nach der Kritik verändert hast OHNE dies anzumerken.

Das sehe ich problematisch - denn ich sehe jetzt zum ersten Mal in den Thread und musste erst die Uhrzeiten der Beiträge vergleichen um dem inhaltlich zu folgen.

Schade.