Всем доброго времени суток!
Решил как то я собрать себе "систему для автоматического освещения" загородного дома, выбор пал на IoT Blynk. Запустил свой сервак, сделал белый ip, купил домен и настроил blynk. Следующим шагом было железо, так как платформа поддерживает большой список плат выбрал NodeMCU v3 на esp8266.
Докупил ещё :
Когда в указанное время (в приложении есть таймер )esp получает на виртуальном Пине значение, сначала включается реле(подавая 220v на блок питания) после чего irf520 плавно открывается, таким образом получается плавное включение света.
Органы управления:
Когда я с приложения меняю ползунок яркости с 1023 до допустим 600 Блок питания начинает пищать, и показания температуры зависают -127. Синяя и Черная кнопка а так же синий ползунок яркости это друга плата. В скетче о них ни строчки.
Первое фото - Вид в приложении, Второе фото - Нумерация Пинов, Третье фото - настройка Пина (какое значение он отправит).
Решил как то я собрать себе "систему для автоматического освещения" загородного дома, выбор пал на IoT Blynk. Запустил свой сервак, сделал белый ip, купил домен и настроил blynk. Следующим шагом было железо, так как платформа поддерживает большой список плат выбрал NodeMCU v3 на esp8266.
Докупил ещё :
- модуль irf520
- модуль реле
- ds18b20 для мониторинга температуры
- импульсный блок питания 60вт 12v
Когда в указанное время (в приложении есть таймер )esp получает на виртуальном Пине значение, сначала включается реле(подавая 220v на блок питания) после чего irf520 плавно открывается, таким образом получается плавное включение света.
Органы управления:
- В приложении есть кнопки которые включают/выключают блок питания 12v
- Ползунок для регулировки яркости освещения
- Таймеры для включения выключения всей системы
Когда я с приложения меняю ползунок яркости с 1023 до допустим 600 Блок питания начинает пищать, и показания температуры зависают -127. Синяя и Черная кнопка а так же синий ползунок яркости это друга плата. В скетче о них ни строчки.
Первое фото - Вид в приложении, Второе фото - Нумерация Пинов, Третье фото - настройка Пина (какое значение он отправит).
Мой скетч:
#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);
}
}
Изменено: