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
C++
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*
Даный скетч позволяет управлять сетевым диммером 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();
}