RSS блога
Подписка
Делаем "слегка умное" реле для управления нагрузкой 220 Вольт на основе ATTiny85 (ATTiny13) и симистора (BTA16)
- Цена: $12.00 за 10 штук
- Перейти в магазин
Последнее время активно продвигаются устройства умного дома, в том числе, и на данном ресурсе. Одной из основных проблем коммутации силовых нагрузок в таких устройствах является сохранение привычного (кнопочного или иного) управления. Устройство из обзора призвано решить данную проблему, предоставив возможность управлять как из «умной составляющей» дома, так и привычными средствами, например, выключателем. Помимо этого, на данном устройстве можно легко и безопасно реализовать управление светом несколькими выключателями. Либо сочетать разные способы управления. Поделки, пайка, код и тесты — все под катом… (осторожно: много фото и видео).
Про сам контроллер Attiny85 написано немало, в том числе и на этом ресурсе. Мой обзор про вариант использованием с подробной инструкцией по подключению контроллера можно найти здесь. Сам контроллер имеет 8 выводов: 2 из которых предназначены для подключения питания, 1 — под сигнал сброса (перезагрузки), таким образом под «полезные» задачи остается всего 5 выводов, но и этого, во многих случаях, достаточно. Контроллер:
Микроконтроллер ATtiny85 имеет следующие характеристики:
— для программного кода предусмотрено 8 КБ памяти;
— для исполняемого кода (ОЗУ, SRAM, RAM) зарезервировано 512Б;
— память данных (EEPROM) 512 Б
— наличие 6 цифровых пинов, в реальности лучше использовать 5 (оставив 1 под RESET);
— два выхода PWM и 4 АDC (разрешение 10-bit);
— частота от 1 до 20 МГц.
ATtiny85 предлагается в корпусах: MLF (WQFN) 20M1 20dip8, PDIP 8P3 8, SOIC (208mil) 8S2 8.
В зависимости от модификации источник питания может быть от 1,8 до 5,5В.
В данном обзоре речь пойдет о версии в SOIC корпусе. Посылка пришла за 3 недели (трек отслеживался).
В своих поделках я довольно часто использую реле на твердотельных элементах, в частности, при создании аппарата точечной сварки использовал именно симистор, подробнее тут. Но вот незадача, если использовать твердотельное (да и любое другое) реле в сочетании со сложной системой управления возникают следующие неприятности:
— локально таким реле можно управлять только в 2-х вариантах: либо через центральный узел, либо центральный узел будет находиться в неведении о текущем состоянии реле;
— в случае перезагрузки центрального узла — состояние реле меняется на исходное (либо нужно сохранять текущее состояние):
— но, самое главное, если вам захотелось внести изменения в центральный узел, либо его заменить (в совсем плохом случае он может просто сломаться) — то, фактически, реле становится неуправляемым, а это означает например невозможность включить свет или что-то еще.
Вторым моментом двинувшим меня на данную разработку является довольно типичная ситуация использования проходных (перекидных) выключателей. В силу дороговизны силового кабеля, а его требуется немало для организации возможностей включения/выключения света в нескольких точек, кроме того большое количество кабеля с напряжением 220 Вольт никак не способствует безопасности, мне кажется разумным коммутировать силовую нагрузку тонким проводом (например телефонным) с напряжением порядка 5 Вольт. Устройство из обзора позволит решить и эту задачу.
Если же эти две проблемы объединить, то целесообразность применения такого устройства сложно переоценить. Я отдаю себе отчет, что найдутся знатоки, которые использовав всего 15 транзисторов и несколько навесных элементов гордо заявят, что обошлись без контроллера, решив задачу (почти похожую на данную) в железе. Сразу аргументирую: цена контроллера настолько мала, что и обсуждать бессмысленно, вдобавок решение получается очень гибким, внесение изменений не требует паяльника. При этом тиньки зарекомендовали себя как очень надежные и стабильные контроллеры, кроме всего прочего, ничто не мешает иметь некий резерв таких «слегка умных» реле — чтобы совсем исключить все нештатные ситуации.
Нехитрая схема устройства:
R1, R2, R3 — устанавливаются опционально, подтягивая соответствующие выводы контроллера к питанию. R4 подтягивает вывод RESET к питанию, препятствуя самопроизвольной перезагрузке контроллера. Нагрузка подключается к выводу PB3 контроллера, данный вывод подтянут к земле резистором R6 во избежание нештатных ситуаций по включению симистора. R5 ограничивает ток оптосимистора MOC3063. MOC3063, R7(0.5 Вт), R8(0.5 Вт) и Т1 — образуют типовую схему включения симистора. Снабберная (демпфирующая) RC-цепь состоит из C1 и R9 (1Вт), её наличие особенно критично при индуктивной нагрузке. В качестве симистора я использовал BTA16, можно поставить как менее так и более мощный (в корпусе ТО220), в зависимости от коммутируемой нагрузки. Также, по необходимости, можно установить радиатор на симистор, я специально расположил его с краю.
Печатная плата получилась такая:
Плата изготовлена в Китае, размеры компактные (вполне войдет в подрозетник или распаячную коробку), конкретно эту плату изготавливал в dirtypcbs.com, воспользовавшись панелизацией (в ближайшее время ожидаю платы другого производителя за 2$ — по акции :) ):
После сборки устройство выглядит так:
Это экспериментальный образец, поэтому немного пострадал, не обращайте внимания на внешний вид. :) Обратная сторона:
Естественно, вместо тестовых штырьков можно сразу припаять проводки, тем самым сэкономить пространство. Если сигнальные провода будут проходить вплотную с электрической сетью и вы не используете экранированные провода, то стоит позаботится защитой от наводок.
Первым делом я загрузил программку мигания нагрузкой:
В качестве программатора использовал arduino nano:
После подключил питание к макетной плате и подал на новое устройство:
Видео работы (использовал, доработанный по пожеланиям, стенд из этого обзора):
Простейшие функции проверены, впрочем, если вам нужна мигалка на 220 Вольт, то можно использовать устройство в таком виде :).
Далее, сымитируем ситуацию, когда нам требуется много (ну до 4-х) выключателей для одной нагрузки, и мы не хотим тянуть толстые провода с 220 Вольт. Для этого, на все свободные входы нашего устройства нужно подключить выключатели с поведением аналогичным типовым и написать соответствующую программу:
В качестве имитаторов выключателей решил использовать такие кнопки со сменой состояния:
Чтобы не паять, решил изготовить проводки для подключения кнопок к макетной плате (они мне еще пригодятся). В качестве проводков использовал обрезки ШВВП 2х0.5. Надеваем изолятор и зажимаем клемму в обжимке:
С обратной стороны:
Результат:
Надеваем изолятор:
Другой конец жал штырьками для макетной платы:
Провод толстоват для таких наконечников, поэтому обжимные части и узкая и широкая обжимают сам провод, хотя широкая должна впиваться в изоляцию, но держится все очень крепко — руками у меня не вышло сорвать терминал с провода. Лишнее закрываем термоусадкой:
Если кому интересно, то клещи и процесс обжима я обозревал здесь.
Получилось вот такие проводки:
Далее защелкнул их на кнопки и сдвинул изоляцию:
Тест кнопок проводил сразу всех (3 штуки сделал) в режиме прозвонки поочередно нажимал:
Итоговый стенд:
Видео тестов:
Логика работы такая же как у проходных (перекидных) выключателей. Памяти данный код занимает мало и на месте 85-ой тиньки вполне справится ATTiny13, благо корпуса у них похожи и я предусмотрел на плате их заменяемость. Таким образом, вместо дорогих и толстых проводов можно с успехом использовать тонкий телефонный, и напряжение безопасно, более того перебив и замкнув провод можно вывести из строя только один выключатель, остальные будут продолжать работать.
Приступим к самой сложной части — взаимодействии нашего «немного умного» реле с другими, более умными, собратьями. Для тестов, да и на практике, вполне работоспособно решение с сериал портом. ATtiny85 не имеет аппаратного Serial-порта, но программный работает отлично. Пишем код:
Я не буду построчно его комментировать, благо они похожи с предыдущим. Поясню, я использовал несколько кодов для взаимодействия устройств. При загрузке тинька сообщает старшему собрату, что нагрузка отключена. Далее она может принять и обработать команды включения, выключения и запроса статуса нагрузки. Процедуру изменения состояния нагрузки вынес в отдельную функцию, так как кода там немного прибавилось, и количество возможных мест вызова тоже изменилось. В качестве старшего собрата выступит все та же arduino nano (хотя это может быть что угодно: компьютер (в том числе raspberry pi), другой контроллер и тп). Код ардуины попроще:
После загрузки считывается состояние нагрузки и отображается светодиодом. Также, принимается информация об изменении состояния нагрузки самой тинькой (локальными выключателями). К ардуино подключил кнопку, обработчик которой посылает команду на изменение состояния нагрузки тинькой. индикация меняется только при подтверждении смены состояния. Итоговый стенд:
Видео иллюстрирующее работы такого варианта:
Кнопка, подключенная к ардуинке, у меня давно используется для тестов и пережила не мало, поэтому срабатывает не всегда, но смысл ясен. В данном случае, удаление более умного устройства (тут ардуно нано) никак не скажется на локальной работе устройства, чего нам и требовалось. Преимущества прошлой схемы сохранены, единственное уменьшилось количество выключателей. Для тех кто не любит провода, напомню про радиомодули предназначенные для расширения по радио Serial UART интерфейса, мой обзор на эту тему тут.
Таким образом, устройство показало свою работоспособность и, я думаю, что очень пригодится мне в решении дачных и не только задач. Если требуется больше выводов, то это также возможно:
1 — использовать другой, более ногастый, контроллер (например ATTiny 2313);
2 — применить расширитель портов по шине i2c (например: PCF8574 — для 8 портов или MCP23017 — для 16 портов), которая в данном контроллере присутствует. Сохранение состояния нагрузки при отключении питания нетрудно реализовать, но я предпочту выключенный свет при восстановлении электричества по целому ряду причин.
Если будет интересно, расскажу ещё о своих новых поделках.
Спасибо тем кто дочитал до конца! Надеюсь, что данный огромный обзор такого простого устройства вас не утомил! Всех поздравляю с наступившим новым Годом!
PS.
Доработанная плата:
Плата защиты:
Плата из обзора с блоком питания:
Файл для открытия в программе Sprint Layout скачать тут.
Готовые гербер-файлы для заказа доработанной платки из обзора скачать тут.
Про сам контроллер Attiny85 написано немало, в том числе и на этом ресурсе. Мой обзор про вариант использованием с подробной инструкцией по подключению контроллера можно найти здесь. Сам контроллер имеет 8 выводов: 2 из которых предназначены для подключения питания, 1 — под сигнал сброса (перезагрузки), таким образом под «полезные» задачи остается всего 5 выводов, но и этого, во многих случаях, достаточно. Контроллер:
Микроконтроллер ATtiny85 имеет следующие характеристики:
— для программного кода предусмотрено 8 КБ памяти;
— для исполняемого кода (ОЗУ, SRAM, RAM) зарезервировано 512Б;
— память данных (EEPROM) 512 Б
— наличие 6 цифровых пинов, в реальности лучше использовать 5 (оставив 1 под RESET);
— два выхода PWM и 4 АDC (разрешение 10-bit);
— частота от 1 до 20 МГц.
ATtiny85 предлагается в корпусах: MLF (WQFN) 20M1 20dip8, PDIP 8P3 8, SOIC (208mil) 8S2 8.
В зависимости от модификации источник питания может быть от 1,8 до 5,5В.
В данном обзоре речь пойдет о версии в SOIC корпусе. Посылка пришла за 3 недели (трек отслеживался).
В своих поделках я довольно часто использую реле на твердотельных элементах, в частности, при создании аппарата точечной сварки использовал именно симистор, подробнее тут. Но вот незадача, если использовать твердотельное (да и любое другое) реле в сочетании со сложной системой управления возникают следующие неприятности:
— локально таким реле можно управлять только в 2-х вариантах: либо через центральный узел, либо центральный узел будет находиться в неведении о текущем состоянии реле;
— в случае перезагрузки центрального узла — состояние реле меняется на исходное (либо нужно сохранять текущее состояние):
— но, самое главное, если вам захотелось внести изменения в центральный узел, либо его заменить (в совсем плохом случае он может просто сломаться) — то, фактически, реле становится неуправляемым, а это означает например невозможность включить свет или что-то еще.
Вторым моментом двинувшим меня на данную разработку является довольно типичная ситуация использования проходных (перекидных) выключателей. В силу дороговизны силового кабеля, а его требуется немало для организации возможностей включения/выключения света в нескольких точек, кроме того большое количество кабеля с напряжением 220 Вольт никак не способствует безопасности, мне кажется разумным коммутировать силовую нагрузку тонким проводом (например телефонным) с напряжением порядка 5 Вольт. Устройство из обзора позволит решить и эту задачу.
Если же эти две проблемы объединить, то целесообразность применения такого устройства сложно переоценить. Я отдаю себе отчет, что найдутся знатоки, которые использовав всего 15 транзисторов и несколько навесных элементов гордо заявят, что обошлись без контроллера, решив задачу (почти похожую на данную) в железе. Сразу аргументирую: цена контроллера настолько мала, что и обсуждать бессмысленно, вдобавок решение получается очень гибким, внесение изменений не требует паяльника. При этом тиньки зарекомендовали себя как очень надежные и стабильные контроллеры, кроме всего прочего, ничто не мешает иметь некий резерв таких «слегка умных» реле — чтобы совсем исключить все нештатные ситуации.
Нехитрая схема устройства:
R1, R2, R3 — устанавливаются опционально, подтягивая соответствующие выводы контроллера к питанию. R4 подтягивает вывод RESET к питанию, препятствуя самопроизвольной перезагрузке контроллера. Нагрузка подключается к выводу PB3 контроллера, данный вывод подтянут к земле резистором R6 во избежание нештатных ситуаций по включению симистора. R5 ограничивает ток оптосимистора MOC3063. MOC3063, R7(0.5 Вт), R8(0.5 Вт) и Т1 — образуют типовую схему включения симистора. Снабберная (демпфирующая) RC-цепь состоит из C1 и R9 (1Вт), её наличие особенно критично при индуктивной нагрузке. В качестве симистора я использовал BTA16, можно поставить как менее так и более мощный (в корпусе ТО220), в зависимости от коммутируемой нагрузки. Также, по необходимости, можно установить радиатор на симистор, я специально расположил его с краю.
Печатная плата получилась такая:
Плата изготовлена в Китае, размеры компактные (вполне войдет в подрозетник или распаячную коробку), конкретно эту плату изготавливал в dirtypcbs.com, воспользовавшись панелизацией (в ближайшее время ожидаю платы другого производителя за 2$ — по акции :) ):
После сборки устройство выглядит так:
Это экспериментальный образец, поэтому немного пострадал, не обращайте внимания на внешний вид. :) Обратная сторона:
Естественно, вместо тестовых штырьков можно сразу припаять проводки, тем самым сэкономить пространство. Если сигнальные провода будут проходить вплотную с электрической сетью и вы не используете экранированные провода, то стоит позаботится защитой от наводок.
Первым делом я загрузил программку мигания нагрузкой:
void setup() {
pinMode(3, OUTPUT);
}
void loop() {
digitalWrite(3, HIGH);
delay(1000);
digitalWrite(3, LOW);
delay(1000);
}
В качестве программатора использовал arduino nano:
После подключил питание к макетной плате и подал на новое устройство:
Видео работы (использовал, доработанный по пожеланиям, стенд из этого обзора):
Простейшие функции проверены, впрочем, если вам нужна мигалка на 220 Вольт, то можно использовать устройство в таком виде :).
Далее, сымитируем ситуацию, когда нам требуется много (ну до 4-х) выключателей для одной нагрузки, и мы не хотим тянуть толстые провода с 220 Вольт. Для этого, на все свободные входы нашего устройства нужно подключить выключатели с поведением аналогичным типовым и написать соответствующую программу:
// выход на нагрузку
const uint8_t load_pin = 3;
// состояние нагрузки
bool load_on = false;
// структура, описывающая отдельный выключатель
typedef struct {
uint8_t pin; // пин
bool state; // состояние
unsigned long ButtonTimerDebounce; // время начало переключения (для защиты от дребезга)
} btn_t;
// массив выключателей
btn_t btn[] = {
{1, 0, 0},
{0, 0, 0},
{2, 0, 0},
{4, 0, 0},
};
// количество элементов в массиве - посчитаем позже
uint8_t num_btn = 0;
// количество миллисекунд со старта контроллера (для защиты от дребезга)
unsigned long CurrentTime = 0;
// защитный временной интервал в мс
const unsigned int DebounceTime = 100;
// функция определения количества элементов массива с элементами произвольного типа
template<typename T, size_t n> inline size_t arraySize(const T (&arr)[n]) {
return n;
}
void setup() {
// настраиваем пин нагрузки
pinMode(load_pin, OUTPUT);
digitalWrite(load_pin, LOW);
// считаем количество выключателей
num_btn = arraySize(btn);
// настраиваем все выключатели
for (uint8_t i = 0; i < num_btn; i++) {
pinMode(btn[i].pin, INPUT);
pinMode(btn[i].pin, INPUT_PULLUP);
btn[i].state = digitalRead(btn[i].pin); // текущее состояние выключателя считаем исходным
}
}
void loop() {
CurrentTime = millis();
// обходим все выключатели
for (uint8_t i = 0; i < num_btn; i++) {
// Если состояние выключателя отличается от текущего
if (btn[i].state != digitalRead(btn[i].pin)) {
// Если мы в самом начале устранения дребезга, то ставим время отсчета
if (btn[i].ButtonTimerDebounce == 0) btn[i].ButtonTimerDebounce = CurrentTime;
// Если произошло переключение с учетом устранения дребезга
if ((btn[i].ButtonTimerDebounce + (unsigned long)DebounceTime) < CurrentTime) {
// Меняем состояние нагрузки
btn[i].state = !btn[i].state;
load_on = !load_on;
if (load_on) {
digitalWrite(load_pin, HIGH);
} else {
digitalWrite(load_pin, LOW);
}
// сбрасываем время отсчета
btn[i].ButtonTimerDebounce = 0;
}
} else {
// сбрасываем время отсчета при ложной тревоге - переключатель не изменил состояние за заданное время
btn[i].ButtonTimerDebounce = 0;
}
}
}
В качестве имитаторов выключателей решил использовать такие кнопки со сменой состояния:
Чтобы не паять, решил изготовить проводки для подключения кнопок к макетной плате (они мне еще пригодятся). В качестве проводков использовал обрезки ШВВП 2х0.5. Надеваем изолятор и зажимаем клемму в обжимке:
С обратной стороны:
Результат:
Надеваем изолятор:
Другой конец жал штырьками для макетной платы:
Провод толстоват для таких наконечников, поэтому обжимные части и узкая и широкая обжимают сам провод, хотя широкая должна впиваться в изоляцию, но держится все очень крепко — руками у меня не вышло сорвать терминал с провода. Лишнее закрываем термоусадкой:
Если кому интересно, то клещи и процесс обжима я обозревал здесь.
Получилось вот такие проводки:
Далее защелкнул их на кнопки и сдвинул изоляцию:
Тест кнопок проводил сразу всех (3 штуки сделал) в режиме прозвонки поочередно нажимал:
Итоговый стенд:
Видео тестов:
Логика работы такая же как у проходных (перекидных) выключателей. Памяти данный код занимает мало и на месте 85-ой тиньки вполне справится ATTiny13, благо корпуса у них похожи и я предусмотрел на плате их заменяемость. Таким образом, вместо дорогих и толстых проводов можно с успехом использовать тонкий телефонный, и напряжение безопасно, более того перебив и замкнув провод можно вывести из строя только один выключатель, остальные будут продолжать работать.
Приступим к самой сложной части — взаимодействии нашего «немного умного» реле с другими, более умными, собратьями. Для тестов, да и на практике, вполне работоспособно решение с сериал портом. ATtiny85 не имеет аппаратного Serial-порта, но программный работает отлично. Пишем код:
#include "SoftwareSerial.h"
const uint8_t Rx = 0;
const uint8_t Tx = 2;
SoftwareSerial TinySerial(Rx, Tx);
const uint8_t load_pin = 3;
bool load_on = false;
typedef struct {
uint8_t pin;
bool state;
unsigned long ButtonTimerDebounce;
}
btn_t;
btn_t btn[] = {
{1, 0, 0 },
{4, 0, 0 },
};
uint8_t num_btn = 0;
unsigned long CurrentTime = 0;
const unsigned int DebounceTime = 100;
template<typename T, size_t n> inline size_t arraySize(const T (&arr)[n]){
return n;
}
void setup() {
pinMode(load_pin, OUTPUT);
digitalWrite(load_pin, LOW);
pinMode(Rx, INPUT);
pinMode(Tx, OUTPUT);
TinySerial.begin(9600);
TinySerial.write(101);
num_btn = arraySize(btn);
for (uint8_t i = 0; i < num_btn; i++) {
pinMode(btn[i].pin, INPUT);
pinMode(btn[i].pin, INPUT_PULLUP);
btn[i].state=digitalRead(btn[i].pin);
}
}
void loop() {
CurrentTime = millis();
if(TinySerial.available()){
uint8_t recived = TinySerial.read();
if(recived==152){
change_power(true);
}
else if(recived==151){
change_power(false);
}
else if(recived==153){
if(load_on){
TinySerial.write(202);
}
else {
TinySerial.write(201);
}
}
}
for (uint8_t i = 0; i < num_btn; i++) {
if(btn[i].state!=digitalRead(btn[i].pin)){
if(btn[i].ButtonTimerDebounce==0) btn[i].ButtonTimerDebounce=CurrentTime;
if((btn[i].ButtonTimerDebounce + (unsigned long)DebounceTime) < CurrentTime){
btn[i].state=!btn[i].state;
if(load_on){
change_power(false);
}else{
change_power(true);
}
btn[i].ButtonTimerDebounce=0;
}
}else{
btn[i].ButtonTimerDebounce=0;
}
}
}
void change_power(bool val){
if(val){
digitalWrite(load_pin, HIGH);
load_on = true;
TinySerial.write(102);
}
else{
digitalWrite(load_pin, LOW);
load_on = false;
TinySerial.write(101);
}
}
Я не буду построчно его комментировать, благо они похожи с предыдущим. Поясню, я использовал несколько кодов для взаимодействия устройств. При загрузке тинька сообщает старшему собрату, что нагрузка отключена. Далее она может принять и обработать команды включения, выключения и запроса статуса нагрузки. Процедуру изменения состояния нагрузки вынес в отдельную функцию, так как кода там немного прибавилось, и количество возможных мест вызова тоже изменилось. В качестве старшего собрата выступит все та же arduino nano (хотя это может быть что угодно: компьютер (в том числе raspberry pi), другой контроллер и тп). Код ардуины попроще:
#include "SoftwareSerial.h"
const uint8_t Rx = 12;
const uint8_t Tx = 11;
SoftwareSerial TinySerial(Rx, Tx);
const uint8_t led_pin = 13;
const uint8_t bt_pin = 14;
bool load_on = false;
bool ButtonOn = false;
unsigned long CurrentTime = 0;
unsigned long ButtonTimerDebounce = 0;
const unsigned int DebounceTime = 50;
void setup() {
pinMode(led_pin, OUTPUT);
digitalWrite(led_pin, LOW);
pinMode(bt_pin, INPUT);
pinMode(bt_pin, INPUT_PULLUP);
pinMode(Rx, INPUT);
pinMode(Tx, OUTPUT);
TinySerial.begin(9600);
TinySerial.write(153);
Serial.begin(9600);
delay(15);
if(TinySerial.available()){
uint8_t recived = TinySerial.read();
if(recived ==202){
change_led(true);
}
else if(recived ==201){
change_led(false);
}
}
}
void loop() {
CurrentTime = millis();
if(TinySerial.available()){
uint8_t recived = TinySerial.read();
if(recived==102){
change_led(true);
} else if(recived==101){
change_led(false);
}
}
if(Serial.available()){
uint8_t recived = Serial.read();
TinySerial.write(recived);
}
if(digitalRead(bt_pin)==LOW && !ButtonOn){
ButtonOn = true;
if(ButtonTimerDebounce==0) ButtonTimerDebounce=CurrentTime;
if(ButtonTimerDebounce + (unsigned long)DebounceTime < CurrentTime){
if(load_on){
TinySerial.write(151);
}else{
TinySerial.write(152);
}
ButtonTimerDebounce=0;
}
}else if(ButtonOn && digitalRead(bt_pin)==HIGH){
ButtonOn = false;
}
}
void change_led(bool val){
if(val){
digitalWrite(led_pin, HIGH);
load_on = true;
Serial.println("load on");
} else {
digitalWrite(led_pin, LOW);
load_on = false;
Serial.println("load off");
}
}
После загрузки считывается состояние нагрузки и отображается светодиодом. Также, принимается информация об изменении состояния нагрузки самой тинькой (локальными выключателями). К ардуино подключил кнопку, обработчик которой посылает команду на изменение состояния нагрузки тинькой. индикация меняется только при подтверждении смены состояния. Итоговый стенд:
Видео иллюстрирующее работы такого варианта:
Кнопка, подключенная к ардуинке, у меня давно используется для тестов и пережила не мало, поэтому срабатывает не всегда, но смысл ясен. В данном случае, удаление более умного устройства (тут ардуно нано) никак не скажется на локальной работе устройства, чего нам и требовалось. Преимущества прошлой схемы сохранены, единственное уменьшилось количество выключателей. Для тех кто не любит провода, напомню про радиомодули предназначенные для расширения по радио Serial UART интерфейса, мой обзор на эту тему тут.
Таким образом, устройство показало свою работоспособность и, я думаю, что очень пригодится мне в решении дачных и не только задач. Если требуется больше выводов, то это также возможно:
1 — использовать другой, более ногастый, контроллер (например ATTiny 2313);
2 — применить расширитель портов по шине i2c (например: PCF8574 — для 8 портов или MCP23017 — для 16 портов), которая в данном контроллере присутствует. Сохранение состояния нагрузки при отключении питания нетрудно реализовать, но я предпочту выключенный свет при восстановлении электричества по целому ряду причин.
Если будет интересно, расскажу ещё о своих новых поделках.
Спасибо тем кто дочитал до конца! Надеюсь, что данный огромный обзор такого простого устройства вас не утомил! Всех поздравляю с наступившим новым Годом!
PS.
Доработанная плата:
Плата защиты:
Плата из обзора с блоком питания:
Файл для открытия в программе Sprint Layout скачать тут.
Готовые гербер-файлы для заказа доработанной платки из обзора скачать тут.
+65 |
21065
83
|
Самые обсуждаемые обзоры
+77 |
4050
147
|
+58 |
4237
73
|
конкретно этот симистор коммутирует до 12А с радиатором, без радиатора до 0,5 А, можно поставить и помощнее. В обзоре это написал. На али можно найти детальки в любом количестве.
Например:
симисторы
конденсаторы
Входы контроллера необходимо защищать, т.к. помехи на длинные провода подключения вызовут пробой контроллера.
В большинстве случаев, будет отлично работать — входы контроллера достаточно устойчивы, а программное подавление дребезга не даст им повлиять на устройство. При длине порядка 10 метров у меня контроллеры трудятся уже несколько лет.
Набросал один из вариантов защиты питания и входа контроллера
И на века, чтобы больше вообще не парится.
Стоит копейки, и раз все равно планируешь разводить слаботочку — самое то чуть-чуть подумать перед этим.
Обвесить, конечно, контроллер можно — но это убивает на корню простоту всего этого дела.
Если заказывать все в сборе через гербер — то наверное да — пофиг, а если самому паять — то нет.
А кинуть кабель с экраном — проще и дешевле — один раз и на всегда.
Естественно, с усложнением конструкции, уменьшается ее надежность, но если сделано с головой — то это единицы процентов, а удобство пользования при этом вырастает в разы. Кроме того — важные (действительно важные) вещи имеют байпас на крайний случай — это как раз вытекает из «сделано с головой».
А так, если Вас послушать — до сих пор бы на лошадях волокуши тянули — во сколько раз машина сложнее волокуши-то? :D
Везде просто баланс надо соблюдать — в том числе и между сложностью.
И как раз заложить на слаботочку провода в экране проще, чем городить помехоустойчивую защиту на всех контроллерах потом — собственно об этом я выше и писал.
Что такое экран — в курсе?
Чего там внутри экрана ловится будет?
Барабульки из Америки? — не смешите меня.
Пара диодов? Где Вы пару диодов видите?
Если уж делать, то делать по нормальной схеме и ksiman действительно годную схему дал, только там стаб, кондер и сопротивление и никаких диодов — теперь умножьте на кол-во линий и ваше «сильно не увеличат» мягко говоря будет неверным. И дело не только в стоимости, но и в размерах и сложности сборки.
— Сомневаюсь что легко. Вы этим занимаетесь?
У меня вопрос, а почему не ESP и WiFi как средство гальванической развязки? Программируется в той же среде ардуино.
провода в большинстве случаев предпочтительней, если условия требуют защиту — то ее можно поставить
ESP с базовым скетчем на ардуино — не согласен.
Провода хорошо, но все меры по защите и меры по предотвращению ложных срабатываний делают решение дороже ESP по радио.
Помню как-то нужно было развязаться, я взял толстую рыболовную леску и засверлившись в ИК диод и фотодиод сделал оптоволоконную развязку. Может и тут так?
Для чего-то незначимого — можно, а для всего другого — нет.
И это точно плохой вариант для умного дома.
А то я приду и поуправляю вашим умным домом за Вас, ну, или, на худой конец, не дам Вам им управлять ;)
P.S. А уж про защищенность Wi-Fi (особенно в свете последней уязвимости) я вообще молчу.
А ведь до проводов-то внутри дома нужно еще как-то добраться, правда?
Замок смочь взломать, звонок отвинтить и т.д. — все, статья.
А тут просто рядышком встал в машинке, ноут включил — и все.
И цель то может быть просто напоганить — достали вы, например, соседей своей громкой музыкой :) И никакой статьи — следы добыть в такой ситуации крайне сложно.
Так что не о чем тут спорить — хотите быть незащищенным — будьте им — кто запрещает.
P.S. Причем для всего этого быть хакером абсолютно не обязательно — достаточно купить девайс на али (направленная wifi карта или антенна) и установить софт (лежит в открытом доступе, для пен-тестов, например). Мало того — можно для начала попробовать сделать все это со смартфона без спец-железа. Софт тоже есть и тоже в открытом доступе.
А в случае с глушилкой — все еще проще.
Окей, теперь о КРАК уязвимости. Она не дает пароль. Она лишь позволяет _возможно_ сбросить сессионный ключ для конкретного устройства и СЛУШАТЬ его трафик. Окей, ты слышишь к ESP что-то типа GET 192.168.1.2/turnonlight. Что ты с этим сможешь сделать? Кодовой фразы у тебя нету. Всё. Приехали.
Окей, допустим я идиот и поставил пароль из словаря. Ты отснифал мой хендшейк, поехал домой, прокрутил его по многотеррабайтному словарю и нашел таки мой пароль. Ну приехал ты назад, сидишь в машине. И что дальше?
Всё что ты знаешь, это то что можно сделать GET 192.168.1.2/turnonlight
Окей. Что мешает сделать целочисленный challenge-response, чтобы ESP аутентифицировала управляющий сервер и управляющий сервер аутентифицировал ESP?
Тогда сбросив сессионный ключ ты увидишь GET 192.168.1.2/turnonlight?challenge=1919191919 и ответ 345867. И всё. Ты приехал.
Глушилка? Ты имеешь ввиду deauth? Ну у меня на точке обновлено ПО и WPA2 предхендшейк и сам хендшейк уже не в OPEN режиме, так что ты лососнешь тунца даже в момент «ловли» моего хеншейка. И deauth мне и моим девайсам не грозит и не работает против них вообще. Проверял для надежности и с помощью Kali.
Ну и на последок, запрет OPEN режима закрывает вектор атаки КРАК.
Занавес
Совсем другой уровень правовой ответственности и последствия.
У соседа роутер от ТВ на два метра на котором он смотрит айпитиви. Через полкирпича мои комнаты. Несколько раз просил понизить мощность (есть такая возможность). Тупо игнорил. Теперь сосед постоянно дергает провайдера почему во время его футбола нет интернета. Приходят — все есть и работает. Он снова звонит. Его уже на обследование направляют. Я предлагаю ему решить проблемму — дам кусок обжатого кабеля. И вайфая не надо. Но лишнего провода еме не надо. Так и живем.
Выкройка была, как-то, в «Радио»
Все возможно в этом мире — не зарекайся. Вон блид в OpenVPN нашли — а сколько исходники до этого копали.
Челлендж можно тоже обойти как делают с автомобильными токенами — не всегда работает и не на всех реализациях, но вклинившись и глуша базу можно попробовать и такой вектор атаки.
Ну хрен с ним — предположим, руки у тебя из правильного места, как и голова — да, НА ДАННЫЙ момент ты можешь сделать все чтобы минимизировать точки и возможности атаки, но так как тема популярная — это постоянная точка ненадежности.
Понятно, что внутри TCP можно сделать свой протокол с шифрацией, феями и кабаре — но смешно заешь что? Что ты себе придумал проблем и теперь с ними борешься, вместо того, чтобы убрать узкое место с проблемами.
Рано или поздно откроют еще что-то про что ты можешь не сразу узнать, или не успеть пофиксить — и все, палка уже в твоей #пе. Адьё. Как раз твой занавес пригодится #пу бинтовать…
Причем ты сам это себе создал, а можно было сразу убрать этот вечный источник проблем.
Глушилка — это в прямом смысле глушилка — девайс такой, который направлено глушит радиоканал, в т.ч. WiFi,
Усе — сети у тебя не будет, пока эта радость работает.
Не, конечно можно клетку фарадея сварить и жить в ней…
Однако это еще большее извращенство и главное — ради чего?
Надеюсь, мысль я донес? :)
Спускаться на TCP нет смысла. Даже на HTTP уровне можно сделать адекватную защиту.
За глушняк в Канаде на годик присесть можно и получить криминальный рекорд, означающий волчьий билет на любую работу выше уборщика, по-этому должна быть ПРИЧИНА, желательно веская, почему какой-то идиот приедет под мой дом глушить 13 каналов wifi, только чтобы я не смог дистанционно выключить свет в туалете.
Прям все диванные психологи, которые возраст сквозь TCPIP определяют, ага :)))
Юноше давно уже за 30-ку перевалило, если что :D
И говорит это не максимализм, а простой и долгий опыт в ИТ безопасности.
Про серого гражданина — знаете, когда мне говорят «Мне скрывать нечего — кому я нужен вообще» (а Вы — не первый), я сразу вспоминаю страуса… И это грустно, что эта ошибка встречается так часто у вполне образованных людей.
Оставайтесь с Wi-Fi — я не против.
Ну и резюмируя все это — Вы сами себе создали проблемы и сами с стоически с ними боритесь — Вы назвали мои суждения максималистскими — так что я имею полное право назвать ваши — глупостью.
Ведь умный человек старается избежать лишних проблем (если только они не оправданы), не правда-ли? :)
Но да, можно быть Доном Кихотом и бороться с ветряными мельницами там, где все решает один единственно проложенный провод.
KRAK проходит мимо. Deauth проходит мимо. Получение доступа проходит мимо.
Глушак маловозможен, а если и возможен, то это не перехват управления.
А как начинал то красиво, сенсация, шок и т.п.
Пойду напишу нашим айтисекам, почему в AWS они еще используют этот «ненадежный» вайфай. Как думаешь, дадут премию?
Если мозга не хватает уловить — тут уж я беспомощен…
А попробуйте — премию может и дадут, но боюсь что только Дарвина ;)
Оффтоп закрываю — всего хорошего Вам и ваше вере в Wi-Fi.
Ну ведь сам смысл умного дома по-моему в том, чтобы управлять устройствами по wi fi со смартфона. По этому наверное для уязвимости не очень важно как подключено устройство, по wi fi или через провод, если устройством можно управлять по wi fi.
geektimes.ru/post/277380/
Использовал siglent ssa3032x. Устройство на базе killer 1535 и ТД unifi ac pro
Можно вообще генератор шума сделать. Довольно просто.
Бяка сильно зависит от логики точки. Точка инициирует смену канала. ac pro(не реклама) уже через пару секунд уходила от пораженного места, чем меня несказанно удивила.
P.S. Роутер asus rt-n56n с прошивкой Padavan
Не сомневайтесь.
Почему за столько десятков лет не сломана защита сим карт? Разве это никому неинтересно ??!!! Всем даже очень-очень нужно. Даже премиальный фонд был в 10 млн ё. Но никто эти денюжки получить не смог.
И пофиг сколько символов пароль и AES там или TKIP.
«Чтобы войти в деревянный дом, вовсе не обязательно пытаться ломать в нем железную дверь»
есть такая поговорка…
Этот оффтоп тут причем?
По секрету — через микросоту все прекрасно перехватывается — да это мидм (а не взлом защиты), но этого тоже вполне достаточно.
Взрослый же человек — идешь в гугл или на хабр / реддит и читаешь что за последняя уязвимость wWi-Fi и как она эксплуатируется.
Ну раз сам грамотный такой — думаю что это вполне посильно.
Сейчас в новых устройствах оно пофикшено, но есть фишка — если к роутеру подключено ХОТЯ-БЫ ОДНО СТАРОЕ устройство — уязвимость работает.
Вот после того, как прочтешь — будем дальше дискутировать.
Достаточно было бы и 0,1мкФ.
Пусть лучше срабатывает медленнее, чем ложно от помехи. IMHO
Единственное правильное (и необходимое) решение — это TVS на входе схемы. И не стабилитроны — их просто выбьет мощной помехой, а именно TVS. Они, правда, добавят емкости, но зато обеспечат необходимую помехоустойчивость. TVS есть, например, на 6.8 В. Что касается резистора (схема предложена ранее) — его необходимо ставить после TVS, он будет защищать вход от всплесков 6.8 В. Перед TVS резистор ставить смысла никакого не имеет — у smd рабочее напряжение 150 — 200 В, что такие резисторы сделают против 1 — 2 КВ?
У SMD 1206 рабочее напряжение 400V и они выдерживают короткие киловольтные импульсы
Если можно, ссылку, где это подтверждается. Обычно на 1206 указывается рабочее напряжение 200 В, а 400 — максимальное.
Импульсное напряжение для них не указывается :(
Более подробно защита на TVS описана, например, здесь:
Я лично видел как стабилитроны выгорают в цепях, связанных с импульсными помехами, поэтому вариант со стабилитроном допустимым не считаю. Для стабилитронов в даташитах не указывается максимальная импульсная мощность помехи, которую он может выдержать, да и вообще ничего про работу в импульсном режиме. Потому что это — не его задача. Для этой задачи есть другие полупроводниковые изделия.
Мой вариант правильный в данном случае, а со стабилитроном — нет. Применять стабилитроны для защиты от импульсных помех такого уровня нельзя.
О чем и речь. Т.е. проектировать таких схемных решений на них нельзя.
И, скорее всего, будет подавлена программно, как дребезг.
Там то уж точно никаких помех, а контроллер умер.
Так что… здесь уж точно лучше перестраховаться и сделать все по уму!
Но даже без видео плюс :)
тут уже почти готовая :)
но реально применить пока не успел
Из выключателя можно сделать что угодно, но мне так удобнее — возможно кому то тоже.
Устройство из обзора можно считать реле с программируемым поведением, в том числе и обратная связь
Ещё в детстве в прошлом веке наигрался с подобием умных домов и сделал выводы на тему целесообразности и надёжности. Занятно, прикольно, понтануться перед пацанами можно, но в остальном в жизни это часто неудобно и ненадёжно. А поскольку детство у меня давно прошло, то все подобные поделки были изъяты из домашней сети и заменены на банальные, но надёжные элементы.
я пользуюсь без проблем, очень удобно — и по количеству обратной связи — желающих что-то сделать немало
Китайские детали это кот в мешке, в совке они отбирались по параметрам и соответствовали маркировке, а какой кристалл китайцы сунули в корпус, они и сами часто не знают, задача у них другая, продать сделаное, а какие параметры конкретного изделия это тайна и когда полыхнёт тот же симистор, никто не знает.
Но съэкономить тут уже нет возможности.
а если так подходить к деталям, то лучше вообще никакую технику не использовать — там стоят точно такие же
Вот пожары от возгорания советских цветных транформаторных кинескопных телевизоров — вот это четко и конкретно.
Ну и насчёт всего включаемого тиристорами, может есть смысл матчасть поизучать, а не нести чушь?
А еще у них нет никакой ответственности. Предложи им подписать договор с четкой гарантией и оплатой ущерба от пожара из-за их изделия все как один «сливаются» и несут чушь что это невозможно. Они понятия не имеют что такое грейды компонентов и поставки на конвееры с отбраковкой и прочее. Дети дорвались до Али и Ардуино. И всё.
Yurok, экономьте ресурсы микроконтроллеров, не перегружайте их
говнокодомнеуклюжими конструкциями. Всю эту кучу операторов можно заменить одной строкой digitalWrite(load_pin, load_on). У вас это постоянно.CodeVision умеет оптимизировать такие конструкции, которые привел klop — разницы не будет. Про AStudio не скажу — не экспериментировал.
Дает на выходе
Если память использована под завязку, а нужно пристроить новую фичу приходится оптимизировать. А так, в чем резон и выигрыш?
Ок. Поставил вместо -O3 опцию -Os (оптимизация размера, а не скорости)
Вариант 1 (стал короче):
Вариант 2 (все равно меньше и быстрее):
Т.е. именно
#define PINXXX 3
if (load_on)
digitalWriteFast(PINXXX, HIGH);
else
digitalWrite(PINXXX, LOW);
Попробуйте и будете приятно удивлены.
Результат компиляции будет одинаковым в данном случае, так что про ресурсы мимо, а про наглядность и удобство расширения — я писал…
Все же рекомендую проверить. Я проверил на своем компиляторе (чуть выше).
Автор, Вы можете описать как Вы прошиваете данный МК? У меня не получается прошить из Arduino IDE.
Подскажите еще пожалуйста, по Вашей статье сделал подсветку лестницы. но там не работает ШИМ. Так и должно быть?
Там яркость передается в качестве параметра, как вы определили что не работает?
По видимому дело в моей плате.
Этож надо — сделать изоляционный пропил, а потом насажать цепей с расстоянием меньше мм.
Занимайтесь вы лучше низковольтовыми схемами, а то убьет же.
не стану советовать чем вам заняться )
В высоковольтной части все расстояния допустимы, откройте любой блок питания и посмотрите расстояния там.
Допустимое расстояние без всякой обработки при худьших условиях и напряжении 310 Вольт 0,31 мм, если покрыть плату лаком, то пробивная прочность увеличится в разы.
можнонужно выкинуть. Это — опасно для жизни.Не умеете работать с опасными цепями — ваша проблема. Но, не выкладывайте это на всеобщее обозрение — кто-то повторит и он может пострадать. Из-за вас.
А про питание полностью согласен.
на 0.1 мм во всех правых измерениях ошибка кстати у вас
Развязка вторички должна выдерживать 1,5кВ, а это минимум 5мм зазор
МЭК 60065-2005
www.lygte-info.dk/info/indexUSB%20UK.html
Причём иногда даже на внешне приличном монтаже тест не проходит, например
lygte-info.dk/review/USBpower%20Valueline%20Micro%20USB%20AC%20charger%20VLMP60891B10%20UK.html
Зазор 2...2.5 мм прошел тест на 2830v
Впрочем, это еще не самое противное в плате. У автора между выводами сети (а не тиристора) расстояние 0.6(+0.6) мм. Малейший всплеск в сети и выгоревшая розетка.
по расстоянию — там вообще 0.9 — ниже скрины
youtu.be/euBpVr_XhuU?t=77
Ну или пусть в промышленном масштабе с китайцами соревнуется
все в пределах допусков, а если плату покрыть лаком, то вообще об этом и думать нечего
расстояния меньше, чем в моей платке, а напряжения выше. Для того чтоб контакты не замкнули — нарисованы полоски )
– А если все будут с кры… FATAL SYSTEM ERROR
расстояния на плате все в пределах допустимых — непонятна нервность народа :)
Если бы ты запитал всё от высоковольтной цепи и не делал бы саму возможность разницы потенциалов (вынос пинов проводами и внешнее низковольтное питание), то все претензии по расстояниям снялись бы моментально.
Конечно помехи приходят не только по вводу. Но это помехи уже другой интенсивности и мощности и ноуты не уходят в перезагрузку от выключения двигателя компрессора холодильника.
Дежурное питание на маленьком железном трансформаторе. Основное питание на импульсный БП включается с помощью реле. На входе стоит предохранитель, потом два разрядника, common mode choke, два X2 конденсатора на землю и два варистора параллельно им и один варистор в толстой силиконовой оболочке на питании. Дураки наверное, сэр
Как то получается все что сделано — сделано в китае.
И по печатке у вас управление идет с 4 ноги. И если уж занудствовать то и в схеме у вас не ваттный резюк указан в снаббере, а 0,25. В обвязке резюков симистра тоже не указана ватность 2 других, а они тоже не менее поувата должны быть. Эхххе.
И да по зазорам для управления маломощной нагрузки все в норме, для лампочек и меньше можно сделать.
а мощность указана в тексте к схеме
Но, боюсь, вынужден буду присоединиться к предыдущим ораторам: как в части защиты входов, так и в части топологии платы. 2мм расстояние между выводом контроллера (резистор R5) и выводом силового тиристора лично мне кажется не очень удачным решением. Фактически, только оно отделяет сетевое напряжение от всей остальной низковольтной части, включая то, что будет подключено к управляющим входам.
Лишней толщины это не добавит — резистор не сильно толще высоты пайки выводных компонентов.
Неизбежная пыль плюс не менее неизбежная влага рано или поздно способны одарить сюрпризом, тем более что здесь полноценного-то пробоя вовсе не надо ждать, достаточно нескольких ма утечки…
Есть у 3063 7.5 мм расстояния между рядами «горячих» и «холодных» ног — и хорошо, и не надо нигде делать меньше. Такое вот частное мнение.
Ну и цена конечно велика у attiny очень
Для полного счастья не хватает детектора ноля. С ним и диммировать можно было бы.
стабильности работы esp8266, к сожалению, далеко до тиньки. Я бы не стал его использовать в таких решениях
Конечно если стабильность (надежность) считать по количеству транзисторов то 8 битные микроконтроллеры выигрывают
но иногда перезагружаются
Ну скорее всего. Мои вот
m.geektimes.ru/post/289389/
Эх жаль я тогда про ESP8285 не знал.
Почему они вам нравятся?
Не понимаю.
На все чихи написано ни по одной библиотеке, и качественных сред разработки — как минимум — 3.
Это Вам не STM, где камней на каждом повороте — ворох, мануал загадочен и малопонятен, а мощности и наворотов хватает, чтобы сделать автономный дрон с нейросетью и грабежом караванов.
Однако кол-во базовых примеров (как и библиотек) — так мало, что в большинстве случаев приходится ваять все самому.
По-этому для рапид-прототайпинга и для неболших проектов тиньки — самое оно.
Вы будете заниматься решением задачи, а не пытаться понять, какого х… в прерывании по DMA запортилась ячейка, которая вроде и портится не должна была, и вообще DMA в другой адрес писал :)
Для простых устройств атмеловские процы — отличное решение.
Для сложных — да, можно уже копать STM.
Других вариантов практически на рынке и нет (пик не в счет — сдох давным-давно).
Например stm8s003 10 штук 250 рублей.
Ну и даже STM8 сложнее Тиньки :) И да — у него есть свои плюсы (энергопотребление и цена, например), но для обычного человека все это не упирается.
P.S. У младших тинек 8 ног, а минимальное кол-во ног у младших STM было 20 ЕМНИП — еще одна сложность. 8 ножный DIP куда проще в монтаже. Может сейчас что и поменялось у STM — не в курсе.
Недавно выпустили STM8S001 soic 8. Но пока не очень доступно. Мне больше всех нравится корпус qfn20 3x3мм.
Ног конечно там от этого больше не стало :).
Шаг 0,5 мм. И все 20 ног задействованы.
Примеров конечно в разы меньше чем для avr. Но мне это не мешает;)
Для меня единственный плюс АВР что v-usb на нём можно поднять.
По этому я предпочитаю использовать stm32 с аппаратным usb ;)
PIC10F200 стоит c доставкой столько же сколько и stm8s003 (за 10 штук). Attiny13 дороже.
Attiny85 вообще космос.
Что то я забыл, вроде он был китайский. Сейчас попробую поискать.
П.С. Не нашёл ;((
— сожрали б-дяди конкурента
Такое частенько случается в бизнесе.
Процы выпускаются, иде пилится, средства разработки продаются.
Юмора не понял.
Можно же по-русски понятно для всех сказать, например «для быстрой реализации основных функций».
Только STM32 не так плох, как мне кажется. Так же очень надежный камень, и очень мощный.
а снаббер при желании можно не ставить
если нужно диммировать — я делаю так :):
mysku.club/blog/aliexpress/45432.html
Для начала:
1. Борисов В.Г. «Юный радиолюбитель»;
2. Сворень Р.А. «Электроника шаг за шагом»;
3. Хоровиц П., Хилл У. «Искусство схемотехники»;
Можно добавить ещё.
4. Е. Айсберг: «Радио — это очень просто» и «Транзистор — это очень просто»;
5. Р. Токхейм «Основы цифровой электроники»;
Потом (с накопленной базой знаний и пониманием) уже читать конкретно по микроконтроллерам, но там уже всё будет достаточно просто: и интернета будет хватать, со всеми форумами, конференциями, примерами и уроками.
mysku.club/blog/aliexpress/59220.html#comment2434648
Если человек не очень понимает, когда говорят «ногу ардуины подтягиваем к плюсу внешним сопротивлением, а кнопкой её прижимаем к земле», если человек не знает, чем последовательное соединение светодиодов отличается от параллельного, что такое гасящий или токоограничивающий резистор, и как ключевым каскадом умощнить вывод ардуины, то всё-таки гораздо важнее сначала чуть-чуть окунуться в теорию.
Нет, я не призываю полностью сушить себе мозги, но понимание об элементарных вещах (хотя бы о n-p переходе или, скажем, о законе Ома для участка цепи) иметь-таки надо… Это тот багаж, который не тянет за плечами.
Конечно, если нет среднешкольного образования то надо это восполнить, а потом долбить ардуино.
Теперь стоит почитывать даташиты, иногда.
И, да, любому, кто собирается оперировать словами «даташит», в десять-двенадцать лет я советую начинать читать Свореня и Борисова.
А «даташитами» надо не оперировать, а использовать данные из них.
Ой, спасибо за науку, добрый человек. Я действительно благодарен и признателен.
Но я стойко подозреваю ситуацию, когда ооциты с известковой оболочкой передают информацию и навыки банкивской джунглевой птице. Хотя орнитология довольно далека от электроники и темы разговора…
Я про управление полевыми тр-рами с P-каналом.
Хотя это, видать, тоже не ваше.
У меня до сих пор лежит трансформатор для точечной сварки, все никак времени не найду заняться им. Плата ваша нравится очень.
Разве просто второй строки недостаточно для инициализации порта с подтяжкой к питанию?
в данном случае, первое можно убрать
просто изменить пины и будет работать!
ладно бы оно было еслиб выходило дешевле чем самому вытравить но за два бакса…
да ещё ждать потом
а если не прийдёт
то снова ждать
Входы лучше диодами защитить от наводок. В SoftwareSerial пины вроде не надо дополнительно входом-выходом объявлять. В функции все есть.
Но я одного не пойму, зачем тут использовать несколько бистабильных выключателя с отдельным проводом для каждого? Не проще взять кнопки без фиксации и повесить параллельно на один шлейф и один пин? И проводов меньше надо и кнопок можно хоть 100 задействовать. А в коде логику триггера. Я бы так сделал.
а еще можно, например, отключать автоматом свет через 5 часов использования — иногда и такое нужно
Лень она такая!
Еще из статьи я узнал как будет будет колючка по-английски :).
Сейчас развязка управляющих каналов и силовых блоков осуществляется по вайфай — пример соноф или в диапазоне 433М — пример www.noo.com.by/, www.noo.com.by/silovyie-bloki.html (но сейчас у них nooLite на пульты и силовые блоки идиотские цены — непонятно как они клиентов находят и собираются конкуировать).
идею подсмотрел тут: Щелкаем реле правильно: коммутация мощных нагрузок
Надо бы сперва открыть тиристор, а как его открыть когда он шунтирован контактами реле. То есть, при размыкании контактов реле должен одновременно открываться симистор. Потом, после механической стабилизации контактов реле — выключить симистор.
в статье задержки включения и выключения формируются простыми RC цепочками, а вы можете их сделать на процессоре…
обратите внимание, что там автор испытывает на двухкиловатном пылесосе, а реле и тиристор самые простые и никаких теплоотводов не требуется. единственно, что в статье использован тиристор с большим dI/dt, гораздо больше вашего — это важно для реактивных нагрузок.
если модератор удалит ссылку, то ищите «AN4993: How to implement a SCR or a Triac in a hybride relay application»
проблема в русскоязычных терминах. то что вы пишите справедливо для SCR. Но BTA16 и BTA216 это 3х квадрантные Triac — они остаются включены, пока и если ток управляющего электрода выше тока спрямления, не зависимо от тока через канал.
Кстати, на сайте ST пишут что выбранный вами BTA16 не требует снаббера. Как бы его конкурентное преимущество.
действительно, получается слишком сложно
Она актуальна немного в иных случаях, когда нагрузка поедполагается более мощная и снаббер тут не при чем. А размеры будут намного больше
для TTP223 совсем иная история, если вы его к реле хотите, там обязательно нужен транзистор, ток удержания реле приличный
1. Как верхний код переделать, чтоб считывать состояние на одном пине?
В планах использовать тини13, передатчик на 433, применив всё это на выходе схемы проходного выключателя. Т.е. хочу сделать счетчик включений. Если одно- то передать сигнал на декор подсветку, если два- зажечь люстру.