Оригинальное название: M5Stack RFID2 Unit
Чип: WS1850S

Модуль RFID

Где можно применить
  • Контроль доступа
  • Авторизация пользователей
  • Учёт посетителей
  • Умные замки
  • Игровые механики (карты/ключи)
Этот модуль позволяет роботу работать с бесконтактными RFID-картами и метками.

Он может:
  • считывать UID карты
  • записывать данные
  • распознавать пользователя

Работает через магнитное поле — карту не нужно вставлять, достаточно поднести.

Что это такое

Основные характеристики

Чип:
WS1850S
Частота:
13.56 МГц
Интерфейс:
I2C (0×28)
Поддержка:
ISO14443A, MIFARE, NTAG
Дальность:
до 20 мм
Буфер:
64 байта
Температура:
-20…+85°C
Пример кода

#include <Wire.h> // Подключение библиотеки для работы по I2C
#include "MFRC522.h" // Подключение библиотеки для RFID модуля (используйте свою версию, если нужно)
// Адрес I2C для RFID2 модуля по спецификации
#define RFID_I2C_ADDRESS 0x28
// Создаём объект для работы с RFID по I2C, передавая адрес модуля
MFRC522 rfid(RFID_I2C_ADDRESS);
void setup() {
Serial.begin(9600); // Инициализация Serial для вывода данных на монитор порта
delay(100); // Небольшая задержка для стабилизации
Wire.begin(); // Инициализация I2C шины
rfid.PCD_Init(); // Инициализация RFID модуля (переход в рабочий режим)
}
void loop() {
// Serial.println("Готов к чтению карт"); // Сообщение о готовности к работе
// Проверяем, есть ли новая карта рядом и удастся ли считать её UID
if (rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial()) {
// Если карта обнаружена и UID успешно прочитан, выводим UID в HEX
Serial.print("Карта обнаружена. UID: ");
for (byte i = 0; i < rfid.uid.size; i++) {
// Добавляем ведущий ноль, если байт меньше 0x10, чтобы формат был читаемым
Serial.print(rfid.uid.uidByte[i] < 0x10 ? "0" : "");
Serial.print(rfid.uid.uidByte[i], HEX); // Выводим байт UID в шестнадцатеричном формате
if (i != rfid.uid.size - 1) Serial.print(":"); // Разделитель между байтами
}
Serial.println(); // Переходим на новую строку после вывода UID
// После чтения карты, отправляем команду остановки (халта) для следующего чтения
rfid.PICC_HaltA();
}else{
Serial.println("Приложи карту");
}
delay(500); // Небольшая задержка перед следующей проверкой
}