Ошибка стека «мягкий сброс WDT»: RFID-RC522 с NodeMCU
Я облазил весь Интернет, пытаясь найти решение этой проблемы, но после целой недели интенсивных поисков в Google я ничего не нашел.
Что я пытаюсь сделать:
Я просто пытаюсь использовать считыватель RFID-RC522 NFC на плате разработки NodeMCU (построенной на ESP8266) с библиотекой mfrc522.
Проблема:
При запуске библиотеки mfrc522, достижении строки mfrc522.PCD_Init();
Serial выводит следующую "ошибку":
Soft WDT reset
ctx: cont
sp: 3ffefa10 end: 3ffefc40 offset: 01b0
>>>stack>>>
3ffefbc0: 00241001 00000001 3ffeec20 40106895
3ffefbd0: 00000002 3ffee9d8 3ffee9f4 40202794
3ffefbe0: 402010b2 00000001 00000032 402010a7
3ffefbf0: 3fffdad0 00000010 3ffee9d8 4020290d
3ffefc00: 402010b2 3ffee9d8 3ffee9d8 40202a01
3ffefc10: feefeffe 00000000 3ffeebec 40202080
3ffefc20: feefeffe 00000000 3ffeec08 40203e08
3ffefc30: feefeffe feefeffe 3ffeec20 40100108
<<<stack<<<
R+⸮⸮⸮
Я нашел инструмент, который может переводить ошибку EspExceptionDecoder, переведенная ошибка:
Decoding 10 results
0x40106895: __digitalWrite at C:\Users\my_user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\cores\esp8266/core_esp8266_wiring_digital.c line 84
0x40202794: MFRC522::PCD_ReadRegister(MFRC522::PCD_Register) at C:\Users\my_user\Documents\Arduino\libraries\MFRC522\src/MFRC522.cpp line 1141
0x402010b2: delay at C:\Users\my_user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\cores\esp8266/core_esp8266_wiring.c line 54
0x402010a7: delay at C:\Users\my_user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\cores\esp8266/core_esp8266_wiring.c line 51
0x4020290d: MFRC522::PCD_Reset() at C:\Users\my_user\Documents\Arduino\libraries\MFRC522\src/MFRC522.cpp line 1141
0x402010b2: delay at C:\Users\my_user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\cores\esp8266/core_esp8266_wiring.c line 54
0x40202a01: MFRC522::PCD_Init() at C:\Users\my_user\Documents\Arduino\libraries\MFRC522\src/MFRC522.cpp line 1141
0x40202080: setup at C:\Users\my_user\OneDrive\Arduino\projekter\RFID_DumpInfo_test/RFID_DumpInfo_test.ino line 53
0x40203e08: loop_wrapper at C:\Users\my_user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\cores\esp8266/core_esp8266_main.cpp line 57
0x40100108: cont_norm at C:\Users\my_user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\cores\esp8266/cont.S line 109
Когда строка mfrc522.PCD_init();
закомментирована, ошибка стека не появляется.
Чтение тегов NFC раньше работало на устройстве NodeMCU, и я иногда сталкивался с этой ошибкой при добавлении одной простой строки типа var1 = var2;
где-то в цикле, но теперь ошибка есть постоянно, даже с кодом, который когда-то работал - однако я изменил пин-загрузку и подозреваю, что проблема в этом.
Что я пробовал:
- С настраиваемыми выводами я испробовал большинство возможных комбинаций. подумайте о том, чтобы попробовать и SS, и RST на каждом доступном выводе.
- это Github примеры предложений
- это учебное пособие.
- 3 разных модуля RFID-RC522 (одной модели)
- 2 разных устройства NodeMCU (одной модели)
Расположение контакта:
Мое расположение выводов для модуля RFID-RC522 выглядит следующим образом;
- ПДД (СС): D4
- RST: D3
- СКК: D5
- MOSI: D7
- МИСО: D6
- Земля: Земля
- 3 на 3: 3 на 3
Информация о проекте Arduino:
- IDE 1.8.5 для Arduino
- Последняя версия MFRC522 из диспетчера библиотек
- Плата: NodeMCU 1.0 (модуль ESP-12E)
Код:
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN D4
#define RST_PIN D3
MFRC522 mfrc522(SS_PIN, RST_PIN);
void setup() {
Serial.begin(9600);
delay(100);
SPI.begin();
delay(100);
mfrc522.PCD_Init();
mfrc522.PCD_DumpVersionToSerial();
Serial.println(F("Scan PICC to see UID, SAK, type, and data blocks..."));
}
Я занимаюсь этой проблемой уже несколько дней, и мои поисковые запросы в Google говорят мне, что я не единственный, у кого была эта проблема раньше. Приветствуется любой вклад.
@Albert MN., 👍0
2 ответа
Лучший ответ:
Я пришел к выводу, что использование RFID с NodeMCU не сработает — я не могу это подтвердить, но я почти уверен, что две библиотеки (ESP8266 и mfrc522) имеют некоторые сложности, вызванные друг другом.
Хорошим обходным решением является использование контактов TX и RX для связи между платой Arduino Nano, имеющей считыватель RFID, и платой NodeMCU. Таким образом, вы можете без проблем отправлять данные NFC на плату WiFi.
Можете ли вы также попытаться увеличить скорость последовательной передачи данных до fe. 115200 вместо 9600? В некоторых случаях у меня были некоторые проблемы с 9600, потому что некоторые буферы не очищались достаточно быстро и вызывали некоторые сбросы WDT.
Ура, Йорген
- Как определить размер Flash?
- WebSocketsServer.h: No such file or directory
- NodeMCU с RFID RC522 и LCD-модулем интерфейса I2C вместе
- В ESP-12E NodeMCU, какой выход PIN A0?
- Преобразование byte* в int в Arduino
- Каково использование зарезервированных контактов и контактов SDD2, SDD3 NodeMCU?
- Было найдено несколько библиотек для «WiFiClient.h» с помощью nodemcu.
- NodeMCU (Arduino IDE) «DynamicJsonBuffer» не был объявлен в этой области
вот это уже интересно! у меня была эта проблема в обратном порядке. Я думал, что медленнее было «лучше». ПРОГОЛОСОВАНО! :), @tony gil