Нужна помощь ESP8266 реле + контактор + DHT22 - зависает

Maxim Keegan

New member
Привет. Купил сборку блок питания + ESP8266 + Два реле + DHT22 от Electrodragon. Wifi IoT Relay Board SPDT Based on ESP8266 - ElectroDragon
Собрал все на монтаже - все работает. Релюшки хлопают. Подключил питание от 220 вольт - все работает. Подключил к реле контакторы. Если переключать их достаточно быстро - ESP перезагружается и перестают поступать данные с DHT22. Все напряжения проверил - все в норме. Это помехи какие-то мешают или как отладить можно?

Спасибо за помощь!

Схема контроллера


Код:
#include <DHTesp.h>

#include <ESP8266WiFi.h>          //ESP8266 Core WiFi Library (you most likely already have this in your sketch)

#include <DNSServer.h>            //Local DNS Server used for redirecting all requests to the configuration portal
#include <ESP8266WebServer.h>     //Local WebServer used to serve the configuration portal
#include <WiFiManager.h>          //https://github.com/tzapu/WiFiManager WiFi Configuration Magic
#include <SimpleTimer.h>

#define BLYNK_PRINT Serial


#include <BlynkSimpleEsp8266_SSL.h>

#define DHTPIN 14     // Номер пина, который подключен к DHT22
#define DHTTYPE DHTesp::DHT22   // Указываем, какой тип датчика мы используем

DHTesp dht;
WidgetTerminal terminal(V5);
SimpleTimer timer;

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "oVyJ24fc2-ux5oX3_GpQiIweT";

int timeSinceLastRead = 0;

BLYNK_CONNECTED() {
  // Request Blynk server to re-send latest values for all pins
  Blynk.syncAll();
}

void setup()
{
  // Debug console
  Serial.begin(9600);

  WiFiManager wifiManager;
  wifiManager.autoConnect();
 
  Blynk.config(auth);

  dht.setup(DHTPIN, DHTTYPE);

  timer.setInterval(2000L, sendSensor);
}

void loop()
{
  Blynk.run();
  timer.run();
}

void sendSensor()
{
  float h = dht.getHumidity(); // Влажность
  float t = dht.getTemperature(); // Температура

  if (isnan(h) || isnan(t)) {
    terminal.println("No data. Restart.");
  return;
  }
  String data = (String)"h: " + h + (String)"% t: " + t + (String)"*C";
  terminal.println(data);

  Blynk.virtualWrite(V0, t);
  Blynk.virtualWrite(V1, h);
}
 

Shyster

New member
Ну да помехи. Лучше использовать твердотельное реле с переходом 0, если нагрузка не большая. или бороться с искрением и помехами. конденсатор на ресет, конденсаторы на питание, не использовать длинные провода и дорожки. Ставить rc фильтр на контакты реле.
читать http://www.wel.net.ua/Russian/PDF/RC-3.pdf
 

nikolz

Well-known member
перезагрузка при частом переключении реле может быть вызвана срабатыванием WDT
это можно определить по коду перезагрузки
попробуйте отключить WDT
добавьте перед включением реле
ets_wdt_disable();
 

Maxim Keegan

New member
Выпаял реле с платы, подключил SSR Fotek на пробу. Все стало работать стабильно. Видимо заменю реле во всех платках на SSR с фильтром на выходе.
 
Сверху Снизу