Потребление тока до 5-7мА, что дает возможность добавить такой модуль в любой радио выключатель.
Я "издевался" над нонейм выключателем по схемотехнике очень похож на Sesoo.
Естественно для управление этим выключателем нужен 433МГц шлюз (броадлинк или самодельный, например на esp8266)
Я использовал модуль от digispark attiny85, он со своим загрузчиком и можно шить сразу по юсб без программатора, прогой Arduino.
по хорошему нужно использовать голый мк attiny85, потому что загрузчик digispark работает на максимальной частоте и потребляет 12мА в течении первых 3 сек после включения.
прошивка:
Код: Выделить всё
#include <avr/sleep.h>
#include <avr/wdt.h>
#include <avr/power.h>
#include <RCSwitch.h>
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif
RCSwitch mySwitch = RCSwitch();
const int buttonPin = 2; // the pin that the pushbutton is attached to
int buttonState = 0; // current state of the button
int lastButtonState = 0; // previous state of the button
int countState = 0;
int cycleTime = 20;
volatile boolean f_wdt = 1;
int pinLed = 1;
void setup()
{
pinMode(buttonPin, INPUT);
clock_prescale_set(clock_div_8);
setup_watchdog(5);// 0=16ms, 1=32ms,2=64ms,3=128ms,4=250ms,5=500ms
// 6=1sec, 7=2 sec, 8=4 sec, 9= 8sec
mySwitch.enableTransmit(1);
mySwitch.setPulseLength(321/7);
//mySwitch.send("110011010"); //SEND signal On 410
}
void loop()
{
if (f_wdt == 1)
{
f_wdt = 0;
//body
//mySwitch.send("110111100"); //SEND signal 444
buttonState = digitalRead(buttonPin);
if (buttonState != lastButtonState) {
countState=0;
cycleTime = 20;
if (buttonState == HIGH) {
mySwitch.send("110010000");
delay(10);
mySwitch.send("110010000"); //SEND signal Off 400
} else {
//delay(20);
mySwitch.send("110011010");
delay(10);
mySwitch.send("110011010"); //SEND signal On 410
}
}
if (buttonState == lastButtonState && countState>cycleTime) {
countState=0;
cycleTime = cycleTime+20;
if (buttonState == HIGH) {
mySwitch.send("110010000"); //SEND signal Off 400
} else {
mySwitch.send("110011010"); //SEND signal On 410
}
}
countState++;
lastButtonState = buttonState;
//end
system_sleep();
}
}
void system_sleep()
{
cbi(ADCSRA, ADEN);
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_enable();
sleep_mode();
sleep_disable();
sbi(ADCSRA, ADEN);
}
void setup_watchdog(int ii)
{
byte bb;
int ww;
if (ii > 9 ) ii = 9;
bb = ii & 7;
if (ii > 7) bb |= (1 << 5);
bb |= (1 << WDCE);
ww = bb;
MCUSR &= ~(1 << WDRF);
WDTCR |= (1 << WDCE) | (1 << WDE);
WDTCR = bb;
WDTCR |= _BV(WDIE);
}
ISR(WDT_vect)
{
f_wdt = 1;
}
шлюз 433 принимает сигнал и передает в МД
в МД нужно прописать обработку сигнала и просто менять статус реле.
Код: Выделить всё
$rc=gg('ESP10.rcdata');
if ($rc == '400') {sg("Relay03.status",0); }
if ($rc == '410') {sg("Relay03.status",1); }
Поключение:
В нагрузку (в люстру) обязательно параллельно добавить конденсатор (у меня шел в комплекте 0.1мкФ 275В).
В схему выключателя нужно допаять конденсатор у меня вышло 2шт х 220мкФ, если еще добавлял то выключатель переставал работать (нужно подбирать оптимальный вариант).
после этого схема выключателя давала ток ~ 7 мА
C выключателя берем 5В для питания передатчика 433 (у Livolo 12В)
3В после стабилизатора берем для attiny85 (см.фото)
1pin attiny85 - сигнал на передатчик.
2pin attiny85 - состояние реле взял после транзистора с ножки оптотапары.
ВНИМАНИЕ вы будете работать с сетью 220В, отключайте все перед тем как паять.
После месяца тестов и отладки прошивки сделал еще таких два модуля и добавил их к простым радиореле которые стоят в люстрах.