Говорящий будильник своими руками

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

Эта самоделка будет полезна тем, кто регулярно встает утром. Ведь впереди зима, а это значит, что просыпаться придется в темноте, а это довольно печально, да и небезопасно, если включатель света расположен довольно далеко. К тому же в темноте куда тяжелее проснуться и встать с кровати. Эта самоделка позволит решить такую проблему. Когда сработает будильник, в комнате засветиться лампа, что обеспечит комфортное пробуждение.
Работает все на микроконтроллере Arduino.

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

Процесс изготовления светильника:

Шаг первый. Начало сборки
Сперва автор начал с создания постамента светильника. На нем будет находиться светорассеиватель, а внутри установлено необходимо оборудование. Подставочка была быстренько нарисована в SketchUp. При желании можно напечатать также корпус для платы-прототипа, однако сам по себе прототип и так довольно красив. Помимо всего прочего его можно применять для разработки и других проектов, а что касается будильника, то в будущем его можно оформить и в более компактный вид, используя ту же плату Arduino Nano.






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

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

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

Шаг третий. Завершающий этап
Яркость лампы автор решил регулировать через ШИМ, используя девятый пин на микроконтроллере Arduino, который разведен на плате к усилителю. Пищалка подключается к разъему SOUND, к DAT подключается плюс, а минус к GND.

Часы реального времени нужно будет подключить к разъему I2C_5V, потому что для питания необходимо именно 5В.

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

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

Источник

ГОВОРЯЩИЙ БУДИЛЬНИК

Существующие таймеры — это разные по конструкции и назначению приборы для приведения в действие соответствующих устройств, которые должны срабатывать в заранее заданный момент. В продаже они имеются, но стоят дорого. В то же время для бытовых нужд многие из них могут быть изготовлены своими силами, причем в простейшем варианте. Например, с использованием старых механических будильников. Ведь у них — очень выигрышная для этого особенность: заводной «барашек» при работе звонка вращается. Что само по себе уже готовый исполнительный механизм: «барашек», поворачиваясь, может надавить, скажем, на микропереключатель (например, МП-1), который заставит работать радио, свет, магнитофон или даже устройство для полива огорода.

Читайте также:  Зимняя свечка своими руками

В качестве основы такого таймера подойдет, например, механический будильник «Витязь». На его задней крышке на специальном кронштейне закреплен микропереключатель типа МП-1: он удобен тем, что имеет пару нормально разомкнутых контактов — значит, может работать в режиме «включателя». Для режима «выключатель» используются выводы 1,3.

Кронштейн под микропереключатель изготавливается из миллиметровой стали и крепится имеющимися винтами крышки будильника. На отогнутой полочке кронштейна — дополнительные резьбовые отверстия М2,5, которые размечаются по отверстиям микропереключателя и служат для его установки на кронштейн с таким расчетом, чтобы заводной «барашек» будильника мог надавить на кнопку МП-1 (положение Б). Перед установкой кронштейна с МП-1 будильник заводится почти до упора.

По завершении монтажа можно приступать к эксплуатации таймера, например, в качестве включателя радио. Подготовительная стадия: МП-1 в нажатом положении; уровень громкости приемника отрегулирован. Затем ушки заводного «барашка» переводятся в горизонтальное положение А, при этом радио выключится. Утром же в заданное время вы услышите короткий звонок (можно отключить и его) — и заговорит радио.

Будильник в роли таймера:

1 — крышка будильника; 2 — кронштейн (Ст.З); 3 — микропереключатель (МП-1); 4 — винт крепления кронштейна (2 шт.).

Кронштейн К будильнику «Севан».

Практичный совет для использования такого таймера на базе другого будильника — «Севана». Его «барашек», срабатывая, вращается в другую сторону (против часовой стрелки). Поэтому кронштейн будет несколько отличаться от описанного выше.

Теперь владельцы этих таймеров спят спокойно: говорящий будильник не испугает утром маленького ребенка.

П. СЕРЕБРЯКОВ, инженер-конструктор, г. Санкт-Петербург

Источник

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

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

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

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

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

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

Читайте также:  Закладка фундамента дома своими руками

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

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

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

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

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

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

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

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

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

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

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

// Подключаем библиотеки вывода кириллицы на индикатор
#include

  • #include
  • #include
  • // Подключаем библиотеку последовательной шины I2C
    #include
    // Подключаем библиотеку часов реального времени RTC
    #include «RTClib.h»
    // Подключаем библиотеку для использование встроенного таймера 2
    // для управления временными интервалами сигнала
    #include

    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();
    >

    Источник

  • Оцените статью