Доброго времени суток!
Свалилась задача быстро сделать устройство беспроводной связи по ZigBee технологии на примере управления светодиодной лампочкой (включение, выключение, диммирование). Посмотрим, что из этого получилось.
ZigBee — стандарт для набора высокоуровневых протоколов связи, использующих небольшие, маломощные цифровые трансиверы, основанный на стандарте IEEE 802.15.4-2006 для беспроводных персональных сетей.
Итак: необходимо разработать выключатель и лампочку, которые можно подключить к разным розеткам и осуществлять управление по беспроводному каналу.
За основу было взято решение, разработанное нами ранее для потолочного светильника. Программная часть полностью реализована не мной, а моим коллегой. Прошивка должна уметь: спаривать устройства, включать/выключать и выполнять димминг лампочки.
Чтобы все выглядело красиво купили Bluetooth лампочку. Идея, конечно, не очень, но для презентации вполне подходит.
Прежде всего лампочку планировалось аккуратно разобрать и увидеть внутри драйвер, плату управления с антенной и светодиодный модуль.
Чтобы ускорить разработку выкинули только плату управления, заменив на свою, и оставив возможность управления только белыми светодиодами (да, лампочка была RGBW).
До этого момента был больше реверс-инжиниринг. Теперь перейдем к самому контроллеру. Лампочка внутри имеет очень ограниченные размеры и диаметр платы не может превышать 30мм. Высота также ограничена. Помимо этого необходимо попасть в межплатные разъемы и предусмотреть необходимые вырезы и минимальный теплоотвод.
Плату управления была разработана на контроллере CC2530F256RHAT, который заточен на работу с ZigBee, а также у него минимум обвязки. В лампочке на плате со светодиодами расположены транзисторы, которые управляют светодиодами. На выходе драйвера напряжение 20В (столько же нужно подавать на светодиодный модуль), транзисторам на входе нужен ШИМ 10В. На плате расположен сам контроллер, два кварца, Step-Up DC/DC Converter NCP1406 (для ШИМа) и, как бы это не было странно — LM317 для формирования 3,3В питания контроллера.
Итак, 20В подаем на светодиоды и на LM317, получаем 3,3В, подаем их на NCP1406 и делаем ШИМ парой транзисторов. И не спрашивайте, почему такая логика. На схему и плату был выделен один день, вечером заказ плат на срочном производстве. Какая картина родилась в голове, так и было реализовано.
Ниже схема просто для ознакомления.
На выходе получилась двухслойная плата с нужными габаритами и вырезами. Рядом развел антенну, но в последствии использовал именно ту, которая была в лампочке, так как дальность в несколько метров вполне устраивала.
К сожалению, нет фотографии собранной платы, так как она была проверена и спешным образом запечатана в лампочку.
В качестве «выключателя» использовалась другая наша плата на которой реализован ZigBee интерфейс по точно такой же схеме с выносной антенной. Для уменьшения габаритов платы лампочки, контроллер для нее программировался на плате «выключателя»
Все работает без нареканий. В схеме используются четыре «кнопки»: «ON», «OFF», «DIMM-» и «DIMM+». При подаче логического «0» на выходы «ON» и «DIMM-» происходит очистка памяти устройств контроллера. При подаче на «OFF» и «DIMM+» — спаривание с лампочкой. При этом лампочка «подмигивает» в знак согласия. ID лампочки сохраняется в памяти «выключателя». Основное назначение «кнопок» понятно из названия. Готово!
Недочеты конкретно в этой версии платы:
1. Греется LM317, во-первых, нужно было по-другому реализовать питание, во-вторых, он плохо прилегает к округлым стенкам внутри лампочки.
2. Реализован только один канал для управления, то есть нет возможности диммировать разные цвета по отдельности, но, в принципе, такой задачи и не стояло.
3. В ПО не реализована возможность сохранения нескольких лампочек, объединение в группы и т.д., но это тоже мелочи.