מדריך חיבור מודול קורא וכותב RFID RC522 ל-Arduino ו-ESP32:
במדריך זה נלמד כיצד לחבר מודול RFID RC522
לבקר Arduino UNO ולבקר ESP32.
נראה איך המודול מתקשר עם הבקר באמצעות SPI,
איך לקרוא את ה-UID של כרטיס או תג,
ואיך להשתמש במזהה כדי לבצע פעולה בתוכנית.
בנוסף, נסביר מה ההבדל בין RFID לבין כרטיס מגנטי,
כיצד לבדוק אם כרטיס מתאים למודול,
ואיך לבנות מערכת בסיסית שמאשרת או דוחה כרטיס לפי UID.
מהו מודול RFID RC522?
RC522 הוא מודול קריאה וכתיבה המבוסס על השבב MFRC522.
הוא מיועד לתקשורת ללא מגע עם כרטיסים ותגיות תואמים
בתדר 13.56MHz.
כאשר מקרבים כרטיס או תג מתאים לאנטנה של המודול,
הקורא יוצר שדה אלקטרומגנטי ומתקשר עם התג.
הבקר יכול לקרוא מידע בסיסי כמו UID,
ובתגים מתאימים גם לקרוא ולכתוב נתונים בזיכרון.
המודול מתאים לפרויקטים של בקרת כניסה,
זיהוי משתמשים,
מנעול אלקטרוני,
רישום נוכחות,
מערכות אינטראקטיביות וניסויים עם Arduino ו-ESP32.
חשוב לדעת: RC522 אינו קורא פס מגנטי
ואינו מתאים לתגי RFID בתדר 125kHz.
איך RFID עובד?
המודול יוצר שדה אלקטרומגנטי בתדר 13.56MHz
באזור האנטנה שעל הלוח.
כאשר תג תואם נכנס לטווח,
הוא מתקשר עם הקורא ומעביר מידע בהתאם לפרוטוקול הנתמך.
אחד הנתונים הראשונים שניתן לקרוא הוא UID:
רצף בתים שמזהה את הכרטיס או התג.
- ה-RC522 מתקשר עם הבקר בדרך כלל באמצעות SPI.
- הכרטיס או התג מתקשרים עם הקורא ללא מגע.
- UID מאפשר להבדיל בין תג אחד לאחר.
- בחלק מסוגי התגים ניתן גם לקרוא ולכתוב מידע בזיכרון.
בפרויקט בסיסי ניתן לשמור UID של כרטיס מורשה בתוכנית.
כאשר מוצג כרטיס חדש,
הבקר קורא את ה-UID ומשווה אותו לערך השמור.
פינים במודול RC522
| פין | תפקיד |
|---|---|
| SDA / SS | בחירת המודול במצב SPI |
| SCK | קו שעון SPI |
| MOSI | נתונים מהבקר למודול |
| MISO | נתונים מהמודול לבקר |
| IRQ | יציאת פסיקה אופציונלית |
| GND | אדמה |
| RST | איפוס המודול |
| 3.3V | מתח הזנה למודול |
חשוב לשים לב:
למרות שעל המודול הפין הראשון מסומן לעיתים SDA,
בחיבור SPI הוא משמש כ-SS או CS.
רכיבים נדרשים
- מודול קורא וכותב RFID RC522
- כרטיס או תג RFID תואם 13.56MHz
- Arduino UNO או ESP32
- Breadboard
- חוטי Dupont
- כבל USB
- Arduino IDE
- ספריית MFRC522
התקנת הספרייה
לפני העלאת הקוד יש להתקין את ספריית MFRC522.
ב-Arduino IDE פותחים את Library Manager,
מחפשים:
MFRC522
ולאחר מכן מתקינים את הספרייה המתאימה.
הקוד במדריך משתמש גם בספריית SPI,
שכבר כלולה בסביבת Arduino.
חיבור RC522 ל-Arduino UNO

הערה חשובה לפני החיבור
מודול RC522 מיועד בדרך כלל להזנה של 3.3V.
אין לחבר את פין המתח שלו ישירות ל-5V.
יש להשתמש בחוטים קצרים יחסית,
מכיוון שחיבורי SPI ארוכים או לא יציבים
עלולים לגרום לשגיאות תקשורת.
| RC522 | Arduino UNO |
| 3.3V | 3.3V |
| GND | GND |
| SDA / SS | D10 |
| SCK | D13 |
| MOSI | D11 |
| MISO | D12 |
| RST | D9 |
הסבר חיבור
Arduino UNO מתקשר עם RC522 באמצעות SPI.
הפינים D11, D12 ו-D13 משמשים לקווי MOSI, MISO ו-SCK.
הפין D10 משמש לבחירת המודול,
והפין D9 משמש לאיפוס.
לאחר החיבור מומלץ לבדוק את המודול תחילה באמצעות קוד פשוט לקריאת UID.
קוד Arduino בסיסי לקריאת UID
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN);
void setup() {
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
delay(4);
Serial.println("RC522 ready");
Serial.println("Place a card near the reader");
}
void loop() {
if (!rfid.PICC_IsNewCardPresent()) {
return;
}
if (!rfid.PICC_ReadCardSerial()) {
return;
}
Serial.print("UID:");
for (byte i = 0; i < rfid.uid.size; i++) {
Serial.print(" ");
if (rfid.uid.uidByte[i] < 0x10) {
Serial.print("0");
}
Serial.print(rfid.uid.uidByte[i], HEX);
}
Serial.println();
rfid.PICC_HaltA();
rfid.PCD_StopCrypto1();
}הסבר הקוד
בתחילת התוכנית מופעלים ממשק SPI ומודול RC522.
בתוך loop הקוד בודק אם הוצג כרטיס חדש.
אם לא נמצא כרטיס,
התוכנית חוזרת להתחלת הלולאה.
כאשר כרטיס מזוהה,
הקוד קורא את הנתונים שלו ומציג את ה-UID ב-Serial Monitor.
לדוגמה,
ניתן לקבל תוצאה כמו:
UID: 93 7A 21 0F
ה-UID בפועל יהיה שונה בין כרטיסים ותגים שונים.
חיבור RC522 ל-ESP32

הערה חשובה לפני החיבור
ESP32 עובד ברמת לוגיקה של 3.3V,
ולכן הוא מתאים מבחינת רמות המתח למודול RC522.
גם כאן יש להזין את המודול מפין 3V3
ולא מפין 5V.
| RC522 | ESP32 |
| 3.3V | 3V3 |
| GND | GND |
| SDA / SS | GPIO5 |
| SCK | GPIO18 |
| MOSI | GPIO23 |
| MISO | GPIO19 |
| RST | GPIO22 |
הסבר חיבור
בדוגמה זו משתמשים בממשק SPI של ESP32:
- GPIO18 עבור SCK.
- GPIO19 עבור MISO.
- GPIO23 עבור MOSI.
- GPIO5 עבור SS.
GPIO22 משמש כאן לפין RST של הקורא.
קוד ESP32 בסיסי לקריאת UID
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 5
#define RST_PIN 22
MFRC522 rfid(SS_PIN, RST_PIN);
void setup() {
Serial.begin(115200);
SPI.begin(18, 19, 23, SS_PIN);
rfid.PCD_Init();
delay(4);
Serial.println("RC522 ready");
Serial.println("Place a card near the reader");
}
void loop() {
if (!rfid.PICC_IsNewCardPresent()) {
return;
}
if (!rfid.PICC_ReadCardSerial()) {
return;
}
Serial.print("UID:");
for (byte i = 0; i < rfid.uid.size; i++) {
Serial.print(" ");
if (rfid.uid.uidByte[i] < 0x10) {
Serial.print("0");
}
Serial.print(rfid.uid.uidByte[i], HEX);
}
Serial.println();
rfid.PICC_HaltA();
rfid.PCD_StopCrypto1();
}הסבר הקוד
הקוד עבור ESP32 עובד באותו עיקרון כמו הקוד עבור Arduino UNO.
ההבדל העיקרי הוא הגדרה מפורשת של פיני SPI
באמצעות SPI.begin.
כאשר מקרבים כרטיס,
ה-UID שלו מוצג ב-Serial Monitor.
טיפים לעבודה נכונה
- להזין את המודול מ-3.3V.
- להשתמש בחוטי SPI קצרים ככל האפשר.
- להתחיל מקריאת UID לפני בניית מערכת מלאה.
- לבדוק את UID של כל כרטיס בנפרד.
- לשמור על הכרטיס קרוב ובמקביל לאנטנה בזמן הקריאה.
- לא להשתמש בתגי 125kHz עם RC522.
- לא לבלבל בין הפין SDA / SS לבין קו SDA של I2C.
פרויקט לדוגמה
מערכת בקרת כניסה עם RC522, מסך LCD ומנוע Servo

בפרויקט זה משתמשים במודול RFID RC522 יחד עם Arduino UNO
כדי לבנות מערכת בקרת כניסה.
כאשר מקרבים כרטיס,
הבקר קורא את ה-UID ובודק אם הכרטיס מורשה.
המערכת כוללת גם מסך LCD בגודל 16×2 בתקשורת I2C
ומנוע Servo.
המסך מציג את מצב הגישה,
וה-Servo משמש לפתיחה וסגירה של מנגנון הנעילה.
מעבר למודול RC522 עצמו,
הפרויקט משלב זיהוי משתמש,
תצוגה למשתמש ושליטה במנגנון מכני.
לכן הוא מתאים ללמידה על RFID,
תקשורת SPI,
מסכי LCD ובקרת Servo במערכת אחת.
סיכום
מודול RFID RC522 הוא מודול נוח לקריאה וכתיבה של כרטיסים ותגיות תואמים
בתדר 13.56MHz.
באמצעות SPI ניתן לחבר אותו ל-Arduino או ESP32,
לקרוא UID,
לזהות כרטיסים שונים
ולהפעיל פעולות בהתאם לזהות הכרטיס.
המודול מתאים לפרויקטים של בקרת כניסה,
מנעול אלקטרוני,
רישום נוכחות,
זיהוי משתמשים ומערכות אינטראקטיביות.
כדי להתחיל מומלץ לקרוא תחילה את ה-UID של הכרטיס,
לבדוק שהתקשורת יציבה
ורק לאחר מכן להוסיף LED, Buzzer, Servo או מערכת חיצונית אחרת.
חשוב לזכור שהמודול עובד ב-3.3V,
אינו קורא כרטיסים מגנטיים
ואינו מתאים לתגי RFID בתדר 125kHz.