KEEN SIDE успешно заменяет аналогичные продукты таких известных брендов, как Phoenix Contact, Weidmueller, Degson, Winstar, Hsuan Mao, KLS, G-NOR, Mean Well и др.
Новичок
 
Регистрация: 28.05.2020
Сообщений: 4
Репутация: 10
0 2
0 0
 
11.10.2020 21:50 #1
Сделал считыватель для СКУД(она на сервере крутится) с использованием ESP32 и RC522. Все работает как надо, только периодически устройство зависает(может несколько дней работать, а потом зависнуть, а бывает, что несколько раз на день зависает), не реагирует на поднесение RFID-меток. При этом Wi-Fi соединение остается активным в роутере. До этого такое же устройство собирал на Arduino + W550 + RC522 - симптомы абсолютно такие же, все работает, но периодически виснет. Пробовал несколько экземпляров контроллеров и датчиков, со всеми такая история. Я подозреваю, что тут какая-то проблема с RC522. Подскажите, пожалуйста как можно решить эту проблему?

Вот код:

#include <SPI.h>
#include <MFRC522.h>
#include <WiFi.h>
#include "esp32-hal-ledc.h"

#define RST_PIN 22 // Configurable, see typical pin layout above
#define SS_PIN 21 // Configurable, see typical pin layout above

const char* ssid = "TP-LINK";
const char* password = "password";
const char* host = "site.com";
const char* idBranch = "1";
const char* rfid = "123";

MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance
unsigned long uidDec, uidDecTemp; // для храниения номера метки в десятичном формате

//Реле
int in1 = 5;
//Синий. Готовность к работе.
int inputReady = 13;
//Зеленый. Есть доступ.
int inputAccessAllowed = 2;
//Красный. Нет доступа.
int inputAccessDenied = 4;
//Динамик
int buzzer = 12;

void setup() {
SPI.begin(); // инициализация SPI / Init SPI bus.
delay(10);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
mfrc522.PCD_Init(); // инициализация MFRC522 / Init MFRC522 card.

//Реле
pinMode(in1, OUTPUT);
digitalWrite(in1, LOW);

//Синий. Готовность к работе.
pinMode(inputReady, OUTPUT);
//Зеленый. Есть доступ.
pinMode(inputAccessAllowed, OUTPUT);
//Красный. Нет доступа.
pinMode(inputAccessDenied, OUTPUT);
//Динамик
pinMode(buzzer, OUTPUT);

ledcSetup(0, 50, 8);
ledcAttachPin(buzzer, 0);

digitalWrite(inputReady, HIGH);
}

void loop() {
//Если Wi-Fi отвалился, то перезагружаемся
if (WiFi.status() != WL_CONNECTED) {
ESP.restart();
}

// Поиск метки
if ( ! mfrc522.PICC_IsNewCardPresent()) {
return;
}
// Считывание метки
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}

uidDec = 0;
// Выдача серийного номера метки.
for (byte i = (mfrc522.uid.size); i > 0; i--)
{
uidDecTemp = mfrc522.uid.uidByte[i-1];
uidDec = uidDec * 256 + uidDecTemp;
}

// Use WiFiClient class to create TCP connections
WiFiClient client;
const int httpPort = 80;
if (!client.connect(host, httpPort)) {
return;
}

String url = "/person/visit";
url += "?id=";
url += idBranch;
url += "&rfid=";
url += uidDec;

client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
unsigned long timeout = millis();
while (client.available() == 0) {
if (millis() - timeout > 5000) {
client.stop();
return;
}
}

String line;
while(client.available()) {
line = client.readStringUntil('\n');
}

if(line=="1"){
digitalWrite(in1, HIGH);
digitalWrite(inputAccessAllowed, HIGH);
delay(500);
digitalWrite(in1, LOW);
digitalWrite(inputAccessAllowed, LOW);
}
else{
digitalWrite(inputAccessDenied, HIGH);
ledcWrite(0, 255);

//Чтоб часто не слать
if(uidDec){
delay(1000);
}
digitalWrite(inputAccessDenied, LOW);
ledcWrite(0, 0);
}

client.stop();

}
Оценка
Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель.
Знаток
 
Регистрация: 13.07.2007
Сообщений: 657
Репутация: 124
114 11
5 2
 
29.10.2020 22:24 #2
Здравствуйте!
Сталкивался с подобным, тоже крови попила эта неисправность.
Решение вашей проблемы состоит в периодической выдаче команд
Тестовых. Например опрос состояния RC522,ESP32 и выдача результата теста. У меня вышибало статикой радиоканал. Вход и выход в критические точки контролировать по таймеру.
Что не так перезапуск и иниц. по новой.Как рукой сняло.
Оценка
Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW. Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного.
Новичок
 
Регистрация: 28.05.2020
Сообщений: 4
Репутация: 10
0 2
0 0
 
30.10.2020 00:18 #3
Спасибо! Тоже думал, так сделать. А что значит опрос состояния ESP32? Ведь если он зависнет, то как он сам себя опрашивать будет?
Оценка
Специалист
 
Аватар для antonydublin
 
Регистрация: 22.09.2010
Адрес: г. Донецк
Сообщений: 868
Репутация: 380
371 0
3 0
 
31.10.2020 00:47 #4
У меня аналогичная проблема возникала с NRF24L01 и некоторыми ZigBee модулями. Иногда неделями всё в порядке, иногда за день десять сбоев. Решение - как предложил Sergey57, т.е. переинициализация.

Цитата:
Сообщение от Прапорщик Задов
А что значит опрос состояния ESP32? Ведь если он зависнет, то как он сам себя опрашивать будет?
А разве в ESP32 нет аппаратного и программного watchdog?
Цитата:
Сообщение от System API Reference
The ESP-IDF has support for two types of watchdogs: The Interrupt Watchdog Timer and the Task Watchdog Timer (TWDT).
Оценка
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Оценка этой теме
Оценка этой теме:
Метки
esp32, rc522
Похожие темы
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход
Электронные компоненты. Бесплатная доставка по России
Часовой пояс GMT +3, время: 23:57.
Обратная связь РадиоЛоцман Вверх