Како користити ДС3231 модул сата реалног времена (РТЦ) са ЕСП32

Kako Koristiti Ds3231 Modul Sata Realnog Vremena Rtc Sa Esp32



ЕСП32 је паметна микроконтролерска плоча са уграђеним Ви-Фи и Блуетоотх могућностима. ЕСП32 долази са интерним РТЦ-ом, али његов рад зависи од напајања. Дакле, ако желите да дизајнирате пројекте или кола која желите да покренете чак и када нема напајања, морате користити било који екстерни РТЦ модул као што је ДС1307 или ДС3231.

Већ смо урадили туторијал о ДС1307 повезивање са ЕСП32 модулом . Данас ћемо разговарати о основама ДС3231 РТЦ сензора и проверити како се може повезати са ЕСП32 плочом.

Преглед садржаја:







1. Шта је ДС3231 РТЦ модул



2. Како повезати ДС3231 са ЕСП32



3. Хардвер





4. Код

5. Излаз



6. Како приказати време РТЦ ДС3231 на ОЛЕД екрану помоћу ЕСП32

Закључак

1. Шта је ДС3231 РТЦ модул

Модул ДС3231 пружа веома прецизно мерење времена. Укључује интегрисани кристални осцилатор са температуром компензован (ТЦКСО) који нам даје време са великом прецизношћу. Модул ради на И2Ц протоколу користећи конфигурацију Мастер-Славе. Може да задржи време и датум помоћу резервне батерије чак и када нема главног улазног напајања. Обично се користи у уређајима који зависе од времена и датума.

ДС3231 прати секунде, минуте и сате. Такође може да води евиденцију о датумима и радним данима. Када се ради о преступним годинама, аутоматски прилагођава време у складу са тим. Такође, може да прикаже време у 12-часовном или 24-часовном формату, заједно са АМ/ПМ индикатором.

1.1. ДС3231 против ДС1307

И ДС3231 и ДС1307 су модули за мерење времена са подршком за резервну батерију. Међутим, ДС3231 је прецизнији од ДС1307. Главни разлог је што ДС1307 зависи од екстерног 32кХз кристала за мерење времена.

Међутим, РТЦ ДС3231 поседује интерни кристални осцилатор са компензацијом температуре (ТЦКСО). То га чини мање под утицајем спољне температуре и као резултат тога, има предност у прецизности од неколико минута годишње у односу на ДС1307.

1.2. ДС3231 Пиноут

ДС3231 ради користећи И2Ц протокол. У срцу овог РТЦ модула, имамо тачан РТЦ чип који је дизајнирао Маким. Овај чип управља свим временским функцијама и комуницира користећи И2Ц са ЕСП32 или Ардуино плочом.

Главне игле РТЦ ДС3231 модула су:

  • ВЦЦ: Повежите овај пин са позитивним терминалом вашег извора напајања.
  • ГНД: Уземљење.
  • СДА: Пин серијских података (користи се за И2Ц комуникацију).
  • СЦЛ: Пин за серијски сат (такође део И2Ц интерфејса).
  • КВ: Излазни пин квадратног таласа (може да генерише периодични сигнал, нпр. за аларме или друге сврхе).
  • 32К: Излаз осцилатора од 32КХз (корисно за апликације са прецизним мерењем времена).

Следе главне уграђене компоненте РТЦ ДС3231 модула:

  • Држач батерије: Омогућава модулу да настави да ради када нема спољашњег напајања.
  • РТЦ чип: Овај чип одржава време и датум.
  • АТ24Ц32 ​​ЕЕПРОМ: Обезбеђује непроменљиво складиштење за евидентирање података и друге сврхе са 1.000.000 циклуса писања.
  • ТЦКСО: Осцилатор са температуром компензован да обезбеди тачно време за различите температуре.
  • Сензор температуре: Узима очитавања температуре и пружа их као део функције модула.

2. Како повезати ДС3231 са ЕСП32

Да бисте повезали ДС3231 са ЕСП32, потребно је да инсталирате РТЦлиб библиотека први. Након инсталирања ове Адафруит РТЦ библиотеке, можете повезати своју ЕСП32 плочу са ДС3231 користећи И2Ц протокол. Да бисте повезали ЕСП32 И2Ц са РТЦ ДС3231 модулом, можете користити пинове ЕСП32 Д21 и Д22.

2.1. Шема ожичења ЕСП32 са РТЦ ДС3231

Прво, морате повезати ЕСП32 са својим И2Ц РТЦ ДС3231 модулом. Пратите доле дату конфигурацију пинова за ожичење:

Након повезивања ЕСП32 са РТЦ ДС3231, ваш дијаграм ожичења би требао изгледати овако. Такође можете напајати ДС3231 са ВИН пина ЕСП32. Радни напони ДС3231 су 3,3 до 5,5 ВДЦ.

2.2. Инсталирање потребних библиотека

Када је коло спремно, следећи корак је да конфигуришите своју ЕСП32 плочу са Ардуино ИДЕ . За повезивање са ДС3231, мораћете да инсталирате РТЦлиб библиотека . Можете га инсталирати помоћу Ардуино ИДЕ менаџера библиотеке.

3. Хардвер

Биће вам потребан следећи хардвер за дизајнирање РТЦ сата заснованог на ДС3231 са ЕСП32:

  • ЕСП32 развојна плоча
  • РТЦ ДС3231 модул
  • ЦР2032 батерија
  • Жице за краткоспојнике
  • Бреадбоард

4. Код

Након инсталирања РТЦ библиотеке, следећи део је писање кода за ДС3231 и постављање на ЕСП32 плочу. Прво, морате написати код да бисте подесили своје тренутно време. Након што подесите време у ДС3231, он ће запамтити време и наставити да ради чак и ако се ваша ЕСП32 плоча искључи.

Сада отворите Ардуино ИДЕ, компајлирајте и снимите код на ЕСП32 плочу.

#инцлуде <Вире.х>
#инцлуде <РТЦлиб.х>

РТЦ_ДС3231 ртц ; // Иницијализује инстанцу класе РТЦ_ДС3231

празнина подесити ( ) {
Сериал. започети ( 115200 ) ;
Жица. започети ( ) ;

ако ( ! ртц. започети ( ) ) {
Сериал. принтлн ( „РТЦ није откривен“ ) ;
док ( 1 ) ; // Виси на неодређено време ако РТЦ није пронађен
}

//Откомментирајте доњи ред да бисте поставили почетни датум и време
//ртц.адјуст(ДатеТиме(__ДАТЕ__, __ТИМЕ__));
}

празнина петља ( ) {
// Читање тренутног времена са сензора (ДС3231)
Датум и време сада = ртц. Сада ( ) ;

// Штампајте датум и време у истом реду са две цифре за сате, минуте и секунде
Сериал. принт ( 'Тренутни датум: ' ) ;
Сериал. принт ( Сада. године ( ) , ДЕЦ ) ;
Сериал. принт ( '/' ) ;
принтТвоДигитс ( Сада. месец дана ( ) ) ;
Сериал. принт ( '/' ) ;
принтТвоДигитс ( Сада. дан ( ) ) ;
Сериал. принт ( ' Тренутно време: ' ) ;
принтТвоДигитс ( Сада. сат ( ) ) ;
Сериал. принт ( ':' ) ;
принтТвоДигитс ( Сада. минут ( ) ) ;
Сериал. принт ( ':' ) ;
принтТвоДигитс ( Сада. друго ( ) ) ;
Сериал. принтлн ( ) ;

кашњење ( 1000 ) ; // Ажурирај сваке 1 секунде
}

празнина принтТвоДигитс ( инт број ) {
ако ( број < 10 ) {
Сериал. принт ( '0' ) ; // Додајте почетну нулу за једноцифрене бројеве
}
Сериал. принт ( број ) ;
}

4.1. Објашњење кода

Код почиње иницијализацијом серијске И2Ц комуникације уз помоћ жичане библиотеке. Након тога смо укључили РТЦ библиотеку од Адафруита за повезивање са ДС3231 модулом. Ова библиотека пружа функцију за интеракцију са РТЦ ДС3231 модулом.

У подесити део, И2Ц магистрала се покреће и проверава да ли постоје доступни И2Ц уређаји. Ако се не пронађе, програм виси на неодређено време. Брзина преноса је такође дефинисана тако да можете проверити излаз на Ардуино ИДЕ серијском монитору.

Подешавање сата по први пут

Када програмирате ДС3231, морате декоментирај ову линију . Ово ће добити ваше системско време и сачувати га у РТЦ меморији. Радећи ово, сат РТЦ модула се синхронизује са сатом вашег система.

//ртц.адјуст(ДатеТиме(__ДАТЕ__, __ТИМЕ__));

Након што је време подешено, морате поново да отпремите горњи код, али овог пута морате коментаришите линију функције ртц.адјуст(). . У супротном, ово ће преписати ваше претходно подешено време и када се ваш ЕСП32 искључи, РТЦ ће поново почети од тренутка када сте отпремили код.

Радећи ово, ваше време ће остати присутно у позадини РТЦ модула све док РТЦ модул има напајање у својој ЦР2032 ћелији.

У петља део, тренутни датум и време се читају из ДС3231 модула помоћу функције ртц.нов(). Компоненте датума и времена се издвајају, а форматирани датум се штампа на Ардуино ИДЕ серијском монитору сваке секунде.

5. Излаз

Након што отпремите код на ЕСП32 плочу, видећете да ће време почети да се штампа на Ардуино ИДЕ серијском монитору.

6. Како приказати време РТЦ ДС3231 на ОЛЕД екрану помоћу ЕСП32

Такође можете отићи корак даље и приказати време на свом ОЛЕД екрану након што га прочитате са ДС3231. За ово морате да инсталирате Адафруит ГФКС ССД1306 библиотека у Ардуино ИДЕ.

Једном инсталиран, повежите ЕСП32 са ОЛЕД и РТЦ модулом у следећој конфигурацији.

Након повезивања сензора, видећете да коло изгледа као шематски дијаграм испод.

Сада отпремите следећи ДС3231 код на ЕСП32 плочу.

#инцлуде <Вире.х>
#инцлуде <Адафруит_ГФКС.х>
#инцлуде <Адафруит_ССД1306.х>
#инцлуде 'РТЦлиб.х'

РТЦ_ДС3231 ртц ;

цхар дана [ 7 ] [ 12 ] = { 'недеља' , 'Понедељак' , 'уторак' , 'Среда' , 'четвртак' , 'петак' , 'субота' } ;

Адафруит_ССД1306 дисплеј = Адафруит_ССД1306 ( 128 , 64 , & Жица , - 1 ) ;

празнина подесити ( ) {
Сериал. започети ( 115200 ) ;

приказ. започети ( ССД1306_СВИТЦХЦАПВЦЦ , 0к3Ц ) ;

ако ( ! ртц. започети ( ) ) {
Сериал. принтлн ( „Није могуће пронаћи РТЦ! Проверите коло.“ ) ;
док ( 1 ) ;
}
// декоментирајте доњу линију док постављате време по први пут
//ртц.адјуст(ДатеТиме(__ДАТЕ__, __ТИМЕ__));
приказ. цлеарДисплаи ( ) ;
приказ. сетТектЦолор ( БЕО ) ;
приказ. сетТектСизе ( 2 ) ;
приказ. сетЦурсор ( 0 , двадесет ) ;
приказ. принт ( 'РТЦ САТ' ) ;
приказ. приказ ( ) ;
кашњење ( 5000 ) ;
}

празнина петља ( ) {
Датум и време сада = ртц. Сада ( ) ;

приказ. цлеарДисплаи ( ) ;
приказ. сетТектСизе ( 2 ) ;
приказ. сетЦурсор ( 75 , 0 ) ;
приказ. принтлн ( Сада. друго ( ) , ДЕЦ ) ;
приказ. сетТектСизе ( 2 ) ;
приказ. сетЦурсор ( 25 , 0 ) ;
приказ. принтлн ( ':' ) ;
приказ. сетТектСизе ( 2 ) ;
приказ. сетЦурсор ( 65 , 0 ) ;
приказ. принтлн ( ':' ) ;
приказ. сетТектСизе ( 2 ) ;
приказ. сетЦурсор ( 40 , 0 ) ;
приказ. принтлн ( Сада. минут ( ) , ДЕЦ ) ;
приказ. сетТектСизе ( 2 ) ;
приказ. сетЦурсор ( 0 , 0 ) ;
приказ. принтлн ( Сада. сат ( ) , ДЕЦ ) ;
приказ. сетТектСизе ( 2 ) ;
приказ. сетЦурсор ( 0 , 25 ) ;
приказ. принтлн ( Сада. дан ( ) , ДЕЦ ) ;
приказ. принт ( дана [ Сада. дан у недељи ( ) ] ) ;
приказ. сетТектСизе ( 2 ) ;
приказ. сетЦурсор ( двадесет , 25 ) ;
приказ. принтлн ( '-' ) ;
приказ. сетТектСизе ( 2 ) ;
приказ. сетЦурсор ( 35 , 25 ) ;
приказ. принтлн ( Сада. месец дана ( ) , ДЕЦ ) ;
приказ. сетТектСизе ( 2 ) ;
приказ. сетЦурсор ( 60 , 25 ) ;
приказ. принтлн ( '-' ) ;
приказ. сетТектСизе ( 2 ) ;
приказ. сетЦурсор ( 75 , 25 ) ;
приказ. принтлн ( Сада. године ( ) , ДЕЦ ) ;
приказ. приказ ( ) ;
}

Објашњење кода

Код је почео са неким важним библиотекама које су потребне за РТЦ и ОЛЕД екране. ОЛЕД екран је подешен помоћу Адафруит ССД1306 библиотеке.

У делу петље, тренутни датум и време се добијају помоћу ртц.нов(). Након тога, ОЛЕД екран се брише и компоненте времена се приказују у формату дигиталног сата. Такође можете да измените код да бисте подесили формат датума и времена.

Када се код постави на вашу плочу, добићете тренутно време на ОЛЕД екрану.

Белешка: Горњи код користи 0к3Ц И2Ц адреса за ОЛЕД. Ово је најчешћа И2Ц адреса доступна на ССД1306 ОЛЕД екранима. Ако желите да пронађете И2Ц адресу за свој ОЛЕД екран, можете покренути И2Ц код скенера .

Закључак

ДС3231 је РТЦ сензор који се може користити за мерење времена. Има резервну батерију која може да одржи тачно време чак и ако је ваша плоча микроконтролера искључена. Да бисте повезали ЕСП2 са ДС3231, морате инсталирати РТЦлиб библиотеку у свој Ардуино ИДЕ. Након тога, морате повезати РТЦ модул преко И2Ц протокола користећи дигитални пин ЕСП32. Када се повежете, једноставно отпремите код и подесите време. Сада ће РТЦ сензор задржати време и можете га читати на свом серијском монитору на пројектима заснованим на времену.