Слайд-часы под управлением Ардуино

Введение

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

Вот здесь и будет удобно использование микросхемы RTC (Real Time Clock, часов реального времени). Эта микросхема с батарейкой 3В или каким-либо другим источником питания следит за временем и датой. Часы/календарь обеспечивают информацию о секундах, минутах, часах, дне недели, дате, месяце и годе. Микросхема корректно работает с месяцами продолжительностью 30/31 день и с високосными годами. Связь осуществляется через шину I2C (шина I2C в данной статье не обсуждается).

Если напряжение на главной шине питания Vcc падает ниже напряжения на батарее Vbat, RTC автоматически переключается в режим низкого энергопотребления от резервной батареи. Резервная батарея – это обычно миниатюрная батарея (в виде «монетки», «таблетки») напряжением 3 вольта, подключенная между выводом 3 и корпусом. Таким образом, микросхема по-прежнему будет следить за временем и датой, и когда на основную схему будет подано питание, микроконтроллер получит текущие время и дату.

В этом проекте мы будем использовать DS1307. У этой микросхемы вывод 7 является выводом SQW/OUT (выходом прямоугольных импульсов). Вы можете использовать этот вывод для мигания светодиодом и оповещения микроконтроллера о необходимости фиксации времени. Мы будем делать и то, и другое. Ниже приведено объяснение работы с выводом SQW/OUT.

Для управления работой вывода SQW/OUT используется регистр управления DS1307.

Ригистр управления DS1307
Бит 7 Бит 6 Бит 5 Бит 4 Бит 3 Бит 2 Бит 1 Бит 0
OUT SQWE RS1 RS0
Бит 7: управление выходом (OUT)
Этот бит управляет выходным уровнем вывода SQW/OUT, когда выход прямоугольных импульсов выключен. Если SQWE = 0, логический уровень на выводе SQW/OUT равен 1, если OUT = 1, и 0, если OUT = 0. Первоначально обычно этот бит равен 0.
Бит 4: включение прямоугольных импульсов (SQWE)
Этот бит, когда установлен в логическую 1, включает выходной генератор. Частота прямоугольных импульсов зависит от значений битов RS0 и RS1. Когда частота прямоугольных импульсов настроена на значение 1 Гц, часовые регистры обновляются во время спада прямоугольного импульса. Первоначально обычно этот бит равен 0.
Биты 1 и 0: выбор частоты (RS)
Эти биты управляют частотой выходных прямоугольных импульсов, когда выход прямоугольных импульсов включен. Следующая таблица перечисляет частоты прямоугольных импульсов, которые могут быть выбраны с помощью данных битов. Первоначально обычно эти биты равны 1.
Выбор частоты прямоугольных импульсов и уровня на выводе SQW/OUT микросхемы DS1307
RS1 RS0 Частота импульсов и уровень на выходе SQW/OUT SQWE OUT
1 Гц 1 x
1 4,096 кГц 1 x
1 8,192 кГц 1 x
1 1 32,768 кГц 1 x
x x
x x 1 1

 Данная таблица поможет вам с частотой:

Выбор частоты прямоугольных импульсов DS1307
Частота импульсов Бит 7 Бит 6 Бит 5 Бит 4 Бит 3 Бит 2 Бит 1 Бит 0
1 Гц 1
4,096 кГц 1 1
8,192 кГц 1 1
32,768 кГц 1 1 1

Если вы подключили светодиод и резистор к выводу 7 и хотите, чтобы светодиод мигал с частотой 1 Гц, то должны записать в регистр управления значение 0b00010000. Если вам нужны импульсы 4,096 кГц, то вы должны записать 0b000100001. В этом случае, чтобы увидеть импульсы вам понадобится осциллограф, так как светодиод будет мигать так быстро, что будет казаться, что он светится постоянно. Мы будем использовать импульсы с частотой 1 Гц.

Начало работы

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

Этапы

При организации системы «Умный дом» на базе Ардуино, стоит действовать по следующему алгоритму:

  • Инсталляция программного кода;
  • Конфигурация приложения под применяемое устройство;
  • Переадресация портов (для роутера);
  • Проведение тестов;
  • Внесение правок и так далее.

В Сети имеется весь необходимый софт на применяемое оборудование — его достаточно скачать с официального сайта и установить (ссылку смотрите выше).

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

Последовательность действий при подключении к компьютеру

Чтобы начать работать с Ардуино в Windows, сделайте следующие шаги:

  • Подготовьте необходимое оборудование — USB-кабель и Arduino.
  • Скачайте программу на странице arduino.cc/en/Main/Software.
  • Подсоедините плату с помощью USB-кабеля. Проследите, чтобы загорелся светодиод PWR.
  • Поставьте необходимый набор драйверов для работы с Ардуино. На этом этапе стоит запустить установку драйвера и дождаться завершения процесса. После жмите на кнопку «Пуск» и перейдите в панель управления. Там откройте вкладку «Система и безопасность» и выберите раздел «Система». После открытия окна выберите «Диспетчер устройств», жмите на название Ардуино и с помощью правой кнопки мышки задайте команду обновления драйвера. Найдите строчку «Browse my computer for Driver software!», кликните по ней и выберите соответствующий драйвер для вашего типа платы — ArduinoUNO.inf (находится в папке с драйверами). Это может быть UNO, Mega 2560 или другая.
  • Запустите среду разработки Ардуино, для чего дважды кликните на значок с приложением.
  • Откройте готовый пример (File — Examples — 1.Basics — Blink).
  • Выберите плату. Для этого перейдите в секцию Tools, а дальше в Board Menu.
  • Установите последовательный порт (его можно найти путем отключения и подключения кабеля).
  • Скачайте скетч в Ардуино. Кликните на «Upload» и дождитесь мигания светодиодов TX и RX на плате. В завершение система показывает, что загрузка прошла успешно. Через несколько секунд после завершения работы должен загореться светодиод 13 L (он будет мигать оранжевым). Если это так, система готова к выполнению задач.

Работа с роутером

Для полноценной работы «Умного дома» важно правильно обращаться с роутером. Здесь требуется выполнить следующие действия — открыть конфигурацию, указать адрес Arduino IP, к примеру, 192.168.10.101 и открыть 80-й порт

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

Умный дом на базе Raspberry Pi 3 своими руками, пошаговая инструкция

Популярные статьи  Выкидной нож своими руками

Подбираем комплектацию под проект на примере Arduino Mega 2560 R3

Для создания полноценной системы «Умный дом» и выполнения ею возложенных функций важно правильно подойти к комплектации и выбору оборудования

Что входит в комплект поставки?

Если ваша цель — «Умный дом» на базе Arduino, требуется подготовить следующее оборудование — саму плату Mega 2560 R3, модуль Ethernet (ENC28J60), датчик движения, а также другие датчики и контроллеры.

Кроме того, стоит подготовить кабель вида «витая пара», резистор, реле, переключатель и кабель для модуля Ethernet.

Необходимы и дополнительные инструменты — отвертки, паяльники и прочее.

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

Все программы для адаптации можно найти в сети на официальном сайте Arduino https://arduino.ru.  При выборе датчиков стоит ориентироваться на задачи, которая должен решать «Умный дом».

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

Прошивается плата с помощью специального софта, предназначенного для различных операционных систем, в том числе и кабеля USB. При этом в программаторах нет необходимости.

Что касается ПО, которое применяется в Ардуино, оно написано на языке Си. На число байт имеются определенные ограничения, но текущей памяти достаточно для реализации поставленной задачи.

Что такое GSM розетка для умного дома, устройство, принцип работы, инструкция по подключению, как сделать своими руками

Шаг 3. Прошивка Arduino

После того как сборка и проверка схемы завершена, можно приступать к загрузке управляющей программы (или «прошивки») в память Arduino.

Интерфейс среды разработки Arduino IDE

Для этого нужно установить бесплатную официальную среду разработки — Arduino IDE [https://www.arduino.cc/en/Main/Software]. Также вам потребуется исходный код проекта, который вы можете скачать ниже в архиве со всеми библиотеками и скетчем, а если вам нужен просто скетч — его можно скопировать отдельно:

Теперь для завершения работы над устройством потребуется выполнить лишь ряд простых операций:

  1. подсоедините Arduino к USB-порту компьютера. Если модуль подключается впервые, то необходимо будет дождаться определения устройства операционной системой и установки драйвера;
  2. скопируйте содержимое папки libraries из архива в одноимённую папку в каталоге Arduino IDE;
  3. запустите средство разработки Arduino IDE;
  4. настройте тип Arduino в соответствии с имеющимся у вас модулем. Так, если вы используете Arduino Nano, в меню необходимо выбрать Tools -> Board: “Arduino Nano”. Также убедитесь в том, что модель процессора соответствует микроконтроллеру на вашей плате:

Выбор модели Arduino в среде Arduino IDE

откройте исходный код (файл clock_8x32.ino): File -> Open. Arduino IDE предложит вам автоматически создать отдельную директорию под проект — ответьте утвердительно;
загрузите программу в память Arduino: Sketch -> Upload.

Компиляция программного кода и дальнейшая загрузка в память микроконтроллера займёт некоторое время, обычно не более одной минуты. Об успешном завершении операции будет сообщено в консоли Arduino IDE. После чего остаётся лишь перезагрузить Arduino с помощью кнопки Reset на устройстве — простые часы на светодиодных матрицах готовы!

Проверка электроники часов на Arduino.

Пришло время проверить работоспособность часов на Arduino и адресных светодиодах WS2812B. Для этого собираем электронику на макетной плате.

Слайд-часы под управлением Ардуино

Для проекта на Arduino понадобится следующая электроника:

  • Arduino Nano или Arduino Pro Mini.
  • Лента адресных светодиодов WS2812B.
  • МодульDS-3231 или DS-3231 mini.
  • Две тактовые кнопки.
  • Соединительные провода.
  • Макетная плата.
  • Блок питания 5в. 700 мА.

Схема подключения часов матрицы на Arduino NANO.

Для тестирования и проверки кода часов матрицы собрал электронику на макетной плате по схеме.

Слайд-часы под управлением Ардуино

Протестировал и поправил код, и вот что получилось.

Слайд-часы под управлением Ардуино

Пришло время установить электронику в корпус часов. Плату решил использовать Arduino Pro Mini. Так как они есть у меня в наличии, и занимает меньше места в корпусе часов.

Пример проекта с i2C модулем часов и дисплеем

Проект представляет собой обычные часы, на индикатор будет выведено точное время, а двоеточие между цифрами будет мигать с интервалом раз в одну секунду. Для реализации проекта потребуются плата Arduino Uno, цифровой индикатор, часы реального времени (в данном случае вышеописанный модуль ds1307), шилд для подключения (в данном случае используется Troyka Shield), батарейка для часов и провода.

В проекте используется простой четырехразрядный индикатор на микросхеме TM1637. Устройство обладает двухпроводным интерфейсом и обеспечивает 8 уровней яркости монитора. Используется только для показа времени в формате часы:минуты. Индикатор прост в использовании и легко подключается. Его выгодно применять для проектов, когда не требуется поминутная или почасовая проверка данных. Для получения более полной информации о времени и дате используются жидкокристаллические мониторы.

Модуль часов подключается к контактам SCL/SDA, которые относятся к шине I2C. Также нужно подключить землю и питание. К Ардуино подключается так же, как описан выше: SDA – A4, SCL – A5, земля с модуля к земле с Ардуино, VCC -5V.

Индикатор подключается просто – выводы с него CLK и DIO подключаются к любым цифровым пинам на плате.

Скетч. Для написания кода используется функция setup, которая позволяет инициализировать часы и индикатор, записать время компиляции. Вывод времени на экран будет выполнен с помощью loop.


#include <Wire.h>

#include "TM1637.h"

#include "DS1307.h" //нужно включить все необходимые библиотеки для работы с часами и дисплеем.

char compileTime[] = __TIME__; //время компиляции.

#define DISPLAY_CLK_PIN 10

#define DISPLAY_DIO_PIN 11 //номера с выходов Ардуино, к которым присоединяется экран;

void setup()

{

display.set();

display.init(); //подключение и настройка экрана.

clock.begin(); //включение часов.

byte hour = getInt(compileTime, 0);

byte minute = getInt(compileTime, 2);

byte second = getInt(compileTime, 4); //получение времени.

clock.fillByHMS(hour, minute, second); //подготовка для записывания в модуль времени.

clock.setTime(); //происходит запись полученной информации во внутреннюю память, начало считывания времени.

}

void loop()

{

int8_t timeDisp; //отображение на каждом из четырех разрядов.

clock.getTime();//запрос на получение времени.

timeDisp = clock.hour / 10;

timeDisp = clock.hour % 10;

timeDisp = clock.minute / 10;

timeDisp = clock.minute % 10; //различные операции для получения десятков, единиц часов, минут и так далее.

display.display(timeDisp); //вывод времени на индикатор

display.point(clock.second % 2 ? POINT_ON : POINT_OFF);//включение и выключение двоеточия через секунду.

}

char getInt(const char* string, int startIndex) {

return int(string - '0') * 10 + int(string) - '0'; //действия для корректной записи времени в двухзначное целое число. В ином случае на экране будет отображена просто пара символов.

}

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

Программу можно немного модернизировать. При отключении питания выше написанный скетч приведет к тому, что после включения на дисплее будет указано время, которое было установлено при компиляции. В функции setup каждый раз будет рассчитываться время, которое прошло с 00:00:00 до начала компиляции. Этот хэш будет сравниваться с тем, что хранятся в EEPROM, которые сохраняются при отключении питания.

Для записи и чтения времени в энергонезависимую память или из нее нужно добавить функции EEPROMWriteInt и EEPROMReadInt. Они нужны для проверки совпадения/несовпадения хэша с хэшем, записанным в EEPROM.

Популярные статьи  Джинсовые сумки из старых джинсов. Мастер-класс, как сделать своими руками, фото

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

В результате в коде нужно будет указать новую библиотеку (для жидкокристаллических экранов это LiquidCrystal), и добавить в функцию loop() строки для получения даты.

Алгоритм работы следующий:

  • Подключение всех компонентов;
  • Загрузка скетча;
  • Проверка – на экране монитора должны меняться ежесекундно время и дата. Если на экране указано неправильное время, нужно добавить в скетч функцию RTC.write (tmElements_t tm). Проблемы с неправильно указанным временем связаны с тем, что модуль часов сбрасывает дату и время на 00:00:00 01/01/2000 при выключении.
  • Функция write позволяет получить дату и время с компьютера, после чего на экране будут указаны верные параметры.

Сравнение первой версии часов с данной реализацией.

Подобные часы я уже собирал около года назад, но допустил ряд ошибок:

  • Напечатал пластиком PLA.И буквально через месяц пластик начал трескаться, и часы потеряли свою привлекательность. Данную версию напечатал пластиком PETG.
  • Размер матрицы не позволяла водить время в формате 24 часа, что было исправлено в данном весе часов.
  • В первой версии не было фальш – панелей, которые прикрывают провода. Что исправлено данной версии.
  • В данной версии также реализовал вывод температуры со встроенного датчика модуля часов DS3231.Данные не очень точные, это связано с тем, что модуль установлен в корпус. И реагировать на изменение температуры будет медленно. Но в помещении нет резких перепадов температуры, и данной точности будет достаточно.
  • Покрасил корпус часов матовым серым цветом, что делать часы более красивыми.

Слайд-часы под управлением Ардуино

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

Слайд-часы под управлением Ардуино

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

Понравился проект Часы – матрица на Arduino и адресных светодиодах WS2812B? Не забудь поделиться с друзьями в соц. сетях.

А также подписаться на наш канал на YouTube, вступить в группу , в группу на .

Спасибо за внимание!

Технологии начинаются с простого!

Фотографии к статье

Файлы для скачивания

Скачивая материал, я соглашаюсь с
Правилами скачивания и использования материалов.

Код часов на Arduino и светодиодах WS2812B.ino 11 Kb 1009 Скачать
библиотека FastLED .zip 331 Kb 500 Скачать
библиотека DS3232RTC .zip 48 Kb 488 Скачать
Файлы для печати .zip 958 Kb 520 Скачать

Разработка проекта

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

Какие проекты можно создавать на Arduino?

Ардуино позволяет создавать множество уникальных проектов. Вот лишь некоторые из них:

  • Сборка кубика Рубика (система справляется за 0,887 с);
  • Контроль влажности в подвальном помещении;
  • Создание уникальных картин;
  • Отправка сообщений;
  • Балансирующий робот на двух колесах;
  • Анализатор спектра звука;
  • Лампа оригами с емкостным сенсором;
  • Рука-робот, управляемая с помощью Ардуино;
  • Написание букв в воздухе;
  • Управление фотовспышкой и многое другое.

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

Рассмотрим ситуацию, когда необходимо сделать автоматику для дома с одной комнатой.

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

При составлении проекта стоит учесть следующее:

  • КРЫЛЬЦО. Включение света производится в двух случая — приближение хозяина к дому в темное время суток и открытие дверей (когда человек выходит из здания).
  • САНУЗЕЛ. В бойлере предусмотрен выключатель питания, который при достижении определенной температуры выключается. Управление бойлером производится в зависимости от наличия соответствующей автоматики. При входе в помещение должна срабатывать вытяжка, и загорается свет.
  • ПРИХОЖАЯ. Здесь требуется включение света при наступлении темноты (автоматическое), а также система обнаружения движения. Ночью включается лампочка небольшой мощности, что исключает дискомфорт для других жильцов дома.
  • КОМНАТА. Включение света производится вручную, но при необходимости и наличии датчика движения эта манипуляция может происходить автоматически.
  • КУХНЯ. Включение и отключение света на кухне осуществляется в ручном режиме. Допускается автоматическое отключение в случае продолжительного отсутствия перемещений по комнате. Если человек начинает готовить пищу, активируется вытяжка.

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

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

Стоит обратить внимание, что если в доме планируется установка умных розеток, то для управления ими лучше использовать приложения на мобильных устройствах, WIFI или через SMS сообщения. Визуальное программирование для Arduino можно осуществлять с помощью специального приложения FLProg, которое можно скачать с официального сайта http://flprog.ru/

Визуальное программирование для Arduino можно осуществлять с помощью специального приложения FLProg, которое можно скачать с официального сайта http://flprog.ru/.

Слайд-часы под управлением Ардуино

Установка электроники в корпус часов.

Подготовил всю необходимую электронику.Нарезал провода нужной длины. На необходимые проводники установил разъём Dupont. Загрузил прошивку в Arduino Pro Mini. Как это сделать, читайте в статье: «Прошивка Arduino Pro Mini с помощью конвертера PL2303HX». И после чего приступим к пайке.

Слайд-часы под управлением Ардуино

Схема подключения часов на Arduino Pro Mini и светодиодах WS2812B.

Паяем электронику по схеме.

Слайд-часы под управлением Ардуино

Вот такой результат получился, осталось уложить все в корпус часов.

Слайд-часы под управлением Ардуино

Чтобы Arduino Pro Mini и DS-3231 не стучали об корпус, приклеил их на двухсторонний вспененный скотч.

Слайд-часы под управлением Ардуино

Слайд-часы под управлением Ардуино

А сейчас немного о прошивке часов.

Код часов на Arduino и светодиодах WS2812B.

Для начала необходимо установить 2 библиотеки: DS3232RTC –для работы с модулем реального времени DS3231 и FastLED – для управления адресными светодиодами WS2812B.

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

Скачать их можно внизу статьи в разделе «».

Установить эти библиотеки можно из файла. Скачать их можно внизу статьи в разделе «».

Также установить данные библиотеки можно через менеджер библиотек. Для этого в Arduino IDE переходим в пункт меню Скетч > Подключить библиотеку > Управлять библиотеками …

Слайд-часы под управлением Ардуино

Подождите, пока диспетчер библиотек загрузит индекс библиотек и обновит список установленных библиотек.

Популярные статьи  Два способа переноса изображения на древесину

Слайд-часы под управлением Ардуино

DS3232RTC

Слайд-часы под управлением Ардуино

FastLED FastLED

Выбираем версию 3.3.2. и устанавливаем. Если у вас была установлена более новая версия, её нужно переустановить что можно сделать через менеджер – библиотека. Аналогичным образом.Выбрать нужную версию и нажать, установить. Ваша версия библиотеки будет переустановлена на ту версию, которую вы выбрали.

Модуль DS-3231 подключён по шине I2C, по этому контакт SDA подключаем к пину А4 Arduino и SCL подключаем к A5.

#define LED_PIN 6                     // Пин поключения ленты 6

Контакт данных ленты подключаем к 6 пину Arduino. Тактовые кнопки подключаем к 3 и 4 пинам Arduino.

byte button_1 = 4;  // кнопка
byte button_2 = 3;  // кнопка

Данные настройки можно оставить без изменений, но про них нужно знать.

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

Шаг 3. Прошивка Arduino

После того как сборка и проверка схемы завершена, можно приступать к загрузке управляющей программы (или «прошивки») в память Arduino.

Для этого нужно установить бесплатную официальную среду разработки — Arduino IDE [https://www.arduino.cc/en/Main/Software]. Также вам потребуется исходный код проекта, который вы можете скачать ниже в архиве со всеми библиотеками и скетчем, а если вам нужен просто скетч — его можно скопировать отдельно:

Теперь для завершения работы над устройством потребуется выполнить лишь ряд простых операций:

  1. подсоедините Arduino к USB-порту компьютера. Если модуль подключается впервые, то необходимо будет дождаться определения устройства операционной системой и установки драйвера;
  2. скопируйте содержимое папки libraries из архива в одноимённую папку в каталоге Arduino IDE;
  3. запустите средство разработки Arduino IDE;
  4. настройте тип Arduino в соответствии с имеющимся у вас модулем. Так, если вы используете Arduino Nano, в меню необходимо выбрать Tools -> Board: “Arduino Nano”. Также убедитесь в том, что модель процессора соответствует микроконтроллеру на вашей плате:

откройте исходный код (файл clock_8x32.ino): File -> Open. Arduino IDE предложит вам автоматически создать отдельную директорию под проект — ответьте утвердительно;
загрузите программу в память Arduino: Sketch -> Upload.

Компиляция программного кода и дальнейшая загрузка в память микроконтроллера займёт некоторое время, обычно не более одной минуты. Об успешном завершении операции будет сообщено в консоли Arduino IDE. После чего остаётся лишь перезагрузить Arduino с помощью кнопки Reset на устройстве — простые часы на светодиодных матрицах готовы!

Подключение PCF8563

Распиновка PCF8563:

Слайд-часы под управлением Ардуино

Для подключения PCF8563 нам потребуется:

  1. Кварц 32 кГц,
  2. Два резистора 10 кОм,
  3. конденсатор 10..22пФ

Схема подключения из datasheet:

Слайд-часы под управлением Ардуино

Vdd — напряжение питания, Vss — земля. Напряжение питания может варьироваться от 1 В (или 1,8 В, если вы хотите считывать данные с него) до 5,5В. В качестве конденсатора можно использовать керамику емкостью 10..22 пФ.

Блок питания 0…30В/3A
Набор для сборки регулируемого блока питания…

Подробнее

Резисторы на линии SDA и SCL можно не ставить — у большинства контроллеров (включая Arduino) есть внутренние подтягивающие резисторы на этих линиях. С другой стороны, они не повредят, поскольку внутренние резисторы контроллеров могут быть слишком слабыми. Можно установить резисторы сопротивлением по 10кОм.

Большие часы на адресной светодиодной ленте

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

Слайд-часы под управлением Ардуино
Сборка корпуса LED экрана для часов на WS2812B

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

Программное обеспечение

Каждое устройство, работающее на I2C  шине, имеет свой адрес. Вы можете проверить это с помощью простого сканера I2C. Ниже приводится скетч сканера I2C, который отобразит все устройства, подключенные к шине I2C, и напечатает их адреса:

// I2C Scanner
#include <Wire.h>
void setup() {
Serial.begin (115200);
// Leonardo: wait for serial port to connect
while (!Serial)
{ }
Serial.println ();
Serial.println ("I2C scanner. Scanning ...");
byte count = 0;
Wire.begin();
for (byte i = 8; i < 120; i++)
{
Wire.beginTransmission (i);
if (Wire.endTransmission () == 0)
{
Serial.print ("Found address: ");
Serial.print (i, DEC);
Serial.print (" (0x");
Serial.print (i, HEX);
Serial.println (")");
count++;
delay (1);  // maybe unneeded?
} // end of good response
} // end of for loop
Serial.println ("Done.");
Serial.print ("Found ");
Serial.print (count, DEC);
Serial.println (" device(s).");
}  // end of setup
void loop() {}

Для PCF8563 вы должны получить следующее:

I2C scanner. Scanning ...
Found address: 81 (0x51)
Done.
Found 1 device(s).

Установка времени и чтение

Вам понадобится дополнительная библиотека для поддержки PCF8563. Вы можете скачать ее здесь. Теперь просто используйте пример Файл > Образцы > Rtc_Pcf8563-master > set_clock. Он содержит практически все, что вам нужно. Пример выглядит так:

/* Demonstration of Rtc_Pcf8563 Set Time.
* Set the clock to a time then loop over reading time and
* output the time and date to the serial console.
*
* I used a RBBB with Arduino IDE, the pins are mapped a
* bit differently. Change for your hw
* SCK - A5, SDA - A4, INT - D3/INT1
*
* After loading and starting the sketch, use the serial monitor
* to see the clock output.
*
* setup:  see Pcf8563 data sheet.
*         1x 10Kohm pullup on Pin3 INT
*         No pullups on Pin5 or Pin6 (I2C internals used)
*         1x 0.1pf on power
*         1x 32khz chrystal
*
* Joe Robertson, jmr
* [email protected]
*/
#include <Wire.h>
#include <Rtc_Pcf8563.h>
// запускаем часы реального времени
Rtc_Pcf8563 rtc;
void setup()
{
//очистить регистры
rtc.initClock();
//установить время для начала.
//день, день недели, месяц, век (1 = 1900, 0 = 2000), год (0-99)
rtc.setDate(14, 6, 3, 1, 10);
//час, мин, сек
rtc.setTime(1, 15, 0);
Serial.begin(9600);
}
void loop()
{
//обе функции форматирования вызывают внутренний getTime (), так что
//форматированные строки имеют текущее время / дату.
Serial.print(rtc.formatTime());
Serial.print("\r\n");
Serial.print(rtc.formatDate());
Serial.print("\r\n");
delay(1000);
}

Наиболее важные шаги:

1. Добавьте библиотеки Wire и Rtc_Pcf8563,

2. Создайте объект Rtc_Pcf8563:

Rtc_Pcf8563 rtc;

3. Метод initClock () используется для сброса часов:

rtc.initClock();

4. rtc.setDate () и rtc.setTime () устанавливают время. Если вы поместите их, например, в setup () — в память PCF запишется новое время — перезаписав все, что было раньше,

5. Функция get * () используется для получения даты и времени.

Оцените статью
Денис Серебряков
Добавить комментарии

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Слайд-часы под управлением Ардуино
Светодиодные ленты на фары Subaru Impreza