🛒
0 товаров
0 руб.

Интернет-магазин «Неглупый Дом»


🔐 Проект: безопасное подключение RC522 к 5V Arduino через преобразователь уровней TXS0108E

Во всех остальных RFID-проектах на сайте линии SPI модуля RC522 подключаются напрямую к 5-вольтовым пинам Arduino UNO — на практике это часто работает благодаря запасу напряжения, но формально выходит за характеристики 3.3V-микросхемы модуля. Здесь между Arduino и RC522 стоит TXS0108E, который корректно и безопасно согласует уровни на каждой линии SPI.

Как это работает

RC522 считывает UID карт по шине SPI точно так же, как и в остальных RFID-проектах на сайте — четыре линии (SCK, MOSI, MISO, SS) плюс отдельная линия RST. Разница — именно в электрическом согласовании: вместо прямого провода от 5V-пина Arduino к 3.3V-входу RC522, каждая из этих линий проходит через свой отдельный канал TXS0108E, который преобразует 5-вольтовый сигнал Arduino в безопасный 3.3-вольтовый для RC522 и наоборот — для линии MISO, по которой данные идут в обратную сторону (от RC522 к Arduino).

Именно двунаправленность TXS0108E здесь принципиальна: SPI — это шина, где данные идут в обе стороны (MOSI от Arduino к RC522, MISO от RC522 к Arduino), и простой резистивный делитель напряжения (который работал бы для однонаправленного сигнала) не подошёл бы для линии MISO без искажения сигнала.

Пошаговая сборка

Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.

  1. TXS0108E: сторона HV → 5V и SPI-пины Arduino (SCK → D13, MOSI → D11, MISO → D12, SS → D10, RST → D9, по одному каналу на каждую линию), сторона LV → 3.3V и соответствующие пины RC522, GND общий для обеих сторон.
  2. RC522: питание VCC → 3.3V (от той же линии питания LV-стороны преобразователя), GND → GND.

Скетч

// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.

#include <SPI.h>
#include <MFRC522.h>

const int SS_PIN = 10;
const int RST_PIN = 9;

MFRC522 rfid(SS_PIN, RST_PIN);

unsigned int scanCount = 0;

void setup() {
  Serial.begin(9600);
  SPI.begin();
  rfid.PCD_Init();
  Serial.println("Готов к сканированию карт.");
}

void loop() {
  if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) {
    return;
  }

  scanCount++;
  Serial.print("Сканирование №");
  Serial.print(scanCount);
  Serial.print(", UID: ");

  for (byte i = 0; i < rfid.uid.size; i++) {
    Serial.print(rfid.uid.uidByte[i], HEX);
    Serial.print(" ");
  }
  Serial.println();

  rfid.PICC_HaltA();
}

Библиотеки SPI и MFRC522 ставятся через Менеджер библиотек Arduino IDE — программная часть абсолютно идентична прямому подключению без преобразователя уровней, вся разница именно в физической электрической схеме, а не в коде.

Частые проблемы

Как улучшить проект

Товары по теме

Ещё модули для Arduino: Электронные модули.

← 🔊 парковочный сигнал с учащением сигнала на …📶 удалённое уведомление об обнаружении препя… →

🎁 Купить весь комплект со скидкой 10%

Все 2 товара сразу в корзину: 198 ₽ 178 ₽ (экономия 20 ₽)

Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.

Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.

Корзина


Поиск



Пример: понижающий или DC-DC или mini360 или aw-023 или арт. OZ/WB/YA