Как сделать ночник из ардуино

Обновлено: 07.07.2024

Итак, представляю Вашему вниманию светильник CD_Light_Ladder сделанный из старых CD-дисков и Arduino Nano. Смотрим видео процесса сборки и работы светильника (кстати, на видео показан процесс построения виртуального светильника в программе Эффектор-12)

Конструкция светильника. Подробности.

Для начала, плюсы светильника:
— очень простая схема светильника – все что нужно — это Ардуина и светодиоды
— Вам не понадобится программатор – Ардуина программируется по USB-шнуру
— как Вы уже поняли из видео, для светильника не нужно источника питания, он работает от USB
— светильник управляется любым ИК-пультом
— для работы светильника желательно (будет больше возможностей), но не обязательно наличие компьютера и управляющей программы. Можно взять зарядное устройство с USB-разъемом и подключить светильник к нему (управлять можно ИК-пультом)

Теперь минусы:
— нужно иметь Ардуину Нано (или Уно, или Про Мини … что-то ATmega328)
— питание от USB не дает светодиодам работать на полную яркость (это можно решить при помощи внешнего источника питания – читайте в конце статьи)
— светильник хоть и работает без компьютера но набор эффектов будет ограничен.

Сборка светильника.

Электрическая схема светильника очень простая:


Если Вы не планируете использовать ИК-пульт, то кроме Ардуины Вам понадобятся только светодиоды. Балластные резисторы не нужны, так как при включении последовательно синего и красного светодиодов ток через них гораздо ниже допустимого тока выхода Ардуины.

В видео все довольно подробно показано, но для полного понимания процесса сборки тезисно опишу, что и как делалось.

1 Для сборки светильника нам понадобятся следующие детали и материалы:


2 Панелька нужна под Ардуину. В широкую панельку на 32 ножки Ардуина отлично встает. Это удобно! Можно, в случае чего, забрать Ардуину в другой проект и вернуть ее назад, если понадобится (прошивка Ардуины занимает пару минут).


3 Пищевая ПХВ трубка. Как видно на фото 16х2мм. 2мм – это толщина стенки.


4 Переходим к главному – CD-дискам. Их понадобится 12+1 штуки. После определенных экспериментов я определил, что наилучшим вариантом поверхности диска является либо белая поверхность, либо матовая, как на фото ниже. От белой поверхности хорошо отражается свет светодиодов, а матовая дает очень красивые переливы цветов, если рассматривать светильник с разных сторон. При правильном подборе светодиодов (читай ниже) создается иллюзия огня.


5 Один диск в конструкции будет лицевым. Он не должен быть прозрачным, чтобы скрыть свет от первой пары светодиодов. Кроме того, диск должен быть презентабельным, так как он будет весь на виду. Я выбрал вот такой черный диск от Есперанзы (и у Самсунга я такие видел) как раз под цвет моей черной Ардуины.



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


8 На фото видны точки разметки (в данном случае – это разметка под трубку)


9 Сверлим в указанных местах отверстия. Они нужны чтобы при резке дисков ножницами (я резал ножницами по металлу, но можно и обычными) диск не лопнул в месте надрезов.


10 Нарезаем сразу все диски. Вдоль кромки надреза образуются мелкие трещины и расслоения – это не страшно, все это в готовой конструкции видно не будет.


11 На лицевом диске сверлим отверстия под панельку.


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



14 Сразу клеем все цилиндры. Пару часов даем клею хорошо засохнуть.


16 После того как клей засох, начинаем склеивать диски между собой. Отверстие диска должно совпасть с трубкой. Следим за разметкой на дисках при склеивании.



18 Лицевой диск.


19 Пришло время заняться светодиодами. Для своего светильника я выбрал пару из красного широкоугольного суперяркого светодиода (120 градусов) и синего узкоугольного суперяркого (15-20 градусов). Такая комбинация создает на диске рисунок напоминающий огонь. Перед установкой светодиоды нужно спаять парами, как показано на фото. Красный сверху, синий внизу по одной линии.


20 Горячим клеем закрепляем пары светодиодов в трубках светильника. Перед тем как крепить пары, обязательно проверьте как они светят.



22 Устанавливаем панельку, подгибаем ножки с обратной стороны диска.


23 Припаиваем пары светодиодов к выводам панельки. Проверяем монтаж на предмет ошибок. Укладываем провода.


24 Устанавливаем в панельку Arduino Nano. Записываем в нее прошивку Эффектора. Прошивка и описание процесса записи есть в статье по Ардуфектору. При помощи программы Эффектрор-12 зажигаем все каналы и, аккуратно двигая пары светодиодов пинцетом в трубках, добиваемся одинаковой равномерной картинки от светодиодов на всех дисках. После этого можно закрепить провода.

25 Светильник готов!
Его можно повесить на стену, как у меня на видео, или закрепить на подставке (например, на то-же бокс от CD-дисков) и установить на стол.

Светильник на основе адресной светодиодной ленты под управлением Arduino с различными эффектами.

  • Управление одной сенсорной кнопкой
  • Эффекты: Блуждающий огонёк, Светлячки, Смена цвета, Радуга, Конфетти, Пламя
  • Управление, Удержание – яркость, 1х тап – вкл/выкл, 2х тап – переключ режима, 3х тап – вкл/выкл белый свет, 4х тап – старт/стоп авто смены режимов





Update 24.01.2019. Спасибо тем, кто посоветовал матовый плафон из Леруа! Стоит примерно 500р, размеры: высота 20см, диаметр 10см. Пример работы на фотках




ВИДЕО

КОМПОНЕНТЫ

Каталоги ссылок на Алиэкспресс на этом сайте:

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


Всем привет.
Я рад , что могу снова показать Вам свои наработки.
На этот раз я собрал светильник на ардуино управляемый жестами.
Данный проект отнял у меня очень много времени, которого у меня и так всегда не хватает.
Первый вариант светильника я собрал очень быстро и он прекрасно работал у меня на макетной плате, но когда я перенес его на постоянное место в корпус, вот тут все и началось, вылезли все проблемы с подвисаниями, ложными срабатываниями и прочими неприятностями. Погуглив в интернете, я нашел на иностранных сайтах, множество жалоб связанных с проблемами датчика APDS9960, но не нашел решений этих проблем. Пришлось понемножку тратить время на изучения Datasheet этого датчика и на понимание его работы. Что в конце концов это принесло свои плоды и я смог написать стабильно работающий код.
И так все по порядку

Описание светильника
Основной упор в этом светильнике я сделал не на визуализацию, а на управление жестами, все остальные функции второстепенные.

Выключение производится жестом от себя.

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

Я не уделял особого внимания визуальным эффектам, так как планирую сделать вторую версию лампы на контроллере Wemos D1 mini. В которой планирую довести все до идеала. По этой же причине я пока использую только одну линейку светодиодов, состоящую из 4 планок ws2812b, вместо четырех.

Прерывания APDS9960
Собственно основные проблемы светодиодной лампы связаны именно с ним. Прерывания в apds9960 живут своей жизнью, может сработать от чего угодно например от ЭМ помехи или от нахождения рядом с датчиком человека, от пульсации по питанию и возможно от чего то еще.


По мере изучение пришло понимание, от чего происходят ложные срабатывания прерываний. Основная проблема это случайные отражения ИК сигнала. Производитель рекомендует покрыть датчик и все вокруг него черным резиновым напылением. У меня нет такой краски и я не стал с этим заморачиваться. Хотя наверняка это могло бы немного уменьшить число ложных срабатываний.

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

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

Для того, что бы улучшить стабильность распознавания жестов, так же пришлось в библиотеке уменьшить чувствительность приемника. Для этого нужно в файле SparkFun_APDS9960.h заменить строку:
if( !setLEDBoost(LED_BOOST_300) )
на
if( !setLEDBoost(LED_BOOST_150) )

Если Вы скачали библиотеку из этой статьи, то ничего делать не нужно, там уже все исправлено.
Я так же экспериментальным путем подобрал ток светодиода 50 мА, при котором жесты определяются наиболее стабильно и нет надобности насиловать инфракрасный светодиод, током 100 мА.

А так же я допустил ошибку, разместив микроконтроллер в нижней части светильника, а датчик жестов в на верхней крышке. Из-за этого, для соединения arduino и apds9960, пришлось использовать провода длинной 30 см. Что тоже добавило дополнительной нестабильности работы датчика. В итоге я программным путем победил все эти проблемы.

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

Стабилизатор dc-dc mini360, можно заменить на любой другой понижающий преобразователь напряжения, с выходным током не менее 150 мА.

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

Вместо Ардуино Нано можно использовать контроллер Arduino UNO или его клоны.


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


Программный код для Ардуино
Код разбит на две части. В первой части находится основной код, который работает с сенсором, а во второй части находится код всех световых эффектов.

Вы можете сами добавить любой эффект по аналогии с моим кодом, но главное не забудьте добавить функцию выхода по жесту из зацикленного эффекта. Для этого нужно добавить в конце цикла, следующую строку if(check_int()) return;

Описание основных функций программы
processingGesture() обрабатывает прерывания от датчика жестов.
processingProximity() обрабатывает прерывания от датчика приближения.
gesture_int() — обработчик прерывания от датчика жестов.
proximity_int() — обработчик прерывания от датчика приближения.

Описание констант
APDS9960_INT — вход для внешнего прерывания. В Arduino Nano и UNO всего два таких входа, 2 и 3.
PIN — здесь нужно указать выход на светодиодную ленту. Можно указывать любой цифровой пин к которому подключены планки ws2812b.
NUM_PIX — здесь указываем количество адресных светодиодов в используемой ленте.
range — предел погрешности от 0 до 10. Если при регулировке яркости зафиксировать руку над датчиком на 2 сек, то показания должны сохраниться, если же показания не сохраняются, то увеличивайте постепенно предел погрешности.


Видео демонстрирующее работу светильника

Итоги
Светильник в живую выглядит лучше чем на видео. Теперь все кто увидел его у меня, просят собрать им такой же. На данный момент мне не нравится как работает регулировка яркости, но я над этим работаю. Не обещаю, что скоро, но уже в разработке следующая версия светильника.

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

Мы познакомимся с удивительными способами создания домашней сети из разнообразных устройств, которые будут работать либо автономно, либо при помощи человека.

1. Что нам нужно

Первая статья ознакомительная, я хочу, чтобы вы поняли, что я буду работать с самыми распространенными платами и модулями, чтобы большинство людей могло попробовать себя в разработке IoT.

Итак, для начала нам потребуются два микроконтроллера, которые мы будем использовать: Arduino UNO и ESP8266.

Arduino UNO


ESP8266


Я буду работать с Troyka-модулем ESP8266 от компании "Амперка", но можно спокойно использовать и обычный модуль ESP 8266, они практически не имеют отличий, главное при подключении посмотреть значение пинов и запомнить, что ESP работает по 3,3 вольтовой логике, поэтому нужно либо подключать через 5 вольт, но подключить в схему стабилизатор напряжения, либо просто использовать пин со подачей напряжения в 3,3 вольта.

Данный микроконтроллер не самый мощный в серии компании Espressif на общем рынке, но он один из самых дешевых и распространенных. Он будет основой наших IoT разработок.

Дополнительные детали

Также нам потребуется для создания всех опытов:

  1. Светодиоды
  2. Фоторезистор
  3. Термистор
  4. Ультразвуковой дальномер
  5. Реле
  6. Пьезодинамик
  7. Мини Сервопривод
  8. ИК - датчик
  9. ИК - пульт

Не нужно иметь все эти модули, чтобы работать с IoT, но для того, чтобы сделать все будущие проекты, нам со временем придется приобрести их все.

Программы и библиотеки

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

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

Подробно со всеми способами, программами и сайтами мы познакомимся уже в ближайших проектах.

2. Делаем "умную лампу"

Я уже заставил вас скучать? Сделаем самую простую умную лампу, которая будет включатся, если в комнате темно.

На самом деле для этого даже не нужна UNO, можно использовать цифровой настраиваемый фотодатчик, но в будущим мы изменим этот проект до неузнаваемости, поэтому придется с чего-то начать.

Если вы не уверены в том, что готовы работать с электричеством в 220 вольт, то используйте вместо фонаря обычный светодиод. В начале я взял свою старую лампу TLI – 204, такие есть практически в любом магазине (отключил заранее от сети).


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

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


Общая электрическая схема должны будет выглядеть так:


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


Подключим к ардуино фоторезистор. Схема выглядит так:


3. Код для "умной лампы"


Теперь напишем код, по которому будем передавать ток на реле, если в комнате будет темно.

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


Люстра всегда была прекрасным украшением комнаты. Хрустальные, из богемского стекла, ручной работы… Но одно существенное замечание, они стоят очень дорого. Однако не отчаивайтесь, статья иллюстрирует то, как сделать своими руками люстру с управлением под Arduino.

0

Мне хотелось собрать люстру особенной конструкции, с мягким освещением.

Шаг 1

1

Прежде чем собирать детали для проекта нужно посмотреть на фотографии и ознакомиться с тем, что предстоит сделать.

2

Эта самоделка очень трудоёмкая. Всякий раз, когда вы будете разочаровываться из-за того, что у вас что-то не получается, делайте глубокий вдох, успокаивайтесь и возвращайтесь к тому, что делали!

3

4

5

6

7

Шаг 2: Необходимые материалы

12

13

14

15

  • Лист акрила;
  • Краска в баллончике;
  • Медный провод;
  • Изоляционный материал;
  • Баночки для плафонов (50 шт).
  • Ручная пила; ;
  • Сверло;
  • Термоклеевой пистолет;
  • Супер клей; ;
  • Припой;
  • Кусачки;
  • Клещи.

16

17

18

Шаг 3: Подготовка акрилового листа

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

21

22

Нарисуем круги на акриловой пластине, разметим отверстия для светодиодов. Используя ручную пилу или лобзик, распиливаем акриловый лист. После этого просверлим отверстия 2 мм сверлом.

24

Пилите не спеша. Первая акриловая пластина сломалась из-за сильного давления.

25

26

Снимем защитный лист бумаги из пластины, установим изоляционные трубки в отверстия.

27

28

Распылите краску на заготовку для декорирования.

Шаг 4: Принципиальная схема и программирование

29

После покупки всех необходимых электронных компонентов, соберём схему.

30

Для 50 RGB-светодиодов нужно 19 регистров сдвига 74HC595.

31

Каждый RGB светодиод состоит из трёх цветов, которым соответствуют 3 контакта.

32

34

Нужно контролировать 50 RGB-светодиодов. Это означает, что нужно 50×3 = 150 управляющих выводов, соответствующих 150/8 = 19 регистрам сдвига.

35

Шаг 5: Создаём печатную плату для пайки

36

37

Воспользуемся файлами при изготовлении печатной платы.

38

39

Шаг 6: Пайка светодиодов

40

41

42

Расположим светодиоды, после чего произведём пайку выводов.

43

44

Используем кусачки, чтобы пооткусывать выводы на светодиодах.

45

46

Шаг 7: Соединяем светодиоды и плафоны(банки)

47

48

Используем термоклей для склеивания светодиодов и банок.

49

50

Шаг 8: пайка медной проволоки и тестирование

51

Нарежем четыре куска медного провода для каждого светодиода, будьте осторожны, чтобы не порвать жилы проводов.

52

53

Затем нарежем термоусадочные трубки длинной 0,8 см, после чего вставим медные провода в трубки.

54

55

Далее, проводим пайку проводов с платой. После завершения пайки протестируем самоделку.

Шаг 9: Подключаем светодиоды к плате управления и аккумулятору

56

57

Припаяем медные провода к плате управления.

58

150 проводов. Я потратил 2 дня, чтобы закончить проводку. Это очень сложная задача.

59

Всякий раз, когда вы будете чувствовать разочарование, делая такой проект, бросайте работу, делайте глубокий вдох, возвращайтесь к 1 шагу, смотрите на фотографии и помните, что вы идете в правильном направлении!

60

Все элементы соединены друг с другом при помощи пластиковых стяжек.

61

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

62

Испытания проводились в течении 5 часов, аккумуляторы сотового телефона идеально подходят для питания люстры во время активного отдыха.

Читайте также: