Exitonservice.ru

Экситон Сервис
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Управление выключателем через usb

Как подключить самые дешевые гаджеты для умного дома к Алисе

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

При наличии умной колонки с Алисой или приложения Яндекс вы сможете связать голосовой ассистент с самыми доступными умными гаджетами.

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

Контроллер умного дома (с Ethernet, WiFi, USB, блэкджеком и плюшками) за $20?

Некоторое время назад к нам обратился один потенциальный заказчик со своей идеей проекта «умного дома». Мы заказчикам всегда рады, особенно если у них есть более-менее внятная идея и достаточно денег для ее воплощения (сразу скажу — этот заказчик пока что является идеалом сферического заказчика в вакууме, повезло нам с ним). Так что после пары встреч родилось общее описание проекта, и мы приступили к поиску вариантов технической реализации. Нужен был недорогой контроллер с поддержкой WiFi и USB, небольшим энергопотреблением и, главное, с достаточно открытой архитектурой, чтобы мы могли сделать на его базе собственное кастомизированное решение.

И тут очень удачно попалась нам на глаза статья. Ух ты, какие штуки бывают, оказывается! У меня самого в качестве передвижной точки доступа для поездок по Китаю (где до сих пор RJ-45 розетка в номере при отсутствии WiFi — довольно частое явление) давно уже используется мини-роутер TP-LINK TL-WR702N, купленный рублей за 700, но тот факт, что внутри живет вполне приличный одноплатный компьютер с кучей дополнительных возможностей, стал для меня приятным сюрпризом. А поскольку мы по своему основному бизнесу плотно завязаны с Китаем (и китайскими производителями электроники в частности), стало нам интересно — во сколько же нам обойдется собственная плата на базе SoC AR9331, если целое законченное решение в корпусе, в коробке, с проводами и блоком питания, стоит в России 700р (на то время — $22) в рознице?

1. Чем так привлекательна SoC AR9331?

Для начала, что же лежит в основе всех этих крайне дешевых мини-роутеров? Это SoC (system-on-chip) Atheros AR9331 (даташит). В одном небольшом чипе (12х12мм) сосредоточены:

  • 32-разрядный процессор MIPS 400МГц
  • интерфейсы памяти (DRAM и serial Flash)
  • пятипортовый Ethernet switch
  • радиоинтерфейс 2.4 ГГц WiFi 802.11b/g/n (до 130Мбит)
  • контроллер USB 2.0 (хост/клиент)
  • UART, I2S/SPDIF, SLIC интерфейсы
  • до 28 GPIO (. ).

Работает это все (помимо проприетарных прошивок) под управлением OpenWRT. Но самое интересное — этот чип в Китае оптом стоит в районе 5-6 USD! Однако…

2. Дайте две!

Очень захотелось посмотреть на это чудо живьем, провести пару-тройку бесчеловечных экспериментов. Выяснилось, что в «шаговой доступности» есть два варианта CPU board на основе AR9331. Это литовская Карамбола2 и китайские платы EL-M150. Конечно, для удобства мы заказали по паре-тройке development board (эту и вот такую, соответственно).


Понятно, что китайские платы мы заказывали по своим каналам в Шеньжене, и обошлись они гораздо дешевле (65 USD с доставкой). Заодно у китайцев приобрели несколько штук процессорных плат, чтобы узнать, сколько же на самом деле стоит их производство? (в розницу китайцы ими торгуют по $25). Вот таких:

3. Carambola2 development board

Не могу не поделиться своими воспоминаниями о первом случае, когда я столкнулся с этим забавным словом — «карамбола». На заре перестройки в СССР начали издавать местный вариант журнала «Бурда моден». Это был безусловный хит, наши женщины (в моем случае — мама) стояли в очереди, чтобы ознакомиться с передовыми западными идеями кройки и шитья. Меня в то время тряпки интересовали мало, но вот встречались там всякие интересные кулинарные рецепты (а пожрать я всегда любил, да и сейчас… эх. ), которые я всегда читал с удовольствием и крайней степенью любопытства. Уж больно все это глянцевое великолепие заметно отличалось от любимой настольной «Книги о вкусной и здоровой пище» 1976 года издания. Так вот, в одном из рецептов мне встретились золотые слова: «… возьмите две карамболы». Сказать, что я впал в ступор — это значит ничего не сказать. Мало того, что я совершенно не представлял себе, где их можно взять в конце 80х годов в г. Ленинграде? К моему глубочайшему потрясению, я не мог даже представить себе — что это вообще такое?! Овощ? Фрукт? Орех? Приправа? Специя? А фото волшебного предмета с чУдным (или чуднЫм) названием «карамбола», увы, не было… Вот так и пришлось мне жить в неведении вплоть до появления Интернета.

Что хорошо:

  • недорогая (33 Euro)
  • разъём miniUSB (подсоединяем к компу и сразу получаем питание плюс консоль)
  • маленькая (84х63х12мм вместе с разъемами)
  • керамическая антенна WiFi плюс разъем для маленькой внешней антенны
  • 16Мб флеш-памяти
  • развитое сообщество энтузиастов.

Что не очень хорошо:

  • мало всего: разъемов, кнопок, LEDов и т.п.
  • WiFi по умолчанию отключен, SCP и консоль — недоступны, из коробки — только WEB-доступ через Ethernet
  • неинформативная индикация текущего состояния
  • мне пришел вариант с какой-то сильно усеченной прошивкой
  • непонятно, что с доступностью: я до Нового года покупал, а вот сейчас на сайте доступен только предзаказ.
Читать еще:  Автоматический выключатель с моторным приводом 1600а

Поскольку питание — от компа через miniUSB, потребляемую мощность пока не замеряли.

4. EL-M150 development board


Что хорошо:

  • дофига всего на плате (14 LEDов, две релюхи, три Ethernet разъема, три USB (полноразмерных), слот для карт SD, кнопка включения с фиксацией, три кнопки без фиксации (включая Reset), 16 джамперов), разъем для большой антенны WiFi
  • прошивка сразу вполне полноценная, перепрошивать сходу не понадобилось
  • WiFi включен из коробки в режиме «точка доступа» — первоначальная настройка без проблем
  • SCP и консоль доступны сразу (если покупатель достаточно догадлив, чтобы угадать пароль «admin» для пользователя «root»).

Что не очень хорошо:

  • подороже и побольше Карамболы (это не недостаток — см. список возможностей чуть выше)
  • нужен отдельный блок питания (7-12В)
  • флеш-памяти — 8Мб
  • встроенная WiFi антенна (дорожка на плате) — не фонтан (хотя и работает)
  • изначально WEB-интерфейс — на китайском языке (ох, как же я матерился!)
  • 2 реле волшебного бренда «HUI KE» почему-то в номинале 1А 125В (что мешало 230В поставить — непонятно)
  • китайская специфика — технической поддержки не дождешься
  • одну плату мне каким-то образом удалось превратить в кирпич.

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

5. Процессорная плата EL-M150

Как я уже упоминал, нам было очень интересно — какова же себестоимость изделия наших китайских друзей (напоминаю, в розницу они продают эту плату в среднем за $25)? Мы посчитали. Итак, на тираже в 1000 шт. себестоимость платы выходит чуть меньше $12:
SoC AR9331 $5.4
RAM DDR2 64Мб $1.5
Serial flash 8Мб $1.1
Изготовление печатной платы (4 слоя) плюс монтаж — $3.2
Плюс мелочевка, тестирование и прошивка.

Наша собственная плата получится в себестоимости чуть подороже, чем китайская, т.к. мы делаем вход питания 5В (у китайцев — 3.3В), чтобы можно было сразу на процессорную плату подключать USB клиентов (и питать ее от USB же). В общем, $20 в розницу в России — вполне реально. Опять же, китайские друзья сделали нижнюю поверхность гладкой как попка младенца, чтобы использовать свой любимый способ монтажа на «несущую плату» — трудолюбивыми вчерашними крестьянами с горячими (очень горячими — припой-то у всех уже бессвинцовый!) паяльниками в мозолистых руках. Мы же хотим сделать плату «двухсторонней» и уменьшить габариты раза в полтора. Как сделаем опытные образцы — всю документацию на плату откроем.

Да, кстати. Процессорная плата «в сборе» потребляет порядка 0.4Вт и не греется (вообще!).

Ну а сейчас в качестве эксперимента попробуем сделать с каждой из этих двух development boards и самой дешевой USB WEB-камеры (в тумбочке валялась Logitech какая-то, покупалась когда-то дешвле 500р) IP-камеру с трансляцией видео по локальной сети через WiFi. Надо же с чего-то начинать?

1. EL-M150

Начнем с китайской платы, т.к. с ней все проще простого.
1. Включаем питание. Секунд 20 плата мигает огоньками, как новогодняя елочка, после чего пара светодиодов начинают гореть постоянно. Плата готова к экспериментам.
2. Смотрим доступные WiFi сети. Обнаруживаем что-то вроде «Небезопасная беспроводная сеть OpenWRT_el-m150_020020». Цепляемся за нее, получаем IP адрес.
3. Лезем браузером на 192.168.1.1. Вводим пароль «admin». Видим неземную красотищу и радуемся, блин.

4. Переключаем язык на английский, радуемся еще раз, но гораздо сильнее. (я нашел видео на YouTube, где переключали немножко другой интерфейс OpenWRT, и сравнивал иероглифы, . ). Заодно устанавливаем дату/время и сохраняем все конфиги. Еще можно зайти на вкладку «LEDX/RELAYX», посмотреть на мигающие светодиоды и послушать щелчки реле.
5. Переводим плату из режима «точка доступа» в режим клиента своей (домашней или рабочей) сети WiFi. Как это делать — подробно написано здесь. Запоминаем IP-адрес платы.
6. Подключаем камеру к порту USB.
7. Заходим на плату уже по новому IP-адресу в своей родной локальной сети. В WEB-интерфейсе выбираем вкладку usbd/webcam и ставим флажок на поле «enable or disable mjpg-streamer webcam». Сохраняем изменения — вуаля, на камере загорается зеленый светодиод, мы в эфире!
Теперь можно смотреть видео (например, в плеере VLC) по адресу http:// :8080/?action=stream, или ловить скриншоты по ссылке http:// :8080/?action=snapshot.

2. Carambola2

Здесь работы побольше (ну, хоть приключений с китайским языком нет).

1. Подключаем плату к компьютеру шнурком USB-miniUSB. Плата радостно мигает (один раз) зеленым светодиодиком. В консоли ничего нет. Новых WiFi сетей нет. Только ласково (и постоянно!) горят зеленые светодиоды на двух разъемах RJ-45. Что вообще происходит?!

2. Цепляем витой парой порт J4 на Карамболе к сетевой карте компа. Ага, комп получил IP-адрес! Идем на 192.168.1.1, видим LuCI, ура!

3. Устанавливаем пароль для рута. Теперь плата «видна» в консоли и по SCP. Круто.

4. Включаем WiFi, меняем режим с «точки доступа» на «клиент». Цепляемся за плату в локальной сети через WiFi — ура! Теперь плата может выйти в Интернет (нужно для следующего пункта).

Читать еще:  Однопостовая розетка с выключателем

5. Хотим поставить пакет mjpg-streamer. Облом. Нет такого пакета в репозитории! Нифига себе…

6. Скачиваем с сайта последнюю прошивку, перепрошиваем плату через WEB-интерфейс с сохранением настроек.

Ура, mjpg-streamer появился в списке пакетов! Устанавливаем.

7. Подключаем камеру к USB.

8. Все круто, только mjpg_streamer не запускается. Ошибка «Init v4L2 failed». Сравниваем установленные пакеты на M150 (где видео работает) и на Карамболе. Оказывается, не хватает еще пакета kmod-video-videobuf2. Устанавливаем пакет, перезапускаем стример — ура! Заработало.

С подключением и использованием USB флешек проблем никаких. Сейчас потихоньку мучаем GPIO, подключение 3G модема, собираем собственные прошивки OpenWRT и т.д. За эти деньги, я считаю, обе development boards — просто подарок. А сама процессорная плата — сказка.

Насколько решение на AR9331 подходит в качестве контроллера «умного дома»? По-моему, идеально подходит. В локальную сеть интегрируется без каких-либо проблем (хочешь — по кабелю Ethernet, причем PoE никто не отменял, хочешь — по WiFi). Мощности 400МГц MIPS процессора более чем достаточно. OpenWRT позволяет делать с этой платой что угодно без особых трудностей в программировании, множество пакетов доступно из репозитория в готовом виде. Периферия подключается легко. Стоит вполне разумных денег. В общем, если не нужно аппаратное кодирование/декодирование видео — по-моему, просто чума.

Media UniX

Думаю, первое о чём задумывается человек, желающий добавить элементы «умного дома» себе в квартиру — это управление освещением. В идеале минимальный набор функций, которыми должен быть наделён «умный свет» должен состоять из возможности включать и выключать свет как с выключателя, расположенного на стене, так и с любого устройства в домашней локальной сети, имеющего на борту браузер. Ещё есть большое желание управлять освещением с пульта дистанционного управления.
Итого минимальный функционал:

  • Включение/выключение света с кнопки
  • Включение/выключение света в браузере (а значит любым смартфоном/планшетом/компьютером/ноутбуком и т.д. в сети)
  • Включение/выключение света с ПДУ

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

Если кому-то лень читать, то можно посмотреть видео:

Остальные читаем дальше.
Для реализации функционала мне понадобились следующие элементы.

Необходимые элементы для управления освещением

  • Arduino — Плата с микроконтроллером. Я использовал версию Arduino UNO, в которой заменил разъём usb на mini usb, потому что при старом разъёме, контакты прилегали не плотно друг к другу.
  • Arduino Ethernet Shield W5100. Это плата расширения для Arduino, необходимая для подключения UNO к локальной сети. На чип W5100 одел радиатор, ниже по тексту про нагрев этого чипа будет несколько слов. Ещё подправил разъём под ICSP, чтобы шилд ложился плотнее на Arduino.
  • Реле, для управления нагрузкой. Почитав публикации, заметил, что обыкновенные реле служат не долго из-за наличия подвижных элементов в нём. Я использовал твердотельное реле Fotek SSR-40 DA. Оно дороже, но надёжнее
  • ИК-приемник. Я использовал приёмник VS1838B с частотой 38 кгц. В теории хотелось бы располагать приёмник возле самого выключателя в комнате, по аналогии с управлением телевизором. Чтобы включить телевизор, надо на него направить пульт, но вот как их расположить в выключателе, чтобы это было эстетически не противно, я пока не придумал. Подумываю о том, чтобы располагать ИК-приёмники в центре комнаты на потолке. Ещё, пока только теоретический вариант — это использовать дополнительную плату Arduino, которая и будет с помощью GET запросов по локальной сети включать или выключать свет в любой из комнат. Но это пока теория и я остановился на том, чтобы расположить ИК-приёмник возле самого выключателя. В случае каких-то модификаций, ИК-приёмники можно будет убрать в чашку с выключателем, благо занимает он мало места.
    Чтобы подключить ИК-приёмник, желательно будет спаять небольшую обвязку, состоящую из:
    1 резистора на 100 Ом (не перепутайте с 100 кОМ. При 100 кОМ работать не будет)
    1 Конденсатора электролитического с номиналом 10мкф 50в , вотльтаж можно и меньше взять.
    1 Конденсатора керамического с номиналом 0.1мкф (взял с маркировкой S104).
    Либо божно взять уже готовый модуль на плате с напаянными элементами, включая сам ИК-приёмник.
  • Пульт дистанционного управления. Я использовал от телевизора LG, исходя из тех соображений, что телевизор или любое другое устройство LG я не куплю, то есть нажимая на кнопку пульта, я не буду думать о том, чтобы сработало именно выключение света, а не телевизор или другое устройство LG. Да, пульт выбран довольно большой, но в перспективе многие кнопки будут задействованы, ведь управлять будем не только светом. Сильно специфического производителя пультов, я тоже решил не брать.
  • Светодиод. Для одного блока я использую всего 1 светодиод и объясню почему. Он мне нужен лишь для индикации состояния реле, а как следствие и состояния света, включен или выключен. Этот элемент блока управления светом будет располагаться в коридоре, то есть в коридоре, стоя в обуви я смогу перед выходом увидеть в какой комнате свет был по забывчивости не выключен. Можно конечно для индикации и «красивостей» использовать дисплей, на котором выводить текст о состоянии света, но это физически занимает больше места. А так будет красным горит светодиод — значит свет включен, не горит — не включен.
  • Кнопка без фиксации настенная. Визуально она похожа на обычный выключатель, который стоит в большинстве квартир нашей родины, но работает она несколько иначе. Она всегда физически находится в одном положении, при нажатии на неё, она отщёлкивается обратно, по типу тактовой кнопки.
  • Тактовая кнопка. Примерно такая, как используется в кнопках reset или power на системном блоке ПК. Эта кнопка тоже нужна будет для выключения света, но в коридоре, чтобы не проходить в комнату, где забыли выключить свет.
  • Блок питания Arduino. «Запитать» Arduino можно как по USB, так и подав напряжение в выведенный для этого на плате разъём. Заметил такую особенность модуля локальной сети Ethernet Shield W5100. При питании от usb, чип w5100 начинает сильно греться. При этом перебоев в его работе я не наблюдал, даже при высокой его температуре и длительном испльзовании. Но при питании Arduino через отдельный разъём, чип w5100 грелся значительно меньше. Поэтому решено было питать Arduino НЕ через USB. Я использовал зарядку для телефона на 5v 2A с элементом для понижения с 5V до 3.3V
  • Сервер управления всеми элементами умного дома. На данном этапе сервер не нужен, НО надо заложить фундамент для дальнейшего централизованного управления автономными модулями умного дома. Это, конечно же отдельная история, то как интерфейс управления должен выглядеть. На первое время я, наверно, напишу простейшую самописку для управления через браузер с «резиновым» интерфейсом, несколькими вкладками и кнопками. Но произойдёт это уже по окончании установки всех модулей на своё место и ввода их в эксплуатацию.
  • ПК или ноутбук с USB разъёмом для загрузки кода в Arduino.
  • Arduino IDE — среда разработки для Arduino, которую можно бесплатно скачать с офф. сайта Arduino.
  • Резисторы для подключения кнопок(настенной и тактовой). Я использовал 1 кОм. И ещё резистор для подключения светодиода. Я использовал 220 Ом.
  • Провода, само собой.
  • Breadboard мне нужен был на момент разработки прототипа, очень удобно без пайки собрать схемку.
Читать еще:  Автоматический выключатель а3716 16а

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

Модуль локальной сети Ethernet Shield W5100 по задумке производителя, думаю, должен одеваться поверх Arduino, но в моём случаем мешал разъём USB самой Arduino и контакты прилегали не плотно. До сих пор не понимаю, почему не использовать более маленький форм фактор разъёма, например mini usb. Я пробовал перепаять разъёмы и скажу, что с mini usb работает так же хорошо, тем более этот разъём, в моём случае, нужен только для заливки скетча (скетч = прошивка микроконтроллера у Arduino), питание буду подавать через другой разъём. Итого решил отпаять «родной» разъём USB от Arduino и припаивать кабель с разъёмом на конце, чтобы Ethernet Shield W5100 ложился на Arduino хорошо, все контакты соединялись.

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

комнатыкол-во зон
освещения
комната 12
комната 22
кухня2
туалет+ванная2
балкон1
коридор/прихожая1
итого надо блоков10

Идея управления освещением проста и исходя из функционала, расписанного в первых абзацах статьи, логика такова:

    • Вариант управления №1. Нажимаем кнопку на стене -> Arduino обрабатывает это нажатие -> срабатывает реле, замыкающее/размыкающее контакты. Свет включается или выключается.
    • Вариант управления №2. Отправляем в браузере GET запрос -> Arduino обрабатывает запрос -> срабатывает реле, замыкающее/размыкающее контакты. Свет включается или выключается.
  • Вариант управления №3. Нажимаем кнопку на ПДУ, таким образом отправляем команду на ИК приёмник -> Arduino обрабатывает команду -> срабатывает реле, замыкающее/размыкающее контакты. Свет включается или выключается.

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

голоса
Рейтинг статьи
Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector