Оглавление:
- Шаг 1. Как сделать (немного) легче вставать
- Шаг 2: больше цвета
- Шаг 3: сигмовидная кривая, мерцание и «разрешение»
- Шаг 4: Электроника
- Шаг 5: резисторы (для светодиодов)
- Шаг 6: программное обеспечение
- Шаг 7. ИКЕА (что бы мы делали без них)
Видео: Свет пробуждения: 7 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:47
Когда я пишу это руководство, в Северном полушарии сейчас середина зимы, а это означает короткие дни и длинные ночи. Я привык вставать в 06:00, а летом к тому времени уже будет светить солнце. Зимой, однако, становится светло в 09:00, если нам повезет, что будет не пасмурный день (что бывает… нечасто).
Некоторое время назад я читал о «пробуждающем свете» от Philips, который использовался в Норвегии для имитации солнечного утра. Я никогда его не покупал, но все время думал о том, чтобы сделать его, потому что сделать его самому веселее, чем просто купить.
Запасы:
Рама для картины "Рибба" 50 х 40 см от ИКЕА.
перфорированный картон из строительного магазина
Плата разработки STM8S103 через Ebay или другие
Часы реального времени DS1307 (Mouser, Farnell, Conrad и т. Д.)
Часовой кристалл 32768 Гц (Mouser, Farnell, Conrad и т. Д.)
Литиевый коинцелл 3 В + держатель коинцлера
N-канальные МОП-транзисторы BUZ11 или IRLZ34N (3 шт.)
BC549 (или любой другой транзистор NPN)
сколько угодно белых, красных, синих, зеленых и т. д. светодиодов
некоторые резисторы и конденсаторы (см. схему)
Powerbrick, от 12 В до 20 В, 3 А или более (например, источник питания для старого ноутбука)
Шаг 1. Как сделать (немного) легче вставать
Идея в том, что трудно встать с постели по утрам, когда еще темно. А если вы живете близко или даже над полярным кругом, будет очень долго темно. В таких местах, как Тромсё в Норвегии, вообще не будет светить, потому что там солнце садится в половине ноября, чтобы снова появиться на полпути к Януари.
Итак, Philips смоделировала восход солнца.
Philips медленно увеличивает яркость лампы, которая, вероятно, состоит из нескольких светодиодов, но спрятана за одним рассеивателем. Их время от выключения до полной яркости занимает 30 минут.
Лампы для пробуждения Philips не такие уж и дорогие, но они одноцветные и выглядят немного маленькими. Думаю, у меня получится лучше.
Шаг 2: больше цвета
В моем пробужденном свете используются четыре цвета: белый, красный, синий и зеленый. Сначала белые светодиоды, затем красные и, наконец, несколько синих и зеленых светодиодов. Моя идея заключалась в том, чтобы смоделировать не только увеличение яркости, но и изменение цвета утреннего света, начав с небольшого количества белого, добавив немного позже красного и смешав в конце синий и зеленый. Я не уверен, что это действительно похоже на настоящий утренний свет, но мне нравится красочный дисплей, какой он есть сейчас.
Моя также работает быстрее, чем пробуждающий свет Philips, вместо 30 минут, которые дает лампа Philips, моя яркость от 0% до 100% меняется менее чем за 5 минут. Так что мое солнце встает намного быстрее.
ЗАМЕТКА:
ОЧЕНЬ сложно сделать снимки моего пробуждающего света, я пробовал использовать несколько фотоаппаратов и смартфонов, но все сделанные мной снимки не соответствуют действительности.
Шаг 3: сигмовидная кривая, мерцание и «разрешение»
Конечно, я хотел сделать осветление как можно более плавным. Человеческие глаза имеют логарифмическую чувствительность, что означает, что в полной темноте они более чувствительны, чем при полном дневном свете. Очень небольшое увеличение яркости при низких уровнях «ощущается» так же, как гораздо больший шаг при яркости света, скажем, 40%. Для этого я использовал специальную кривую, называемую сигмоидальной (или S-образной). Эта кривая начинается как экспоненциальная кривая, которая снова выравнивается на полпути. Я обнаружил, что это очень хороший способ увеличения (и уменьшения) интенсивности.
Тактовая частота микроконтроллера (и таймеров) составляет 16 МГц, и я использую максимальное разрешение TIMER2 (65536) для создания трех сигналов ширины импульса (PWM). Следовательно, импульсы приходят 16000000/65536 = 244 раза в секунду. Это намного превышает предел глаз, чтобы увидеть любое мерцание.
Таким образом, на светодиоды подается сигнал ШИМ, который создается этим 16-битным таймером микроконтроллера STM8S103. Как минимум, этот ШИМ-сигнал может быть включен при длине импульса 1, а оставшиеся 65535 импульсов выключены.
Таким образом, светодиоды, подключенные к этому сигналу PM, будут включены 1/65536-го времени: 0,0015%.
По максимуму они ВКЛЮЧЕНЫ 65536/65536-е время: 100%.
Шаг 4: Электроника
Микроконтроллер
Мозг пробуждающего света - микроконтроллер STM8S103 от STMicroelectronics. Мне нравится использовать детали, у которых достаточно возможностей для работы. Для такой простой задачи нет необходимости использовать микроконтроллеры STM32 (другие мои фавориты), но Arduino UNO было недостаточно, так как я хотел три сигнала PWM с разрешением 16 бит, а на UNO нет таймера с тремя выходными каналами..
Часы реального времени
Время считывается с часов реального времени DS1307, которые работают с кристаллом 32768 Гц и имеют резервную батарею 3 В.
Установка текущего времени, дня недели и времени пробуждения выполняется двумя кнопками и отображается на ЖК-дисплее размером 16 x 2 символа. Чтобы в спальне было темно ночью, подсветка ЖК-дисплея включается только тогда, когда светодиоды ярче, чем подсветка, и когда вы устанавливаете время, день и время пробуждения.
Власть
Питание идет от старого блока питания ноутбука, мой выдает 12 В и может выдавать 3 А. Если у вас есть другой источник питания, возможно, потребуется настроить резисторы последовательно с цепочками светодиодов. (См. ниже)
Светодиоды
Светодиоды подключены к питанию 12В, остальная электроника работает на 5В, выполненном с помощью линейного регулятора 7805. На схеме указано, что я использую регулятор TO220, который не нужен, поскольку микроконтроллер, дисплей и часы реального времени используют всего несколько миллиампер. В моих часах используется меньшая версия TO92 7805, способная обеспечить ток 150 мА.
Переключение светодиодных цепочек осуществляется с помощью N-канальных полевых МОП-транзисторов. Опять же, на схеме показаны другие устройства, чем я использовал. У меня оказалось ровно три очень старых МОП-транзистора BUZ11 вместо более новых МОП-транзисторов IRLZ34N. Они отлично работают
Конечно, вы можете вставить столько светодиодов, сколько захотите, если полевые МОП-транзисторы и источник питания могут выдерживать ток. На схеме я нарисовал только одну строку любого цвета, на самом деле есть несколько строк каждого цвета, параллельных другим строкам этого цвета.
Шаг 5: резисторы (для светодиодов)
По поводу резисторов в светодиодных гирляндах. Белые и синие светодиоды обычно имеют напряжение 2,8 В при полной яркости.
Красные светодиоды имеют всего 1,8 В, мои зеленые светодиоды имеют 2 В при полной яркости.
Другое дело, что их полная яркость не одинакова. Поэтому потребовалось немного поэкспериментировать, чтобы сделать их одинаково яркими (на мой взгляд). Делая светодиоды одинаково яркими при полной яркости, они также будут выглядеть одинаково яркими на более низких уровнях, сигнал ширины импульса всегда включает их на полную яркость, но в течение более длительного и короткого времени ваши глаза заботятся об усреднении.
Начните с такого расчета. Блок питания выдает (в моем случае) 12 В.
Для четырех последовательно соединенных белых светодиодов требуется 4 x 2,8 В = 11,2 В, это оставляет 0,8 В для резистора.
Я обнаружил, что они были достаточно яркими при 30 мА, поэтому резистор должен быть:
0,8 / 0,03 = 26,6 Ом. На схеме вы видите, что я вставил резистор на 22 Ом, сделав светодиоды немного ярче.
Синие светодиоды были слишком яркими при 30 мА, но по сравнению с белыми светодиодами при 15 мА у них также было около 2,8 В при 15 мА, поэтому расчет был 4 x 2,8 В = 11,2 В, снова оставив 0,8 В.
0,8 / 0,015 = 53,3 Ом, поэтому я выбрал резистор на 47 Ом.
Мои красные светодиоды также нуждаются в токе 15 мА, чтобы быть такими же яркими, как и другие, но они имеют только 1,8 В при таком токе. Так что я мог бы подключить больше, и у меня еще оставалось «место» для резистора.
Шесть красных светодиодов дали мне 6 x 1,8 = 10,8 В, поэтому на резисторе было 12 - 10,8 = 1,2 В.
1,2 / 0,015 = 80 Ом, я сделал 68 Ом. Как и другие, немного ярче.
Зеленые светодиоды, которые я использовал, такие же яркие, как и другие, примерно на 20 мА. Мне нужно было всего несколько (как и синие), и я решил поставить четыре последовательно. При 20 мА они имеют 2,1 В над ними, что дает 3 x 2,1 = 8,4 В.
12 - 8,4 = 3,6В для резистора. И 3,6 / 0,02 = 180 Ом.
Если вы построите этот пробуждающий свет, маловероятно, что у вас будет такой же источник питания, вам придется отрегулировать количество светодиодов, подключенных последовательно, и необходимые резисторы.
Небольшой пример. Допустим, у вас есть блок питания на 20 В. Я бы решил установить последовательно 6 синих (и белых) светодиодов, 6 x 3 В = 18 В, поэтому 2 В для резистора. Допустим, вам нравится яркость в 40 мА. Тогда резистор должен быть 2 В / 0,04 = 50 Ом, резистор 47 Ом подойдет.
Я не рекомендую использовать обычные (5 мм) светодиоды выше 50 мА. Некоторые могут справиться с большим количеством проблем, но я предпочитаю быть в безопасности.
Шаг 6: программное обеспечение
Весь код можно скачать с:
gitlab.com/WilkoL/wakeup_light_stm8s103
держите исходный код открытым, рядом с остальной частью этого руководства, если вы хотите следовать объяснениям.
Main.c
Main.c сначала настраивает часы, таймеры и другие периферийные устройства. Большинство «драйверов» я написал с использованием стандартной библиотеки от STMicroelectronics, и если у вас есть какие-либо вопросы о них, напишите их в комментарии под инструкциями.
Eeprom
Я оставил код «текст для отображения», который я использовал для помещения текстов в EEPROM STM8S103 в качестве комментариев. Я не был уверен, что у меня достаточно флэш-памяти для всего моего кода, поэтому я попытался поместить как можно больше в EEPROM, чтобы вся флэш-память была для программы. В конце концов, в этом не было необходимости, и я переместил текст на прошивку. Но я оставил закомментированный текст в файле main.c. Приятно иметь, когда мне нужно будет сделать что-то подобное позже (в другом проекте)
EEPROM все еще используется, но только для хранения времени пробуждения.
Раз в секунду
После настройки периферийных устройств код проверяет, прошла ли одна секунда (выполняется с помощью таймера).
Меню
Если это так, он проверяет, была ли нажата кнопка, если да, он входит в меню, где вы можете установить текущее время, день недели и время пробуждения. Помните, что для перехода от выключенного состояния к полной яркости требуется около 5 минут, поэтому установите время пробуждения немного раньше.
Время пробуждения хранится в EEPROM, поэтому даже после отключения электроэнергии он «знает», когда вас разбудить. Текущее время, конечно же, хранится в часах реального времени.
Сравнение тока и времени пробуждения
Если никакая кнопка не была нажата, он проверяет текущее время и сравнивает его со временем пробуждения и днем недели. Не хочу, чтобы он разбудил меня на выходных:-)
В большинстве случаев ничего делать не нужно, поэтому он устанавливает переменную «светодиоды» в положение ВЫКЛ., А в противном случае - в положение ВКЛ. Эта переменная проверяется вместе с сигналом change_intensity, который также исходит от таймера и активен 244 раза в секунду. Таким образом, когда переменная «светодиоды» включена, интенсивность увеличивается 244 раза в секунду, а когда она выключена, уменьшается 244 раза в секунду. Но увеличение происходит пошагово, а уменьшение - с шагом 16, что означает, что, когда пробуждающий свет, мы надеемся, сделал свою работу, он выключается в 16 раз быстрее, но все еще плавно.
Плавность и НЕТ ПАМЯТИ
Гладкость определяется расчетом сигмовидной кривой. Расчет довольно прост, но его нужно выполнять в переменных с плавающей запятой (двойные) из-за функции exp (), см. Файл sigmoid.c.
В стандартной ситуации компилятор / компоновщик Cosmic не поддерживает переменные с плавающей запятой. Включить его легко (как только вы его нашли), но при этом увеличивается размер кода. Это увеличение было слишком большим, чтобы уместить код во флэш-память в сочетании с функцией sprintf (). И эта функция нужна для преобразования чисел в текст для отображения.
Итоа ()
Чтобы решить эту проблему, я создал функцию itoa (). Это функция Integer To Ascii, которая довольно распространена, но не включена ни в стандартную библиотеку STMicroelectronics, ни в библиотеки Cosmic.
Шаг 7. ИКЕА (что бы мы делали без них)
Картина была куплена в ИКЕА. Это рама Ribba размером 50 x 40 см. Эта рамка довольно толстая, что позволяет скрыть за ней электронику. Вместо плаката или картины я положил кусок перфорированного ДВП. Вы можете купить его в строительном магазине, где его иногда называют «прикроватной доской». В нем есть небольшие отверстия, которые делают его идеальным для установки светодиодов. К сожалению, отверстия в моей плате были немного больше 5 мм, поэтому мне пришлось использовать горячий клей, чтобы «закрепить» светодиоды.
Я проделал в центре жесткой платы прямоугольное отверстие для дисплея 16x2 и вдавил его. На этом дисплее висит печатная плата со всей электроникой, она ни к чему не прикреплена.
Перфорированный картон был окрашен аэрозольной краской в черный цвет и находился за матом. Я просверлил два отверстия в рамке для кнопок, чтобы установить время и дату, так как рамка довольно толстая, мне пришлось расширить отверстия внутри рамки, чтобы кнопки достаточно торчали.
Рекомендуемые:
Мощный светодиодный индикатор пробуждения (+/- 15 Вт): 5 ступеней
Светодиодный пробуждающий свет высокой мощности (+/- 15 Вт): * Примечание для редактирования 2020: Во-первых, я больше не использую вентилятор, и, похоже, это нормально. Становится жарко, но еще ничего не сгорело. С некоторыми новыми идеями и поскольку эти светодиоды настолько дешевы, я бы использовал больше двух и добавил несколько одиночных светодиодов мощностью 3 Вт
Солнечный свет без батареи или солнечный дневной свет Почему бы и нет ?: 3 шага
Солнечный свет без батареи или солнечный дневной свет … Почему бы и нет ?: Добро пожаловать. Извините за мой englishDaylight? Солнечная? Почему? У меня немного темная комната в течение дня, и мне нужно включать свет при использовании. Установите солнечный свет для дня и ночи (1 комната): (в Чили) - Солнечная панель 20 Вт: 42 доллара США - Аккумулятор: 15 долларов США - Солнечная энергия контроль заряда
Easy Wake-Up: умный свет для пробуждения на Raspberry Pi: 6 шагов
Easy Wake-Up: умный свет для пробуждения, созданный с помощью Raspberry Pi: Введение Для учебного плана Project1 мне пришлось кое-что придумать. Меня всегда восхищало, как такая лампа для пробуждения помогает вам просыпаться, как лампы от Philips, поэтому я решила сделать свет для пробуждения. Я сделал пробуждение светом с помощью Raspberr
Музыкальный реактивный свет -- Как сделать супер простой музыкальный реактивный свет, чтобы сделать рабочий стол приятным: 5 шагов (с изображениями)
Музыкальный реактивный свет || Как сделать супер простой музыкальный реактивный свет для настольного компьютера. бас, который на самом деле является низкочастотным звуковым сигналом. Строить очень просто. Мы
Интимный свет для видеосъемки / портативный свет для фотосъемки: 7 шагов (с изображениями)
Интимный свет для видеосъемки / портативный свет для фотосъемки: я знаю, о чем вы думаете. Под " интимным " Я имел в виду освещение крупным планом в сложных условиях освещения - не обязательно для "интимных ситуаций". (Однако его можно использовать и для этого …) Как видеооператор из Нью-Йорка - или