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

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

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

АКТУАЛИЗИРАНО: Посетете и новия библиотека за управление на дата и час с модула DS3231 RTC и Arduino с подобрения като сезонно време.

Работата на IC de часовници в реално време (RTC) най-популярните, които се управляват с помощта на автобус И2C Обикновено е много подобен. Освен това, Течна библиотека de Arduino значително опростява комуникацията с устройствата Двупроводен сериен интерфейс (TWI), I2C, специфичен.

Съдържание

    Най-общо казано, процесът се състои от

    1. Инициирайте комуникации като подчинен или главен (зададено по подразбиране) с функцията Wire.begin(адрес). Ако „адресът“ е пропуснат, комуникацията започва с μC учителят на автобус И2C.

    2. Активирайте комуникацията I2C с устройството чрез адреса на паметта, където се намира, като използвате командата Wire.beginTransmission(адрес).

    3. Напишете поръчка в автобус И2C за да кажете на устройството операцията, която искате да извърши, като използвате Wire.write(команда), в който "ред" е кодът на операцията.

    4. Деактивирайте комуникациите, за да освободите автобус И2C с функция Wire.endTransmission ().

    5. Поискайте от устройството да изпрати определено количество данни, което съответства на заявената операция (в този случай датата и часа) с функцията Wire.requestFrom(адрес,сума).

    6. Изчакайте данните, поискани с функцията, да станат достъпни за четене Wire.available (), който връща броя на данните, които вече са получени и могат да бъдат прочетени.

    7. Прочетете данните, изпратени от устройството ( часовник за реално време, в този случай) с помощта на функцията Wire.read() толкова пъти, колкото са посочени байтовете Wire.available () които са на разположение.

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

    По отношение на DS3231 (и съвместимите от същата серия, като например DS3232) и интерпретацията на данните, в съответствие със спецификациите на интегрирания, например, стойностите на различните цифри, които представляват времето, са представени в двоично кодиран десетичен (BCD) което ще бъде по-удобно да се изрази като десетична стойност (a байт) за използване в Arduino

    На същия ред температурата се изразява като байт в допълнение на две за целочислената част и два бита за стъпката, с разделителна способност от четвърт градус, на десетичната част. Тези и други аспекти на представянето на данни на часовника са обсъдени изчерпателно в кода на библиотеката по-долу. DS3231

    За да проверите температурата с тази библиотека, просто използвайте метода read_temperature() на обекта DS3231 инстанциран в началото. За да прочетат датата и часа, те първо се зареждат и след това се изискват в един от форматите (компактен, човешки...), налични за различни употреби, документирани в заглавния документ на кодовата библиотека по-долу.

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

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

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

    • Използване на функцията делничен_номер() Получава се стойност, която съответства на номера на деня от седмицата, започващ от неделя. За да се покаже като текст, се използва масив и единица се изважда, за да започне от индекс нула, неделя.

    • За да проверите датата в "местен" (испански) формат, използвайте функцията human_date(), който връща указател към низ, в който датата е представена във формат ДД/ММ/ГГГГ, където ДД е денят, представен с 2 цифри, ММ е месецът с 2 цифри и ГГГГ е годината с 4 цифри.

    • Функцията човешки_час() връща часа във формат hh:mm:ss, като hh е часът (във формат 24), представен с 2 цифри, mm са минутите с 2 цифри и ss са секундите с 2 цифри.

    • За да използвате лесно датата и часа на Лог файлове функцията е програмирана compact_date_time(), който предоставя стойността на датата и часа във формат YYMMDDhhmmss, като AA е годината, представена с последните 2 цифри, MM е месецът с 2 цифри, DD е денят с 2 цифри, hh е часът (във 24 формат) с 2 цифри, mm минутите с 2 цифри и ss секундите с 2 цифри. Този формат, въпреки че е текстов, заема малко място и позволява много лесно подреждане по азбучен ред.

    • Функцията дата_час_MySQL() служи за представяне на датата и часа във формата, използван от мениджъра на базата данни MySQL (или новото и по-свободното MariaDB) ГГГГ-ММ-ДД чч:мм:сс, където ГГГГ е годината, представена с 4 цифри, ММ е месецът с 2 цифри, ДД е денят с 2 цифри, чч е часът (във формат 24) с 2 цифри , mm са минутите с 2 цифри и секундите с 2 цифри.

    Въпреки че има много формати, с които да представите датата и часа, този, от който се нуждаете, може да не е там, но със сигурност въз основа на един от съществуващите и като го използвате като пример, ще бъде лесно да добавите нов метод според други спецификации. Моля, ако добавите нови функции, споделете кода (пуснете го!) и ни обяснете как работи, за да можем малко по малко да подобряваме библиотеката. Благодаря!

    Резултатът от горната примерна програма може да бъде нещо подобно на показаното на следното изображение: списък от 7 стойности (секунди, минути, час, ден от седмицата, ден от месеца, месец и година) датата и времето, изразено по "човешки" начин (според испански стил) времето като цяло число в четирицифрен часовников формат, датата и часът във формат на база данни MySQL, дата и час в компактен формат (за трупи) и вътрешната температура на DS3231.

    Изходна библиотека на конзолата Arduino часовник в реално време (RTC) и температура DS3231 чрез I2C шина

    Публикувай коментар

    Може да сте пропуснали