1ton-auto.ru

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

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

Часы, будильник, таймер на 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 мм

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В. Без неё модуль не работает даже с внешним питанием.

DS3231 arduino подключение — это автономная дешевая плата, в которой имеется встроенный кварц с термо-стабилизацией с исключительной точность хода часами в режиме реального времени. В состав модуля также входит литий-ионный аккумулятор, обладающий лучшим соотношением массы и накопленной энергии. Встроенный генератор позволил сократить количество деталей в схеме и повысить корректность работы прибора.

Читайте так же:
Регулировка зажигания маз 4370

Технические характеристики устройства

Напряжение питания:3.3В и 5В/v
Чип памяти::AT24C32 (32 Кб)
Точность:± 0.432 сек в день
Частота кварца:32.768 кГц
Поддерживаемый протокол:I2C
Габариты:38мм x 22мм x 15мм

DS3231 arduino подключение — базовая информация

Большая часть микросхем, аналогичных одной из самых доступных типов модульного устройства часов реального времени DS1307, применяется схема простого кварцевого генератора. DS3231 arduino подключение, которого не представляет никакой сложности. Данная схема выполнена на двух транзисторах с рабочей частотой 32 кГц. Однако и в этих приборах имеется свое несовершенство, так при различных температурных составляющих изменяется диапазон частот у кварца. А это в свою очередь создает неточность при обработке и подсчете времени.

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

DS3231 arduino подключение-3

Само устройство собрано на основе чипа DS3231N. Чтобы подтянуть линии 32K, SQW, SCL и SDA была применена сборка из резисторов RP1 с номиналом 4.7 кОм. Но здесь нужно учитывать одну зависимость. При использовании некоего количества приборов с шиной обеспечивающей передачу информации через интерфейс I2C, тогда нужно убрать резисторы на остальных модулях. Другая резисторная сборка, также служащая для поддержания стабильного уровня нуля на линиях A0, A1 и A2 и для изменения памяти адреса у микросхемы AT24C32N.

DS3231 arduino подключение — Подзарядка аккумулятора

Для обеспечения подзарядки аккумулятора служит цепочка, собранная на сопротивлении R5 и выпрямительном диоде D1. Вообще то эту цепь можно убрать, поскольку дисковые литиевые элементы SR2032 могут служить много лет. Светодиод визуальной индикации, включенный через сопротивление R1 показывает, что модуль включен и готов к работе. Так как DS3231 arduino подключение выполнено по интерфейсной шине I2C, то для удобства использования электрические шины поданы на два коннектора J1 и J2. Для чего служат другие контакты — показано в таблице ниже.

Функции J1

32K:выход, частота 32 кГц
SQW:выход
SCL:линия тактирования (Serial CLock)
SDA:линия данных (Serial Dфta)
VCC:«+» питание модуля
GND:«-» питание модуля

Функции J2

SCL:линия тактирования (Serial CLock)
SDA:линия данных (Serial Data)
VCC:«+» питание модуля
GND:«-» питание модуля

DS3231 arduino подключение-4

Что касается электронного компонента памяти AT24C32N, то он упрятан в корпус SOIC8, работает по сдвоенному интерфейсному проводнику I2C.

Фиксированный адрес чипа AT24C32N — 0x57, но в случае нужды его несложно изменить, установив перемычки A0, A1 и A2. Поскольку в приборе AT24C32N реализовано три входных адреса A0, A1 и A2, способные быть в двух положениях: LOG-1 или LOG-0. Микросхема способна работать на восемь адресов, начиная от 0x50 и заканчивая 0x57.

Подключение DS3231 к Arduino

Компоненты для подключения:

Arduino UNO R3 x 1 шт.
Часы реального времени на DS3231, RTC, SPI, AT24C32 x 1 шт.
Провод DuPont, 2,54 мм, 20 см, F-M (Female — Male) x 1 шт.
Кабель USB 2.0 A-B x 1 шт.

Принцип подключения:

В этой иллюстрации покажу как делать DS3231 arduino подключение используя только приборы DS3231 и Arduino UNO R3, необходимая информация будет поступать на все данные будут передаваться в «Port Monitor». Сложного в схеме ничего нет, для подключения нужно две пары проводов. Первым делом подключается интерфейсный проводник I2C, SCL в A4 (Arduino UNO) и SDA в A5 (Arduino UNO), теперь подается напряжение питание GND к GND и VCC к 5V. Возможно подать и 3.3v, на этом подключение завершилось.

DS3231 arduino подключение-5

Для нормальной работы устройства DS3231 требуется библиотека, которая отсутствует в программе разработки Arduino, поэтому ее нужно скачать здесь и встроить в программу разработки. Скачать: DS1307RTC и Time

Настройка и установка времени DS3231

Прежде, чем включать устройство нужно запустить процесс программирования времени, для этого необходимо взять из библиотеки DS1307RTC в качестве примера файл. Делается это так: -> «Файл» -> «Примеры» -> «DS1307RTC» -> «SetTime», либо можно взять готовый код расположенный ниже.

DS3231 arduino подключение — теперь этот код нужно загрузить в контроллер Arduino, значение времени нужно взять с операционной системы, открываем «Мониторинг порта».

DS3231 arduino подключение-6

Программа разработки

В данной библиотеке имеется еще дополнительный файл для примера, открывается он также просто: DS1307RTC «Файл» —> «Примеры» —> «DS3231» —> «DS3231_Serial_Hard»

Опять же и этот код добавляем в контроллер 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 можно просматривать эти данные. Кроме того когда загорится индикатор работы будильника это будет означать что часы нашли координаты. После этого вращая энкодер можно увидеть сначала широту, а потом долготу.

Читайте так же:
Как регулировать обороты кулера в bios

Фотосесия

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

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

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

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

Вывод

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

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

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

Говорящие часы на Arduino

Говорящие часы на ArduinoВ молодости не думаешь о времени, кажется, что оно идёт очень медленно, и хочется ускорить время, в пожилом возрасте появляется желание замедлить время.

Французский писатель, лауреат Нобелевской премии Альбер Камю писал «Время идет медленно, когда за ним следишь».

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

Я решил сделать для себя говорящие с некоторым набором фраз, как мне казалось, нужных для отслеживания времени:

  • Объявление наступления часа круглосуточно от 8 до 23
  • Объявление наступления минут от 1 до 30 в режиме утренней зарядки
  • Объявление наступления/окончания академического часа в 45 минут для 6-и занятий в режиме «Акадчас»
  • Объявление наступления/окончания перерыва в 15 минут для 6-и занятий в режиме «Акадчас»
  • Срабатывание будильника звуком лесной птицы кукушки.

Железо

Часы выполнены в фанерном корпусе голубого цвета на 6-и семисегментных индикаторах ярко-

Часы в момент съёмки отображают 15 часов, 17 минут, 38 секунд. Слева, напротив 15 часов отображается OLED дисплей с надписью МИНУТЫ — для корректировки минут (об этом чуть позже).

Схема реализована на 2-х микроконтроллерах ATMEGA328P(клиент) и ATMEGA8A(сервер). Сервер формирует код времени и режима, клиент отвечает за отображение информации на OLED-дисплее и управлением звуковых сообщений.

Отображение времени состоит из 3-х пар семисегментных индикаторах ярко-зелёного цвета. 3-х ватный динамик подключён к плееру DFPlayer_Mini_Mp3. Микро-SD на 4 гБ с записанными мелодиями встроена в плеер.

OLED дисплей по 2-м линиям связи SDA и SQL отображает текущий режим часов.

Используемый сервис

При разработке программы клиента использовалась популярная оболочка Arduino – Environment версии 1.8.5 . Для формирования звука использовался контроллер DFPlayer Mini c библиотекой DFPlayer_Mini_Mp3.h. Для отображения информации в формате чч:мм:сек на индикаторе используется программа написанная на языке С с использованием оболочки CodeVisionAVR версии V2.05.0. Для отображения информации о режимах, времени будильника на OLED-дисплее использовалась библиотека iarduino_OLED_txt.h и шрифт uint8_t MediumFontRus[].

Схемотехника управления индикатором

Говорящие часы на Arduino

На Рис. 1 изображён индикатор FJ8201DG. Сегменты обозначены как a,b,c,d,e,f,g.Символом zX обозначен 8-й элемент – точка. Символом А обозначены аноды сегментов. Символами 1-18 обозначены номера контактов индикатора.

Для активации сегмента необходимо подать нулевой потенциал на сегмент и положительный потенциал на анод. Для ограничения тока через диод сегмента вводится сопротивление от 600 Ом до 3к в зависимости от требуемой яркости сегмента.

На Рис. 2 показана схема управления индикатором состоящая из собственно индикатора и контроллера ATMega8A. Ограничивающие ток сегментов сопротивления в 600 Ом R1-R8 присоединяются к сегментам индикатора с одной стороны, с другой к контактам контроллера 2-6,11,12. Аноды сегментов А1-А6 управляются контактами контроллера 13,14,15,26-28.

Говорящие часы на Arduino

В Табл.1 показано кодировка символов для выбранной конфигурации. Так для активации символа «0» необходимо подать нулевой потенциал на контакты контроллера PD0, PD1, PD2, PD3, PD5, PD6, PD7, а на PD4(выключение сегмента g) подать логическую единицу. Таким образом для активации символа «0» необходимо на указанных контактах контроллера сформировать код 16 в десятичном представлении. При этом не забыть активировать анод логической единицей.

D0D1D2D3D4D5D6D7КОДСИМВОЛ
116«0»a b c d e f
11111117«1»b c
119«2»a b g e d
1165«3»a b g c d
111100«4»f g b c
1166«5»a f g c d
12«6»a f g c d e
1111113«7»a b c
«8»a b c d e f g
164«9»a b g f c d
Читайте так же:
Как отрегулировать реле давления и реле сухого хода

Режимы работы часов

Формируются переменным сопротивлением R10 с движка которого аналоговое напряжение 0-5 В подаётся на вход АЦП (DC2). АЦП конвертирует его в цифровой код в диапазоне 0-1023 и присваивает его переменной Regim. Затем разбивается на 19 диапазонов(Фрагмент 1)

Анатолий Беляев (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 Доработка программы

Следует обратить внимание на конденсатор С3 в цепи антенны. При использовании пассивной антенны его надо поставить обязательно, а вот при использовании активной поставить перемычку. Здесь присутствует 2.5-2.8 Вольт для питания активной антенны, поэтому старайтесь избегать закорачивания этого вывода, есть вариант остаться без модуля!
Часы могут работать и без GPS модуля, но об этом ниже.

Итак, дошли до схемы часов. Что они умеют делать:
— показывать время
— в начале каждого часа синхронизироваться с GPS модулем
— менять подсветку баллонов индикаторов
— устанавливать часовой пояс (от 0 до 12) нашего полушария (через меню), т.к модуль выдает всемирное координированное время (UTC)
— отключать синхронизацию с GPS модулем, в случае его отсутствия (через меню)
— выбирать скорость работы с GPS модулем (через меню)

Часы собраны на PIC 16F876A и 4-х высоковольтных дешифраторах К155ИД1.
Идея самих часов состоит в следующем: у GPS модуля есть свои RTC (часы реального времени), очень точные, которые при наличии хотя бы одного спутника постоянно с ним синхронизируются, по некоторым данным точность составляет вплоть до 50 — 100 нсек. В 04 минуты каждого часа МК обращается к GPS модулю и получает он него часы и минуты, делает поправку на часовой пояс и формирует двоичный код, который поступает на входы высоковольтных дешифраторов 155ИД1, управляющих лампами ИН-12А. Если модуль поймал хоть один спутник, то загорается светодиод HL4.

Я намеренно не делал динамическую индикацию, не нравится она мне и я стараюсь ее избегать, когда это возможно, да и портов у МК достаточно.

Для подсветки колб индикаторов я взял светодиоды, не знаю как их зовут, из RGB ленты. Всего 8 режимов подсветки, меняется нажатием кнопки S2: выключена, красная, зеленая, синяя и комбинации этих трех цветов.

Кнопки S1 и S3 установка часов и минут соответственно.
Кнопка S4 – коррекция/синхронизация. Если включен режим синхронизации GPS, то при нажатии S4 происходит принудительная синхронизация часов с GPS модулем. Если режим синхронизации GPS отключен, то нажатие S4 сбрасывает минуты в 0 и, пока кнопка нажата, часы не идут. После отпускания кнопки часы запускаются с 00 минут 00 секунд. После этого нужный час можно установить кнопкой S1.

Громко сказано, но тем не менее опции настройки есть. При выключенном питании часов нужно нажать и удерживая S2 подать питание. На индикаторах часов высвечивается ячейка памяти, на индикаторах минут значение в этих ячейках. Перебор ячеек осуществляется той же кнопкой S2 по кругу 01-02-03-01-02…. Для изменения значения нужно нажать S4, загорится разделительная точка, кнопками S1 или S3 изменить значение ячейки и нажать S2 для запоминания установленного значения. При этом разделительная точка гаснет и вновь оказываемся в меню выбора ячейки.

Ячейка 01 – часовой пояс, значение меняется от 0 до 12, по умолчанию 4.
Ячейка 02 – значение 0 – GPS модуль есть, значение 1- модуля нет, по умолчанию 0.
Ячейка 03 – скорость GPS модуля, значение 09 – 9600, 19 – 19200, 38 – 38400, по умолчанию 38 .
Выход из меню – методом обесточивания часов. Все настройка хранятся в EEPROM микроконтроллера.

При использовании в часах GPS модуля резервное питание можно не делать, т.к. оно предусмотрено в самом модуле, а вот в случае его отсутствия убрать перемычку J1 (см. схему) и подключить аккумулятор. Естественно резервное питание можно подключить после настроек ячеек памяти часов.

Тестируем часы реального времени

Первым делом посмотрим тестовый скетч, который считывает время с модуля RTC один раз в секунду. Также выясним, что произойдет, если снять батарею и заменить ее, что заставляет часы реального времени сбросится. Прежде всего, снимем батарею при отключенном питании Arduino. Подождем 3 секунды и вернем батарею на место. Это приведет к сбросу RTC.

Выберем пример скетча из меню Arduino IDE Файл → Образцы → DS1307RTC → ReadTest и загрузим его в микроконтроллер

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