M5Atom_airqa/anemostat/AC_dimmer-dmr-0.2.1-master/AC_dimmer-dmr-0.2.1-master/AC_Dimmer/AC_Dimmer/esp8266_dimmer_wifi_control/esp8266_dimmer_wifi_control...

100 lines
3.8 KiB
Arduino
Raw Normal View History

2021-08-02 20:41:39 +03:00
/*
Даный скетч позволяет управлять сетевым диммером DMR-02 через WiFi
с помощью ESP8266 и смартфона с любой точки планеты, где есть доступ в интернет
Скетч позволит управлять нагрузкой (лампой) с помощью ползунка на Вашем смартфоне по WiFi
Код работает в неблокирующем режиме (можно добавлять свой код)
Управление со смартфона будет происходить с помощью программы Blynk (Play market/APP store)
Перед началом работы рекомендуется разобраться с функионалом данного софта
пример работы (ВИДЕО)
https://www.youtube.com/watch?v=Z_Vvgx4QuSY
Для того чтобы успешно прошить даный скетч Вам нужно:
- скачать дистрибутив для работу с ESP8266 в Arduino IDE
- скачать библиоеки Blynk и Ticker.h
- скачать приложение Blynk на смартфон
- создать проект в приложении Blynk для управления димером
- получить на почту Ваш ЛИЧНЫЙ токен с приложения Blynk и вписать его ниже
- вписать имя и пароль WiFi для подключения ESP8266 (смотрите ниже)
- подключить димер на соответствующие пины или назначить свои
При работе с ESP8266 подключать библиотеку AC_Dimmer и использовать ее функции не нужно
Достаточно прошить лишь данный пример
Для управления можностью используется переменная val (смотрите ниже)
*/
#include <ESP8266WiFi.h>
#include <Ticker.h>
#include <BlynkSimpleEsp8266.h>
Ticker blinker;
const byte interruptPin = D7; // пин диммера М2
const byte dimPin = D5; // пин диммера М1
int power = 0;
int val = 0; // переменная задающая мощность от 0 до 10000
char auth[] = "7wE5GzzU2zs83pOZKSbMxfEu_G53y4V6"; // Ваш ЛИЧНЫЙ токен от приложения Blynk
char ssid[] = "AndroidAP"; // имя WiFi
char pass[] = "23412123"; // пароль WiFi
void ICACHE_RAM_ATTR handleInterrupt();
void ICACHE_RAM_ATTR onTimerISR() // обработчик прерывания таймера
{
digitalWrite(dimPin, HIGH);
delayMicroseconds(40);
digitalWrite(dimPin, LOW);
timer1_write(50000);//10мс
}
void handleInterrupt() // обработчик прерывания по фронту (от пина детекции фазы димера)
{
power = 49000 - 4.75*val;
timer1_write(power);
}
void setup()
{
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
pinMode(interruptPin, INPUT_PULLUP);
pinMode(dimPin, OUTPUT);
attachInterrupt(digitalPinToInterrupt(interruptPin), handleInterrupt, RISING);
timer1_attachInterrupt(onTimerISR);
timer1_enable(TIM_DIV16, TIM_EDGE, TIM_SINGLE);
// здесь можно писать свой код (setup())
//
// здесь можно писать свой код (setup())
}
void loop()
{
Blynk.run(); // функция поллинга данных по WiFi
// здесь можно писать свой код
//
// здесь можно писать свой код
}
BLYNK_WRITE(V0) // функция считывания данных по WiFi
{
val = param.asInt();
}