Marlight: лампы для программистов

Marlight — это светодиодная RGBW лампочка, управляемая по радиоканалу с частотой 2.4 ГГц. Она может управляться как с пульта, который непосредственно передает на частоте лампочки, так и с помощью роутера, который подключается в домашней Wi-Fi. С помощью роутера, который транслирует команды, поступающие к нему по сети в радиопакет для лампы, лампами можно управлять из мобильного приложения, компьютера или домашнего сервера.imageЯ рассказывал раньше о системе для умного дома — NooLite (1, 2), но самый главный ее недостаток для обычных пользователей это то, что ее надо устанавливать с применением клемм, паяльника, с разрезанием проводки и так далее. Обратной стороной является высокая возможность настроить все по своему вкусу, но это не всегда необходимо. В этот раз я расскажу о системе, которая обладает похожими функциями, но рассчитана на обычных людей — все что надо сделать для ее установки, это просто ввернуть лампочку в патрон.Комплект Вся система состоит из трех вещей — самой лампочки, пульта и роутера, каждый из можно купить по отдельности: imageЛампа Коробка лампы выглядит вот так: imageВнутри находится лампа, упакованная в пластик: imageИ все! Больше внутри нет ничего, подразумевается что лампа, не имеющая ни кнопок, ни других органов управления, не нуждается в инструкции. Кстати, упаковка достаточно прочная — из более 1000 ламп, прошедших через магазин, была повреждена всего одна — у нее немного раздавили патрон. Пришлось это очень кстати, и теперь у нас есть возможность посмотреть, что у ее внутри, правда об этом чуть дальше.Итак, лампа: imageОна имеет патрон E27 — стандартный патрон для бытовых ламп: imageЧтобы понять размер, можно положить ее рядом с икеевской лампой — СПАРСАМ.imageХорошо бы сравнить с лампой накаливания, но я не смог найти ни одной в доме. Сравнивать их удобно еще потому, что по яркости они примерно одинаковые, но икеевская гораздо более желтит.Вес у них тоже похож, СПАРСАМ весит 185 грамм: imageА марлайт 179: imageТакой вес маленькой лампочки обусловлен толстым алюминиевым корпусом, который выполняет роль радиатора для светодиодов.Чтобы сравнить яркость двух ламп, я сфотографировал их в одном и том же положении на одних настройках (1/100, 2.8, 400): imageОказалось, что марлайт на максимальных настройках даже немного ярче. На то, что освещается по-разному не обращайте внимания, потому что это лампа, у которой я снял рассеиватель (зачем — станет понятно позже).Пульт Пульт управления выглядит вот так: imageКоробку вы можете увидеть на заглавной фотографии, поэтому показывать смысла ее нет. Комплектация пульта гораздо богаче лампы — у него в комплекте есть целая инструкция: imageПульт, кстати, работает от трех батарей ААА (которых нет в комплекте): imageСамое интересное в пульте (помимо внутренностей, естественно), это органы управления: imageЧтобы не рассказывать о том, какая кнопочка за что отвечает, я нарисовал вот такую картинку: imageОна же вошла в наше руководство. Нам пришлось написать нормальное руководство, потому что то, которое идет в комплекте, мало того, что написано на плохом английском, но еще неполное и частично противоречивое.Внизу пульта — кнопки управления каналами. Как и в случае с NooLite, лампы привязываются к пульту, а не наоборот. В том смысле, что в лампу записывается код пульта (точнее, код канала на пульте), с которого она будет принимать команды.У каждого пульта 4 канала, Каждый канал управляется двумя кнопками — включить и выключить. Кнопка включения является одновременно и кнопкой активации канала — все верхние элементы управления (изменение цвета, яркости, температуры света) применяются к последнему активному каналу, т.е. к каналу, у которого вы последний раз нажали кнопку включения. Если лампы были выключены то после ее нажатия они включатся в режиме «белый свет» с сохранением предыдущей установкой яркости и температуры цвета. Если же лампы уже горели, то не произойдет ничего, но пульт запомнит этот канал, и все следующие команды с помощью верхних кнопок будет отдавать этому каналу.К каждому каналу можно привязать сколько угодно ламп, главное, чтобы они оказались в зоне покрытия пульта. Например вот в этом видео чувак управляет сразу кучей ламп:[embedded content]Один из коллег, которому очень понравились эти лампы (привет, fundorin), купил себе сразу 11 штук и поставил их во все комнаты в доме. 4 канала пульта — 4 места в доме: кухня, туалет-ванная, гостинная и коридор. Получилось, что с одного пульта можно управлять освещением во всей квартире из любого места. Говорит, очень удобно, особенно выключать свет уже лежа в кровати и уменьшать яркость, лежа в ванне.У каждого пульта серийные номера каналов разные, поэтому два пульта могут управлять 8 наборами ламп, а соседи не смогут включить вам кухонный свет, идя ночью в туалет.

Блок управления — роутер Лампочки, управляемые с пульта — это конечно, прикольно, на на умный дом ну вообще никак не тянет. Самый интересное начинается, когда становится возможным подключить лампы к компьютеру и настроить какую-нибудь автоматизацию. Для этого служит коннектор-роутер вот в такой коробочке: imageКомплектация у нее еще богаче пульта — помимо руководства у нее в комплекте есть еще и проводок для питания! imageНесмотря на USB разъем, провод служит только для питания — подключить роутер-коннектор к компьютеру не получится. Нет, конечно подключить-то получится, но разницы по сравнению с блоком питания не будет. Нет у него так же и LAN разъёма, вся коммуникация осуществляется через беспроводные соединения. Он может либо создавать собственную WiFi сеть, либо подключаться уже к существующей.Из интерактивных элементов на корпусе коннектора есть три светодиода: d10f3aef4fb350922ca4e0602563e121.jpgА так же MicroUSB разъем для питания и дырка, в которой скрывается кнопка сброса: imageВсе необходимые данные для первого подключения к роутеру написаны на нем же: 43bd906a8bc57b5471ccb213371cead5.jpgПоэтому инструкцию открывать даже не будем — все необходимое мы перевели на русский язык и добавили в свой файл.Что внутри? Блок управления — роутер Конечно, не разобрав устройство хотя бы раз, нельзя считаться его полноценным хозяином. Начнем мы с роутера. Не обращать внимания на гарантийную наклейку — просто, когда ты и являешься компанией, которая предоставляет гарантию.62fc73f4e9dd357e886d11639f0c4b16.jpgРазобрать его легко — ни винтов, ни хитрых крепежей там нет. Все, что надо — поддеть нижнюю крышку чем-нибудь плоским и прочным, чтобы вытянуть ее из защелок: fe377610f038bad70ccd1403a04508ef.jpgПосле снятия крышки нашему взору предстает нижняя часть платы, на которую смотреть совсем неинтересно.1d22439112a6e1cdb0f9b84d9b094ac9.jpgА вот обратная сторона уже гораздо интереснее: imageНа ней мы видим передатчик на частоту 2.4 ГГц с микросхемой без маркировки: imageКак и основного контроллера: imageНе понимаю, зачем заказывать контроллеры без маркировки, если прошивку все равно считать нельзя. Что даст отсутствие маркировки? Ну да ладно, это надо спрашивать у китайцев. Мы же идем дальше и видим микросхему RTC — часов реального времени, которая называется DS1302. Это такая специализированная микросхема, которая занимается только одним — считает время. Правда, делает она это отлично — с хорошей точностью и очень низким энергопотреблением — от батарейки CR2032(которая расположена рядом на плате) она может работать около двух лет, если ее не подключать все это время к питанию.Для самого подсчета времени рядом расположен «часовой» кварц на трудно запоминаемую частоту 32768 Гц, которая является просто двойкой в 15 степени. Достаточно уменьшить это частоту вдвое 15 раз подряд и мы получим частоту 1 Гц — тик каждую секунду.imageИдем дальше. Остался только Wi-Fi модуль с UART интерфейсом: imageОн собственно и отвечает за общение с локальной сетью вашего роутера или создание своей собственной.Лампа Теперь разберем саму лампу. Вообще, в отличии от пульта и роутера она совершенно неразборная (но самая интересная). Например, первая стадия разборки подразумевает срезание горячим ножом или спиливание рассеивающего купола из пластика: imageОн, кстати, довольно толстый — почти 3 мм толщины: imageРазбить лампу с таким пластиком затруднительно. После трепанации лампы нам открывается доступ к основной плате: imageКак мы видим, для освещения используются 30 светодиодов — 24 белых светодиодов (12 светодиодов теплого оттенка и 12 — холодного) и 6 RGB светодиодов. RGB светодиоды отвечают за цветное освещение, а белые, соответственно, за белое.imageПричем, как видно на гифке, в полную мощность одновременно два типа светодиодов не работают — хоть это бы и повысило яркость, но потребовало бы большего охлаждения и более мощного блока питания. Да и яркость изменялась бы во время регулирования температуры.Разобранную лампу, кстати, снимать без рассеивателя просто ужасно, получается вот так (кстати, подписывайтесь)В центре находится радио-модуль, уже привычно совсем без маркировки: 783500c8a3682c77c0094a7af46e829a.jpgПод ним — контроллер: imageЭто STM8 контроллер STM8S003F3, совершенно обычный — 16MHz, 8 Kb памяти. Контроллер общается с радиомодулем по SPI.Чтобы добраться до блока питания лампы, надо подобным образом срезать цоколь лампы: imageА потом залезть паяльником глубоко и отпаять провода питания: imageТо, что отвалилось после этого от лампочки — и есть блок питания: imageБлок питания построен на одной микросхеме LNK606, что довольно необычно для китайских устройств.imageLNK606 — это микросхемы серии LinkSwitch-II, предназначенные специально для изготовления блоков питания. За счет того, что они следят полностью за всеми параметрами БП, его схема получается очень простой: imageЗаодно получаем защиту от короткого замыкания, малое сетевое потребление без нагрузки, тепловую защиту и хороший кпд.Так вот, вернемся к светодиодам: imageБелые светодиоды одинаковы, отличаются только типом люминофора. На самом деле «белые» светодиоды — на самом деле синие или ультрафиолетовые, именно того вырвиглазного оттенка, что светит нам прямо в глаза ночью. Белыми их делают именно желтое вещество — люминофор, которые поглощает синий свет и переизлучает его в другом диапазоне. Комбинирую разные вещества в его составе можно добиться разных оттенков белого, например холодного или теплого, как это было сделано тут. Большой плюс люминофорных светодиодов — плавный спектр в отличии от RGB-сборок: imageЭто положительно сказывается на качестве освещения — у таких светодиодов выше индекс цветопередачи — CRI, несмотря на то, что они могут с первого взгляда выглядеть так же, как и сборки — излучать примерно такой же белый свет. Но есть нюанс! ©Так как цвет предмета определяет тем, какую часть спектра отражает его поверхность, то может возникнуть интересная ситуация, когда в спектре света, падающего на предмет просто отсутствует часть, которая отражается предметом. Например, у нас есть некий голубой предмет, который отражает волны с длинной 450 нм. Если мы освещаем этот предмет солнечным светом, то все нормально: imageВ спектре присутствуют волны этой длинны и они успешно отражаются предметом. А если мы освещаем этот предмет источником света, у которого спектр выглядит не так, как у солнечного света? Получается вот что: imageЭто, правда, про флуоресцентные лампы, но не суть. У лампы в спектре просто отсутствует часть волн этой длинны, хоть он и кажется нам таким же белым, как и солнечный свет. Раз волн в спектре нет — то и отражать предмету нечего, он будет выглядеть темным.Конечно, в жизни все сложнее — почти любая поверхность отражает не только одну определенную длинну волны, почти всегда захватывая инфракрасный и ультрафиолетовый диапазон, поэтому голубой предмет скорее всего не будет выглядеть черным при таком освещении. Но вот разного рода проблемы с восприятием цвета можно легко получить. Поэтому печатники никогда не показывают результат клиенту в цеху, только в офисе, только под галогенными или лампами накаливания.Короче, люминофорные светодиоды — это хорошо, и только их и надо использовать для освещения рабочего места. А этого кто-то не знал? Вообще, все нормальные белые светодиодные лампы используют люминофорные светодиоды, и я это говорю просто к тому, что Marlight можно использовать для освещения рабочего места, если вас устраивает его яркость.Впрочем, в лампе RGB-сборки все-таки есть, но они используются для отображения всех остальных цветов. Вот один из трехцветных светодиодов ближе, можно рассмотреть три разных кристалла и проводки к ним: imageПравда, на мой взгляд, цвета получаются уж очень концентрированными и чистыми, мне бы больше понравилось, если бы их можно было подмешивать к белому, чтобы создавать разные оттенки.

Еще один бич светодиодного освещения — мерцание. У светодиода, в отличии от лампы накаливания нет тепловой инерции, и если мы включаем светодиод напрямую в сеть, как делают в дешевых лампах-кукурузинах, то светодиоды моргают 100 раз в секунду, что отлично замечается при быстрых движениях глаз или предметов — карандашный тест. Там речь о мониторах, но для освещения это работает. Вот например, как выглядит «блок питания» в одной из ламп у меня дома: imageПользоваться ей для освещения жилых помещений, конечно нельзя. Стоит в туалете.Опять же, в нормальных лампах такой проблемы нет — там, как и в марлайте, стоит блок питания, который преобразует напряжение сети в нужное (постоянное) для светодиода, избавляя от мерцания вообще. Точнее, избавляя от мерцания на максимальной яркости, потому что яркость понижается ШИМ-ом, обычно невысокой частоты. Раз уж мы разобрали лампочку, подключим к ней осциллограф и посмотрим на то, как тут работает изменение яркости: imageТеперь можно включить лампочку и посмотреть на происходящее щупами осциллографа: imageКогда она включена на полную яркость, пульсаций ожидаемо нет: imageДва канала осциллографа подключены к каналам теплых и холодных светодиодов. В данном случае «теплые» светодиоды горят на полную мощность, а «холодные» выключены совсем, что мы и видим на картинке.А теперь уменьшим яркость кнопкой на пульте или в приложении: imageТеперь постоянное свечение светодиода периодически прекращается, а человечески глаз за счет своей инерционности воспринимает это как снижение освещения. 240 герц — частота не очень большая, но вкупе с хорошим рассеивателем глазам на средней яркости особо не мешает.Вот так выглядит смена яркости в динамике: imageТеперь изменим не яркость, а температуру цвета: imageПовинуясь табличке заполнения, защитой в недрах контролера, «холодный» светодиод включился на 20% яркости вместе с белым, чтобы сместить температуру света к более холодной. Но в то же время, чтобы избежать изменения яркости (часть цикла-то оба светодиода работают вместе), «теплый» в конце цикла выключился ровно на то время, на которой включился «холодный», и таким образом суммарная яркость всей лампы не изменилась. Если включить температуру в «средний» режим, то оба светодиода будут работать одинаковое время, и это будет выглядеть вот так: imageА вот так оно выглядит в виде анимации, тут лампочка в первом кадре работает в режиме «только теплый», потом постепенно переходит к режиму »10% теплого, 90% холодного», а потом возвращается обратно.image

Чтобы разобрать то, что осталось от лампы, надо открутить два винта (синие стрелки), а потом отпаять точки подключения платы процессора к плате светодиодов (красные стрелки): imageПлаты соединены бутербродом не просто так — нижняя плата алюминиевая, а верхняя из текстолита. Это сделано для того, чтобы отводить тепло от светодиодов, но в то же время не испытывать проблем с двухсторонним монтажом на алюминиевой плате. Толщина ее, кстати, 1.5 мм: imageТеперь, если поддеть алюминиевую плату чем-то загнутым и потянуть, она не без труда, но отделиться от радиатора: imageМежду нижней платой и радиатором нанесен слой термоинтерфейса — такой же, какой используется на радиаторах для процессора.В руке остается вот такая солидная алюминиевая болванка-радиатор, которая составляет большую часть веса лампы: image

Пульт С грустью (потому что это последнее, что можно разобрать) откроем пульт: imageВерхняя часть — это сенсорное кольцо: imageПохожее на аппноут от ST: imageНижняя часть — кнопки, мембранные для включения-отключения канала, сенсорные для всех остальных функций: imageОбратная сторона уже интереснее: imageТам есть две микросхемы без маркировки: imageИ уже знакомый нам модуль передатчика: imageУправление О том, как управлять лампами с пульта, я уже рассказал выше. Теперь поговорим о том, что могут делать приложения. Для начала, покажу веб-панель роутера — она довольна проста. В нем можно настроить сеть, вот так выглядят настройки, когда коннектор создает свою сеть wifi-socket без шифрования: imageА так коннектор подключается к сети в качестве клиента: imageЕще там можно поменять пароль для входа: imageИ перезагрузить его: imageОстальные настройки пользователю не нужны и трогать их не надо, потому что это чревато потерей роутера работоспособности до ресета — они относятся к настройкам передачи TCPUART к контроллеру, который транслирует их уже в команды для радио-модуля.Приложение для телефона Приложение для управления лампочками имеется под iOS и Android. Они довольно простые по функционалу, и по сути дублируют кнопки на пульте управления. Вот приложение для iOS: imageЕще есть приложение для планшета, но у меня его нет, поэтому показать я его не смогу. Судя по однообразности приложений даже для разных платформ, оно не будет ничем отличаться.Как я уже говорил, для андроида приложение совершенно такое же, но выглядит немного хуже — кое-где поехали кнопки.imageДля начала работы, им нужно указать IP-адрес и порт. Зачем оставлена возможность настройки порта я так и не понял, его хоть и можно изменить в веб-интерфейсе, но для чего это нужно — непонятно. А еще в поле Name, несмотря на подсказку «UserName» надо вводить не «admin», как написано на коннекторе, а имя роутера. Впрочем, ввести туда admin тоже можно, просто у вас будет коннектор c именем в программе admin.Как я уже говорил, функционал приложения в большинстве своем дублирует собой пульт, кроме последнего экрана. Там собраны пресеты, которые нельзя переназначить, и еще некоторый функционал — таймер, будильник и так далее.image

Так бы мы и жили с простыми приложениями для телефона, если бы нам неожиданно не написал Efimomax, который купил лампочку, а потом провел реверс-инжиниринг протокола общения мобильной программы и коннектора (он оказался не очень сложным) и написал реализацию на PHP и C# в виде библиотеки и простого приложения.

Приложение для компьютера Efimomax написал простое приложение, мы порадовались, скинули в общий чат в скайпе и забыли. Но это сообщение увидел наш продавец в магазине на горбушке, и скучая в ожидании покупателей запилил вот такое красивое приложениеimageОно функционально и довольно хорошо работает. Забрать приложение с исходниками можно вот тут. Форки и пушреквесты приветствуются :)Серверное приложение Написано на PHP, HTML выглядит вот так: imageНо это не самое главное. Самое главное — что скрипту можно передавать параметры из веб-странички или из консоли.Сам скрипт довольно простой, основную его часть составляет вот эта функция:

function sendMessage ($udp_message) { $message = vsprintf (str_repeat ('%c', count ($udp_message)), $udp_message);

global $server_ip, $server_port, $delay, $debug, $error_value, $ok_value;

if ($socket = socket_create (AF_INET, SOCK_DGRAM, SOL_UDP)) { socket_sendto ($socket, $message, strlen ($message), 0, $server_ip, $server_port); sleep ($delay); socket_close ($socket);

echo $ok_value; } else { echo $error_value; } } Остальное составляют команды, обработка ошибок и так далее.Найти его можно в Github, форки и пушреквесты как обычно, приветствуются! Использовать его можно как обычно, передавая ему параметры через адресную строку:

http://192.168.12.1/marlight.php? command=RGB_MODE_SET_COLOR&r=255&g=10&b=0 Так и вызывая его напрямую из скрипта внутри системы: MBP-Zaytsev:~ vvzvlad$ php marlight.php command=RGB_MODE_SET_COLOR&r=255&g=10&b=0 Итог Довольно интересное устройство, которое вполне подходит для умного дома начального уровня. Конечно, не без недостатков, и требующее некоторой допилки (читай «написания управляющего софта»), но вполне работоспособное, хорошо сделанное и прикольное.Ссылки Репозиторий на github с исходными кодами на PHP и С#Где купить и сколько стоит? Конечно, у нас в магазине: Лампа в магазине: 990 рублейРоутер в магазине: 990 рублейПульт в магазине: 690 рублейА еще можно прийти в наш оффлайн-магазин на горбушке и вживую посмотреть, потрогать, понюхать, покрутить в руках, а потом попросить завернуть.Сделай приложение для своей любимой платформы — получи комплект Marlight В связи с тем, что приложение для телефонов выглядит говно, и работать с ним так же удобно, мы меняем комплект из пяти ламп Marlight, пульта и коннектора на приложение для вашей любимой операционной системы или мобильной платформы! imageУсловия: В акции участвуют приложения для следующих платформ: Android, iOS, Windows Mobile и BlackBerry, Windows, Linux (в виде пакета под Ubuntu и исходных кодов), MacOS. Приложение и его исходный код должны быть опубликованы под лицензией BSD. Приложение должно быть на русском языке. Английский не обязателен, но было бы неплохо. Разработка должна быть закончена до 1 сентября. Комплект передается участнику после того, как он продемонстрирует первую версию приложения с дизайном. Дизайн и дополнительный функционал и — на усмотрение разработчика. Для участия пишите мне на почту vz@madrobots.ru c темой «Акция Marlight».

© Habrahabr.ru