Главная » Arduino
Призовой фонд
на март 2017 г.
1. UNI-T UT-39C
Паяльник
2. Тестер компонентов LCR-T4
Паяльник
3. 100 руб.
От пользователей

Настройка модуля часов реального времени RTC для Arduino

Все, что вам нужно сделать, так это сконфигурировать RTC-чип в соответствии с текущей датой и временем … и сегодняшний проект поможет вам это сделать!

Проект

RTCSetup состоит из двух элементов:

  • графический интерфейс пользователя (GUI), написанный на языке C# и запущенный на ПК
  • скетч, запущенный на Arduino, к которому подключен модуль RTC

Графический интерфейс пользователя и скетч соединены по последовательному интерфейсу с помощью несложного протокола. Исходный код для них доступен в моем хранилище данных Github.

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

Для связи с чипом DS1307 я выбрал библиотеку RTClib хранилища Adafruit. Данный чип наиболее часто используется в модулях RTC энтузиастами со всего мира. Соединение между ИС и Arduino устанавливается с помощью шины I2C:

На рисунке показано соединение, организованное с помощью “новых” выводов I2C платы Arduino Uno; естественно вы можете использовать выводы A4 и A5.

Скетч Arduino получает команды от ПК, выполняет их и посылает назад ответный сигнал.

Протокол

Как я указал ранее, для связи между графическим интерфейсом пользователя и Arduino используется несложный протокол, созданный с помощью только 4-х команд:

Команда: ##

Первая команда, отправленная после установления соединения, используется ПК для подтверждения “совместимости” модуля, подключенного к последовательному порту. Arduino должен ответить командой "!!"

Команда: ?V

Данная команда используется для получения версии скетча. Arduino отвечает строковым параметром, определенным как константа в начале скетча:

#define VERSION   "1.0"

Команда: ?T

Данная команда, используемая для получения фактической даты и времени, считывается из модуля RTC. Плата Arduino отвечает строковым параметром в формате: dd/MM/yyyy hh:mm:ss.

Команда: !TddMMyyyyhhmmss

Данная команда используется для установки времени RTC. Arduino отвечает командой "OK".

Графический интерфейс пользователя (GUI)

Графический интерфейс пользователя, разработанный на C#, общается с Arduino по вышеуказанному протоколу и выполняет три функции:

  • устанавливает текущую дату и время
  • устанавливает требуемую дату и время, которые определяет пользователь
  • получает и отображает фактическую дату и время модуля RTC.

Сначала вам необходимо выбрать последовательный порт Arduino для установки соединения и нажать кнопку CONNECT. Если соединение установлено (команды ## и ?V), тогда в строке состояния будет отображаться версия скетча.

В первом окне будет показано фактическое время ПК. После нажатия правой кнопки мыши (на красной стрелке) вы сможете сконфигурировать модуль RTC с данным временем :

С помощью кнопки с зеленой стрелкой вы сможете получить фактическое время, хранимое в модуле RTC:

И, наконец, с помощью выпадающего списка даты в центре, вы сможете выбрать требуемое значение даты и времени, и затем отправить эти значения в модуль RTC:

Технические данные

Я использовал метод, описанный в данном учебном руководстве, для внедрения пользовательского шрифта в приложение.

Я измерил время (около 150 мс), которое необходимо скетчу для установки времени, после того как команда отправлена графическим интерфейсом пользователя: это причина почему в коде, который вы видите, команда !T отправляется, когда действительное число миллисекунд составляет 850 и пройденное время – это фактическое время + 1 секунда.

while (DateTime.Now.Millisecond != 850)
Thread.Sleep(1);
string command = "!T" + time.AddSeconds(1).ToString("ddMMyyyyHHmmss");
serialPort.WriteLine(command);

Оригинал статьи

Прикрепленные файлы:

Теги:

Опубликована: 0 0
Я собрал 0 1
x

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

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 3.4 Проголосовало: 1 чел.

Комментарии (3) | Я собрал (0) | Подписаться

0
Lee #
Проект применим для DS3231.
Надо лишь указать свой чип в строке RTC_DS3231 RTC; (за место DS1307)
Спасибо!
Ответить
0
Сергей #
Попробовал применить, как указано к DS3231. Скетч загружается, приложение на компе загружается, соединение происходит, считывает дату и время из модуля. Но при попытке записать текущие значения из компа, приложение зависает. Не пойму в чем проблема. Очень необходимая штука, давно искал, но еще бы и работала...
Ответить
0
Сергей #
С модулем DS1307, кстати, такая-же ерунда творится. При попытке записать дату и время в верхней "стрелки", курсор мыши приобретает форму песочных часов и прога не реагирует ни на что. А в верху окна появляется надпись: RTSSetup Устройство %2 "%3" не отвечает
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется напряжение?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Arduino UNO
Arduino UNO
200 Вт усилитель класса D на IRS2092 Лазерный модуль 650нм 5мВт
вверх