Большие настенные часы с автояркостью на Arduino
Понадобилось как-то сделать большие настенные часы с автоматической яркостью.
Такие часы отлично подойдут для больших помещений, например холл офиса или большая квартира.
Сделать такие большие настенные часы не представляет серьёзных сложностей при помощи данной инструкции.
Для оценки размера часов можно принять тот факт, что один сегмент часов будет размером с бумагу формата А4, что позволит легко использовать рамки для фотографий соответствующего размера.
Шаг 1. Составные части больших настенных часов.
Что я использовал для этого проекта :
Электроника :
- Arduino nano V3.0 — 2.9 доллара на ebay
- Цифровой сенсор интенсивности света для ардуино — 0.99 доллара на ebay
- DS3231 AT24C32 IIC Module модуль часов реального времени для ардуино — 0.99 доллара на ebay
- DC-DC преобразователь LM2596 — 0.90 доллара на ebay
- 4 метра светодиодной ленты WS2811 30 светодиодов на метр — 12 долларов на aliexpress (1 WS2811 IC control 3 LED Chip) самое дорогое
Итого стоимость электроники : 17.78 доллара.
Дополнительно :
- Термоусадочная трубка
- Макетные платы под пайку
- 3микропереключателя
- Припой
- Флюс
- UTP кабель (расплетался на провода и использовался для внутренниз соединений, можно взять МГТФ или другой)
- LCD шрифт (//www.dafont.com/lcd-lcd-mono.font)
- Картон
- Лист полистирола, можно заменить другим видом пластика который будет под рукой.
Разные инструменты.
Шаг 2. Подготовка — шаблон цифр.
- Скачайте и установите шрифт на LCD (//www.dafont.com/lcd-lcd-mono.font)
- Откройте ворд или другой текстовый редактор и создайте шаблон как на картинке со следующими параметрами:
- размер шрифта ~800,
- белый шрифт с черными контурами,
- серые прямоугольники по размеру светодиодной ленты
- Отпечатайте шаблон и вырежьте ножом серые прямоугольники (второе фото.
Шаг 3. Режем картон и светодиодные ленты.
Истпользуя наш шаблон для цифр вырезаем картон по размерам (не забудьте оставить место для точек между часами и минутами).
Если ваша лента светодиодов идет с коннекторами отпаяйте коннекторы и порежьте ленту по три светодиода.
Шаг 4. Прикрепляем ленты.
Используя обведенный шаблон крепим ленты к картону как показано на рисунке.
Шаг 5. Паяем светодиодные ленты.
Теперь начнем долгую процедуру пайки.
Придерживайтесь порядка пайки, показанного на картинке. Паять следует с левой середины цифры, затем вверх, назад, вниз и направо. Потом переход к новой цифре. Для средних точек я использовал еденичные отрезки ленты, прикрывая серединки кусочками изоленты.
Я использовал следующие цвета для проводов
- Синий для земли
- Зеленый для данных
- Красный для Vcc (12v)
Шаг 6. Соединяем ардуино и модули на макетной плате.
На таблице схема соединений проводов и модулей, на следующем фото общий вид на беспаечной макетной плате.
Шаг 7. Тестируем светодиодную ленту.
Прежде чем загружать приведенный ниже скетч в ардуино не забудьте включить библиотеку FastLED.
Если все настроено как надо светодиоды начнут циклически менять свой цвет. Если что то пошло не так проверьте правильность соединений.
Сам скетч можно скачать тут.
Шаг 8. Программируем часы.
Немного повозившись, мне удалось получить часы, полностью удовлетворяющие моим потребностям. Я уверен что вам удастся сделать лучше моего.
Код хорошо прокоментирован и вам не составит труда в нём разобраться, сообщения отладки так-же прокоментированы очень хорошо.
Если вам нужно поменять используемый цвет настенных часов вам необходимо поменять переменную на строчке 22 ( int ledColor = 0x0000FF; // Color used (in hex)). Вы можете найти список цветов и их коды в hex на странице : //github.com/FastLED/FastLED/wiki/Pixel-refe…
Если у вас возникли проблемы при загрузке, используйте зеркало ://bit.ly/1Qjtgg0
Мой итоговый скетч можно скачать тут.
Шаг 9. Делаем цифры используя полистирол.
Разрежьте каждый сегмент в шаблоне, напечатаетанного в начале.
Полистирол можно разрезать острым ножом, что довольно трудно, либо нехитрым приспособлением из нихромовой проволоки или гитарной струны и нескольких отрезков ОСБ-плиты.
Вы можете видеть, как это сделал я в изображениях выше.
Для того, чтобы запитать резак я использовал 12v блок питания.
В результате отрезаний должны получиться четыре сегмента для больших часов, один из которых показан на фото.
Шаг 10. Приклеиваем цифры и закрываем всё рассеивателем. Итоговые большие настенные часы.
После вырезания всех четырех цифр и точек настенных часов приклеиваем их всех на картон вместе со светодиодными лентами (для упрощения процесса я использовал двустороннюю клейкую ленту)
Для того, чтобы рассеять жесткий светодиодный свет я использовал два листа бумаги поверх полистироловых цифр. Для удобства и эстетичности я использовал бумагу размера А2, сложенную вдвое.
После завершения всех этих шагов я поместил получившуюся сборку больших настенных часов в соответствующую им большую фоторамку.
Эти часы получились очень эффектными и притягивающими взгляд. Я думаю что такие большие настенные часы отлично украсят множество помещений.
Комментарии
Для отправки комментария вам необходимо авторизоваться.
Дружище а можно по подробнее что куда подключать, я в электрике шарю но с Arduino не знаком вот только начинаю просвещаться. По модулям вроде понятно подключение по табличке, а вот куда ленту цеплять и от чего запитывать не понятно. Ответь плиз уж больно хочется такие часики замастырить. И почему именно такая лента? только из за ее интелектуальности? Почему не использовать обычную одноцветную раз RGB все равно не используется? Или можно ли прописать что бы часы не одним цветом горели, а например плавно меняли цвета?
Ленту цеплять на порт D6 ардуины, запитывать ее от 12 вольт, на ней три крнтакта — два на питание один на данные.
Лента такая именно из-за ее интелектуальности, верно. Обычную использовать — слишком все усложнится в плане подключения, так как придется кучу мелких отрезков ленты подключать к ардуино используя сдвиговые регистры. Прописать смену цветов плавную можно в принципе, препятствий не вижу. На шаге 7 говорится об этой возможности библиотеки FastLed
плавно меняли цвета? — : добавь в код :
после кода int ledColor = 0x0000FF; // Color used (in hex)
//Случайные цвета
long ColorTable[16] = {
CRGB::Amethyst,
CRGB::Aqua,
CRGB::Blue,
CRGB::Chartreuse,
CRGB::DarkGreen,
CRGB::DarkMagenta,
CRGB::DarkOrange,
CRGB::DeepPink,
CRGB::Fuchsia,
CRGB::Gold,
CRGB::GreenYellow,
CRGB::LightCoral,
CRGB::Tomato,
CRGB::Salmon,
CRGB::LimeGreen,
CRGB::Orchid
};
============================================
и в этом месте кода
// Serial.println();
}
else if (i==2){
// Serial.print(«Digit 3 is : «);Serial.print(digit);Serial.print(» «);
сделай так
// Serial.println();
{
ledColor = ColorTable[random(16)]; // плавное смена цвета
}
}
else if (i==2){
// Serial.print(«Digit 3 is : «);Serial.print(digit);Serial.print(» «);
Я сам собрал на WS2812B, все работает, плавно меняются цвет
Спасибо за оперативный ответ ещё жду все комплектующие =). Если будут еще вопросы надеюсь поможешь разобраться ))
Привет! Есть вопрос, как ты достиг такого ровного свечения? Полистирол перед лентой стоит что ли? Или бумаги достаточно?
Привет! Плотной бумаги (как ватман) было достаточно.
День добрый!
Хорошая реализация, давно хотел такие сделать.
Есть пара вопросов:
Можно подробнее описать схему подключения,, хотя бы рисунком от руки.
И не совсем понял, как наклеивали полистирол на основание и как крепился сверху рассеиватель, на фото, где девайс включен не видно никаких швов, хотя если клеили полистирол так как мне представляется, то они должны быть, можете подробнее описать процесс сборки? Буду признателен за ответы, уже начал закупать запчасти на Али))
Привет! Спасибо, мне самому понравилась. Схема подключения есть в табличке. Рассеиватель — это большой кусок бумаги чертежной, поэтому не видно швов (кусок бумаги один). Рассеиватель крепился просто под рамку.
Еще на понятно какой цели служит DC-DC преобразователь LM2596 , он понижает или повышает напряжение? входное напряжение какое у вас? я так понял, что от блока питания ноутбучного питается девайс?
Входное напряжение идет 12 вольт с блока питания 220-12 вольт. LM2596 служит для получения 5 вольт, которые идут на питание Arduino и его периферии.
А на точках тоже кусок из трех светодиодов? я так понимаю просто центральный заклеен изолентой или нет?
На сколько ампер блок питания 12в, как я понял WS2811 30 светодиодов на метр 7,2-9 ватт, исходя из этого полагаю хватит 3-4 амперного блока.
пришла ардуинка пока без модулей, собрал табло, решил проверить. но скетч не компилится, выдает ошибку. FastLED в библиотеки добавил, но результат тот же. вероятно в стоке еще каких то библиотек не хватает?
exit status 1
no matching function for call to ‘CFastLED::addLeds(CRGB [29], int)’
Блин давай все на пальцах, а то уже башка ща лопнет от ваших ардуин. Делись софтом, библиотекаим и всем остальным,а то ни хера не понятно. Ну реально на шьется ни хера уже миллион библиатек перекачал, толку ноль. Обидно ппц,столько времени убил на это табло, а ща че все бросать?
То-ли библиотеки ныньче имеют другие названия, то-ли из-за того что ардуина на CH340, то-ли софт с новой версией не катит. Ни че не понятно. Надо было архив выложить с софтом, библиотеками и скетчем (Для таких далеких как я), а не один скетч =)
С софтом мне помогали на одном загнувшемся амерском форуме, что осталось то и выложил)) там только с Fastled были затыки. Блок питания у меня был на 6 ампер, можно и больше приспособить. В принципе мощность там большая не нужна ибо светодиоды работают не на максимуме.
Наконец ты дружище появился =) Вроде более менее раскурил тему, удалось скомпилить и зашить все в Arduino. Я так понимаю в программировании ты мне поможешь (ибо сам курил буржуйские форумы =)) Часы я завел, но есть вот такие проблемы: не хочет работать датчик освещенности (Если крутнуть на нем потинцометр то светят или ярко или тускло как для ночного режима, но автоматом не реагирует) датчик мне пришел такой же но вот фотодиод не такой как у тебя на фото, а как обычный диод. Плюс если отключить питание, а потом вновь подать, минуты продолжают идти как и положено, а вот часы на час сдвигаются. И самое интересное для чего третья кнопка? Одна часы, вторая минуты, а что такое третье (DST)?
Для тех кому будет интересна тема, микро мануал от меня: Скачиваем Arduino IDE 1.5.8 и библиотеки Time, DS3231RTC и FastLED с офф. сайта //www.arduino.cc. Библиотеки распаковываем в папку libraries лежащей в папке с Arduino IDE 1.5.8 (если библиотеки называются по другому или дописана версия, меняем на оригинальные названия Time, DS3231RTC и FastLED). Дальше пробуем скомилить скетч выложенный автором статьи, если все оке то зашиваем в Arduino. Да для купивших Arduino на Али и других китайских площадках, качаем драйвера для CH340 можно скачать например тут //yadi.sk/d/8Wvbz86NnQc53.
Да и еще в таблице соединений, порты лайт сенсора и часов реального времени, перепутаны с портами ардуинки =) не кретично, понять можно, но для людей не разбирающихся в этом будет полезно. Кстати тоже видел эти буржуйские форумы, они часы делают в основном на WS2812
Мучился я с кодом, а как оказалось проблема в железе. У тебя как чувствительность датчика света, норм работает? (например в пасмурную погоду адекватно распознает день-ночь). Как я уже писал датчик мне пришел такой же, но вот сам фотодиод не такой как на фото, а как обычный диод. И чувствительность у него никакая (даже если выкрутить её на максимум). Тестил на работе: в пасмурную погоду при лампах дневного света для датчика ночь =) и лишь при наведении фотодиода на окно наступает день (чуть влево от окна, чуть вправо, опять ночь). Что за спектр у него такой, что люминистентки для него не источник света =) Почитал оба наших датчика одинаковые на LM393, но на твоем фото датчик фоторезистор, а мне пришел с фотодиодом. Вот такое печенье. Допилю скетч до финала выложу ссылку может кому пригодиться =)
Да, Dj-Toxa, если ты еше выложишь нормальную читабельную схему подключения модулей, цены тебе не будет!!!!
А в чем проблема? По табличке автора вроде все понятно.
Да, вроде разобрался уже.
А можете кто-нибудь ссылку дать на нормальную ленту светодиодную. А то у Китайцев фиг поймешь написано ws2811, а выглядит как 2812….
А почему на ws2812 не сделать, просто чутка скетч придется переделать. Да и найти ws2811 не проблема. Дал бы тебе ссылку на своего продована, но он за пересылку начал брать бабосы, не выгодно. Заказал кстати себе ws2812 может позже на ней буду еще одни часы делать, мои уже купить хотят =)
Вот такой вопрос еще вкрался в сознание. Допустим я собираю на WS2812b, допустим я хочу чтобы в разные интервалы времени разные сегменты каждой из 4х цифр подсвечивались разными цветами(проще говоря хочу по отдельной кнопке на часах менять эффекты) — подойдет ли для таких хитрых целей Arduino Uno, или нужно брать на другом чипе, где памяти побольше? Где-то на просторах рунета наткнулся, что память у Ародуины не бесконечная(как-то я раньше даже не задумывался))))
Хватит ли UNO чтобы загрузить скетч автора и пару библиотек с эффектами(либо вручную понаписать своих эффектов)?
Также я полагаю что можно к данному проекту прикрутить RF модуль и управлять часиками с ПДУ, что тоже видимо скажется на выборе другого Ардуины….
ну не знаю. мой финальный скетч, немного больше чем скетч автора и при этом занимает лишь 38% памяти arduino nano. поэтому думаю что прикрутить еще несколько режимов или функций (будь то свечение другим цветом, показ температуры, влажности да чего угодно) к обычной nano можно вполне не парясь.
допустим я хочу чтобы в разные интервалы времени разные сегменты каждой из 4х цифр подсвечивались разными цветами(проще говоря хочу по отдельной кнопке на часах менять эффекты) Хихи не проще ли тебе просто гирлянду сделать на ленте и управлять ей ардуинкой? =) У тебя задумки от часов уже в сторону светомузыки уходят =))) Автор проекта не предусматривал дискотечный вариант часов, все по формуле 3³ (строго, сдержанно, стильно) =)
В таком случае вопрос — бывают ли одноцветные ws2812?
ws нет, она по определению RGB, а если нужна одноцветная бери любую на 5050 диодах, у меня две таких по 5 метров на кухне висят, лупарят (вырви глаз, да еще и отражаются от пластика на потолке) ярче основного света из шести сафитов =)
хотя учитывая что ws ты в любом случае будешь чем то управлять , что тебе мешает использовать один цвет, а не все RGB =) тут по моему разница лишь в бюджете, лента одноцветных 5050 всяко встанет дешевле любой ws
Ура поздравьте меня, проект завершен =) Позже постараюсь выложить результат о проделанной работе =)
Поздравляю с успешным окончанием ,а мой проект только начинается.
Здравствуйет уважаемые Ардуинщики и им сочувствующие!
С детства любил ковырять различные радиосхемы, а тут появилась такая классная штука как среда Ардуино! Решил попробовать себя в ней! Все проекты были взяты в свободном доступе из Интернета. Коды практически не переписывались, я на них учился. Первый проект был «Бесполезна коробка» (//youtu.be/LI3wJXQ3-wU). Второй — «6 позиционный переключатель» (//youtu.be/OEt854Zx7As). Тут насмотрелся на эти прикольные часы и решил собрать себе. С большим трудом нашел скетч. Немного переделал его по себя. Дело в том, что я выбрал себе шрифт «Digital-7», нарезал пенопласт. А когда стал подставлять светодиодную ленту под отверстия, понял что некоторые из сегментов длиннее остальных. И пришлось делать цифру из трех и четырех светодиодных отрезков. Сам скетч.
Получается вот так (//youtu.be/yhxRfyJSQ50).
И вот теперь, друзья, вопросы.
Что и где добавить в скетче, чтобы с периодичностью 5-7 минут показывалась дата. Год, число и месяц. Сначала год «2016», потом дата «26.07»?
И еще. У меня есть температурный датчик DHT-11. Хотелось бы привязать его к часам. Чтобы они с периодичностью две-три минуты показывали температуру.
Буду очень признателен за советы и подсказки!
Тоже хочу собрать данные часы все заказал на алиекспресе теперь жду со скетчем пришлось повозится но скомпилировался ,Dj-Toxa не мог бы выложить свой скетч и еще бы как бы прикрутить датчик температуры вообще бы супер было.
Привет давно не заглядывал, скетчем поделюсь без проблем. вот обзорчик на одноклассниках по моим часикам, а вот скетч на яндекс диске //yadi.sk/d/vCMd8sGDtwd2o
делал еще пару светодиодных часов, правда уже на ws2812 одни на эти похожие, но в миниатюре. другие круглые типо стрелочных =) тоже есть на одноклассниках
ой на обзорчик ссылку забыл =) //ok.ru/profile/61355019403/statuses/65374237870987
Приветствую, а для часов на ws2812b скетчем не поделитесь?
по поводу датчика температуры, тоже хотел прикрутить. в скетч датчик прописал, добавил новые символы (знак градуса и буква С), с выводом морока ибо сам еще не особо в ардуино разобрался. пока некогда заниматься, может позже займусь.
Спасибо за скетч классные часы получились,я еще не начинал делать не все детали еще пришли если будут вопросы думаю не откажешь в помощи.
все собрал,но что-то не работает. светодиоды все сразу мерцают. Может кто подскажет,что может быть не так?
чем сможем тем поможем обращайтесь.
то тут скорее всего описаная мною проблема. перед заливкой рабочего скетча, проверьте работу ленты на тестовом скетче из библиотеки Adafruit_NeoPixel
скетч для ленты ws2811 не подойдет для ws2812 (т.к. 1LED у 11й это три отдельных диода управляемые одной микросхемой-то есть как раз один сегмент часов, а у 12й это один rgb диод с микросхемой в одном корпусе). под нее нужно компилить скетч по новой, что весьма геморно исходя из того что самих диодов у вас в разы больше. на моих часах их 29, а у вас ну к примеру если по три диода на сегмент то 87. есть англоязычная версия этой же статьи, на ней ниже в обсуждениях буржуи выкладывали свои версии скетчей и фото часов в том числе и на ws2812. попробуйте поискать и уже скетч для ws2812 переделывайте под себя. вот вам несколько примеров на под вашу ленту //yadi.sk/d/BpuBm1XY33T8Uj большое значение имеет сколько у вас диодов в одном сегменте. в примерах два варианта по три диода на сегмент и два варианта по 5 диодов на сегмент.
хоть 2812 вроде и повеселее чем 11е но мне не внушает доверия их надежность и долговечность. уже делал несколько проектов на 12й ленте и общение с этой лентой меня скажем так напрягло. довольно часто вылетают одиночные диоды, из за чего вся цепочка начинает хаотично мигать разными цветами. может конкретно мне попалась такая глючная партия лент. незнаю. и она очень не любит статику (hu)
Собрал,все работает,но, почему-то на первой цифре светится поперечина постоянно синим цветом, пробовал оба скетча, ничего не меняется
Проверяйте соединения ленты
Dj-Toxa
Вы можете выложить свои библиотеки, а то у меня ошибка при компиляции:
‘tmElements_t’ was not declared in this scope
Подозреваю что проблема в библиотеке.
Спасибо.
//ok.ru/profile/61355019403/statuses/66016109251467 всё тут
всем Привет.
а где схема подключения не могу найти…
Спасибо.
схемы нет т.к. она не нужна. куда и что подключать указано в табличке выше
Добрый день.
Дайте пожалуйста точные ссылочки на используемые библиотеки или выложите их на какой-нибудь обменник. То, что я нашел не компилируется.
Добавил библиотеки с «ok» теперь ругается ,
Несколько библиотек найдено для «Time.h»
А не ргб лента подойдет?)
Спасибо за урок!
Но вопрос не по этому изобретению, но по часам. В скетче для установки времени через меню кнопкам использовалась функция time.blinktime. Ни как не могу заставить работать time.blinktime(2);. Ну не мигает устанавливаемый параметр. Может подскажите?
Ниже приведён урезанный скетч (для мигания минутами). Но не мигают они.
#include // подключаем библиотеку для работы с шиной I2C
#include // подключаем библиотеку для работы с LCD дисплеем
#include // подключаем библиотеку для работы с RTC модулем
LiquidCrystal_I2C lcd(0x27,16,2); // объявляем переменную для работы с LCD дисплеем, указывая параметры дисплея (адрес I2C = 0x27, количество столбцов = 16, количество строк = 2)
iarduino_RTC time(RTC_DS1307); // объявляем переменную для работы с RTC модулем, указывая название модуля
void setup() {
time.begin(); // инициируем RTC модуль
lcd.init(); // инициируем LCD дисплей
lcd.backlight(); // включаем подсветку LCD дисплея
time.blinktime(2); // Заставляем функцию gettime мигать минутами с частотой по умолчанию
}
void loop(){
if(millis()%1000==0){ // если прошла 1 секунда
lcd.setCursor(0, 0); // устанавливаем курсор в позицию: столбец 0, строка 0
lcd.print(«Time»); // выводим текст «Time»
lcd.setCursor(6, 0); // устанавливаем курсор в позицию: столбец 0, строка 1
lcd.print(time.gettime(«H:i:s»)); // выводим время
}
delay(1); // приостанавливаем на 1 мс, чтоб не выводить время несколько раз за 1мс
}
——————-
Заранее спасибо!!!
Мужики , вопрос , точнее их много .
собрали «все как по картинке » , в итоге получилась какая то однородная , разноцветная шляпа , в этом не шарю , но походу ленту мне » китаяц » выслал не 2811 , а 2812 или 2812b , грузил скетчи и от OlegR и от DJ-Toxa , разные пробовал и даже тот сборник с разными количествами диодов в сегменте , последний мне вообще написал что занято 106% памяти , иди мол в баню … беда парни , помогайте … 🙁
Заранее премного благодарен !!! Просто крик души уже идет !
Вопрос к уважаемому dj-toxa! Или к кому-нибуть, кто программирует.
Всё работает » как доктор прописал».
Маленькая просьба: допишите скетч, что бы при показании температуры и даты
были другие цвета.
Извините не силён в программировании.
Время — зелёное
Дата — голубая
Температура — красная
Заранее благодарен.
Всем привет! На моё писмо ни кто не откликнулся, я думаю из-за Новогодних праздников. Пришлось всё делать самому. Ктати, изучение программирования не так уж и сложно! Выкладываю кусок скетча с плавной регулировкой яркости.
Фоторезистор подключен к аналоговому входу А0.
// Check Light sensor and set brightness accordingly
void BrightnessCheck() { // функция настройки яркости в соответствии с освещенностью
const byte sensorPin = A0; // пин датчика освещенности
int sensorValue = analogRead(sensorPin); // запрос с датчика
byte b= map(sensorValue,0,1023,10,255); // считывание показантй
LEDS.setBrightness(b); // и перевод и запись в «цифру»
}
Полный, допиленый скетч сс сменой цветов выложу в личку по просьбе.
Всем хорошего настроения в 2019 году! Часы радуют своей простотой и красивым дизайном, разработчикам мой респект!
Уважаемый! Не могли бы Вы поделиться «допиленным» скетчем? Если просьба моя не будет отвергнута, то вот моё «мыло» : ylap@sibnet.ru
Заранее — Спасибо!
Привет дружище Babajaga тоже давно собирался переделать датчик освещения на аналогвый вход для плавной регулировки яркости (всё руки не доходят), а то на границе светло-темно напрягает это моргание =) ты как я понимаю использовал датчик с цифровым и аналоговым выходами (а то есть продают только с цифровым выходом), аналог на А0. Если можно поделись полным скетчем на почту dj-toxa@yandex.ru.
Уваж. Dj-Toxa! Неправильно указан адресс. Комп ругается не хорошими словами.
привет, всем! подскажите кто знает.
собрал всё правильно, залил скетч, но светодиоды мерцают в хаотическом прядке.
пробовал несколько плат ардуино, отдельно проверил часы, всё рабочее.
зы. в программировании я полный ноль, если кто-то может мне разжевать, буду признателен! 🙂