У овом упутству ћемо научити о сату у реалном времену (РТЦ) и његовом повезивању са ЕСП32 и ОЛЕД екраном.
Користићемо ДС3231 РТЦ модул да бисмо пратили тачно време и приказали га на СПИ ОЛЕД користећи ЕСП32 као наш микроконтролер. ЕСП32 је више од микроконтролера. У себи има Ви-Фи и Блуетоотх чип и 39 ГПИО пинова. Подржава све комуникацијске протоколе као што су СПИ, И2Ц, УАРТ итд. Ако сте нови у ЕСП32, прво прођите кроз наш водич за почетак рада са ЕСП32.
Шта је РТЦ ??
ДС3231 је РТЦ (сат у реалном времену) модул. Користи се за одржавање датума и времена за већину пројеката Електронике. Овај модул има сопствено напајање ћелијским новчићем помоћу којег одржава датум и време чак и када је главно напајање уклоњено или је МЦУ прошао кроз хард ресет. Дакле, једном када поставимо датум и време у овом модулу, он ће их увек пратити. Доступно је неколико типова РТЦ ИЦ-а попут ДС1307, ДС3231 итд.
Раније смо користили ДС3231 РТЦ са Ардуином у доњим пројектима:
- Аутоматско додавање кућних љубимаца помоћу Ардуина
- Ардуино Дата Логгер
Напомена: Када први пут користите овај модул, морате да подесите датум и време. Такође можете да користите РТЦ ИЦ ДС1307, ми смо раније користили ДС1307 са Ардуином.
Упознавање са ОЛЕД дисплејима:
Термин ОЛЕД означава се као „ органска диода која емитује светлост“ и користи исту технологију која се користи на већини наших телевизора, али има мање пиксела у поређењу са њима. Заиста је забавно имати ове модуле за приказ који изгледају у реду, јер ће наши пројекти изгледати у реду. Овде смо покрили цео чланак о ОЛЕД екранима и њиховим врстама.
Користимо монохроматски 7-пински ССД1306 0.96 ”ОЛЕД екран. Разлог за одабир овог екрана је тај што може радити на три различита комуникациона протокола као што су СПИ 3 Вире начин, СПИ четворожични режим и ИИЦ режим. Овај водич ће описати како користити модул у СПИ четворожичном режиму, јер је то најбржи и задати начин комуникације.
Прибадаче и његове функције су објашњене у доњој табели.
Пин број |
Пин Наме |
Друга имена |
Употреба |
1 |
Гнд |
Приземље |
Осовина уземљења модула |
2 |
Вдд |
Вцц, 5 В |
Напајање (3-5В подношљиво) |
3 |
СЦК |
Д0, СЦЛ, ЦЛК |
Делује као затик сата. Користи се и за И2Ц и за СПИ |
4 |
СДА |
Д1, МОСИ |
Дата пин модула. Користи се и за ИИЦ и за СПИ |
5 |
ОИЕ |
РСТ, РЕСЕТ |
Ресетује модул (корисно током СПИ) |
6 |
ДЦ |
А0 |
Дата Цомманд пин. Користи се за СПИ протокол |
7 |
ЦС |
Цхип Селецт |
Корисно када се под СПИ протоколом користи више модула |
У овом упутству ћемо једноставно управљати модулом у 4-Вире СПИ режиму, а остатак ћемо оставити за неки други водич.
Заједница Ардуино нам је већ дала много библиотека које се могу директно користити да би се ово учинило много једноставнијим. Испробао сам неколико библиотека и открио да је библиотека Адафруит_ССД1306 врло једноставна за употребу и да има прегршт графичких опција, па ћемо је користити и у овом упутству. Али, ако ваш пројекат има ограничење меморије / брзине, покушајте да користите библиотеку У8г јер ради брже и заузима мање програмске меморије.
Такође смо повезали ОЛЕД са Распберри пи и са Ардуином.
Потребан материјал:
- ЕСП32
- ДС3231 РТЦ модул
- 7-пински 128 × 64 ОЛЕД модул екрана (ССД1306)
- Мушко-женске жице
- Бреадбоард
Кружни дијаграм:
Дијаграм кола за повезивање РТЦ3231 са ЕСП плочом дат је у наставку:
РТЦ ДС3231 ИЦ користи И2Ц начин комуникације. Из њега излазе СЦЛ, СДА, Вцц и ГНД пинови. Веза РТЦ модула са ЕСП32 дата је у наставку:
- СЦЛ од РТЦ -> СЦЛ од ЕСП32, односно пин Д22
- СДА за РТЦ -> СДА за ЕСП32, односно пин Д21
- ГНД РТЦ -> ГНД ЕСП32
- Вцц РТЦ -> Вцц ЕСП32
Овде користимо СПИ режим за повезивање нашег 128 × 64 ОЛЕД модула екрана (ССД1306) са ЕСП32. Дакле, користиће 7 пинова. Везе са ЕСП32 су дате као:
- ЦС (ивер за одабир) ОЛЕД -> ПИН Д5 ЕСП32
- ДЦ пин ОЛЕД -> ПИН Д4 ЕСП32
- РЕС пин ОЛЕД -> ПИН Д2 ЕСП32
- СДА пин ОЛЕД -> ПИН Д23 тј. МОСИ ЕСП32
- СЦК пин на ОЛЕД -> ПИН Д18, односно СЦК на ЕСП32
- Вдд ОЛЕД -> Вцц ЕСП32
- ГНД ОЛЕД -> ГНД ЕСП32
За ЕСП32 су вам потребне датотеке на плочи. Проверите падајући мени управитеља плоча Ардуино ИДЕ-а за ЕСП32 дев кит. Ако није тамо, следите кораке дате у доњој вези:
хттпс://цирцуитдигест.цом/мицроцонтроллер-пројецтс/геттинг-стартед-витх-есп32-витх-ардуино-иде
Такође можете користити ЕСП12 за овај пројекат, научите овде да користите ЕСП12.
Објашњење кода:
Комплетни код за ЕСП32 дат је на крају чланка. Овде објашњавамо неколико важних делова кода.
Потребно нам је неколико библиотека које ћемо користити у нашем коду, а које можете преузети са доњих веза:
1. Адафруит_ССД1306: хттпс://гитхуб.цом/адафруит/Адафруит_ССД1306
2. СПИ: хттпс://гитхуб.цом/ПаулСтоффреген/СПИ
3. Адафруит_ГФКС: хттпс://гитхуб.цом/адафруит/Адафруит-ГФКС-Либрари
4. РТЦлиб: хттпс://гитхуб.цом/адафруит/РТЦлиб
Дакле, укључили смо све библиотеке
#инцлуде
Затим дефинишите све пинове ОЛЕД-а. Не морате да дефинишете пинове за РТЦ модул јер су ови пинови већ дефинисани у ВИРЕ библиотеци.
#дефине ОЛЕД_МОСИ 23 #дефине ОЛЕД_ЦЛК 18 #дефине ОЛЕД_ДЦ 4 #дефине ОЛЕД_ЦС 5 #дефине ОЛЕД_РЕСЕТ 2 Адафруит_ССД1306 дисплаи (ОЛЕД_МОСИ, ОЛЕД_ЦЛК, ОЛЕД_ДЦ, ОЛЕД_РЕСЕТ, ОЛЕД_ЦСК;
У функцији подешавања позваћемо функцију ртц.адјуст (ДатеТиме (__ ДАТЕ__, __ТИМЕ__)) која ће подесити време према нашем рачунарском времену.
воид сетуп () { Сериал.бегин (9600); иф (! ртц.бегин ()) { Сериал.принтлн ("РТЦ није могуће пронаћи"); док (1); } ртц.адјуст (ДатеТиме (__ ДАТЕ__, __ТИМЕ__));
Након тога позивамо функције приказа да се прикажу на ОЛЕД-у.
дисплаи.бегин (ССД1306_СВИТЦХЦАПВЦЦ); дисплаи.цлеарДисплаи (); дисплаи.сетТектЦолор (БЕЛА); //дисплаи.стартсцроллригхт(0к00, 0к0Ф); // Можете да коментаришете ову линију да бисте померили текст на олед дисплаи.сетТектСизе (2); дисплаи.сетЦурсор (0,5); дисплаи.принт ("Сат"); // Ово ће приказати сат на ОЛЕД-у 3 секунде дисплаи.дисплаи (); кашњење (3000); }
Затим коначно у функцији петље , сачуваћемо своје време у ДатеТиме сада унапред дефинисаној променљивој и приказати време користећи функције приказа као што су сетТектСизе, сетЦурсор итд. Подесите их према својим потребама и користите функцију дисплаи.принтлн за приказ на ОЛЕД-у.
воид лооп () { ДатеТиме сада = ртц.нов (); дисплаи.цлеарДисплаи (); дисплаи.сетТектСизе (2); дисплаи.сетЦурсор (75,0); дисплаи.принтлн (нов.сецонд (), ДЕЦ);
Дакле, ово је начин на који можете приказати време на ОЛЕД-у помоћу ЕСП32, а као што знате ЕСП је познат по ИоТ могућностима, па то можете користити за објављивање времена на Интернету. У следећем чланку ћемо вам показати да приказујете Интернет време на ЕСП-у без употребе било каквог РТЦ модула.