Библиотека Arduino для проверки даты и температуры встроенного DS3231 через I2C.

Библиотека Arduino для проверки даты и температуры встроенного DS3231 через I2C.

Библиотека Arduino для проверки даты и температуры встроенного DS3231 через I2C.

ОБНОВЛЕНО: Также посетите новый библиотека для управления датой и временем с помощью модуля RTC DS3231 и Arduino с улучшениями, такими как сезонное время.

Работа IC de часы реального времени (RTC) наиболее популярные, которые управляются с помощью автобус я2C Обычно это очень похоже. Кроме Проводная библиотека de Arduino значительно упрощает связь с устройствами Двухпроводный последовательный интерфейс (TWI), I2C, специфический.

Содержание

    В широком смысле процесс состоит из

    1. Инициируйте связь в качестве ведомого или ведущего (установлено по умолчанию) с помощью функции Wire.begin(адрес). Если «адрес» опущен, связь начинается с мкКл учитель автобус я2C.

    2. Активировать общение I2C с устройством через адрес памяти, где оно находится, с помощью команды Wire.beginTransmission(адрес).

    3. Напишите заказ в автобус я2C чтобы сообщить устройству операцию, которую вы хотите выполнить, используя Wire.write(команда), где «order» — это код операции.

    4. Отключите связь, чтобы освободить автобус я2C с функцией Wire.endTransmission ().

    5. Запросите устройство отправить определенный объем данных, соответствующий запрошенной операции (в данном случае дату и время) с помощью функции Wire.requestFrom(адрес,сумма).

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

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

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

    Что касается DS3231 (и совместимых моделей той же серии, например DS3232) и интерпретация данных в соответствии со спецификациями интегрированного устройства, например, значения различных цифр, обозначающих время, представлены в двоично-десятичный код (BCD) которое будет удобнее выразить в виде десятичной дроби (а байт) использовать в Arduino

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

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

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

    Измерение температуры выполняется в два этапа: сначала загружается значение, чтобы различные варианты использования даты или времени были согласованными (они не будут показывать более высокое значение в неблагоприятных случаях), а во-вторых, оно используется в соответствии с форматом, который необходим. Пример программы (не очень практичный, хотя и объясняет все возможности) показывает все доступные форматы.

    • Функция date_time_value() который возвращает указатель на массив колесница (байты), содержащие семь числовых значений, обозначающих дату и время на часах. DS3231 преобразованы в десятичные (они находятся в BCD на устройстве)

    • Используя функцию будний_номер() Получается значение, соответствующее номеру дня недели, начинающегося с воскресенья. Чтобы отобразить его в виде текста, используется массив, из которого вычитается единица, начиная с нулевого индекса, воскресенья.

    • Чтобы просмотреть дату в «локальном» (испанском) формате, используйте функцию human_date(), который возвращает указатель на строку, в которой дата представлена ​​в формате ДД/ММ/ГГГГ, где ДД — это день, представленный двумя цифрами, ММ — это месяц с двумя цифрами, а ГГГГ — это год с четырьмя цифрами.

    • Функция human_hour() возвращает время в формате чч:мм:сс, где чч — это часы (в формате 24), представленные двумя цифрами, мм — минуты с двумя цифрами, а сс — секунды с двумя цифрами.

    • Чтобы легко использовать дату и время на лог-файлы функция была запрограммирована компактная_дата_время(), который передает значение даты и времени в формате ГГММДДччммсс, где AA — год, представленный двумя последними цифрами, MM — месяц с 2 цифрами, DD — день с 2 цифрами, чч — час (в формате 2) с 24 цифры, мм - минуты с 2 цифрами и сс - секунды с 2 цифрами. Этот формат, хотя и текстовый, занимает мало места и обеспечивает очень простой алфавитный порядок.

    • Функция date_time_MySQL() служит для представления даты и времени в формате, используемом менеджером базы данных. MySQL (или новый и более свободный MariaDB) ГГГГ-ММ-ДД чч:мм:сс, где ГГГГ — год, представленный 4 цифрами, ММ — месяц с 2 цифрами, ДД — день с 2 цифрами, чч — час (в 24-значном формате) с 2 цифрами , мм — это минуты с двумя цифрами и секунды с двумя цифрами.

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

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

    Библиотека вывода консоли Arduino Часы реального времени (RTC) и температура DS3231 через шину I2C

    Оставить комментарий

    Вы могли пропустить