ESP, IoT Управление освещением с помощью Blynk

Imnofear555

✩✩✩✩✩✩✩
10 Окт 2020
11
0
Всем доброго времени суток!
Решил как то я собрать себе "систему для автоматического освещения" загородного дома, выбор пал на IoT Blynk. Запустил свой сервак, сделал белый ip, купил домен и настроил blynk. Следующим шагом было железо, так как платформа поддерживает большой список плат выбрал NodeMCU v3 на esp8266.
Докупил ещё :
  • модуль irf520
  • модуль реле
  • ds18b20 для мониторинга температуры
  • импульсный блок питания 60вт 12v
Суть проекта заключается в автоматическом включении освещения (cob модули 2Вт).
Когда в указанное время (в приложении есть таймер )esp получает на виртуальном Пине значение, сначала включается реле(подавая 220v на блок питания) после чего irf520 плавно открывается, таким образом получается плавное включение света.
Органы управления:
  • В приложении есть кнопки которые включают/выключают блок питания 12v
  • Ползунок для регулировки яркости освещения
  • Таймеры для включения выключения всей системы
Проблема заключается вот в чем:
Когда я с приложения меняю ползунок яркости с 1023 до допустим 600 Блок питания начинает пищать, и показания температуры зависают -127. Синяя и Черная кнопка а так же синий ползунок яркости это друга плата. В скетче о них ни строчки.
Первое фото - Вид в приложении, Второе фото - Нумерация Пинов, Третье фото - настройка Пина (какое значение он отправит).
IMG_20201010_210359.jpg IMG_20201010_210333.jpgIMG_20201010_212323.jpg



Мой скетч:
#define BLYNK_PRINT Serial
#define Rele_on_off D1    // Пин Подключение РЕЛЕ, которое Выключит 220В для блока питания освещением
#define Tranz_led D2      //Пин Подключение Транзистора, для освещения
#define Tranz_led_2 D3    //Пин Подключение РЕЛЕ 2, для освещения
#define Street_temp D4    // Пин Подключение Датчика Температуры Улицы
#define Button_on_off D5  // Кнопка Включения/Выключения света

#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <DallasTemperature.h>
#include <OneWire.h>

char auth[] = "MMl2HMJm9ZMtqvH-fZ_zda-6PHfqRSy21";
char ssid[] = "W11";
char pass[] = "937999222";
int on_off_220; // Значение реле вкл\выкл 0 или 1
int tim;        // Значенеие таймера от 0 до 1023, для Включения света с определённой яркостью
int econom;     // Значенеие таймера-Эко от 0 до 1023, для Включения света с определённой яркостью
int svet;       // Плавное включение Света от 0 до Значение tim(таймера)
int bgr;        // Яркость Света Blynk
int led;        // Кнопка включение Света Blynk

BLYNK_CONNECTED() {    //Синхронизация Виджетов После подключение к Blynk
  Blynk.syncAll();
}
BlynkTimer timer;

OneWire oneWire(Street_temp);
DallasTemperature sensors(&oneWire);
void setup()
{
  Serial.begin(9600);
  Blynk.begin(auth, ssid, pass, "light-plt.onliner", 8080);
  timer.setInterval(1000L, sendTemps);
  sensors.begin();
  pinMode (Rele_on_off, OUTPUT);
  pinMode (Tranz_led, OUTPUT);
}
void loop()
{
  Blynk.run();
  timer.run();
}
void sendTemps()
{
  sensors.requestTemperatures();
  float temp = sensors.getTempCByIndex(0);
  Blynk.virtualWrite(V20, temp);
}
BLYNK_WRITE (V0) {
  tim = param.asInt();
  if (tim > 1) {
    digitalWrite (Rele_on_off, LOW);
    delay(2000);
    Blynk.virtualWrite (V10, LOW);
    Blynk.virtualWrite (V11, 1023);
    Blynk.virtualWrite (V30, tim);
    for (int svet_on = 0; svet_on < tim; svet_on += 1) {
      analogWrite (Tranz_led, svet_on);
      delay (2);
    }
  }
  else {
    Blynk.virtualWrite (V10, HIGH);
    Blynk.virtualWrite (V11, LOW);
    Blynk.virtualWrite (V30, tim);
    analogWrite (Tranz_led, tim);
    for (int svet_off = 1023; svet_off > tim; svet_off -= 1) {
      analogWrite (Tranz_led, svet_off);
      delay (2);
    }
    digitalWrite (Rele_on_off, HIGH);
    analogWrite (Tranz_led, LOW);
    Blynk.virtualWrite (V1, LOW);
  }
}
BLYNK_WRITE (V1) {
  econom = param.asInt();
  if (econom > 50) {
    digitalWrite (Rele_on_off, LOW);
    delay(1000);
    analogWrite (Tranz_led, econom);
    Blynk.virtualWrite (V10, LOW);
    Blynk.virtualWrite (V11, 1023);
    Blynk.virtualWrite (V30, econom);
  }
  else {
  }
}

BLYNK_WRITE (V10) {
  on_off_220 = param.asInt();
  digitalWrite (Rele_on_off, on_off_220);
}

BLYNK_WRITE (V11) {
  led = param.asInt ();
  digitalWrite (Rele_on_off, LOW);
  analogWrite (Tranz_led, led);
  Blynk.virtualWrite (V10, LOW);
  Blynk.virtualWrite (V30, led);
}

BLYNK_WRITE (V12) {
  int led_2 = param.asInt();
  digitalWrite (Tranz_led_2, led_2);
}

BLYNK_WRITE (V30) {
  bgr = param.asInt();
  analogWrite (Tranz_led, bgr);
  if (bgr > 1) {
    Blynk.virtualWrite (V11, 1023);
  }
  else {
    Blynk.virtualWrite (V11, 0);
  }
}
 
Изменено:

Ilia Salaur

✩✩✩✩✩✩✩
15 Окт 2020
21
9
Хм , страно. Сейчас еще раз посмотрю скетч и может дойдет.