Оглавление:

Интерактивный окружающий свет: 8 шагов
Интерактивный окружающий свет: 8 шагов

Видео: Интерактивный окружающий свет: 8 шагов

Видео: Интерактивный окружающий свет: 8 шагов
Видео: Погребение в сидячем положении архиепископа Хризостома 2024, Июль
Anonim
Интерактивный окружающий свет
Интерактивный окружающий свет
Интерактивный окружающий свет
Интерактивный окружающий свет
Интерактивный окружающий свет
Интерактивный окружающий свет

Это моя первая инструкция! Пожалуйста, потерпите меня, пока я изо всех сил пытаюсь писать по-английски. Не стесняйтесь поправлять меня! Я начал этот проект сразу после начала конкурса «Пусть светится». Мне жаль, что я не сделал намного больше и закончил то, что хотел сделать. Но между школой и работой у меня оставалось не так много времени, как мне хотелось бы. Тем не менее, я оставляю здесь отчет о своих экспериментах в качестве инструкции, чтобы каждый мог попробовать сделать то, что сделал я. Это руководство не предназначено для использования в качестве руководства и обучения изготовлению этого устройства. Это не руководство для новичков в электронике. Это больше похоже на то, чтобы поделиться одной идеей и целью, которые я хочу преследовать. Если вы новичок / совершенно не разбираетесь в электронике и хотите сделать что-то подобное, извините! Но мы можем постараться всегда помочь вам. Смотрите последний шаг. Мы уже видели много проектов с рассеянным светом. Большинство из них используют светодиоды RGB: - Для освещения комнаты одним цветом, создавая атмосферу, соответствующую вашему настроению - Для создания световых эффектов из цвета телевизора / монитора или из звука. На сайте Instructables.com их даже несколько. Я всегда хотел сделать что-то подобное этому окружающему свету и залить стены в моей комнате светодиодами RGB. Но, сделав еще один шаг, сделав все и каждого из них управляемыми. Мы надеемся, что в результате этого проекта будет создан комплект электроники с открытым исходным кодом для любителей и мастеров электроники, позволяющий взламывать аппаратное / программное обеспечение и сенсорную интеграцию. Вот небольшой превью того, что я сделал:

Шаг 1. Изучение идеи

Я хочу иметь возможность заполнять стены в моей комнате светодиодами RGB, контролируя цвет и яркость каждого светодиода. Я собираюсь использовать микроконтроллер для простоты использования и обеспечения гибкости. К сожалению, я не могу управлять сотнями светодиодов с помощью нескольких выводов микроконтроллеров. Было бы даже сложно закодировать управление таким количеством светодиодов, поэтому я решил, что должен разделить все светодиоды на несколько меньших полос, и для каждой полосы я мог бы использовать микроконтроллер. Затем я использовал бы коммуникационные возможности микроконтроллеров для обмена информацией между ними. Эта информация может быть цветом и яркостью светодиодов, узорами / последовательностями цветов и сенсорной информацией. Для каждой полосы я решил использовать 16 светодиодов RGB. В результате получается ни слишком большая, ни маленькая полоса. Таким образом, я использую приемлемое количество ресурсов для каждого светодиода, снижая затраты на каждую полосу. Тем не менее, 16 светодиодов RGB - это 48 светодиодов (3 * 16 = 48) для управления микроконтроллером. Имея в виду затраты, я решил использовать самый дешевый микроконтроллер, который я мог использовать. Это означает, что микроконтроллер будет иметь только до 20 контактов ввода / вывода, что недостаточно для 48 светодиодов. Я не хочу использовать чарлиплекс или какой-либо привод с временным разделением, поскольку цель проекта - освещение комнаты. Альтернатива, которую я мог придумать, - это использовать какой-то фиксированный сдвиговый регистр! Продолжение: - Создание интерактивного окружающего света - Создание стандартной полосы управляемых светодиодов - Возможность подключения нескольких полос для заполнения комнаты - Возможность адаптации / конфигурации пользователя и сенсорной интеграции

Шаг 2: Оборудование

Аппаратное обеспечение
Аппаратное обеспечение
Аппаратное обеспечение
Аппаратное обеспечение

Как было сказано в предыдущем шаге, я хочу сделать несколько полос, чтобы осветить одну комнату. Это заставляет вспомнить о стоимости. Я постараюсь сделать каждую планку максимально рентабельной. Я использовал микроконтроллер AVR ATtiny2313. Они довольно дешевые, и у меня было несколько таких. ATtiny2313 также имеет один универсальный последовательный интерфейс и один интерфейс USART, которые пригодятся на следующих этапах. У меня также лежало три MCP23016 - I2C 16-битных расширителей портов ввода / вывода, как раз правильное количество! Я использовал каждый расширитель портов для управления одним цветом из 16 светодиодов. Светодиоды… К сожалению, были самыми дешевыми, что я смог найти. Они 48 красных, зеленых и синих ~ 10000 мкд 5 мм с углом 20 градусов. На данный момент это не должно иметь значения, поскольку это всего лишь один прототип. Несмотря на это, результат очень приятный! Я использую микроконтроллер на 8 МГц. Шина I2C работает на частоте 400 кГц. Частота переключения светодиода около 400 Гц. Таким образом, если я смогу управлять 48 светодиодами, не доводя их до предела, у меня хватит места позже!

Шаг 3: Сборка

сборка
сборка
сборка
сборка
сборка
сборка
сборка
сборка

Спроектировав схему, я собрал ее на нескольких макетных платах для целей прототипирования. После нескольких часов резки проводов и сборки схемы я получил такой результат: один гигантский макет с 48 светодиодами и тоннами проводов!

Шаг 4: Контроль?

Контроль?
Контроль?

Это самая сложная часть проекта. Я хотел сделать один алгоритм управления достаточно универсальным для обработки шаблонов / последовательностей, а также для управления яркостью и цветом каждого светодиода. Для управления светодиодами я должен отправить на MCP23016 один кадр размером 4 байта. (1 байт = 8 бит). Один байт с адресом IC, соответствующим цвету, 1 байт с командой «запись» и 2 байта со значением 16 бит (светодиоды). Микросхема соединена со светодиодами как «сток», что означает, что одно логическое значение 0 на выводе будет светить светодиод. А теперь сложная часть, как сделать управление ШИМ для 48 светодиодов? Давайте изучим ШИМ для одного светодиода! ШИМ объяснил в Википедии: если я хочу, чтобы яркость светодиода составляла 50%, мое значение ШИМ составляет 50%. Это означает, что светодиод за один период времени должен гореть столько же времени, сколько и выключаться. Возьмем период в 1 секунду. 50% ШИМ означает, что в эту 1 секунду время включения составляет 0,5 секунды, а время выключения - 0,5 секунды. ШИМ 80%? 0,2 секунды выключено, 0,8 секунды включено! Легко, не так ли? В цифровом мире: с периодом в 10 тактов, 50% означает, что в течение 5 циклов светодиод горит, а в течение следующих 5 циклов светодиод не горит. 20%? 2 цикла включения, 8 циклов выключения. 45%? Ну, на самом деле мы не можем получить 45% … Поскольку период циклический, а у нас всего 10 циклов, мы можем разделить ШИМ только с шагом 10%. Это означает, что эволюция вывода должна быть на 50%: 1, 1, 1, 1, 1, 0, 0, 0, 0, 0; Или даже 1, 0, 1, 0, 1, 0, 1, 0, 1, 0; В программировании мы можем сделать эту последовательность включения и выключения массива. Для каждого цикла мы выводим на вывод значение индекса, которым был этот цикл. Имею ли я смысл до сих пор? Если мы хотим сделать LED0 50%, а LED1 20%, мы можем добавить оба массива. Для управления выводом LED0: 1, 1, 1, 1, 1, 0, 0, 0, 0, 0; Для управления выводом LED1: 2, 2, 0, 0, 0, 0, 0, 0, 0, 0; Результатом LED0 + LED0: 3, 3, 1, 1, 1, 0, 0, 0, 0, 0; Выведя эту последовательность чисел в микросхему расширителя портов, мы получим LED0 с 50% яркостью и LED1 с 20% !! Просто для двух светодиодов, правда? Теперь мы должны сделать это для 16 светодиодов для каждого цвета! Для каждого из этих массивов у нас есть комбинация яркости для каждого цвета (16 светодиодов). Каждый раз, когда нам нужна другая комбинация цветов, мы должны изменить этот массив.

Шаг 5: Упростить

Сделать это легко!
Сделать это легко!
Сделать это легко!
Сделать это легко!

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

Шаг 6: первые эксперименты

Первые эксперименты
Первые эксперименты

Загрузив несколько шагов в микроконтроллер, мы получим что-то вроде этого: Извините за плохое качество видео! Я определил максимальное количество шагов последовательности до 8, а ШИМ ограничил скачками до 20%. Это решение основано на типе управления, который я использую, и на том, сколько EEPROM у ATtiny2313. В этих экспериментах я пытался увидеть, какие эффекты я могу произвести. Я должен сказать, что я доволен результатом!

Шаг 7: Управление в реальном времени

Управление в реальном времени
Управление в реальном времени
Контроль в реальном времени
Контроль в реальном времени
Контроль в реальном времени
Контроль в реальном времени

Как упоминалось в предыдущих шагах, я хочу связаться со всеми микроконтроллерами, управляющими светодиодами в моей комнате. Поэтому я использовал доступный интерфейс USART в ATtiny2313 и подключил его к своему компьютеру. Я также сделал программу в LabView для управления светодиодной полосой. В этой программе я могу сообщить микроконтроллеру, какова длина последовательности, цвет каждого светодиода и время между этапами последовательности. В следующем видео я буду продемонстрируйте, как я могу изменить цвет светодиодов и определить последовательность.

Шаг 8: выводы

Выводы
Выводы
Выводы
Выводы
Выводы
Выводы
Выводы
Выводы

Думаю, я добился успеха в этом первом подходе к моему проекту. Я могу управлять 16 светодиодами RGB с небольшими ресурсами и ограничениями. Можно управлять каждым светодиодом отдельно, создавая любую желаемую последовательность.

Будущая работа:

Если я получу положительные отзывы от людей, я могу развить эту идею и сделать полный комплект DIY Electronics Kit с печатными платами и инструкциями по сборке.

Для моей следующей версии я: -заменяю микроконтроллер на один с АЦП -Заменяю MCP23016 на какой-то другой тип последовательного параллельного вывода, который может потреблять больше тока от светодиодов -Создаю программное обеспечение с открытым исходным кодом для связи с микроконтроллером и Управление светодиодами -Развитие связи между несколькими микроконтроллерами.

У вас есть предложения или вопросы? Или оставьте комментарий!

Финалист конкурса Let It Glow!

Рекомендуемые: