Система "Умный дом" для загородного дома на Arduino Mega2560, HC-05, SIM900,DHT11,3-х DS18B20,RTC-DS1302

Serg1
Offline
Зарегистрирован: 04.12.2015

На длях случайно попал на  форум хаус , откуда и был этот проект продолжен. Так там фигурировал ТФТ экран. В этом развитии проекта экрана нет. Я не совсем понимаю, каким образом устанавливаются и отслеживаются параметры через  Блюпуп? Управление так-же осуществляется посредством ИК пульта. Какая программа должна быть установлена на телефоне? Чем обусловлен выбор между Блютуф и Вайфай в пользу первого?

MaksVV
Offline
Зарегистрирован: 06.08.2015

Вот набросал схему умного дома, может кому интересно будет 

https://yadi.sk/i/VjdbyX6ypuQN3

Slavyanin55
Slavyanin55 аватар
Offline
Зарегистрирован: 01.06.2014

Serg1 пишет:

На длях случайно попал на  форум хаус , откуда и был этот проект продолжен. Так там фигурировал ТФТ экран. В этом развитии проекта экрана нет. Я не совсем понимаю, каким образом устанавливаются и отслеживаются параметры через  Блюпуп? Управление так-же осуществляется посредством ИК пульта. Какая программа должна быть установлена на телефоне? Чем обусловлен выбор между Блютуф и Вайфай в пользу первого?

Да, фигурировал ТФТ экран. По сути если вы ту программу посмотрите, то это никакой не умный дом. Даже не автоматизация. Это просто дистанционная включалка/отключался всего. Подошел к экранчику, подал питание 220В на всё или не на всё. А где умность схемы? Где АВТОматизация.

Дальше возвращаемся к экранам. А накой он нужен в наше время? Когда у каждого смартфоны и планшеты есть, ноутбуки так вообще по умолчанию. Так вот я с самого начала и не задавался целью экран городить. Тем более, что они все либо маленькие либо очень дорогие. И опять же экран вещь стационарная, а смартфон мобильная и всегда под рукой.

Недавно пришел мне ТФТ экран с тачем. Оказалось что экран это такая шляпа, то чипы у них разные, то библиотеки вообще не подходят. Код программы здоровенный, пины у ардуины все занимают. Во всяком случае, я пока нифига не разобрался в этом. Поковырялся пару раз, толку особого не придал. Пока некогда. Я вот наладил сейчас голосовое оповещение. Куда удобнее ведь когда система тебе говорит русским языком что и как, а не пишет в трех словах на экране размером в спичный коробок. Рекомендую всем DFplayer mini вещь! за 220р на Али.

Далее про Блюпуп и Вифи. Модуль Блюпупа НС-05 это тупо беспроводной порт serial. Соединяться с ним можно и по компьютеру и с любого смарта. Так вот, как отслеживать параметры. Запускаешь на смарте приложение блютус терминал, мне нравится BluetoothSPP с него отправляешь команду в виде слова например "ZAPROS" и в ответ тебе ардуина шлет текстом все параметры. Ну или реагирует на это слово, включает там что нибудь или выключает.

Блютус проще простого. А роутера ВиФи не было у меня раньше, поэтому и не делал на нем ничего. Теперь есть, есть смысл заняться. Но всё упирается в андроид! Нужно уметь создать приложение на андроиде. Готовый и универсальных приложений нет. Обычно, так две кнопки: выключить лампочку и включить. и всё. И на кой оно мне.

Slavyanin55
Slavyanin55 аватар
Offline
Зарегистрирован: 01.06.2014

MaksVV пишет:

Может я не прав, но вроде бы в данном коде неправильно сделан счетчик ошибок на датчиках DS18B20. 

в строках 32,33 и 34   "&&" нужно заменить на "||" иначе в счетчик ошибки никогда не будут добавляться. 

вот в строке 10 правильно сделано

Абсолютно прав! Да, это косяк. Я что то не сразу заметил. Удивлялся, куда это ошибки пропали в шлейфе. А никуда они не пропали, просто температуры не обновлялись при неудачном замере. А теперь да, исправил, и идет подсчет ошибок по каждому датчику, и статистика говорит, что у меня большие проблемы с уличным датчиком. Надо делать нормально.

Slavyanin55
Slavyanin55 аватар
Offline
Зарегистрирован: 01.06.2014

MaksVV пишет:

А вообще у тебя система больше года работает. как со стабильностью? Зависал ли скетч? Не сгорала ли мега, оптопары? Были ли какиенибудь внештатные ситуации ? И как у тебя подключена шина One Wire датчиков DS напрямую к меге?  Вот ещё нашел  про развязку DS18B20 http://radiokot.ru/articles/58/

Как мне один коллега программист сказал, что здоровый физически микроконтроллер зависать не может, это не виндовс какой нибудь. В такие тонкости микросхем я не вникал ещё. Но опыт показывает, что ардуина не зависала ни разу. Если какое либо действие не выполнялось, то только от того, что я допустил ошибку в программе и какой то кусок когда просто не работал. Нештатные ситуации, были только при долгом отсутствии напряжения в доме после гроз и ураганов. Разряжался аккумулятор в ИБП и когда напряжение падало на нём, то ардуина перезапускалась по нескольку раз в минуту и успевала слать при каждом перезапуске СМС о том что она включилась. (почему то обещанная отсечка аккумулятора при низком заряде не работает у ИБП, надо его поменять) В итоге плата GSM вконец высаживала аккумулятор и смс-ки прекращались. Сейчас я убрал СМС ки при запуске.

Реле ещё не подгорали, оптопары в работе. Датчик DHТ11 глючит периодически, всё таки плохой он. И мои коды с усреднением значений не помогают. В топку его.

Датчики DS18B20 подключены на прямую, надо переделывать.

Slavyanin55
Slavyanin55 аватар
Offline
Зарегистрирован: 01.06.2014

dr.lmg пишет:

Вячеслав, вопрос по управлению освещением. На чем реализовано управление - вижу в шкафу только 8 реле? Или есть еще отдельно реле?

Это старые фото, просто у меня не было куплено столько реле. Сейчас всё как в проекте, 16 реле. 4 рядом установил, а еще 4 в контроллерном шкафу, пока включают подсветку 12 вольтовую. Вообще собираюсь на транзисторах IRF740 сделать коммутацию 12В. Реле освободить для других проектов.

Slavyanin55
Slavyanin55 аватар
Offline
Зарегистрирован: 01.06.2014

На вопросы ответил, теперь поделюсь радостью своей. Запустил я голосовое оповещение. Теперь Умный дом говорить может. Озвучила его мне моя жена. Для этого приобрел модуль DFPlayer mini. Штука замечательная. Всё просто. А главное работает мгновенно, без задержек и чисто. На флешку микроСД закидываешь файлы МП3 и всё. Далее программа сообщает по серийному порту какой проиграть и всё. Громкость встроенного УНЧ для одной комнаты более чем достаточна.

Короче программу скоро выложу на диск.

abarmotovi4
Offline
Зарегистрирован: 07.02.2016

MaksVV пишет:

Вот набросал схему умного дома, может кому интересно будет 

https://yadi.sk/i/VjdbyX6ypuQN3

1. Можно на программную и физическую реализацию связи датчиков через DS2406P.(в гугле подробностей не нашел).

2. Какими кабелями лучше подключать датчики, расстояние 10-20 метров? (если использовать витые пары, то какой степени защиты FTP, UTP, STP... - а то цены кусаются у хорошо защищеных. Или можно обойтись ПВС3х0,75).

abarmotovi4
Offline
Зарегистрирован: 07.02.2016

Slavyanin55 пишет:

Датчики DS18B20 подключены на прямую, надо переделывать.

1. Как проще подключить датчики температуры? (ссылку в коде видел, но у нас проблема найти данные элементы, можно что-нибудь из доступного китайского или местного)

MaksVV
Offline
Зарегистрирован: 06.08.2015

abarmotovi4 пишет:

1. Можно на программную и физическую реализацию связи датчиков через DS2406P.(в гугле подробностей не нашел).

считать данные 2406

http://arduino.ru/forum/programmirovanie/schitat-dannye-s-ds2406

управлять выходами 2406

http://arduino.ru/forum/programmirovanie/1-wire-zapis-v-ustroistvo

abarmotovi4 пишет:

2. Какими кабелями лучше подключать датчики, расстояние 10-20 метров? (если использовать витые пары, то какой степени защиты FTP, UTP, STP... - а то цены кусаются у хорошо защищеных. Или можно обойтись ПВС3х0,75).

лучше STP (вроде как двойная экранировка, т.е. каждая пара в экране и общий экран)

abarmotovi4 пишет:

Slavyanin55 пишет:

Датчики DS18B20 подключены на прямую, надо переделывать.

1. Как проще подключить датчики температуры? (ссылку в коде видел, но у нас проблема найти данные элементы, можно что-нибудь из доступного китайского или местного)

какие элементы? сами датчики ds18b20? так их полно на алиэкспрессе за 100 рублей. а если вы имеете ввиду про гальваническую развязку, то подключите сналала без неё и потестируйте, может всё будет нормально работать. 

MaksVV
Offline
Зарегистрирован: 06.08.2015

Slavyanin55 пишет:

На вопросы ответил, теперь поделюсь радостью своей. Запустил я голосовое оповещение. Теперь Умный дом говорить может. Озвучила его мне моя жена. Для этого приобрел модуль DFPlayer mini. Штука замечательная. Всё просто. А главное работает мгновенно, без задержек и чисто. На флешку микроСД закидываешь файлы МП3 и всё. Далее программа сообщает по серийному порту какой проиграть и всё. Громкость встроенного УНЧ для одной комнаты более чем достаточна.

Короче программу скоро выложу на диск.

круто! тоже жду данный девайс. интресует, если один мп3 файл ещё не успел доиграть , и послать команду на следующий файл , первый прервется или доиграет? Данное стало интересно, т.к. нужно диктовать цифры из переменных. 

abarmotovi4
Offline
Зарегистрирован: 07.02.2016

MaksVV пишет:

какие элементы? сами датчики ds18b20? так их полно на алиэкспрессе за 100 рублей. а если вы имеете ввиду про гальваническую развязку, то подключите сналала без неё и потестируйте, может всё будет нормально работать. 

Спасибо за ответы. SFTP дорогой))). (А какой кабель вы используете?).

Имел ввиду гальваническую развязку. Как понять, надо она или нет, чем тестировать? Подойдет ли такая?

Slavyanin55
Slavyanin55 аватар
Offline
Зарегистрирован: 01.06.2014

MaksVV пишет:

круто! тоже жду данный девайс. интресует, если один мп3 файл ещё не успел доиграть , и послать команду на следующий файл , первый прервется или доиграет? Данное стало интересно, т.к. нужно диктовать цифры из переменных. 

Файл прервется и начнет играть следующий, т.е. последняя команда. Ну я просто делаю задержку на время этого файла, потом сразу же следующий отправляется.

НО можно вообще грамотно сделать! Если лень одолею, то сделаю. У платы плеера есть выход "BUSY", на нем "1" когда плеер проигрывает файл, как только освободился, на выходе "0". Ну вот и можно сделать отправку следующего файла только после появления "0".

m-zzz
Offline
Зарегистрирован: 30.05.2015

abarmotovi4 пишет:

Имел ввиду гальваническую развязку. Как понять, надо она или нет, чем тестировать? Подойдет ли такая?

Гавальнической развязкой очень советую не пренебрегать, это обеспечит значительно более долгую и менее проблемную жизнь вашей системы автоматизации. Только вот по ссылке ценник откровенно конский, особенно если учесть сколько каналов придется гавальнически развязывать.. 817 оптопара стоит 2-3 рубля, резисторы вообще по цене мусора.. Даже если собирать не по упрощенной, как по ссылке схеме, а по полной, то стоимость одного канала никак не поднимается выше 12-20ти рублей.. Реально же можно и меньше, чем в десять уложиться..

MaksVV
Offline
Зарегистрирован: 06.08.2015

abarmotovi4 пишет:

MaksVV пишет:

какие элементы? сами датчики ds18b20? так их полно на алиэкспрессе за 100 рублей. а если вы имеете ввиду про гальваническую развязку, то подключите сналала без неё и потестируйте, может всё будет нормально работать. 

Спасибо за ответы. SFTP дорогой))). (А какой кабель вы используете?).

Имел ввиду гальваническую развязку. Как понять, надо она или нет, чем тестировать? Подойдет ли такая?

m-zzz пишет:

Гавальнической развязкой очень советую не пренебрегать, это обеспечит значительно более долгую и менее проблемную жизнь вашей системы автоматизации. Только вот по ссылке ценник откровенно конский, особенно если учесть сколько каналов придется гавальнически развязывать.. 817 оптопара стоит 2-3 рубля, резисторы вообще по цене мусора.. Даже если собирать не по упрощенной, как по ссылке схеме, а по полной, то стоимость одного канала никак не поднимается выше 12-20ти рублей.. Реально же можно и меньше, чем в десять уложиться..

я говорил про гальваническую развязку шины 1-wire. т.е. куда подключаются датчики DS18B20. Просто её обычно на оптопаре не сделаешь. поэтому и сказал, что можно поюзать без гальванической развязки и потестить. А про обычные цифровые входы/выходы то это да, надо развязывать при помощи оптопар. 

mic19154
Offline
Зарегистрирован: 30.10.2015

 

 

mic19154
Offline
Зарегистрирован: 30.10.2015

Slavyanin55 пишет:

На вопросы ответил, теперь поделюсь радостью своей. Запустил я голосовое оповещение. Теперь Умный дом говорить может. Озвучила его мне моя жена. Для этого приобрел модуль DFPlayer mini. Штука замечательная. Всё просто. А главное работает мгновенно, без задержек и чисто. На флешку микроСД закидываешь файлы МП3 и всё. Далее программа сообщает по серийному порту какой проиграть и всё. Громкость встроенного УНЧ для одной комнаты более чем достаточна.

Короче программу скоро выложу на диск.

Рад был подсказать

smoker_vvo
Offline
Зарегистрирован: 14.02.2013

2 Slavyanin55: Подскажите логигу срабатывания сигнализации от пожарных датчиков? И схему подключения... В документах она есть, но там всего два резистора на +Пит. И все..... Какие ДИП используете??? Используете ли доп резисторы??

Slavyanin55
Slavyanin55 аватар
Offline
Зарегистрирован: 01.06.2014

smoker_vvo пишет:

2 Slavyanin55: Подскажите логигу срабатывания сигнализации от пожарных датчиков? И схему подключения... В документах она есть, но там всего два резистора на +Пит. И все..... Какие ДИП используете??? Используете ли доп резисторы??

Логика не хитрая. По дому идут рядом два шлейфа. Все датчики дымовые сидят параллельно на шлейфе. Алгоритм простой:

Нет сработавших датчиков состояние: норма

Сработал один датчик в любом шлейфе - шлется СМС-ка "сработал датчик пож..." , и переход в режим внимания. При этом режиме пищалка пикает.

Далее сработал второй датчик во втором шлейфе _ шлется СМС-ка "сработала пож.сигнализация" обесточиваются все электроприборы дома, включается сирена.

Потом, вручную сбрасываем питание с сработавших  дымовых датчиков, программа это видит и переходит в режим "норма".

Есть  ещё и режим "проверка", он нужен для проверки работоспособности датчиков без песен плясок и СМС-сок. Включаете режим проверки, пищалка пикает раз в 6 секунд... сделали сработку датчика, пищалка пикает раз в 3 секунды, сбросили питание с датчика, пищалка снова пикает раз в 6 секунд.

Ну и есть режим "отключено" ну это и так понятно.

Теперь про схему подключения. Все дымовые датчики (только неадресные) в дежурном режиме потребляют десятки микроампер от 50 до 120мкА обычно. А вот когда датчик обнаружил дым и сработал, то начинает есть очень хорошо по 20мА. Работают они в диапазоне напряжений от 9 до 30В. Так вот как у меня работает. Питание +12В идет через светодиод оптопары, если датчики не сработавшие, то токов в микроамперах не достаточно, чтобы светодиод зажегся и поступил сигнал на ардуину. А вот когда датчик срабатывате, то начинает пропускать через себя ток и светодиод в оптопаре зажигается и передает сигнал на контроллер.

Так вот для чего два резистора с +12В. Это шунты. Просто если много на шлейфе устанавливается датчиков, то они в сумме в дежурном режиме начинают кушать ток достаточный для срабатывания оптопары. Так вот через резисторы эти идет часть тока мимо оптопары. Сопротивление этих резисторов определяется опытным путем.

У меня используются дымовые датчики ИП212-3СУ и ИП212-45 старого и нового образцов. Но дымовые датчики особо не отличаются друг от друга. Бери те, которые на вас смотрят :)

Минусы моей схемы: нет контроля целостности шлейфа.

Плюсы: простота

Slavyanin55
Slavyanin55 аватар
Offline
Зарегистрирован: 01.06.2014

mic19154 пишет:

Рад был подсказать

Благодарю! Кстати, может подскажешь, есть ещё какие секреты и фишки у этой платы? ЮСБ флешку подключить возможно или нет? Как сделать воспроизведение из другой папки? Вроде пишут про это, что можно разбить на папки и плата будет выбирать из них.

smoker_vvo
Offline
Зарегистрирован: 14.02.2013

О как!! Вот теперь стаало понятно про оптопары.......Т.е. прямой связи ДИП с Дуней нет. Мысль хорошая и скорее верная. На каждый ШС своя оптопара...... Я вот Гранит использую на пожарку, и ПЦН для передачи сигнала на Ардуино.  Я правильно понял что у вас два ДИПа стоят??или.....

 

Slavyanin55
Slavyanin55 аватар
Offline
Зарегистрирован: 01.06.2014

smoker_vvo пишет:

О как!! Вот теперь стаало понятно про оптопары.......Т.е. прямой связи ДИП с Дуней нет. Мысль хорошая и скорее верная. На каждый ШС своя оптопара...... Я вот Гранит использую на пожарку, и ПЦН для передачи сигнала на Ардуино.  Я правильно понял что у вас два ДИПа стоят??или.....

У меня 10 ДИПов, 5 точек измерения.  На комнате по 2 датчика из разных шлейфов.

Используете гранит! Вот это правильно, прибор очень не плохой! А Граниты 3,5, так ещё лучше с миниЮсб портом для настройки.

На таких специализированных приборах есть контроль целостности шлейфов, и настройка сработки по двум датчикам. Два шлейфа нет необходимости рядом тянуть. И вообще в приборе Гранит за платой столько места,что туда можно несколько ардуин запихать. И питание стабилизированное и бесперебойное! И сделаны Граниты на Атмегах кстати.

victorv
Offline
Зарегистрирован: 31.07.2015

Здравствуйте , проект отличный  и главное , что развивается. Пока вроде все понятно , но вот чем понимать есть ток в сети или нет , тупо поставить реле на 220 в и как отключается слать сигнал , или есть модуль для ардуины ?

Slavyanin55
Slavyanin55 аватар
Offline
Зарегистрирован: 01.06.2014

victorv пишет:

Здравствуйте , проект отличный  и главное , что развивается. Пока вроде все понятно , но вот чем понимать есть ток в сети или нет , тупо поставить реле на 220 в и как отключается слать сигнал , или есть модуль для ардуины ?

Разные варианты есть. Простой - реле на 220В. Один раз при отключении питания СМС отправит программа, после появления питания отправит еще СМС... и всё. В программе всё учтено. + задержка чтобы при дребезге сети не было лишних смс.

m-zzz
Offline
Зарегистрирован: 30.05.2015

victorv пишет:

 чем понимать есть ток в сети или нет , тупо поставить реле на 220 в

Для тока есть специализированые токовые датчики.

Тупо поставив реле вы врядли определите есть ли у вас ток в сети.. Только напряжение.

Но и для напряжения реле далеко не идеальный вариант. Самое простое поспавить модуль на отопаре.

Потребление в разы (или десятки раз) меньше, чем у реле, отсутствуют нагрев, щелчки, окисление конактов и т.п.

alexey_all
Offline
Зарегистрирован: 20.03.2016

Доброго времени суток всем! Еще в августе того года появилась задумка сделать умный дом совместно с охранной сигнализацией. К сожалению, из-за нашей почты железо из Китая пришло только в январе этого года. Что есть на данный момент:

1) Меню управления функциями с урезанным русским языком. Пришлось писать с нуля свой класс, реализующий все необходимые мне возможности.

2) Охранная сигнализация с возможностью настраивать задержку включения для прогрева датчиков движения,  время работы сирены после срабатывания контура защиты. Использованы 3 реле: 1 подает питание на датчики, 2 включает лампу-индикатор снаружи дома, 3 включает сирену. В случае тревоги звонит на один из разрешенных номеров.

3) Оповещение о снижении температуры в помещении. Необходимо в том случае, если задуло газовый котел. В меню настраивается пороговое значение температуры, интервал повторной отправки sms, выборается комнатный датчик температуры.

4) Управление газовым котлом для поддержания температуры в помещении. Настраивается температура в помещениях, гистерезис (допуск) по температуре для уменьшения тактования газового котла.

5) В самом меню есть возможность смены пароля. Если забыл, то есть определенный пин, замкнув который на землю настройки сбросят на дефолтные.

6) Реализованы профили температуры, переключая которые меняются все температурные установки. Нужно для быстрого изменения настроек при уезде\приезде в дом.

7) Все настройки можно поменять с помощью звонка с одного из разрешенных номеров. Управление осуществляется посредством DTMF команд. 

8) WatchDog. В случае зависания система сама себя перезагрузит. Факт включения дублируется SMS (можно выкл в меню).

9) Создан класс, позволяющий избавиться от задержек при измерении температуры с DS18B20. Ищет датчики сразу по нескольким пинам. Очень просто переключаться между датчиками по порядковому номеру датчика. Нужен был потому что на плате 2 входа под датчики: первые расположены совсем рядом с контроллером, а вторые далеко. Соответственно и сопротивления на линию данных ставятся разные.

В планах добывить управление бойлером, управление светом, и привязать управление к сайту, который так и не дойдут руки запустить(хоть и доменное имя уже куплено))).

 

https://youtu.be/3-55tmB01yc

Т.к. есть желающие на мое устройство скетч выкладывать не буду, но могу ответить и подсказать по вашим вопросам.

Pavlik
Offline
Зарегистрирован: 09.01.2016

alexey_all пишет:

Подскажите пожалуйста. Вы используете как я вижу SIM900А (мини). Он на данный момент стоит 760 рублей. Есть просто SIM900 стоит уже 1400 рублей. В чем различия между ними? Стоит переплачивать?

Единственное чтоя пока заметил, что тот который подорожее идет как шилд. Можно на Uno поставить. Но у меня "Мега 2560"

alexey_all
Offline
Зарегистрирован: 20.03.2016

Sim900a не предназначен для Европы- он для Азии и имеет изначально только 2 диапазона, которые у нас нас не работают. Он видит все сети, но не регистрируется в них. Для нормальной работы его надо перешить. Мои два модуля работают нормально, но кто-то писал что модусь у него перезагружаться каждые 10 секунд. На этом модуле нет разъемов микрофона и наушников. В целом он все тот же sim900. По поводу шилд/не шилд волноваться не стоит- нужно всего 4 провода: rx, tx, gnd, +5v

mic19154
Offline
Зарегистрирован: 30.10.2015

Slavyanin55 пишет:

mic19154 пишет:

Рад был подсказать

Благодарю! Кстати, может подскажешь, есть ещё какие секреты и фишки у этой платы? ЮСБ флешку подключить возможно или нет? Как сделать воспроизведение из другой папки? Вроде пишут про это, что можно разбить на папки и плата будет выбирать из них.

Я как то пытался найти random из определенной папки для создания диалога с устройством))) Туда же хотел включить модуль распознавания речи,но посмотрев на цену девайса и максимальное количество комманд (а их не более 15) - свернул проект. Но где то на просторах Ютюба я своими глазами видел,как маленькой игрушке с кучей проводов задавали вопрос,а она отвечала на него разными вариантами. Нужно в библиотеке mp3TF расшифровать комманды( рэндомное воспроизведение там тоже есть, я из него простой мп 3-шник делал с пультом на 433Мгц-работает на ура!) их там куча. Если что нибудь получится-обязательно пишите.Я еще попробую пошарить. Да кстати для прикола можно скачать и нарезать из 2го CRYSISa "Разговор нанокостюма" - там много фраз,которые прекрасно вписываются в систему умного дома.

mic19154
Offline
Зарегистрирован: 30.10.2015

Про ЮСБ флешку: Знаю точно,что можно сделать проводок или разЪем для вставленой в него micro SD,для того чтобы не вытыкать ее постоянно. Там есть 2 контакта USB+,USB-,а вот про ЮСБ флешку пока немогу сказать-нужен подопытный)))

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Slavyanin55, какого размера у Вас шкафы, которые на фотках в начале темы?

smoker_vvo
Offline
Зарегистрирован: 14.02.2013

Slavyanin55, вопрос. В форуме вы советуете резисторы 3к9 и светодиоды, как я понимаю это к оптопарам, но на вашей же схеме указан номинал резистора 1к0, это опечатка??? или 3к9 в других местах. И еще, где то мелькао упоминанеие контактора для отключения ЭП в доме при сработке пожарки, чем это упоминание завершилось?? Сам мудрю с Majordomo и 2560. Для охранки и пожарки взял промышленные приборы Гранит на пожарку и Maestro 1600 на охрану. Главное - в случае проблем с Ардуино, функции пож. охраны и охраны - фунциклируют автономно. Сообщения на телефон отправляю через Телеграмм. И еще, по подробнее про подключение модулей реле, как я вижу из схемы, просто с выходов 2560 на вход модуля, без добавочных резисторов, но у меня в свое время, такая схема вызывала самопроизвольное срабатыванеи реле, или отказывалось управляться, пришлось ставить доп резисторы. И еще, какова стабильность работы Ардуино, бывают ли зависания или самопроизвольные сбросы......

smoker_vvo
Offline
Зарегистрирован: 14.02.2013

Так, перечитывая "изданное" нашел вопрос о стабильности. Завидую. НО, правда у меня есть некий web сервер в коде........ Да бы оценить состояние входов/выходов и показания температуры. Может он гонит...

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

mic19154 пишет:

 Да кстати для прикола можно скачать и нарезать из 2го CRYSISa "Разговор нанокостюма" - там много фраз,которые прекрасно вписываются в систему умного дома.

Да уж ))) Фразами из нанокостюма можно озвучивать только если в дом проникли чужаки и их надо как следует припугнуть. А иначе так и самому дара речи можно лишиться..

MaksVV
Offline
Зарегистрирован: 06.08.2015

Всё мучаюсь с автоматическим светом. Но уже срочно нужно на втором этаже дома проводить свет, а то надоело в темноте ходить. На первом свет сделан без всякой "умности", может потом займусь. Решил сделать такую схему. На этаже 5 комнат. Выключатели нефиксируемые, поэтому могут быть проходными, т.е. в одном месте включил, в другом (например с кровати) со второго выключателя выключил. Если выключателя более одного на команату, то все подключаются параллельно. На выключателях лампа индикации , которая показывает состояние функции "автоматический свет". Логика такая:  нажали коротко на выключатель - состояние света поменялось на противоположное (включился либо выключился). Нажали на выключатель в течение 1 сек - поменялось состояние функции "автоматический свет" (включилась либо выключилась). выключатели примерно такие http://shop.erasveta.ru/shop/viklyuchateli-cariva-/item/9367/ Такая схема (без фиксации выключателей) позволяет, например, потом организовать имитацию хозяев в доме, включать и выключать функцию "автоматический свет" по времени по часам RTC и т.д. Да хоть с телефона свет включить или выключить. 

Проблема что пинов для такой затеи нужно мама не горюй. Даже отдельной ардуино уны либо наны не хватает, ещё чтоли мегу ставить только на свет?! (На первом этаже трудится МЕГА на другие задачи). А тянуть все провода на первый этаж это ппц. Написал код для всей этой приблуды, капец большой получился. Может кому интересно будет. Код ещё не проверял в работе, кто собирёт, респект тому, отпишитесь. 

// пины входов от выключателей в комнатах
#define switchTanya   3
#define switchDet     4
#define switchKatya   5
#define switchVanna_2 6
#define switchZal_2   7

// пины выходов на реле включения света
#define RelayTanya    8
#define RelayDet      9
#define RelayKatya    10
#define RelayVanna_2  11
#define RelayZal_2    12

// пины выходов на лампы индикации состояния функуции "автосвет" (лампы, которые находятся на выключателях света)
//#define LEDautoTanya    ?
//#define LEDautoDet      ?
//#define LEDautoKatya    ?
//#define LEDautoVanna_2  ?
//#define LEDautoZal_2    ?


// пины входов от датчиков движения и сенсора света 

#define PIRTanya     1
#define PIRDet       2
#define PIRKatya     3
#define PIRVanna_2   4
#define PIRZal_2     5
#define sensorSVET   0           // пин входа сенсора аналогового освещения 
int UlicaS = 15;

// флаги состояния реле света в комнатах

bool Tanya =   1;
bool Det =     1;
bool Katya =   1;
bool Vanna_2 = 1;
bool Zal_2 =   1;

// флаги состояния функции "автосвет" в комнатах

bool autoTanya = 0;
bool autoDet = 0;
bool autoKatya = 0;
bool autoVanna_2 = 0;
bool autoZal_2 = 0;

// флаги состояния запуска таймера выключателей для вкл/выкл функции "автосвет"

bool zapuskTanya = 0;
bool zapuskDet = 0;
bool zapuskKatya = 0;
bool zapuskVanna_2 = 0;
bool zapuskZal_2 = 0;

// флаги для отсчета времени таймера выключателей для вкл/выкл функции "автосвет"

bool timerenabledTanya=false;
bool timerenabledDet=false;
bool timerenabledKatya=false;
bool timerenabledVanna_2=false;
bool timerenabledZal_2=false;
unsigned long time, timer=0;
#define TIMEREXPIRED (time-timer)>1000   // 1000 время удерживания выключателя в мс для активации вкл или выкл функции "автосвет"

// переменные для функции "автосвет"

long unsigned int lowIn_Tanya; // Время, в которое был принят сигнал отсутствия движения (LOW)
long unsigned int lowIn_Det; 
long unsigned int lowIn_Katya; 
long unsigned int lowIn_Vanna_2; 
long unsigned int lowIn_Zal_2; 

int pause_Tanya = 240000; //задержка включения света при включенной функции "автосвет"
int pause_Det = 240000;
int pause_Katya = 240000;
int pause_Vanna_2 = 120000;
int pause_Zal_2 = 240000;

bool lockLow_Tanya = true; //Флаг. false = значит движение уже обнаружено, true - уже известно, что движения нет
bool lockLow_Det = true;
bool lockLow_Katya = true;
bool lockLow_Vanna_2 = true;
bool lockLow_Zal_2 = true;

bool takeLowTime_Tanya; //Флаг. Сигнализирует о необходимости запомнить время начала отсутствия движения
bool takeLowTime_Det;
bool takeLowTime_Katya;
bool takeLowTime_Vanna_2;
bool takeLowTime_Zal_2;



// флаги для стабилизации выключателей от дребезга 

bool lastbuttonTanya = 1;
bool lastbuttonDet = 1;
bool lastbuttonKatya = 1;
bool lastbuttonVanna_2 = 1;
bool lastbuttonZal_2 = 1;

bool currentbuttonTanya = 0;
bool currentbuttonDet = 0;
bool currentbuttonKatya = 0;
bool currentbuttonVanna_2 = 0;
bool currentbuttonZal_2 = 0;


void setup() {
  pinMode (switchTanya, INPUT);   digitalWrite (switchTanya,HIGH);        // входы выключателей света + делаем подтяжку к питанию (по умолчанию на входе "1") 
  pinMode (switchDet, INPUT);     digitalWrite (switchDet, HIGH);
  pinMode (switchKatya, INPUT);   digitalWrite (switchKatya, HIGH);
  pinMode (switchVanna_2, INPUT); digitalWrite (switchVanna_2, HIGH);
  pinMode (switchZal_2, INPUT);   digitalWrite (switchZal_2, HIGH);
  
  pinMode (RelayTanya, OUTPUT);   digitalWrite (RelayTanya,HIGH);         // порты реле управления светом, сигнал инвертированный 0 - включено, 1 - выключено
  pinMode (RelayDet, OUTPUT);     digitalWrite (RelayDet, HIGH);          // сначала выключаем все реле
  pinMode (RelayKatya, OUTPUT);   digitalWrite (RelayKatya, HIGH);
  pinMode (RelayVanna_2, OUTPUT); digitalWrite (RelayVanna_2, HIGH);
  pinMode (RelayZal_2, OUTPUT);   digitalWrite (RelayZal_2, HIGH);

//  pinMode (LEDautoTanya, OUTPUT);   digitalWrite (LEDautoTanya,LOW);         // порты выходы на лампы индикации состояния функуции "автосвет" (лампы, которые находятся на выключателях света)
//  pinMode (LEDautoDet, OUTPUT);     digitalWrite (LEDautoDet, LOW);          // сначала выключаем все лампы-индикаторы 
//  pinMode (LEDautoKatya, OUTPUT);   digitalWrite (LEDautoKatya, LOW);
//  pinMode (LEDautoVanna_2, OUTPUT); digitalWrite (LEDautoVanna_2, LOW);
//  pinMode (LEDautoZal_2, OUTPUT);   digitalWrite (LEDautoZal_2, LOW);
  }

// функции защиты от дребезга выключателей 

bool debounceTanya (bool last){
bool current = digitalRead (switchTanya);
if (last != current) {delay (20); current = digitalRead (switchTanya);}
return current; }

bool debounceDet (bool last){
bool current = digitalRead (switchDet);
if (last != current) {delay (20); current = digitalRead (switchDet);}
return current; }

bool debounceKatya (bool last){
bool current = digitalRead (switchKatya);
if (last != current) {delay (20); current = digitalRead (switchKatya);}
return current; }

bool debounceVanna_2 (bool last){
bool current = digitalRead (switchVanna_2);
if (last != current) {delay (20); current = digitalRead (switchVanna_2);}
return current; }

bool debounceZal_2 (bool last){
bool current = digitalRead (switchZal_2);
if (last != current) {delay (20); current = digitalRead (switchZal_2);}
return current; }



void loop() {

  UlicaS = analogRead(sensorSVET)/10;
  time = millis();

   // если нажат какой-либо выключатель, запускаем таймеры (длительное нажатие выключателя)
   
 if (digitalRead (switchTanya) == LOW && zapuskTanya == false) {timerenabledTanya = 1 ; timer = time; zapuskTanya=1;}
 if (digitalRead (switchTanya) == HIGH){ timerenabledTanya = 0; zapuskTanya = 0;}
 
 if (digitalRead(switchDet) == LOW && zapuskDet == false) {timerenabledDet = 1 ; timer = time; zapuskDet=1;}
 if (digitalRead(switchDet) == HIGH) { timerenabledDet = 0; zapuskDet = 0;}


 if (digitalRead(switchKatya) == LOW && zapuskKatya == false) {timerenabledKatya = 1 ; timer = time; zapuskKatya=1;}
 if (digitalRead(switchKatya) == HIGH) { timerenabledKatya = 0; zapuskKatya = 0;}
 
 if (digitalRead(switchVanna_2) == LOW && zapuskVanna_2 == false) {timerenabledVanna_2 = 1 ; timer = time; zapuskVanna_2=1;}
 if (digitalRead(switchVanna_2) == HIGH) { timerenabledVanna_2 = 0; zapuskVanna_2 = 0;}
 
 if (digitalRead(switchZal_2) == LOW && zapuskZal_2 == false) {timerenabledZal_2 = 1 ; timer = time; zapuskZal_2=1;}
 if (digitalRead(switchZal_2) == HIGH) { timerenabledZal_2 = 0; zapuskZal_2 = 0;} 

// если таймер закончился, изменяем состояние функции "автосвет" на противоположное (длительное нажатие выключателя)

 if (timerenabledTanya) { if (TIMEREXPIRED) { autoTanya = !autoTanya; timerenabledTanya=false;} }
 if (timerenabledDet) { if (TIMEREXPIRED) { autoDet = !autoDet; timerenabledDet=false;} }
 if (timerenabledKatya) { if (TIMEREXPIRED) { autoKatya = !autoKatya; timerenabledKatya=false;} }
 if (timerenabledVanna_2) { if (TIMEREXPIRED) { autoVanna_2 = !autoVanna_2; timerenabledVanna_2=false;} } 
 if (timerenabledZal_2) { if (TIMEREXPIRED) { autoZal_2 = !autoZal_2; timerenabledZal_2=false;} } 

  // если нажат какой-либо выключатель, делаем защиту от дребезга контактов и меняем состояние света на противоположное (короткое нажатие выключателя)
  
 currentbuttonTanya = debounceTanya (lastbuttonTanya);
  if (currentbuttonTanya == 0 && lastbuttonTanya ==1) Tanya=!Tanya; 
  lastbuttonTanya = currentbuttonTanya;

  currentbuttonDet = debounceDet (lastbuttonDet);
  if (currentbuttonDet == 0 && lastbuttonDet ==1) Det=!Det; 
  lastbuttonTanya = currentbuttonTanya;

  currentbuttonKatya = debounceKatya (lastbuttonKatya);
  if (currentbuttonKatya == 0 && lastbuttonKatya ==1) Katya=!Katya; 
  lastbuttonKatya = currentbuttonKatya;

  currentbuttonVanna_2 = debounceVanna_2 (lastbuttonVanna_2);
  if (currentbuttonVanna_2 == 0 && lastbuttonVanna_2 ==1) Vanna_2=!Vanna_2; 
  lastbuttonVanna_2 = currentbuttonVanna_2;

  currentbuttonZal_2 = debounceZal_2 (lastbuttonZal_2);
  if (currentbuttonZal_2 == 0 && lastbuttonZal_2 ==1) Zal_2=!Zal_2; 
  lastbuttonZal_2 = currentbuttonZal_2;

  // управляем светом в зависимости от состояния переменных света (подача сигнала на реле инвертирована:  0 - реле включено, 1 - выключено)
  digitalWrite (RelayTanya, Tanya);
  digitalWrite (RelayDet, Det);
  digitalWrite (RelayKatya, Katya);
  digitalWrite (RelayVanna_2, Vanna_2);
  digitalWrite (RelayZal_2, Zal_2);

  // индикация включения функции автоствет на выключателях 

  // digitalWrite (LEDautoTanya, autoTanya);
  // digitalWrite (LEDautoDet, autoDet);
  // digitalWrite (LEDautoKatya, autoKatya);
  // digitalWrite (LEDautoVanna_2, autoVanna_2);
  // digitalWrite (LEDautoZal_2, autoZal_2);

  

// работа функции "автосвет"

//Ниже для комнаты Таня

 if (autoTanya==1)            {                // если включен автосвет
  if(analogRead(PIRTanya)> 200 && UlicaS < 30) //Если обнаружено движение и освещенность улицы меньше 30%
  {    
    if(lockLow_Tanya) //Если до этого момента еще не включили реле
    { lockLow_Tanya = false; Tanya = 0; delay(50);}     //Включаем свет.     
    takeLowTime_Tanya = true;
  }  
  if(digitalRead(PIRTanya) < 20) //Ели движения нет
  { //Если время окончания движения еще не записано     
    if(takeLowTime_Tanya){lowIn_Tanya = millis();takeLowTime_Tanya = false;} //Сохраним время окончания движения изменим значения флага, чтобы больше не брать время, пока не будет нового движения
    if(!lockLow_Tanya && millis() - lowIn_Tanya > pause_Tanya)               //Если время без движение превышает паузу => движение окончено
    { lockLow_Tanya = true; Tanya = 1; delay(50);}      //Изменяем значение флага, чтобы эта часть кода исполнилась лишь раз, до нового движения                
  } 
  if (UlicaS > 35) Tanya = 1;     // Отключение реле управления освещением больше 35%
                            }

//Ниже для детской комнаты 

 if (autoDet==1)            {                // если включен автосвет
  if(analogRead(PIRDet)> 200 && UlicaS < 30) //Если обнаружено движение и освещенность улицы меньше 30%
  {    
    if(lockLow_Det) //Если до этого момента еще не включили реле
    { lockLow_Det = false; Det = 0; delay(50);}     //Включаем свет.     
    takeLowTime_Det = true;
  }  
  if(digitalRead(PIRDet) < 20) //Ели движения нет
  { //Если время окончания движения еще не записано     
    if(takeLowTime_Det){lowIn_Det = millis();takeLowTime_Det = false;} //Сохраним время окончания движения изменим значения флага, чтобы больше не брать время, пока не будет нового движения
    if(!lockLow_Det && millis() - lowIn_Det > pause_Det)               //Если время без движение превышает паузу => движение окончено
    { lockLow_Det = true; Det = 1; delay(50);}      //Изменяем значение флага, чтобы эта часть кода исполнилась лишь раз, до нового движения                
  } 
  if (UlicaS > 35) Det = 1;     // Отключение реле управления освещением больше 35%
                              }

//Ниже для комнаты Катя 

 if (autoKatya==1)            {                // если включен автосвет
  if(analogRead(PIRKatya)> 200 && UlicaS < 30) //Если обнаружено движение и освещенность улицы меньше 30%
  {    
    if(lockLow_Katya) //Если до этого момента еще не включили реле
    { lockLow_Katya = false; Katya = 0; delay(50);}     //Включаем свет.     
    takeLowTime_Katya = true;
  }  
  if(digitalRead(PIRKatya) < 20) //Ели движения нет
  { //Если время окончания движения еще не записано     
    if(takeLowTime_Katya){lowIn_Katya = millis();takeLowTime_Katya = false;} //Сохраним время окончания движения изменим значения флага, чтобы больше не брать время, пока не будет нового движения
    if(!lockLow_Katya && millis() - lowIn_Katya > pause_Katya)               //Если время без движение превышает паузу => движение окончено
    { lockLow_Katya = true; Katya = 1; delay(50);}      //Изменяем значение флага, чтобы эта часть кода исполнилась лишь раз, до нового движения                
  } 
  if (UlicaS > 35) Katya = 1;     // Отключение реле управления освещением больше 35%
                              }

//Ниже для ванной комнаты 

 if (autoVanna_2==1)            {                // если включен автосвет
  if(analogRead(PIRVanna_2)> 200 && UlicaS < 30) //Если обнаружено движение и освещенность улицы меньше 30%
  {    
    if(lockLow_Vanna_2) //Если до этого момента еще не включили реле
    { lockLow_Vanna_2 = false; Vanna_2 = 0; delay(50);}     //Включаем свет.     
    takeLowTime_Vanna_2 = true;
  }  
  if(digitalRead(PIRVanna_2) < 20) //Ели движения нет
  { //Если время окончания движения еще не записано     
    if(takeLowTime_Vanna_2){lowIn_Vanna_2 = millis();takeLowTime_Vanna_2 = false;} //Сохраним время окончания движения изменим значения флага, чтобы больше не брать время, пока не будет нового движения
    if(!lockLow_Vanna_2 && millis() - lowIn_Vanna_2 > pause_Vanna_2)               //Если время без движение превышает паузу => движение окончено
    { lockLow_Vanna_2 = true; Vanna_2 = 1; delay(50);}      //Изменяем значение флага, чтобы эта часть кода исполнилась лишь раз, до нового движения                
  } 
  if (UlicaS > 35) Vanna_2 = 1;     // Отключение реле управления освещением больше 35%
                              }

//Ниже для зала 2

 if (autoZal_2==1)            {                // если включен автосвет
  if(analogRead(PIRZal_2)> 200 && UlicaS < 30) //Если обнаружено движение и освещенность улицы меньше 30%
  {    
    if(lockLow_Zal_2) //Если до этого момента еще не включили реле
    { lockLow_Zal_2 = false; Zal_2 = 0; delay(50);}     //Включаем свет.     
    takeLowTime_Zal_2 = true;
  }  
  if(digitalRead(PIRZal_2) < 20) //Ели движения нет
  { //Если время окончания движения еще не записано     
    if(takeLowTime_Zal_2){lowIn_Zal_2 = millis();takeLowTime_Zal_2 = false;} //Сохраним время окончания движения изменим значения флага, чтобы больше не брать время, пока не будет нового движения
    if(!lockLow_Zal_2 && millis() - lowIn_Zal_2 > pause_Zal_2)               //Если время без движение превышает паузу => движение окончено
    { lockLow_Zal_2 = true; Zal_2 = 1; delay(50);}      //Изменяем значение флага, чтобы эта часть кода исполнилась лишь раз, до нового движения                
  } 
  if (UlicaS > 35) Zal_2 = 1;     // Отключение реле управления освещением больше 35%
                              }
     }
  
  

PS. строки, которые связаны с индикацией на выключателях, закоментированы, т.к. на них у имеющейся у меня в данный момент уны не хватило пинов. По этой же причине Датчики движения заведены на аналоговые входы. PPS. Выключатели подают минус (через оптопару желательно), при автоматической подтяжке к питанию на входы выключателей. Сигналы на управление реле светом инвертированные:  0 - включено, 1 - выключено. 

 

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

MaksVV пишет:

нарисуйте схему подключения выключчаетелей, у меня тоже такие стоят вот все думаю что и как можно сделать, поэтому и интересуюсь

MaksVV
Offline
Зарегистрирован: 06.08.2015

схема простая.  На один контакт выключателя подается минус, второй контакт подключается на вход ардуино. Если выключателя два или более в конкретной комнате, то все выключатели этой комнаты подключаются параллельно (все на один вход ардуино).  

ToteMeiSter
Offline
Зарегистрирован: 01.04.2015

Насчет контроллера света могу только направить по ссылке на Majordomo.

Есть очень приличный 

MegaLight - контроллер освещения на Arduino Mega 2560+W5100

 

Автор учел ну все что душе будет угодно.

 

А прошу прощения, вчитался в код, предложенный выше. Это немного другое.

MaksVV
Offline
Зарегистрирован: 06.08.2015

ToteMeiSter пишет:

А прошу прощения, вчитался в код, предложенный выше. Это немного другое.

все равно полезная ссылка. Прочитал что можно сделать дабл клик. Мне как раз ещё одну фунцкию хочется от выключателей. Хочу чтоб в зале (там три люстры) при даблклике по одной зажигались, а не все сразу. 

ToteMeiSter
Offline
Зарегистрирован: 01.04.2015

Ну тут еще есть способо настройки, тоесть полная идея включения контроллера в сеть с последующей сетевой его настройкой, без нужды лезть в тело прошики.

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

К сожалению ничего интересного для себя не нашёл, это все возможно сделать на своём сервере или взять бесплатный хост и там все нарисовать. Это не чужой код и не чужой сервер

MaksVV
Offline
Зарегистрирован: 06.08.2015

там слишком все сложно. мне попроще хочется, вот думаю как бы проводов поменьше. 

ToteMeiSter
Offline
Зарегистрирован: 01.04.2015

КВВГнг-LS 10х1,5  Вот один такой из каждой комнаты вытягивать до щитка.

Получаем 9-ть групп освещения, а к кнопкам вытягивать обычную витую пару.

Вообще если управлять светом, то действительно много проводов получается.

alex_r61
Offline
Зарегистрирован: 20.06.2012

А может и не надо тянуть хренову тучу проводов, а протянуть витую пару и два провода для питания МК? А у светильника или  группы светильников поставить МК с RS485 или по воздуху соединить.

MaksVV
Offline
Зарегистрирован: 06.08.2015

Это надо ждать переходники ту rs485 и уметь по этому терминалу программировать. А мне уже свет тянуть надо. Пофиг буду кучу проводов тянуть. Так проще и система стабильнее будет.

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

MaksVV пишет:
Пофиг буду кучу проводов тянуть. Так проще и система стабильнее будет.
Кривее будет, а не стабильнее. Впрочем цель не сделать правильно, а сделать быстро. Поэтому нет смысла переубеждать.

alex_r61
Offline
Зарегистрирован: 20.06.2012

"Надёжность схемы обратно пропорциональна числу элементов в ней"

MaksVV
Offline
Зарегистрирован: 06.08.2015

Andy пишет:

MaksVV пишет:
Пофиг буду кучу проводов тянуть. Так проще и система стабильнее будет.
Кривее будет, а не стабильнее. Впрочем цель не сделать правильно, а сделать быстро. Поэтому нет смысла переубеждать.

На счет кривее может и согласен, но по поводу стабильности  - чем шина стабильнее подключения по проводам? 7 лет ставлю сигналки на автомобили. ВСЕГДА подключение перифирии по СAN шине к сигнализации менее стабильно для работы системы. Особенно когда прошивка can у сигнализации только вышла и ещё сырая. Дак там столько людей трудятся, делают работу над ошибками и то косяки возникают. А тут я такой один, да ещё толком без знания дела, щас rs485 буду корячить, потом в темноте сидеть. Объясните причину, по которой работа по шине стабильнее, чем подключение, так сказать, по аналогу. 

MaksVV
Offline
Зарегистрирован: 06.08.2015

alex_r61 пишет:

"Надёжность схемы обратно пропорциональна числу элементов в ней"

если шина падает или глючит, не работает всё. А так только отдельные элементы. 

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

MaksVV пишет:
Объясните причину, по которой работа по шине стабильнее, чем подключение, так сказать, по аналогу.

1.Какой из аналоговых датчиков предназначен для работы на линию 10-30 метров? Драйвер RS485 разработан для работы на линию до 1200 метров. Аналоговые сигналы нужно оцифровывать в месте их появления и передавать по цифровой линии.

2.Гальваническая развязка всего и вся от контроллера нужна или нет? Как делать гальваническую развязку аналоговых датчиков? Проще никак не делать, так ведь? Гальваническая развязка цифровой линии не проблема.

MaksVV пишет:
если шина падает или глючит, не работает всё. А так только отдельные элементы.
3.Глючит шина - устройства работают автономно и сдыхание любого из них не сказывается фатально на работе всей системы. В твоей схеме: сдыхает контроллер - сдыхает весь дом...

4.Ты прокладываешь в разы больше проводов, экономя на копеечных контроллерах. Мелкий контроллер по цене 5 метров экранированной витой пары 5 категории. Так в чем фишка? В замене интеллектуального труда физическим?

5."Электроника - наука о контактах" (с)