Библиотека I2C MIFARE RC522
Я просматривал эту ссылку на интерфейсе RFID I2C. Я добавил библиотеку в arduino, но в main.cpp
вижу ошибку:
В функции 'void setup()':
sketch_mar27a:16: ошибка: нет соответствующей функции для вызова 'TwoWire::begin(int, int)'
Wire.begin(SDA_PIN, SCL_PIN); // Инициализировать I2C
Я просмотрел файл Wire.cpp
и обнаружил, что нет такой функции-члена, перегруженной двумя параметрами.
Как решить проблему? Даже если я исправлю эту одну проблему, я не уверен, что этот код работает.
Где я могу найти работающий код с интерфейсом I2C? У меня проблема с ресурсами, и SPI PORT не может быть использован.
Код:
#include <Wire.h>
#include "MFRC522_I2C.h"
#define SDA_PIN 5
#define SCL_PIN 6
#define RST_PIN 3
MFRC522 mfrc522(0x28, RST_PIN); // Создать экземпляр MFRC522.
void ShowReaderDetails();
void setup() {
Serial.begin(9600); // Инициализируем последовательную связь с ПК
Wire.begin(SDA_PIN, SCL_PIN); // Инициализировать I2C
mfrc522.PCD_Init(); // Инициализация MFRC522
ShowReaderDetails(); // Показать сведения о PCD — сведения о считывателе карт MFRC522
Serial.println(F("Scan PICC to see UID, type, and data blocks..."));
}
void loop() {
// Ищем новые карты
if ( ! mfrc522.PICC_IsNewCardPresent()) {
return;
}
// Выбираем одну из карт
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}
// Дамп отладочной информации о карте; PICC_HaltA() вызывается автоматически
mfrc522.PICC_DumpToSerial(&(mfrc522.uid));
}
void ShowReaderDetails() {
// Получить версию программного обеспечения MFRC522
byte v = mfrc522.PCD_ReadRegister(mfrc522.VersionReg);
Serial.print(F("MFRC522 Software Version: 0x"));
Serial.print(v, HEX);
if (v == 0x91)
Serial.print(F(" = v1.0"));
else if (v == 0x92)
Serial.print(F(" = v2.0"));
else
Serial.print(F(" (unknown)"));
Serial.println("");
// Когда возвращается 0x00 или 0xFF, связь, вероятно, не удалась
if ((v == 0x00) || (v == 0xFF)) {
Serial.println(F("WARNING: Communication failure, is the MFRC522 properly connected?"));
}
}
@Rajesh, 👍0
Обсуждение1 ответ
SPI — это многоведомая шина. Если у вас не закончились свободные контакты для использования в CS или у вас есть ведомые устройства, которые плохо работают, вы также можете подключить свой модуль RFID к шине SPI. Кроме того, ваш скетч, скорее всего, скомпилируется, если вы исправите неправильную строку просто на Wire.begin()
. Ваша библиотека использует стандартную библиотеку Wire, но предполагает, что целью является ESP8266, чья версия Wire имеет расширенный метод begin()
.
Но все это может оказаться бесполезным, поскольку имеющийся у вас MFRC522 (при условии, что это дешевый синий модуль) жестко подключен к использованию только интерфейса SPI. Если только вы не готовы модифицировать печатную плату (вырезать дорожки и т. д.), как это сделали другие.
Спасибо за информацию, я не использую никаких устройств SPI, а контакты SP используются для других целей, поэтому я решил попробовать I2C. У меня тоже есть дешевый китайский синий модуль. Так что нет смысла пытаться, я думаю. А работает ли в этом модуле интерфейс UART?, @Rajesh
@Rajesh Нет, UART тоже не работает, SPI - это то, для чего он был создан. Все остальные контакты NodeMCU используются? Если вам действительно необходимо использовать RFID, вас интересует только уникальный идентификатор каждой карты, и вы не собираетесь хранить данные на карте, вы можете попробовать дешевые считыватели/карты 125 кГц, например: https://www.aliexpress .com/item/Free-shipping-10pcs-lot-UART-125Khz-EM4100-RFID-Card-Key-ID-Reader-Module-RDM6300-RDM630-For/32284373493.html. Они используют интерфейс UART, и вам действительно нужен только контакт RX, поскольку они доступны только для чтения., @SoreDakeNoKoto
- NodeMCU с RFID RC522 и LCD-модулем интерфейса I2C вместе
- Эмуляция стандартного периферийного USB-устройства Mifare с помощью RFID-RC522
- Как перевести Arduino Nano в спящий режим с низким энергопотреблением (<0,05 мА)
- MAX30100 не работает
- Ведомое устройство Arduino с двумя мастерами, использующими одну и ту же шину I2C?
- Не удалось выделить SSD1306 при добавлении константы
- PN532 не обнаруживает RFID-карту при подключении к ESP32 в режиме I2C, но отлично работает с Arduino Uno
- Сброс адреса I2c — MLX90614
Пожалуйста, отредактируйте свой ответ и включите скетч "sketch_mar27a"., @VE7JRO
пример кода в этой ссылке предназначен для nodemcu (т.е. ESP8266) - проводная библиотека ESP8266 ДЕЙСТВИТЕЛЬНО имеет "пустое начало (int sda, int scl)" - поэтому кажется, что используемая вами библиотека предназначена для ESP8266., @Jaromanda X