Сборка будильника своими руками

Добавил пользователь Morpheus
Обновлено: 08.09.2024

Так как было нужно чтоб ничего не мерцало, надо делать статическую индикацию. Для этого можно применить что-то классическое, типа CD4511, SN74LS47, но так как эти чипы поддерживают отображение только цифр, а знакомому были нужны и другие символы, этот вариант не подходил. По этой же причине, решил взять обычный МК, но в 40 ножечном корпусе, и управлять сегментами напрямую, а для регулировки яркости и цветов, использовать встроенный в МК ШИМ генератор, который будет работать на частоте 32 кГц, и тем самим, будет исключено мерцание.


Питание на плату поступает по порту USB C, и при максимальной яркости сегментов, потребление составляет порядка 80мА.

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

Если будете собирать вариант с точно теми же индикаторами что я использовал, то микросхему 7805 ставить не надо, и вместо неё надо поставить перемычку на плату в отверстия для ножек 1 и 3 (крайние слева и справа) этой микросхемы. Если же применяем скажем, индикаторы с сегментами с красным и синим свечением, с последовательным включением диодов, то микросхему уже придётся ставить, а на часы подавать питание в пределах 6-7 вольт.

Последовательность сборки платы такая:

  1. Припаиваем DS3231
  2. Припаиваем все остальные компоненты, кроме индикаторов
  3. Продеваем в угловые отверстия 4 винта М3 с плоской головкой
  4. Припаиваем индикаторы

Я вот не последовал этой последовательности, забыл вставить винты до индикаторов, и надо было либо выпайвать индикаторы, либо вклеить проставки в плату — я выбрал второе:


Программно, часы работают следующим образом:


При нажатии правой (зеленной) кнопки (если смотреть на часы спереди) отображается год и дата, и если будильник включён, то отображается и время его срабатывания (разделительные точки при этом быстро мерцают)

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

  • Yr (year) — Установка года, можно выбрать в диапазоне 2021-2099 годов.
  • tH(month) – Установка текущего месяца.
  • dt (date) – Установка даты.
  • dY (day) –Установка дня недели. 0 – Понедельник, 7 – Воскресение.
  • Hr (hour) – Установка часов.
  • Ut (minute) – Установка минут.
  • dF (display format) – Выбор формата отображения времени, 12 или 24 часовой формат.
  • AH (alarm hour) – Установка часов срабатывания будильника.
  • At (alarm minute) – Установка минут срабатывания будильника.
  • AE (Alarm enable) – Выбор режима будильника: 00 –выключено. 01 – работает всю неделю, 02 – работает только по рабочим дням.
  • Tr (time readjust) – Корректор времени (об этом подробнее ниже).
  • Dh (display hue) – Выбор цвета дисплея часов, всего доступно 16 значении, начиная от чистого зеленного, с проходом через лимонно-желтый и оранжевый, до ярко-красного.
  • tF (temperature format) — Формат отображения температуры, в Цельсиях или в Фаренгейтах.
  • Ft (font type) – Выбор типа шрифта (подробнее – ниже).
  • Rt (Return) – Выход в основной режим.

А теперь про Tr и Ft. Многие китайские клоны микросхемы DS3231 страдают проблемой отставания – такие микросхемы считают время хотя и стабильно, но медленно, так что такие часы могут за сутки отставать на несколько секунд, что в итоге даёт заметное отставание за неделю и месяц. Значение Tr прибавляет к показаниям часов от 1 до 15 секунд в 23:59:30 каждый вечер, тем самим, компенсируя отставание часов. Если же у вас нормальный чип, то этот параметр можно не трогать и оставить на дефолтном значении (30).

Настройкой Ft можно выбирать очертание отображаемых цифр. Многие, наверное, не знают, но для 7 сегментных индикаторов, существуют 3 разных начертания отображения цифр:

Соответственно, при настройке данного параметра, в меню в качестве пунктов отображаются ключевые символы данного очертания букв. Это 79 для “US”, 67 — “EU”, 76 — “JP” (Была идея для “US” писать 69, но решил отказаться, дабы избежать ненужных ассоциаций.

Для наглядности, привожу картинку, как выглядят цифры на 7 сегментном индикаторе в указанных стилях.





И да, на счёт отставания. Учтите, если будете подавать питание с ПК, и программа-прошивальшик на ПК будет в этот момент активна (PicKit standalone softwareб MPLAB IDE) Часы будут сильно отставать – это фича самого режима ICSP, а не баг прошивки. В свое время, пока не догадался об причине, много нервов потратил. С обычным питанием, естественно, никаких проблем не будет.

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






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




На обратной стороне (тоже вырезана из 3мм оргстекла) размещены кнопки управления, порт USB C и также имеется несколько вентиляционных вырезов. Основная плата часов крепится именно к задней панели, которую в случае необходимости можно быстро демонтировать, открутив четыре крепежных шурупа по углам.

Вроде все, часы собраны, фото сделаны, статья написана :)


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

Решение-то есть, светобудильник называется, но цена этой штуки от 5000 Колется, однако. К тому же, алгоритм работы жестко запрограммирован, а ведь совершенно очевидно, что, по результатам просыпания, захочется что-то подкорректировать или расширить функционал.
А что, если на основе подручных средств соорудить что-то в этом духе? Хорошая задачка для DIY!

Мастер Кит Проснись с комфортом — делаем светобудильник своими руками светобудильник своими руками, мастер кит, ардуино, arduino

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

— прототип отладочной платы набора для изучения программирования Ардуино (входит в будущий набор NR05), рассчитанная на установку Arduino Nano;
— часы реального времени MP1095;
— светодиоды разные;
— пьезопищалка со встроенным генератором;
— белая полупрозрачная штука, когда-то напечатанная при отладке 3D-принтера (можно приспособить еще что-нибудь полупрозрачное в качестве рассеивателя, а у кого есть 3D принтер, то напечатать что нибудь свое);
— желание все это соединить и запрограммировать подходящий алгоритм работы.

Белую штуку захотелось взгромоздить на какой-нибудь постамент, чтобы смонтировать туда светодиод и подключить его кабелем к плате. Недолго думая, рисуем в SketchUp и печатаем на 3D принтере оранжевую подставочку. При сильном желании можно напечатать корпус для платы-прототипа, но прототип и так немыслимо красив!
К тому же, его можно использовать и под разработку других проектов, а будильничек, по результатам эксплуатации опытного образца, можно оформить в более компактную конструкцию на основе той же платы Arduino Nano.

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

Мастер Кит Проснись с комфортом — делаем светобудильник своими руками светобудильник своими руками, мастер кит, ардуино, arduino

Мастер Кит Проснись с комфортом — делаем светобудильник своими руками делаем светобудильник своими руками, мастер кит, ардуино, arduino

Мастер Кит Проснись с комфортом — делаем светобудильник своими руками Светоотверждаемый пластик Bondic купить в Мастер Кит

Мастер Кит Проснись с комфортом — делаем светобудильник своими руками делаем светобудильник своими руками, мастер кит, ардуино, arduino

Тем же клеем приклеили разъем.

Мастер Кит Проснись с комфортом — делаем светобудильник своими руками делаем светобудильник своими руками, мастер кит, ардуино, arduino

Мастер Кит Проснись с комфортом — делаем светобудильник своими руками собираем светобудильник своими руками, мастер кит, ардуино, arduino

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

Мастер Кит Проснись с комфортом — делаем светобудильник своими руками собираем светобудильник своими руками, мастер кит, ардуино, arduino

Потребляют в максимуме порядка 100 мА, напрямую к порту Ардуино не подсоединишь, но на отладочной плате имеется усилитель тока на транзисторе, обеспечивающий 200 мА.

Мастер Кит Проснись с комфортом — делаем светобудильник своими руками мастер кит, светобудильник своими руками, ардуино, arduino

Также на плате есть пять кнопок для всяких экспериментов, их задействуем для управления режимами и настройки будильника.

В целом, отладочная плата интересна наличием маркированных разъемов-штырей для подключения различных датчиков и исполнительных устройств, обеспечивая хороший функционал и дружелюбный интерфейс – можно, особо не задумываясь (разъемы подписаны) подключить датчики температуры, давления, сервомашинки, реле, устройства с интерфейсом I2C и т.п. Для подключение нужны только провода с разъемами-розетками.

Мастер Кит Проснись с комфортом — делаем светобудильник своими руками мастер кит, светобудильник своими руками, ардуино, arduino, NR05, 3d принте

Яркость будем регулировать ШИМом с девятого пина Ардуино, разведенного на плате к усилителю. Пищалку подсоединим к разъему SOUND, на DAT плюсом, на GND минусом. Часы реального времени – к разъему I2C_5V, поскольку 5В им и надо для питания. На плате уже установлен двухстрочный LCD индикатор, весьма контрастный, с приятными белыми знаками на синем фоне.

Собственно, все железо на месте, теперь дело за софтом.

Алгоритм был задуман так:

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

Всем приятного пробуждения!

Мастер Кит Проснись с комфортом — делаем светобудильник своими руками делаем светобудильник своими руками с мастер кит

int led13 = 13; // встроенный в Arduino Nano светодиод
int alarmPin = 3; // пин для управления сигналом будильника
int led = 9; // пин вывода ШИМ на светодиодную лампу
int brightness = 0; // начальная яркость
int riseAmount = 1; // шаг увеличения яркости 0-255
int timeAmount = 500; // шаг времени, мс
int beepCount = 0; // служебные переменные
int numberOfBeeps = 0;
unsigned long time_old;
unsigned long time_curr;
int alarm = 0; // флаг срабатывания будильника
int Step; // служебные переменные
unsigned long tSetOld;
unsigned long tTickOld;

// Создаем программный объект дисплей lcd, объясняя программе куда подключены линии RS,EN,DB4,DB5,DB6,DB7
LiquidCrystalRus lcd(A1, A2, A3, 2, 4, 7);

// Создаем программный объект RTC
RTC_DS1307 RTC;

int Year; // переменные для хранения данных с RTC
int Month;
int Day;
int Hour;
int Minute;
int Second;
int alarmHour = 0;
int alarmMinute = 0;
int setAlarm = 0; // будильник вкл./выкл.
int SetMode = 0; // режим установки часов/будильника вкл./выкл.
int AlarmOn; // сигнал вкл./выкл.

void setup() pinMode(led13, OUTPUT);
pinMode(3, OUTPUT);
lcd.begin(16, 2);
Wire.begin(); // инициализируем 1Wire (необходио для RTC)
RTC.begin(); // инициализируем RTC
RTC.writenvram(2, 0); // секунды сигнала устанавливаем в 00 (ячейка 2 постоянной памяти RTC)
tTickOld = millis(); // запомнаем число мс с момента запуска микроконтроллера для отсчета интервалов времени
// если нажата кнопка 5, установить текущее время из компьюьера на момент компиляции программы
// и сбросить будильник в 0
if (get_key() == 5) RTC.adjust(DateTime(__DATE__, __TIME__));
for (int i = 0; i 4) < // выход из режима установки
SetMode = 0;
lcd.noBlink();
lcd.noCursor();
>
switch (SetMode) < // установка мигающего курсора
case 1:
lcd.setCursor(12, 1); lcd.blink();
break;
case 2:
lcd.setCursor(9, 1); lcd.blink();
break;
case 3:
lcd.setCursor(12, 0); lcd.blink();
break;
case 4:
lcd.setCursor(9, 0); lcd.blink();
break;
>

if (get_key() == 1 or get_key() == 3) < // если нажата кнопка 1 или 3
tSetOld = millis(); // обнуляем счетчик нахождения в режиме установки
if (get_key() == 3) Step = 1; // если кнопка 3 — увеличиваем
if (get_key() == 1) Step = -1; // если кнопка 1 — уменьшаем
switch (SetMode) case 1:
SetMinuteAlarm(Step); // минуты будильника
break;
case 2:
SetHrAlarm(Step); // часы будильника
break;
case 3:
SetMinute(Step); // минуты текущего времени
break;
case 4:
SetHr(Step); // часы текущего времени
break;

if ((millis() — tTickOld) > 1000) displayTime(); // раз в секунду отображаем время на индикаторе в режиме установки
tTickOld = millis();
>
if ((millis() — tSetOld) > 10000) SetMode = 0; // автовыход из режима установки через 10 сек.
lcd.noBlink();
>
> // end SetMode

if (get_key() == 4) < // включаем/выключаем будильник
int alarm_ram = RTC.readnvram(3);
RTC.writenvram(3, !alarm_ram);
delay(50);
AlarmOn = alarm_ram;
delay(500);
>

if ((millis() — tTickOld) > 1000) displayTime(); // раз в секунду отображаем время на индикаторе
tTickOld = millis();
>

if (alarm == 1) // если будильник сработал
digitalWrite(led13, HIGH);
time_curr = millis();
if ((time_curr — time_old) > timeAmount) if (brightness 255) brightness = 255;
analogWrite(led, brightness); // медленно повышаем яркость с помощью ШИМ
switch (brightness) < // пищим пьезодинамиком по мере повышения яркости
case 60:
numberOfBeeps = 4;
alarmRun();
break;
case 120:
numberOfBeeps = 4;
alarmRun();
break;
case 180:
numberOfBeeps = 8;
alarmRun();
break;
case 220:
numberOfBeeps = 14;
alarmRun();
break;
>
if (brightness >= 255) numberOfBeeps = 32000; // пищим непрерывно (32000 раз)
alarmRun();
>
>
else digitalWrite(led13, LOW);
>
>

//----------------------------------------------
int get_key() // функция считывания номера нажатой кнопки
int input = analogRead(A6);
int k;
for (k = 0; k 59) alarmMinute = 0;
if (alarmMinute 23) alarmHour = 0;
if (alarmHour 59) Minute = 0;
if (Minute 23) Hour = 0;
if (Hour 0) time_curr = millis();
if ((time_curr — time_old) > 10) if (brightness > 0) brightness = brightness — 1;
time_old = time_curr;
if (brightness 10) if (brightness 255) brightness = 255;
analogWrite(led, brightness);
>
>
>
>

void alarmRun() < // включение сигнала 1 раз (один бип)
digitalWrite(alarmPin, HIGH);
beepCount = 0;
MsTimer2::set(500, beep); // 500ms period
MsTimer2::start();
>

Для тренировки навыков пайки своими руками Секрет Мастера рекомендует набор конструктор сборки цифровых часов с будильником. Сердце часов микроконтроллер AT89C2051, индикатор светодиодный из четырех цифр, питание схемы 3 — 6 Вольт, размер платы 52x42 мм. Схема к набору прилагается, на плате также присутствуют все необходимые подсказки и обозначения. Часы имеют режим звуковой индикации нового часа, а также два будильника. Конструктор не комплектуется корпусом и источником питания. Мастер нашел подходящий корпус и обеспечил питание часов от сети 220 Вольт, придав результатам сборки практическую ценность. Смотрите пошаговую инструкцию сборки и настройки электронных часов своими руками.

Как собрать электронные часы своими руками

Часы на микроконтроллере

Деталей в конструкторе немного, но при сборке надо четко следовать схеме и обозначениям на плате. Автор собрал часы в следующей последовательности (смотрите видео):

  1. Установка и припайка светодиодного индикатора. Если у вас есть подходящий корпус, то возможно ножки индикатора и не стоит укорачивать.
  2. Установка и припайка сборки сопротивлений, чтобы избежать неожиданностей, лучше уточнить правильность расположения электрода общего провода на маркировке сборки при помощи тестера.
  3. Припайка панельки микросхемы. Правильно установите ключ панельки. Панельку припаивать рекомендую — не экономьте. Первый экземпляр часов проработал неделю и вышел из строя из-за некачественного контроллера (не повезло). Ремонт заключался в установке нового контроллера часов, что с панелькой было сделать очень просто.
  4. Пайка на плату сопротивления R1 и R2.
  5. Пайка на плату электролитического конденсатора С1.
  6. Пайка конденсаторов С2-С4.
  7. Пайка клемм питания часов.
  8. Пайка звукового индикатора. Соблюдайте полярность!
  9. Пайка транзистора V1. Ключ установки на плпте
  10. Пайка кварцевого резонатора.
  11. Пайка кнопок управления S1 и S2. Контролируйте правильность установки тестером.
  12. На последнем этапе устанавливаем микроконтроллер в панельку.

Зубочисткой механически удаляются остатки флюса. Плата моется ватным тампоном смоченным спиртом или одеколоном. На плату подается напряжение +5 Вольт и проверяется работа схемы.

Настройка часов

Настройка часов осуществляются кнопками S1 и S2. Длительное нажатие на кнопку S1 переводит часы в режим настроек, в котором 9 пунктов. Кнопка S2 также может в обычном режиме работы часов переключать набор цифр показа индикатора: час/минута или минута/секунды. Пункты режима настроек обозначены буквами латинского алфавита от А до I. Настройка значений устанавливаемых в пункте осуществляется кнопкой S2.

Часы на микроконтроллере
Часы на микроконтроллере
Часы на микроконтроллере
Часы на микроконтроллере
Часы на микроконтроллере
Часы на микроконтроллере
Часы на микроконтроллере
Часы на микроконтроллере
Часы на микроконтроллере

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

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

Для встраивания платы часов в корпус с платы были удалены клеммы питания и перепаяны на тыльную сторону платы звуковой индикатор и конденсатор С1. Плата USB зарядки извлечена из корпуса и подключена к контактам вилки и закреплена в нижней крышке нового корпуса термоклеем. Будьте осторожны при работе! В верхней крышке делается прямоугольное отверстие для индикатора и два отверстия для нажатия кнопок S1 и S2. Плата закреплена термоклеем.

Часы на микроконтроллере
Часы на микроконтроллере
Часы на микроконтроллере
Часы на микроконтроллере
Часы на микроконтроллере
Часы на микроконтроллере
Часы на микроконтроллере
Часы на микроконтроллере
Часы на микроконтроллере
Часы на микроконтроллере
Часы на микроконтроллере
Часы на микроконтроллере
Часы на микроконтроллере

Попытки сделать надежное резервное питание часов удовлетворительных результатов длительного сохранения хода часов не дали. Автор не публикует варианты опробованных схем резервного питания. Рабочий ток схемы порядка 35 мА.

Стоимость конструктора смешная. Покупаем набор по следующей ссылке.

Самодельные электронные часы на контроллере

Как видно из схемы часов, микроконтроллер является единственной микросхемой, используемой в данном устройстве. Для задания тактовой частоты используется кварцевый резонатор на 4 МГц. Для отображения времени использованы индикаторы красного цвета с общим анодом, каждый индикатор состоит из двух цифр с десятичными точками. В случае использования пьезоизлучателя, конденсатор С1 - 100мкФ можно не ставить.

Печатная плата и детали часов с будильником на PIC16F628

Можно применить любые индикаторы с общим анодом, лишь бы каждая цифра имела собственный анод. Чтоб электронные часы были хорошо видны в темноте и с большой дистанции - старайтесь выбрать АЛС-ки чем покрупнее.

электронные часы с светодиодными индикаторами

Индикация в часах осуществляется динамически. В данный конкретный момент времени отображается лишь одна цифра, что позволяет значительно снизить потребление тока. Аноды каждой цифры управляются микроконтроллером PIC16F628A. Сегменты всех четырех цифр соединены вместе и через токоограничивающие резисторы R1 … R8 подключены к выводам порта МК. Поскольку засвечивание индикатора происходит очень быстро, мерцание цифр становится незаметным.

электронные часы своими руками на АЛС

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

конструкция самодельных часов с МК

Питаются часы от стабилизированного источника напряжением 5В. Можно и от батареек. В часах реализовано 9 режимов индикации. Переход по режимам осуществляется кнопками "+" и "-". Перед выводом на индикацию самих показаний, на индикаторы выводится короткая подсказка названия режима. Длительность вывода подсказки - одна секунда.

электронные часы с будильником в плите

Кнопкой "Коррекция" часы - будильник переводятся в режим настроек. При этом кратковременная подсказка выводится на пол секунды, после чего корректируемое значение начинает мигать. Коррекция показаний осуществляется кнопками "+" и "-". При длительном нажатии на кнопку, включается режим автоповтора, с заданной частотой. Все значения, кроме часов, минут и секунд, записываются в EEPROM и восстанавливаются после выключения - включении питания.


светящиеся электронные часы на микроконтроллере

Если в течение нескольких секунд ни одна из кнопок не нажата, то электронные часы переходят в режим отображения времени. Нажатием на кнопку "Вкл/Выкл" включается или выключается будильник, это действие подтверждается коротким звуком. При включенном будильнике светится точка в младшем разряде индикатора. Думал куда бы пристроить часы на кухне, и решил вмонтировать их прямо в газовую плиту:) Материал прислал in_sane.

Форум по обсуждению материала ЭЛЕКТРОННЫЕ ЧАСЫ БУДИЛЬНИК


Микрофоны MEMS - новое качество в записи звука. Описание технологии.


Что такое OLED, MiniLED и MicroLED телевизоры - краткий обзор и сравнение технологий.


В каком направлении течет ток - от плюса к минусу или наоборот? Занимательная теория сути электричества.


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

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