Главная » 2016 » Январь » 13 » Блок управления гирляндами на 8 каналов через Bluetooth
15:14
Блок управления гирляндами на 8 каналов через Bluetooth

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

Итак, что планировалось сделать:

  1. Спаять все гирлянды самому. Да, времени уйдет много, но результат того стоит.
  2. Сделать блок управления всем этим делом, крайне желательно с удаленным управлением.
  3. Придумать эффекты, штук 10, не меньше.
  4. Если делать удаленное управление, то придумать, чем управлять.
  5. Заставить это все работать

Гирлянд было решено сделать 8 штук, по две каждого цвета. Посчитал, вышло 40 светодиодов к каждой гирлянде. Очень даже неплохо. Решено, так решено. Полез на алиэкспресс и заказал 400 светодиодов, по 100 каждого цвета (красный, зеленый, синий, желтый), брал с широким углом, чтобы свет не бил лучом. И 400 резисторов к ним. Всего вышло около 700р учитывая падение рубля относительно вечнозеленой валюты. 

Пока заказанные детали пробивались сквозь недра почты, занялся схемой. Немного экспериментов, и остановился на МК ATmega8. Для поставленной задачи его больше чем достаточно. Изначально для удаленного управления планировал использовать модули NRF24. Основное неудобство заключалось в том, что для управления нужен отдельный пульт. Управление по ИК каналу отбросил сразу, нет никакой гарантии, что схема не будет реагировать на команды, посылаемые бытовой технике. В итоге, уже подбирая корпус под пульт, я вспомнил про заказанные когда-то китайские Bluetooth модули HC-05 и HC-06. Основное их отличие друг от друга в том, что HC-05 может работать и в режиме мастера, и в режиме подчиненного. А вот HC-06 умеет быть только подчиненным. Иными словами он не может инициировать подключение, а может только ждать, когда подключатся к нему. Как раз то, что требуется. Вряд ли гирлянда должна будет сама искать bluetooth девайсы и просить поуправлять собой. Работа с такими модулями до предела проста, шлем данные по UART, а модуль их сам выплевывает в сеть. Ну очень удобно. Плюс управлять можно буквально с любого телефона и не только. В результате блок получил именно "синезубое" управление.

Теперь перейдем к схеме. Для удобства установки в корпус она разбита на два блока: цифровой и силовой. Схема цифровой части получилась довольно простой:

Схема цифровой части блока управления гирляндами через Bluetooth

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

Силовая часть блока управления гирляндой

Здесь же находится детектор нуля, также гальванически развязанный от цифровой части. Управление яркостью осуществляется при помощи фазоимпульсной модуляции (ФИМ). Смысл такого управления в том, чтобы включать нагрузку не в момент перехода переменного тока через 0, а с некоторым запаздыванием, равным части времени полупериода переменного тока. Соответственно, чем позже будет включена нагрузка, тем меньшую мощность она получит. Реализуется это очень легко. Для этого требуется лишь знать, когда случается переход переменного тока через ноль. Для этого служит схема детектора нуля. Сигнал с детектора нуля заводится на вход прерывания МК, по прерыванию запускается таймер, который выключает канал, отсчитывает некоторое время и при совпадении с необходимым нам значением включает канал. При этом таймер настроен таким образом, чтобы он "тикнул" несколько десятков раз за время одного периода переменного тока. Чем больше "тиков", тем плавнее можно изменять значение мощности на нагрузке.

Под обе схемы были сделаны платы в программе Altium Designer 3D. Выглядят они вот так:

Печатка в Altium Designer 3D

3D модель в Altium Designer 3D 3D модель в Altium Designer 3D

Питание цифровой части осуществляется от маломощного ИИП, который извлечен из дешевого китайского ЗУ для телефона. Воооот такого:

Заряжать телефон таким устройством явно не стоит, а вот для питания различных самоделок оно вполне годится. Напряжение на выходе задавлено до уровня около 3.3В при помощи изменения номиналов цепи ОС. На всякий случай, для защиты от внезапностей китайской техники, по входу питания цифровой части стоит низкоомный резистор и стабилитрон.

Со схемой вроде разобрались, перейдем к функционалу. Всего в памяти блока хранится 12 эффектов:

  1. бегущий огонь.
  2. бегущий огонь, плавный.
  3. бегущая тень.
  4. бегущая тень, плавная.
  5. резко зажигается, плавно гаснет,
  6. рандомная бегущая тень с плавным нарастанием/гашением,
  7. рандомно зажигаются, рандомно гаснут,
  8. светят не на полную яркость, рандомно вспыхивают,
  9. плавно загораются по очереди, ступенчато гаснут по кругу,
  10. переливаются,
  11. 5 миганий каждой, после 5 пробежек бегущего огня
  12. стробоскоп со случайным переключением гирлян.

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

Функционирование блока управления возможно в двух режимах: ручной и автоматический. В ручном режиме смена эффекта происходит по нажатию кнопки, а в автоматическом все происходит само собой. При этом время работы каждого эффекта выбирается случайным образом. Управление осуществляется двумя способами: непосредственным нажатием кнопки на блоки, либо по Bluetooth.

Сначала разберемся с первым вариантом. Для этого предусмотрено две кнопки "EFFECT" и "AUTO". Для включения/выключения блока необходимо нажать обе кнопки одновременно. При этом гашение гирлянд в момент выключения будет производиться плавно по одной. После включения выбирается необходимый режим работы. Тут возможно два варианта. Либо листать эффекты по кругу нажатием кнопки "EFFECT" и оставить наиболее приглянувшийся, либо перейти в режим автопереключения нажатием кнопки ""AUTO". При этом загорится светодиод "LED_Auto". Выключение этого режима осуществляется повторным нажатием кнопки "AUTO". Выбранные эффект, режим работы и вкл/выкл блока сохраняются с EEPROM и при последующем включении схема перейдет в тот режим, который был до отключения питания.

Второй вариант несколько интереснее и отличается большим набором функций. Для его осуществления понадобится телефон под управлением ОС Android не ниже 4.4.2. (под другие версии переделать не проблема, проект прикреплен в конце статьи). На телефон устанавливается специальное приложение для управления. При запуске которого будет произведен поиск блока и подключение к нему в случае нахождения в зоне действия связи. Само приложении выглядит следующим образом:

Приложение в Android

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

Приложение в Android

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

Приложение в Android

В верхней части окна расположены 4 кнопки:

  • AUTO - включение автоматического режима, если приложение не закрывать, то в авторежиме будет отображаться текущий номер эффекта;
  • TEST - тестирование гирлянд, все гирлянды включаются;
  • STOP - отключения авторежима/текущего эффекта/режима тестирования;
  • EXIT - выход из приложения

Ниже расположены 12 кнопок выбора режима работы. Нажатие на любую из них отключает авторежим. И в самом низу расположились кнопки выбора количества гирлянд от 3 до 8. Мало ли, какая елка будет в этом году, все 8 могут не влезть. Как было сказано выше, нажатая кнопка подсвечивается синим. При этом кнопка изменит вид только при получении положительного ответа от блока. Все настройки сохраняются в EEPROM микроконтроллера.

Елочный управлятор 2016

Приложение, как и прошивка, написано в среде Eclipse. Проверялось на Android 5 и 6. Работает и там и там абсолютно одинаково. Вся электроника упаковалась вот в такой корпус, размеры 100х35х70 мм.

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

Гирлянды паял обычным проводом МГТФ В каждой из них 40 светодиодов и столько же резисторов. Количество резисторов отличается лишь в желтой и синей гирлянде. Времени на пайку ушло прилично, около трех недель при пайке по вечерам. Светодиоды очень порадовали, светят ярко и во все стороны. Китайцы не обманули.

Теперь немного о начальной настройке схемы. Обмен данными с Bluetooth модулем идет по USART на скорости 115200. Соответственно сам модуль надо настроить на эту скорость. Делается это через любой USART адаптер обычными AT командами:

1
2
3
AT - проверка связи, ответ ОК
AT+BAUD8 - установка скорости, ответ OK115200
AT+NAMEELKA - установка имени bluetooth, ответ OKELKA

ПИН код модуля по умолчанию "1234", имя ELKA. Кроме этого приложение на Android имеет жесткую привязку к MAC адресу модуля, MAC узнается средствами телефона/ПК с которым спарен модуль и вписывается в строку:

1
private static String address = "20:14:04:14:12:12";

Которая находится в файле MainActivity.java. После этих манипуляций все готово для работы.

Ну и видео работы всего этого. Ведь, как известно, лучше один раз увидеть:


Скачать список элементов (PDF)

Взято с сайта: cxem.net

Прикрепленные файлы:

Просмотров: 777 | Добавил: Дмытрохан | Теги: AVR, Altium Designer, микроконтроллер, android, Eclipse, bluetooth | Рейтинг: 0.0/0
Всего комментариев: 0
avatar
Яндекс.Метрика
24 log 24 LOG statistick
счетчик посещений
Если вы видите это,
то ваш браузер устарел
и не поддерживает технологий
CSS 3.0