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