Ошибка стека «мягкий сброс 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 говорят мне, что я не единственный, у кого была эта проблема раньше. Приветствуется любой вклад.

, 👍0


2 ответа


Лучший ответ:

1

Я пришел к выводу, что использование RFID с NodeMCU не сработает — я не могу это подтвердить, но я почти уверен, что две библиотеки (ESP8266 и mfrc522) имеют некоторые сложности, вызванные друг другом.

Хорошим обходным решением является использование контактов TX и RX для связи между платой Arduino Nano, имеющей считыватель RFID, и платой NodeMCU. Таким образом, вы можете без проблем отправлять данные NFC на плату WiFi.

,

3

Можете ли вы также попытаться увеличить скорость последовательной передачи данных до fe. 115200 вместо 9600? В некоторых случаях у меня были некоторые проблемы с 9600, потому что некоторые буферы не очищались достаточно быстро и вызывали некоторые сбросы WDT.

Ура, Йорген

,

вот это уже интересно! у меня была эта проблема в обратном порядке. Я думал, что медленнее было «лучше». ПРОГОЛОСОВАНО! :), @tony gil