Контакты NodeMcu и светодиод RGB
Я использую NodeMcu для своего проекта, и у меня заканчиваются контакты. У меня подключен модуль MFRC522, ИК-приемник, зуммер и светодиод RGB. Я столкнулся с проблемой: всякий раз, когда я начинаю сканирование RFID-меток с помощью модуля MFRC522, встроенный светодиод начинает очень быстро мигать, а цвет светодиода RGB меняется на неопределенный.
Я посмотрел определения контактов NodeMcu, но не смог найти информацию о том, какие контакты я могу использовать для этого, а какие нет, и почему это происходит только после запуска RFID-считывателя.
р>Это мой скетч проводки:
Я нашел это изображение макета контактов, а также техническая таблица.
Код не должен иметь большого значения, поскольку он работает до запуска считывателя RFID, но на всякий случай вот настройка считывателя:
#define SS_PIN D4 // SPI — вывод выбора ведомого устройства
#define RST_PIN D2 // SPI — вывод сброса — фактически не подключен
MFRC522 mfrc522(SS_PIN, RST_PIN);
// Начальная настройка для SPI и MFRC522
bool rfidSetupCompleted = false;
void setupReader()
{
SPI.begin();
mfrc522.PCD_Init();
rfidSetupCompleted = true;
}
Вот определения контактов светодиода RGB:
#define LED_BLUE D8
#define LED_GREEN D3
#define LED_RED D2
Любая помощь приветствуется! Я предполагаю, что использую штифт, который используется для других целей (например, D8), но не могу понять, какой именно и почему. Я пытался поменять контакты и переключить D0 и D8 (зуммер и один контакт светодиода), но безуспешно. Я также пробовал отключать каждый контакт светодиода отдельно, но это тоже ничего не дало.
@Johannes Mols, 👍0
Обсуждение2 ответа
Лучший ответ:
Я исправил проблему, поменяв местами контакты D4 и D8, а затем настроив MFRC522 в самом запуске программы. Первоначально я настроил его еще до того, как начал использовать, поэтому цвет изменился при первом сканировании.
SPI.begin устанавливает режим io15 (D8), даже если он не используется в качестве контакта SS для вашего устройства. Лучше использовать io15 (D8) в качестве контакта выбора подчиненного устройства для одного из подчиненных устройств. В вашем случае для одного устройства, подключенного к шине SPI.
Пинья io 0 (D3) и io 2 (D4) имеют встроенные подтягивающие напряжения, поскольку они являются контактами конфигурации загрузки. Установите для них НИЗКИЙ уровень сразу после установки для них режима pinMode, чтобы ток не попадал на ножки светодиодов RGB.
- FastLED: невозможно адресовать светодиод индивидуально.
- Как заставить 5-вольтовое реле работать с NodeMCU
- ESP8266 не подключается к Wi-Fi
- Разница между этими двумя платами NodeMCU?
- NodeMCU - использовать кнопку flash в качестве входного сигнала в loop()
- Как определить размер Flash?
- Как изменить имя модуля ESP8266-12E по умолчанию
- Простой запрос GET с ESP8266HTTPClient
какую библиотеку для MFRC522 вы используете? Я думаю, вам следует настроить все контакты SPI для библиотеки, чтобы установить правильный интерфейс SPI. Или, если библиотека не инициализирует библиотеку SPI, вам следует сделать это в setup()., @Juraj
@Юрай, я использую это: https://github.com/miguelbalboa/rfid Библиотека принимает только эти два параметра, поэтому я не уверен, нужно ли это. И я инициализирую библиотеку SPI в своем коде установки., @Johannes Mols
@Juraj У меня это есть в методе настройки, который я опубликовал выше. Это выполняется до того, как я начну использовать MFRC522. У меня так получилось, потому что я разбил код на несколько файлов., @Johannes Mols
тогда SPI выглядит нормально, потому что D5, D6 и D7 являются выводами SPI по умолчанию в библиотеке SPI., @Juraj
@Юрай, да, именно так. У меня есть один провод, подключенный к D8, который, согласно этому изображению, является «HCS»: https://pradeepsinghblog.files.wordpress.com/2016/04/nodemcu_pins.png?w=616. Я не уверен, может ли это вызвать проблемы, @Johannes Mols
D8 — ведомый. Выберите, если esp8266 является ведомым. в вашем случае esp8266 является ведущим, поэтому вы можете выбирать контакты выбора подчиненного устройства/кабеля для устройств на шине SPI. Обычно в качестве вывода CS для первого устройства используется вывод SS, но это не является обязательным., @Juraj
проблема может быть в питании платы, @Juraj
Модуль MFRC522 3,3 В?, @Juraj
Это означает, что я не могу использовать этот контакт для чего-то еще, когда хочу использовать MFRC522? Имеет смысл, что он делает странные вещи, когда я начинаю его использовать. И да, MFRC522 имеет напряжение 3,3 В, как и NodeMcu. Так что это не должно быть проблемой., @Johannes Mols
Сейчас я поменял местами D4 и D8, не знаю, почему у меня этого не было изначально. Встроенный светодиод больше не мигает, но светодиод RGB по-прежнему меняет свой цвет. Может ли это быть потому, что D4 — это TXD1, а D8 — TXD2? Он показывает мне связь между ними, когда я подключаю его в Fritzing. Могу ли я использовать для этого какие-либо другие контакты NodeMcu?, @Johannes Mols
@Juraj Я обнаружил, что цвета работают правильно, когда я запускаю сканирование с помощью MFRC522 во второй раз. Во время сканирования он должен быть синим, но при первом сканировании он становится фиолетовым. При повторном нажатии кнопки запуска он работает корректно. Итак, я предполагаю, что мне нужно настроить читалку в самом начале программы или что-то подобное., @Johannes Mols
@Juraj Я исправил это, настроив MFRC522 в самом начале программы. Спасибо за помощь!, @Johannes Mols