2016-07-28

Комнатный контроллер с управлением по Modbus RTU

умный дом

В прошедшие выходные, наконец, создал новую прошивку для одного из моих комнатных контроллеров, которая позволит управлять светом через Modbus RTU. Почему-то в сети полно статей как это сделать, но мне пока не удалось найти исчерпывающего руководства, чтобы реализовать все что хочется.

Сейчас у меня дома весь свет управляется четырьмя контроллерами собранными на базе Arduino Pro Mini. Один контроллер управляет светом в кухне, гостиной и лоджии. Второй в душе, Третий управляет ванной и коридором, а четвертый управляет светом в двух комнатах и гардеробной, он то и будет моим первым пациентом для перепрошивки. В качестве коммуникационной платы во всех контроллерах используются готовые сборки max485, но их то я пока и не подключил, так что мой умный дом еще достаточно глуп. Чтобы заставить всю систему работать были созданы простые прошивки, не подразумевающие централизованного управления, и вот, наконец, я готов это сделать для одного из контроллеров, который управляет светом в двух комнатах и гардеробной.

В качестве серверного решения будет крутится Openhab. Прошивка позволяет управлять светом в двух комнатах и гардеробной, причем, для гардеробной реализовано плавное включение через ШИМ с регулировкой максимального значения. Яркость можно регулировать на сервере, так-же как включать и выключать свет. Дополнительно, поддерживаются герконы на дверях в комнатах и гардеробной, при этом, герконы на дверях в комнаты просто сигнализирует о своем состоянии на сервер - я еще не придумал сценарии их использования, а геркон на двери гардеробной будет дополнительно включать свет при открытии двери - свет там все-равно нужен всегда. Также подключил датчик температуры и влажности - так как в гардеробная еще и серверная - температуру знать там не повредит. Вот пока и весь функционал, а больше пока и не нужно, все остальное можно реализовать на сервере, если понадобится.

К слову сказать, код контроллера все еще мне не нравится. Это пока еще proof of concept. Есть еще что можно улучшить. Из последних нововведений мне понравилось использовать указатели на функции - их активно используют например, при программировании для Pebble. Это позволяет лучше разбить код на более мелкие, но при этом универсальные блоки, и в отличии, например, от виртуальных функций код не становится медленнее, что важно, если у вас медленный процессор с ограниченными ресурсами.

Прошивку выложил на github - https://github.com/maxistar/Controller03

Описание в схеме не полное, постараюсь выложить больше информации по этой теме, так как, похоже, что тема весьма актуальная. Видео, работы постараюсь сделать и выложить на днях. Если прошивка покажет себя хорошо - обновлю и остальные контроллеры.

Вообще планов громадье, например, нужно также, автоматизировать еще и отопление - все батареи у меня уже оснащены кранами с приводами и к ним уже подведены провода для датчиков температуры и протечки, но это сразу после того как я подключу теплые полы везде где они проложены - на лоджии в санузлах и коридоре, так что тема для автоматизации своего жилища - она неисчерпаема.

 

Оставить комментарий

 
  2016-03-25

Планшеты с беспроводной зарядкой

гад-же-ты, умный дом

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

В новой квартире я даже предусмотрел места для настенных креплений с беспроводной зарядкой и подвел к ним провода. Но вот встал вопрос, что купить на смену старенькому Nexus 7, у которого за два года уже стал теряться товарный вид и стал отказывать акселерометр? Стал искать альтернативы.

Оказалось, что альтернатив то и нет! Не выпускают планшетов с беспроводной зарядкой! Ходят слухи что iPhone7 будет оснащен беспроводной зарядкой, Samsung Edge имеет, Microsoft Lumia и еще некоторые телефоны. Планшетов с беспроводной зарядкой нет как класса!

А очень жаль, ведь это очень удобно - не нужно возиться с дурацким micro usb разъемом, провода от которого у меня живут несколько недель. Просто поставил планшет на место и всё, ты можешь быть уверен, что он будет заряжаться.

Похоже придется придумывать альтернативный вариант зарядки, может быть сделаю докстанцию с разъемом, может быть приклею внешнюю зарядку, но факт остается фактом - Nexus 7 был последним планшетом с беспроводной зарядкой.

 

Оставить комментарий

 
  2015-10-25

Умный свет на Arduino

умный дом, arduino, diy

Продолжаем тему плавного включения света, начатую ранее.

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

Наиболее нетривиальной задачей было организовать управление точечными светильниками с плавным включением. Её я успешно решил, выкинув "родные" блоки питания, замнив их на управляемые ШИМ источники тока и запитав всю схему от одного мощного блока питания. Светильники на 3 Ватта питаются от блока питания 12 вольт, светильники на 6 Ватт - от блока питания на 24 вольта.

Сам контроллер собран в корпусе на дин-рейку, заказанном на чипе&дипе. Корпус, кстати, оказался весьма удобным с макетной платой, на которой и были размещены маломощный блок питания для ардуины и три семисторных ключа с оптронной гальванической развязкой - безопасность превыше всего! Сама плата arduino pro mini и микросхема max485 для шины модбас размещены на отдельной макетной плате и помещенны в тот же корпус, благо место позволяет. 

Прошивку написал с нуля - она пока не совсем такая как я хочу, но уже не вызывает рвотного рефлекса при взгляде на код - оказывается, ардуино позволяет писать программы на вполне приличном C++ с объектами, наследованием и виртуальными функциями. Все это делает код вполне читаемым и, главное, поддерживаемым в будущем. Код выложил на github - замечания и дополнения приветствуются! 

Основная фишка - одна кнопка. Тут я вполне согласен со Стивом Джобсом - одна кнопка рулит! 

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

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

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

 

Коментариев: 3

 
  2015-01-31

Плавное включение светодиодного освещения

умный дом

Всем хороши светодиодные светильники - и экономичные, и работают долго и яркие. Но есть один недостаток который вытекает из их достоинства - высокое быстродействие и мгновенный выход на максимальную яркость приводит к тому что включение света в темноте мягко говоря не очень комфортно. Обычные лампочки при включении загораются не так резко - спирали нужно нагреться. Газоразрядные лампы зажигаются хоть и быстрее но тоже выходят на максимальный режим постепенно, но светодиодные светильники загораются мгновенно раз - и свет горит, зрачек адаптироваться за ним не упевает. Представьте ситуацию, пошел ты, ночью в туалет, нажал на выключатель и, ба-бах на несколько секунд вы ослепли - пока продрали глаза, пока привыкли к яркому свету - пора выключать свет чтобы остаться в полной темноте и ждать пока глаза снова адаптируются.

В тоже время, плавное включение светодиодного света организовать не просто - а очень просто!

Берем любой светодиодный светильник, например вот такой:

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

Блок питания от него нам не понадобится, вместо этого нам понадобится источник стабилизированного тока с ШИМ управлением, можно сделать самим, а можно купить готовый, например вот такой.

Понадобится, также источник напряжения - как правило зависит от мощности светильника - трехваттным светильникм хватит 12 вольт, 6 ваттным - 24 вольта и т.д.

Arduino Pro Mini будет управлять нашим устройством. Идея заключается в следующем - при нажатии на кнопку выключателя свет будет плавно включаться, при повторном нажатии - плавно выключаться. Если мы хотим уменьшить яркость нашего диммера - просто оставляем кнопку нажатой немного дольше - умный выключатель перейдет в режим настройки и будет циклически увеличивать яркость до максимума а затем её уменьшать. Найдя нужное значение яркости отпускаем кнопку - наш диммер запомнит это значение и будет использовать это значение яркости в дальнейшем.

Подключение готового устройства не предстваляет трудности даже человеку далекому от электроники. Подключаем кнопку к ножке A0 второй провод кнопки - на землю. Подтягивающий резистор не нужен - будем использовать внутренний подтягивающий резистор самого микроконтроллера. ШИМ управление будем снимать с вывода 6. Скетч для прошивки контроллера выложил сюда.

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

 

Оставить комментарий

 
  2014-11-05

Сдруживаем Arduino и Openhab

умный дом, arduino

Openhab - это сердце умного дома от суровых немецких ребят. Мне это решение понравилось тем что оно распространяется по свободной лицензии, написано на Java но при этом может работать на совсем слабом железе - том же raspbery. Платки arduino pro mini при заказе с ebay стоят сто рублей шутка, при этом их просто и легко запрограммировать под выполнение нужных задач - зажигать свет, измерять температуру и влажность, работать с датчиками движения и теплым полом - не нужно даже разводить ЛУТ - просто припаял такую платку на макетную плату, добавил силовых элементов, завел питание и готово устройство!

Выложил небольшое видео как заставить работать вместе ardiuno pro mini и openhab через USB. Применений подобному решению может быть масса, я же хочу реализовать сверхбюджетный вариант умного дома. Что из этого получится? Поживем - увидим.

Скетч для ардуинки выложил на гитхаб. На стороне опенхаба используется обычный serial binding - если кого заинтересует выложу и его настройки.

Программа максимум -- заставить ардуинки работать в сети modbus - в умном доме может быть десятки микроконтроллеров - на всех USB портов не напасешься, но это уже совсем другая история. 

UPD: для настройки openhab нужно добавить в конфигурацию openhab:
demo.items: https://gist.github.com/maxistar/26cb21fe7e045c1200e5
demo.rules: https://gist.github.com/maxistar/8fdd6989560c3a1c7df7
саму идею почерпнул вот из этой статьи.

 

Коментариев: 3

 
  2014-10-31

Держатель планшета с беспроводной зарядкой

умный дом, гад-же-ты

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

Однако, вроде бы, тривиальная задачка оказалась со своей спецификой. Во первых, на рынке оказалось на редкость мало нормальных креплений для планшетов на стену. Даже на ebay, где, казалось бы все есть, найти подобное я не смог. В основном идут крепления для айпедов. Нашел искомое у американской компании Dockem - элементарнейшее пластмассовое крепление на стену которое они продают за $15. Но, выбирать было не из чего -- других вариантов я не нашел. Заказал несколько таких креплений через Бандерельку - напрямую в Россию Dockem посылать не захотел.

С беспроводной зарядкой дела обстоят проще - китайцы на ebay предлагают широкий ассортимент DIY плат, мне больше всего понравилась вот такая. Плата плосская, питание 5В подается через разъем микро USB. 

Крепление планшета крепится к стене при помощи специальных клейких полосок которые идут в комплекте, клеят, кстати, довольно надежно. Зарядку прикрепил между креплениями при помощи двустороннего скотча.

Готовый Proof of concept снял на видео:

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

Последнее время стал задумываться о 3d принтере - такие элементарные вещи как всевозмоные крепления для устройств, корпуса, крючки вполне можно было бы печать самому.

 

Оставить комментарий

 
  2014-09-06

Особенности светодиодного освещения и массового сознания

гад-же-ты, умный дом

Проектирую освещение себе в квартиру. Особенность состоит в том, что освещать квартиру я хочу при помощи светодиодных светильников. Светодиоды, на мой взгляд, сейчас, самый оптимальный источник света, но есть одно но. Хочется чтобы освещение включалось плавно. Не то чтобы это было обязательным требованием, но почему бы и нет. Хочется и все тут.

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

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

Казалось бы, такая пустяковая задача легко решается - собираем небольшой контроллер, например на ардуине, который будет выдавать ШИМ сигнал, который будет затем поступать на усилитель мощности выдающий импульсы постоянного тока модулированные ШИМ сигналом на мощные светодиодные светильники и дело в шляпе!

Но оказалось, что на рынке нет таких лампочек которые можно использовать таким образом! Все, поставляемые на рынок лампочки, имеют внутре драйвер, который преобразует входное напряжения 220 вольт в напряжение для питания мощных светодиодов. На рынке есть все - мощные светодиоды отдельно, есть мощные блоки питания с ШИМ регулированием, есть даже наборы для самостоятельной сборки светодиодных лампочек... Но... нет только лампочек без драйвера.

Спросите, зачем покупать лампу, если можно купить светодиодный модуль? Все дело в том, что, хотя, у светодиодов КПД в несколько раз выше, чем у лампы накаливания, но, в силу того, что светодиод светит только в видимом диапазоне, то при КПД 20% и потребляемой мощности в 10 Ватт - только 2 Ватта превратятся в видимый свет - 8 Ватт же пойдут на нагрев кристалла, греть который очень не желательно, поэтому светодиодные светильники требуют хороших радиаторов для рассеивания тепла. У ламп накаливания 80% рассеивается в виде инфракрасного излучения а только около 15% остается на самой лампе, да и ей это особо не вредит. Поэтому, я не могу просто взять и купить светодиодный модуль, нужен еще и радиатор. Некоторые умельцы используют радиаторы от мощных транзисторов и микросхем - получается откровенный колхоз. Особенно предприимчивые предприниматели продают светильнички поинтересней, но за неинтересную цену да еще и с драйвером, который мне совершенно не нужен.

Идеальным вариантом была бы уже собранная лампа без драйвера. Я прошел по всем близлежащим магазинам - продавцы только крутят пальцем у виска разводят руками и говорят что такого у них еще никто не спрашивал.

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

При этом, самый доступный способ диммировать светодиодные лампы - это использовать обычный диммер для ламп накаливания и специальную схему, которая будет преобразовывать пониженное напряжение в доступную для питания светодиодов форму, видимо, тот же ШИМ. Такие диммируемые лампочки стоят как десять недиммируемых, а работают откровенно хреново. Не понимаю, почему я не могу просто купить в магазине обычную светодиодную лампу, но без ненужного мне драйвера и запитать как мне хочется? Что, неужели у меня одного такие заскоки?

 

Коментариев: 3

 
  2014-08-27

Arduino

программирование, гад-же-ты, умный дом, arduino

Попробовал сабж, понял почему в народе оно так популярно - уровень вхождения - ноль, т.е. любой неподготовленный человек может поключить плату к компьютеру и начать программировать. Причем, готовое устройство можно получить сразу на макетной плате. Хочу реализовать кое-что из домашней автоматики Arduino Pro Mini - для моих нужд самое оно.

 

Оставить комментарий

разное (181)
howto (122)
программирование (107)
гад-же-ты (75)
мысли (42)
PHP (41)
JavaScript (39)
вебмастеринг (37)
linux (28)
гондураша (28)
юмор (25)
полезное (20)
движок (17)
Android (16)
софт (15)
деньги (14)
видео (12)
кино (11)
беспредел (10)
путешествия (10)
музыка (10)
ztools (8)
интернет (8)
занимательная физика (8)
умный дом (8)
Nokia 5800 (7)
diy (7)
хостинг (7)
языки (7)
книги (7)
css (6)
вебдизайн (6)
lifehack (6)
apple (5)
связной (5)
oDesk (5)
козлы (5)
arduino (5)
прелоадер (5)
Python (4)
занимательная юриспруденция (4)
кухня (4)
svn (4)
рестораны (3)
энергия (3)
synphony (3)
software (2)
webmastering (2)
фото на документы (2)
Java (2)
движек (2)
Ruby on Rails (2)
спорт (2)
bash (2)
аниме (2)
гитара (2)
SEO (1)
дурдом (1)
C++ (1)
годнурас (1)
микросервисы (1)
сайты (1)
авторское право (1)
programming (1)
технологии (1)
наука (1)
восстановить (1)
Поиск по блогу:

Valid XHTML 1.0 Strict