5 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Ардуино — будильник

Ардуино — будильник

С помощью пульта можно будет программировать время и будильник, включать/отключать будильник и устанавливать отсрочку сигнала. То есть делать всё не вставая с дивана.

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

Что понадобится

Ардуина

Дисплей TM1637

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

Пищалка (buzzer)


Можно не покупать, а выдрать откуда-либо.

ИК-приёмникнаиболее предпочтительный вариант — TSOPxx38 (38kHz).

tsop

Во втором варианте потребуется модуль часов DS 3231.

В начале вариант для тех, кто хочет просто подключить/проверить дисплей.

Подключаем всё по следующей схеме:

Скачиваем и устанавливаем библиотеку для дисплея TM1637.

Если всё работает, то переходим к следующему этапу. Добавим к схеме светики, пищалку и ик-приёмник…

У Вас может быть другая распиновка ик-приёмника. Резисторы 300-1000 ом.

Сначала залейте скетч для обнуления EEPROM…

Теперь я (немного забегая вперёд) опишу алгоритм, а после перейдём к программированию пульта.

Инструкция и как работает

Установите время на часах. Нажмите кнопку перехода в режим будильника (загорится зелёный светик и на дисплее будет отображаться будильник) и установите нужное время. Нажмите кнопку включения будильника (загорится красный светик).
Чтоб вернуться в режим часов нужно снова нажать ту же кнопку. Если не возвращаться в режим часов, то через минуту это произойдёт автоматически.

Сигнал будильника будет воспроизводиться в течении минуты, после этого будет десятиминутная пауза и снова сигнал в течении минуты. Так будет происходить до тех пор, пока будильник не будет выключен. Если во время воспроизведения сигнала нажать кнопку отсрочки, то звук выключится, а время будильника переведётся на десять минут вперёд.
То есть в момент пробуждения у вас будет два варианта — нажать кнопку отключения будильника и вылезать из тряпок, либо нажать кнопку отсрочки и поваляться ещё 10 минут.

После нажатия кнопки отключения будильника установленное время вернётся к изначальному значению. То есть, вы встаёте в 7:00 утра, будильник зазвенел, вы нажали отсрочку, будильник перевёлся на 7:10, зазвенел, вы таки встали, отключили будильник — будильник вернулся на 7:00.

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

Время будильника, его состояние (включён/отключён) и уровень яркости дисплея сохраняются в энергонезависимой памяти.

Нажатия на кнопки сопровождаются звуковым сигналом.

Программирование пульта

Возьмите какой-нибудь пульт, например от телевизора, выберите на нём несколько кнопок (у большинства пультов есть незадействованные кнопки), которыми будете управлять часами/будильником.

Нужно выбрать кнопки, которыми вы будете устанавливать время на часах (прибавлять/убавлять часы и минуты, четыре кнопки). Кнопки для установки будильника — прибавлять/убавлять часы и минуты будильника (четыре кнопки). Кнопка включения/отключения будильника (одна кнопка). Кнопка отсрочки будильника на 10 минут (одна кнопка) и кнопка перехода в режим установки будильника (одна кнопка). Кнопки для регулировки яркости (две штуки).

Заполучим коды кнопок. Откройте «Монитор последовательного порта», и нажмите на пульте кнопку, которой планируете устанавливать время — прибавлять часы:


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

Скопируйте это число и вставьте в скетч:

Повторяем процедуру для кнопки убавления часов:

Вставляем в скетч:

Проделываем всё то же самое для остальных кнопок. В скетче есть комментарии.

И в конце комментируем или удаляем строку…

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

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

Синхронизация от компьютера

Идея заключается в следующем, часы подключены (USB, UART) к компьютеру с запущенной на нём программой, которая «слушает» USB-порт в ожидании запроса от часов. Ровно в 00:00:10 часы отправляют запрос компьютеру, а тот в ответ отсылает часам своё системное время.

Добавим в скетч необходимый функционал. Там где счётчик времени добавим блок отвечающий за запрос…

И в конец основного цикла добавим блок отвечающий за приём:

Не забудьте про коды кнопок пульта.

Далее скачиваем программу chasikom, кладём её в домашнюю папку, подключаем часы к компу и запускаем:

У вас будет свой юзер и возможно другое устройство (/dev/ttyUSB0). Проверить можно так:

Через десять секунд установится точное время.

Читайте так же:
Регулировка погружного насос малыш

Если нужна прога для какого-либо роутера, тогда напишите в комментах.

Вариант с DS3231

Добавляем в схему модуль:

Скачиваем и устанавливаем библиотеку DS3231, заливаем новый скетч:

Не забывайте про коды кнопок пульта.

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

Теперь возьмите пульт, выставите время (в этом скетче нет коррекции от большого компьютера) и передёрните ардуине питание. Если всё работает правильно, то на часах будет текущее время.

Ну и наконец скетч для работы с модулем часов и коррекцией времени:

На этом пожалуй всё.

Вступайте в Telegram-группу Arduino

GPS часы на Arduino 04.06.2019 06:17

image
Здравствуйте меня зовут Дмитрий сегодня я расскажу как я создал GPS часы. В конце статьи будет ссылка на прошивку и CAD 3D модель.
Итак захотелось мне сделать что нибудь на Arduino и при этом что нибудь полезное. И выбор мой пал на часы, но не просто часы, а часы с синхронизацией времени по GPS ну и будильником заодно.

Описание конструкции

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

1) Ardurino Uno центр всей системы — Цена 3.45$.
2) GPS модуль VK2828U7G5LF — Цена 6.21$.
3) CD4026BE драйверы для цифровых индикаторов 5 шт. Цена 2.20$.
4) Разъемы под драйверы 16Pins. Купил их чтобы не повредить драйверы при пайке. Цена 0.51$.
5) 7 сегментные цифровые индикаторы 1,8 дюйма с общим катодом на это нужно обратить внимание, индикаторами с общим анодом нельзя управлять при помощи CD4026BE. 4 шт. Цена 3.63$.
6) Разъемы под цифровые индикаторы 5Pins 10 шт. Эти разъемы выпили у меня много крови дело в том что ноги цифровых индикаторов немного тоньше обычных штырьков которые в них вставляются, поэтому обязательно подогните концы ног у цифровых индикаторов в сторону. Цена 1.57$.
7) Резисторы 220 Ом. Нужны для ограничения тока в цепи светодиодов 40 шт я по неопытности заказал на 2 Вт, но конечно-же подойдут и на 0,5 Вт. Цена 2.22$.
8) Резисторы на 12 кОм. Покупал я их как «подтягивающие» для кнопок, но потом узнал что у Ardurino есть встроенный резистор который активируется в режиме PullUp. Но они мне пригодились когда надо было подогнать яркость 2 центральных светодиодов под яркость цифровых индикаторов. Спаяв 5 штук параллельно я получил 2,3 кОм. Так что они все таки пригодились 20 шт. Цена 0.68$.
9) Динамик пищалка активный. Цена 0.82$.
10) Светодиод красный 10 шт. Цена 1.25$.
11) Шлейф из проводов dupont line 20 см. Я использовал его как источник проводков для соединения компонентов. Цена 1.13$.
12) Энкодер нужен для выставления времени будильника и настройки. Энкодер я выбрал поскольку при помощи него процесс установки времени упрощается в сто раз. Почему энкодеры не применяются повсеместно в всех часах ума не приложу. Цена 0.98$.
13) Ручка для энкодера. Стандартная ручка ужасна. Цена 1.31$.
14) Кнопка со встроенным в неё светодиодом. Цена 0.87$.
15) Датчик освещенности BH1750 (я выбрал тот который короткий). Естественно я захотел чтобы часы автоматически регулировали свою яркость. Цена 0.81$.
16) Мосфет модуль 2 шт. Почему 2 штуки? Первый как вы понимаете я использую для управления яркостью циферблата, а второй я использую чтобы отключать GPS модуль, конечно у него есть спящий режим, но в этом режиме он отключается не полностью, поэтому я устроил ему «спящий режим» при помощи мосфета. Стоит ли отключать GPS модуль? Да стоит при включенном GPS часы потребляют 120 миллиампер, а при выключенном только 80. Почему модуль? Потому что мосфеты продаются только партиями по 10 шт, а мне столько не надо. Цена 1.06$.
17) Индуктивный сенсор CJMCU-0101. Цена 1.73$.
18) Набор разъем гнездо 40Pin 5 шт. Нужен чтобы при помощи них подключать провода к плате. Вы спросите почему я не использовал эти разъемы для цифровых индикаторов? Потому что я с начало заказал те разъемы, а потом понял что их мне будет недостаточно. Цена 1.56$.
19) Акрил из него сделан корпус. Я взял 2 куска. Первый 200×200×4 мм Полупрозрачный из них я сделал переднюю и заднюю панели. Второй 200×200×3 мм полностью черный из него я сделал боковые панели. Панели между собой я склеил термоклеем. Цена 13.03$.
20) Специальный нож крюк для резки акрила. Цена 2.01$
21) Две монтажные двусторонние платы 9×15 см. Цена 4.18$.
22) Силиконовые само-клюющиеся ножки 4 шт. Цена 0.88$.
23) Шестигранные латунные стойки для плат М3×12 20 шт формата папа мама. И М3×20 10 шт формата мама мама. Цена 3.67$.
24) Винты черные с головкой под внутренний шестигранник 20 шт. Цена 2.06$.
25) Макетная плата и перемычки для неё. Она вам понадобится чтобы проверить работа-способность ваши компонентов перед их установкой. Цена 3.77$.

Читайте так же:
Винт регулировки сцепления к вайпер актив

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

Кроме того настоятельно рекомендую выпаять все светодиоды как с Arduino так и с модулей, а то внутри часов будет настоящая дискотека.

Итак в результате мы имеем 60,72$ или 4007 рублей по курсу на момент написания статьи. При этом если у вас нет паяльника мультиметра и других паяльных принадлежностей то вам придется отдать за них примерно столько-же.

Принцип работы

При включении часы показывают количество спутников которое видит GPS модуль. После того как синхронизация происходит часы начинают показывать время. При нажатии на энкодер можно устанавливать будильник. Кнопка включает и выключает будильник при этом она отображает включен-ли будильник.При срабатывание будильника если положить руку сверху на часы то можно перевести их в режим снуз (индикатор будильника будет при этом мигать).
Если нажать на энкодер при зажатой кнопке включения будильника можно установить нужный часовой пояс (по умолчанию +3). Последующее нажатие на энкодер позволяет выставить задержку режима снуз у будильника.
Ну и поскольку это GPS часы то у них есть «секретный» режим. Если их включить зажав кнопку включения будильника, часы перейдут в режим когда, они пересылают данные с GPS модуля через USB порт. При помощи программы u-center можно просматривать эти данные. Кроме того когда загорится индикатор работы будильника это будет означать что часы нашли координаты. После этого вращая энкодер можно увидеть сначала широту, а потом долготу.

Фотосесия

image
Вид сзади со снятым корпусом.

image
Задняя плата с другой стороны.

image
Плата с цифровыми индикаторами спереди.

image
Плата с цифровыми индикаторами сзади.

Вывод

Не смотря на высокую стоимость этих часов я ими все таки доволен. Как вы понимаете производитель ориентируется на потребности среднестатистического потребителя. А благодаря Arduino можно создать продукт который полностью вас удовлетворит.

Прошивка вместе с CAD 3D моделью.

Данная модель сделана при помощи программного пакета Creo Parametric (бывший ProEnginer) для её просмотра вам понадобится либо сам Creo Parametric либо просмоторщик который называется Creo View Express его можно скачать с сайта ptc, но вам придется у них зарегестрироваться.

Часы, будильник, таймер на Arduino. v1.0

Фото 2/3 Часы, будильник, таймер на Arduino. v1.0 Фото 3/3 Часы, будильник, таймер на Arduino. v1.0

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

часы с использованием модуля реального времени

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

Дисплей

0.96inch OLED (A)
0.96inch OLED (A) — это встраиваемый двухцветный (желтый/синий) OLED дисплей с интерфейсом I2C/SPI. Разрешение экрана 128х64 пикселей, а угол обзора более 160 градусов.
Размеры платы 29мм х 33 мм.

Контроллер

Iskra Mini
Iskra Mini — полноценная Arduino-платформа, только маленькая: всего 33×20 мм.

Обратите внимание, что на плате нет собственного USB-порта.
Поэтому для её прошивки понадобится посредник!
Им может быть другой контроллер Arduino

Характеристики Iskra Mini

  • Микроконтроллер: ATmega328
  • Тактовая частота: 16 МГц
  • Флеш-память: 32 КБ (2 КБ используются загрузчиком)
  • Оперативная память SRAM: 2 КБ
  • Энергонезависимая память EEPROM: 1 КБ
  • Рабочее напряжение: 5 В
  • Входное напряжение: 5,3–12 В
  • Портов ввода-вывода общего назначения: 20
  • Портов с поддержкой ШИМ: 6
  • Портов, подключённых к АЦП: 8 (4 из них на нераспаянных выводах)
  • Разрядность АЦП: 10 бит
  • Аппаратные интерфейсы: UART, SPI, I²C (на нераспаянных выводах)
  • Максимальный ток одного вывода: 40 мА
  • Максимальный ток с пина +5V: 150 мА

Цифровой датчик температуры и влажности

Troyka-Temperature Humidity Sensor DHT11
Troyka-Temperature Humidity Sensor DHT11.
Данные температуры и влажности датчик отдаёт по одному проводу в виде цифрового сигнала. Это позволяет передавать данные на расстояние до нескольких десятков метров.
В сердце модуля — популярная среди любителей сенсорная сборка DHT11. Он работает по собственному протоколу. На борту модуля — популярная среди любителей сенсорная сборка DHT11.

  • Напряжение питания: 3–5 В
  • Потребляемый ток при запросе данных: 2,5 мА
  • Потребляемый ток в ожидании: 100 мкА
  • Диапазон температур: 0–50 °С
  • Погрешность температуры: ±2 °С
  • Диапазон влажности: 20–90%
  • Погрешность влажности: ±5%
  • Габариты: 25×25 мм
Читайте так же:
Yamaha xjr 1200 регулировка клапанов

3D-джойстик

3D Joystick
3D Joystick — сделает управление нашим устройством быстрым и удобным.
Модуль-джойстик схож с «грибочком» на манипуляторах PlayStation и XBox. Он комбинирует в себе двухосный джойстик и тактовую кнопку. В нейтральном положении аналоговый сигнал соответствует половине напряжения питания. При перемещении джойстика в одну сторону напряжение будет нарастать, а при движении джойстика в другую сторону — падать. Таким образом, можно получать точное положение ручки джойстика и реагировать на угол наклона, а не только на сам факт наклона ручки. Хотя в этом проекте мы используем только факт наклона.

  • Напряжение питания: 3–5 В
  • Интерфейс по осям X, Y: аналоговый, линейный
  • Интерфейс кнопки: цифровой, бинарный
  • Габариты: 25×25 мм

Управление джойстиком

Нажатие влево — вход в меню настроек
изменяемое значение подсвечивается
нажатие вверх — изменение значения
нажатие вправо — переход к следующему значению
при настройки будильника слева появляется значок "а"
нажатие влево — выход из меню с сохранением изменений
время будильника сохраняется в энергонезависимой памяти

Нажатие вниз — вкл/откл будильника

Когда сработал будильник
первое нажатие на кнопку — отключение пищалки
второе нажатие на кнопку — отключение реле

Пьезодинамик

Buzzer
В нашем проекте нужно пищать. Воспользуемся модулем Buzzer.

  • Номинальная частота: 4 кГц
  • Интенсивность: 80 дБ
  • Номинальное рабочее напряжение: 5 В
  • Габариты: 25,4×25,4 мм

Релейный модуль

Модуль Relay
Модуль Relay это просто механический рубильник, которым можно управлять при помощи микроконтроллера, такого как Arduino. С помощью реле можно включать и выключать электроприборы, которые подключены к бытовой электросети 220 В. На модуле расположен светодиод, который всегда подскажет — замкнуто реле или нет.
У этого реле есть есть не только нормально разомкнутый (NO) контакт, но и нормально замкнутый (NC). Это удобно.

  • Номинальное напряжение питания: 5 В
  • Номинальное напряжение сигнала: 3–5 В
  • Максимальный ток коммутации: 16 А
  • Коммутируемое переменное напряжение (пиковое): 250 В
  • Потребляемый ток: 87 мА
  • Рабочая температура: −40…+85 °C
  • Магнитная система катушки: моностабильная
  • Рекомендованная частота переключения: до 1 Гц
  • Электрическая износостойкость (NO) контакта: 30×10³ переключений
  • Электрическая износостойкость (NC) контакта: 10×10³ переключений
  • Габариты: 50,8×25,4 мм

Часы реального времени

RTC
Модуль RTC — сделан на основе популярного чипа DS1307. Он общается с управляющей электроникой по протоколу I²C / TWI.
Слот предназначен для часовой батарейки размера CR1225 на 3В. Без неё модуль не работает даже с внешним питанием.

Анатолий Беляев (aka Mr.ALB). Персональный сайт

Продолжаю использовать недорогие и миниатюрные платы Arduino Pro Mini. На этой странице представляю проект часов. Обычные такие часы .

Подразделы

Прежде чем делать свой скетч, посмотрел в Интернете, что делают другие. И вот мне попался интересный проект http://arduinolab.pw/index.php/2016/06/23/chasy-na-arduino/ , решил взять его за основу.

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

  1. Отсутствие регулировки яркости индикатора.
  2. Отсутствие гашения незначащего нуля.

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

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

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

Схема часов

Схема часов не сложная. Благодаря тому, что индикатор управляется по протоколу IIC (I2C), соединений совсем немного. Блок питания используется импульсный, обратноходовый, от какой-то зарядки для телефона. Выдаёт он +6,5 В. Это напряжение подаётся на стабилизатор Arduino Pro Mini – на контакт RAW.

Схема электрическая принципиальная для скетча #8 Pic 1. Схема электрическая принципиальная для скетча #8

Монтажную схему см. ниже.

Схема монтажная для скетча #8 Pic 2. Схема монтажная для скетча #8

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

Читайте так же:
Регулировка дисковых тормозов машины

Конструкция часов

Корпус традиционно склеен из пластика ABS. Габариты 80 х 60 х 54 мм (Ш х Г х В). Сама конструкция представляет собой блок из модулей: индикатора, реального времени, платы с Ардуино, модуля питания и планки с кнопками. Arduino Pro Mini вставлено в панельку DIP24, которая распаяна на монтажной плате. К этой плате и идут соединения от модулей. Конструктивно модули соединены между собой стойками из нейлона и винтами М3. К этим же стойкам прикручивается и задняя крышка. Блок из модулей вставлен в корпус и фиксируется снизу так же винтом М3.

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

Кнопки управления вынес на переднюю панель и немного утопил вглубь. Сейчас объясню зачем так. Есть у меня часы ASSISTANT ah-1066 , габариты у них чуть-чуть больше, а индикатор такой же, зелёненький. Так у них кнопки управления вынесены на верхнюю крышку, что с моей точки зрения и опыта эксплуатации такой конструкции не совсем удобно, да и пыль на них оседает. Батарейки в тех часах мизинчиковые (ААА) 3 шт. – недолговечно. Нет регулировки яркости индикатора. Поэтому, создавав свою конструкцию старался устранить эти недостатки. К примеру, когда кнопки впереди, то легко подстраивать или устанавливать время, так как одновременно видишь и индикатор, и кнопки.

Ниже небольшой фотоотчёт по конструкции часов.

Часы. Внешний вид, разные ракурсы Pic 3. Часы. Внешний вид, разные ракурсы Часы. Внешний вид, разные ракурсы Pic 4. Часы. Внешний вид, разные ракурсы Часы. Внешний вид, вид снизу Pic 5. Часы. Внешний вид, вид снизу Часы. Внешний вид, снята задняя крышка Pic 6. Часы. Внешний вид, снята задняя крышка Часы. Вынут блок часов из корпуса Pic 7. Часы. Вынут блок часов из корпуса Часы. Вынут блок-модуль часов из корпуса Pic 8. Часы. Вынут блок-модуль часов из корпуса Часы. Блок-модуль часов разъединён. Отделена плата RTC DS3231 Pic 9. Часы. Блок-модуль часов разъединён. Отделена плата RTC DS3231 Часы. Блок-модуль часов разъединён. Отделена плата RTC DS3231 Pic 10. Часы. Блок-модуль часов разъединён. Отделена плата RTC DS3231 Часы. Блок-модуль часов разъединён. Отделена плата индикатора TM1637 и панель кнопок Pic 11. Часы. Блок-модуль часов разъединён. Отделена плата индикатора TM1637 и панель кнопок Часы. Окончательный вариант Pic 12. Часы. Окончательный вариант

Скетч часов

Далее представлен скетч. Рассмотрю некоторые его особенности. Так, у автора для мигания точек используется сигнал с модуля реального времени с контакта SQW, который подаётся на контакт 2 Ардуино. На этом контакте установлено внешнее прерывание 0 на изменение ( CHANGE ). Можно реализовать и по-другому, к примеру, через Таймер1. Оставил так, как у автора, может быть в другом проекте сделаю через Таймер1, для разнообразия.

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

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

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

Вариант мигания точек, если нет SQW

Несколько раз меня спрашивали что делать, если нет вывода SQW на DS3231, могу предложить использовать прерывания по Таймеру1. Доработка скетча не займёт много времени, а эффект тот же, что и с выводом SQW.

Проверено подписчиками – работает.

Приложение

Используемые библиотеки и программы:

2020-01-02 Доработка программы
2020-05-06 Доработка программы
2021-08-27 Доработка программы

Строим часы на Arduino с использованием сервоприводов

Вы мечтаете собрать часы на индикаторных лампах типа "Никси", но те с каждым годом становятся всё дороже, а встречаются — всё реже? Ничего страшного. Существует способ показа цифр, придуманный ещё раньше. Тогда, когда ламп этих даже в проекте не было — он уже существовал. Речь идёт об индикации при помощи колец с цифрами, написанными на их торцах.

Давайте вспомним, где применялась и применяется такая индикация. Арифмометры, старые контрольно-кассовые машины, аркадные автоматы, шагомеры, счётчики магнитофонов, одометры. Из нынешнего — водомеры и некоторые электросчётчики (а когда-то — вообще все).

И в отличие от "Никси", для такой индикации не потребуются компоненты, снятые с производства. Так, автор сайта Arduino Project Hub применил в своих часах стандартные сервоприводы SG90, которые выпускаются в огромных количествах, сравнительно недороги и ничуть не дефицитны. Модифицровав код, можно приспособить и другие аналогичные сервоприводы. Свой проект разработчик выложил по адресу https://create.arduino.cc/project. ffset=9 на условиях лицензии GPL версии 3 или выше на ваш выбор. Правда, получилась вещь, почти неотличимая от винтажной?

Читайте так же:
Регулировка сцепления на фф1

Первым делом мастер берёт RTC-модуль на микросхеме DS1307 и три сервопривода, которые подключает к Arduino согласно схеме в формате Fritzing: https://hacksterio.s3.amazonaws.com/uploads. X4V.fzz

Электронная часть готова, вот так она проста. Безо всяких дешифраторов с высоковольтными ключами и преобразователей. Но не расслабляйтесь, теперь надо изготовить механическую часть. С нуля, самостоятельно — это вам не готовые "Никси", где до вас все проволоки изогнуты, сетка вырезана, всё это собрано, помещено в баллон, воздух откачан, неон закачан, и так далее. Тут всё по-другому, тут всё своими руками делать надо. Повторяйте за мастером!

Берём, значит, обыкновенную ПВХ-трубу с внутренним диаметром в 76,2 мм, а внешним — в 88,9 мм. Вырезаем, значит, из неё два кольца шириной в 6,35 мм — одно для десятков минут, другое — для единиц.

Для часов (в смысле, не железок, а единиц измерения) делаем одно кольцо побольше — шириной в 25,4 мм, там две цифры ведь в некоторых положениях.

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

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

Помещаем и вклеиваем вставки в минутные кольца так:

А в часовое кольцо — так:

Теперь надо напечатать полоски с числами. Скетч рассчитан на кольца указанных выше размеров и цифры высотой в 18 пунктов, напечатанные в масштабе 1:1, иначе придётся корректировать в программе углы поворота. На часовое кольцо печатаем в столбик числа от 1 до 12, на кольцо десятков минут — от 0 до 5, на кольцо единиц минут — от 0 до 9. Если модифицировать скетч, можно переделать часы в 24-часовые, тогда потребуются четыре сервопривода, и на кольцо десятков часов придётся напечатать числа от 0 до 2, а на кольцо единиц часов — от 0 до 9. Все кольца в этом случае будут одинаковой, малой толщины.

Кольца нужно установить на валы сервоприводов правильно. Привод единиц минут устанавливаем на 0 градусов, десятков минут — на 120, часов — на 132. Устанавливаем кольца:

Далее из листового металла (работаем с ним в перчатках) склеиваем (или спаиваем, если металл поддаётся лужению) такую конструкцию:

Прикручиваем её саморезами к деревянной подставке:

Сервоприводы с вставками и кольцами закрепляем обычными кабельными стяжками:

И наконец, изготавливаем переднюю панель с прорезями и размещаем её перед кольцами:

При желании приобретаем или изготавливаем корпус произвольной конструкции. Заливаем в Arduino скетч:

Servo myservo1; // single minute servo connects to arduino pin 9
Servo myservo2; // tem minute servo connects to arduino pin 8
Servo myservo3; // hour servo connects to arduino pin 7

int pos1 = 0;
int pos2 = 0;
int pos3 = 0;

void setup() <
// put your setup code here, to run once:
myservo1.attach(9);
myservo2.attach(8);
myservo3.attach(7);

Serial.begin(9600);
if (! rtc.begin()) <
Serial.println("Couldn't find RTC");
while (1);
>

if (! rtc.isrunning()) <
Serial.println("RTC is NOT running!");
// following line sets the RTC to the date & time this sketch was compiled
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));

void loop() <
DateTime now = rtc.now();

int h=now.hour();
int m=now.minute();
int nm; // variable used to convert to minute single digit

// following line converts from 24 hour to 12 hour
if (h>12) <
h=h-12;
>

Serial.println();
Serial.print(nm);
pos1=(nm * 12); // this line determines the servo 1 movement
myservo1.write(pos1);
myservo2.write(pos2);
myservo3.write(pos3);

Serial.println();
Serial.println();
Serial.print(pos1);
Serial.println();
delay (1000);

Время в компьютере перед компиляцией должно быть выставлено правильно, лучше всего — по NTP-серверу, так как оно запишется в RTC в момент пуска скетча. Если RTC "уплывёт", процедуру следует повторить. Проверить, правильные ли получились углы поворота, при необходимости скорректировать.

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

Не пропустите обновления! Подписывайтесь на нашу страницу в Instagram.
Так же у нас есть Telegram канал.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector