Hallo,
nach dem ich jetzt allerhand recherchiert habe und damit noch nicht weitergekommen bin frage ich hier:
Ich probiere gerade an einem ESP8266 (WeMos D1 mini) einen RFID-Reader Typ RC522 in Betrieb zu nehmen.
Das klappt aber bisher nicht. Ich bekomme vom Beispielsketch DumpInfo folgende Meldung angezeigt:
⸮Dt⸮tAhlE⸮⸮`CI⸮⸮Firmware Version: 0x0 = (unknown)
WARNING: Communication failure, is the MFRC522 properly connected?
Scan PICC to see UID, SAK, type, and data blocks...
Es gibt eine library MFRC522.h die ich über den library-manager installiert habe .
link zu github GitHub - miguelbalboa/rfid: Arduino RFID Library for MFRC522
Ich habe zwei RFID-Reader von Christians-shop gekauft link RFID RC-522 Kartenleser Transponder Modul für Arduino, Raspberry Pi,
Der Beispielsketch DumpInfo lässt sich kompilieren.
Bei der Initialisierung des RC522-Objektes werden nur zwei Pins angegeben.
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance
In dem Beispielsketch DumpInfo ist in den Kommentaren eine PIN-Belegung für Arduino-Uno drin.
Darin sind die SPI-pins mit SS_PIN beginnend aufsteigend. Daraus vermute ich die IO-Pins müssen
mit SS beginnend aufsteigend - in der in der Library angegebenen Reihenfolge angeschlossen werden.
Ich habe allerdings im Internet ganz unterschiedliche Belegungen im Zusammenspiel mit dem ESP8266 gefunden.
Auch welche die eine nicht aufsteigende Reihenfolge der IO-Pins haben.
Ich habe das gelötete Verbindungskabel durchgepiepst Verbindungsleitungen sind IO.
Ich habe die RFID-Tags mit dem Handy getestet kann sie auslesen.
Ich bekomme aber schon gar keine Kommunikation mit dem RFID-Reader via SPI zustande.
Deshalb habe ich jetzt mehrere Fragen:
Frage 1:
Ist die MFRC522.h-library so intelligent einfach alle IO-Pins abzuklappern um zu sehen wo die MISO/MOSI/SCK-pins sind? Glaube ich ja eher nicht. Und habe dann als SPI-Pins folgende Belegung genommen:
SS GPIO12
MOSI GPIO 13
MISO GPIO 14
SCK GPIO 15
Frage 2:
macht die MFRC522.h-library eine software-SPI oder will die die die hardware-seitig vorhandene SPI benutzen? Die hat auf dem ESP8266 nämlich wieder eine andere Belegung.
Frage 3:
Ich habe ein Zweikanal 100 MHz-Speicher-Oszilloskop. Wie könnte ich mit dem Oszilloskop identifizieren ob
- der RC522-reader vernünftige SPI-Kommunikation probiert?
bzw. ob das Wemos D1-mini passende SPI-Bus-Signale generiert?
Die im Set mitgelieferten RFID-Tags kann ich mit dem Handy ohne Probleme auslesen.
Frage 4:
Mit MOSI / MISO ist das ja so eine Sache. Wer ist jetzt in dieser Anwendung der SPI-Master und aus welcher Sicht
wird dann MOSI/MISO bestimmt?
Ihr seht es gibt noch eine Menge Variablen die ich durchchecken muss um das Problem einzugrenzen.
Ich habe mit zwei WeMos D1 minis und mit zwei RC522-readern getestet. Immer communication-failure.
viele Grüße
Stefan
Hier noch der Sketch mit dem ich getestet habe:
/*
* --------------------------------------------------------------------------------------------------------------------
* Example sketch/program showing how to read data from a PICC to serial.
* --------------------------------------------------------------------------------------------------------------------
* This is a MFRC522 library example; for further details and other examples see: https://github.com/miguelbalboa/rfid
*
* Example sketch/program showing how to read data from a PICC (that is: a RFID Tag or Card) using a MFRC522 based RFID
* Reader on the Arduino SPI interface.
*
* When the Arduino and the MFRC522 module are connected (see the pin layout below), load this sketch into Arduino IDE
* then verify/compile and upload it. To see the output: use Tools, Serial Monitor of the IDE (hit Ctrl+Shft+M). When
* you present a PICC (that is: a RFID Tag or Card) at reading distance of the MFRC522 Reader/PCD, the serial output
* will show the ID/UID, type and any data blocks it can read. Note: you may see "Timeout in communication" messages
* when removing the PICC from reading distance too early.
*
* If your reader supports it, this sketch/program will read all the PICCs presented (that is: multiple tag reading).
* So if you stack two or more PICCs on top of each other and present them to the reader, it will first output all
* details of the first and then the next PICC. Note that this may take some time as all data blocks are dumped, so
* keep the PICCs at reading distance until complete.
*
* @license Released into the public domain.
*
* Typical pin layout used:
* -----------------------------------------------------------------------------------------
* MFRC522 Arduino Arduino Arduino Arduino Arduino
* Reader/PCD Uno/101 Mega Nano v3 Leonardo/Micro Pro Micro
* Signal Pin Pin Pin Pin Pin Pin
* -----------------------------------------------------------------------------------------
* RST/Reset RST 9 5 D9 RESET/ICSP-5 RST
* SPI SS SDA(SS) 10 53 D10 10 10
* SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16
* SPI MISO MISO 12 / ICSP-1 50 D12 ICSP-1 14
* SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15
*/
#include <SPI.h>
#include <MFRC522.h>
#define RST_PIN 16 // Configurable, see typical pin layout above
#define SS_PIN 12 // Configurable, see typical pin layout above
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance
void setup() {
Serial.begin(9600); // Initialize serial communications with the PC
while (!Serial); // Do nothing if no serial port is opened (added for Arduinos based on ATMEGA32U4)
SPI.begin(); // Init SPI bus
mfrc522.PCD_Init(); // Init MFRC522
delay(1000); // Optional delay. Some board do need more time after init to be ready, see Readme
mfrc522.PCD_DumpVersionToSerial(); // Show details of PCD - MFRC522 Card Reader details
Serial.println(F("Scan PICC to see UID, SAK, type, and data blocks..."));
}
void loop() {
// Reset the loop if no new card present on the sensor/reader. This saves the entire process when idle.
if ( ! mfrc522.PICC_IsNewCardPresent()) {
return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}
// Dump debug info about the card; PICC_HaltA() is automatically called
mfrc522.PICC_DumpToSerial(&(mfrc522.uid));
}