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