U ovom uputstvu naučit ćemo o satu u stvarnom vremenu (RTC) i njegovom povezivanju s ESP32 i OLED zaslonom.
Upotrijebit ćemo DS3231 RTC modul kako bismo pratili točno vrijeme i prikazali ga na SPI OLED koristeći ESP32 kao naš mikrokontroler. ESP32 je više od mikrokontrolera. U sebi ima Wi-Fi i Bluetooth čip te 39 GPIO pinova. Podržava sve komunikacijske protokole poput SPI, I2C, UART, itd. Ako ste novi u ESP32, prvo prođite kroz naš vodič za početak rada s ESP32.
Što je RTC ??
DS3231 je RTC (sat u stvarnom vremenu) modul. Koristi se za održavanje datuma i vremena za većinu projekata Elektronike. Ovaj modul ima vlastiti izvor napajanja ćelije pomoću kojeg održava datum i vrijeme, čak i kad je glavno napajanje uklonjeno ili je MCU prošao kroz hard reset. Dakle, nakon što postavimo datum i vrijeme u ovom modulu, on će ih uvijek pratiti. Dostupno je nekoliko vrsta RTC IC-a poput DS1307, DS3231 itd.

Prethodno smo koristili DS3231 RTC s Arduinom u projektima ispod:
- Automatska hranilica za kućne ljubimce pomoću Arduina
- Arduino Data Logger
Napomena: Kada prvi put koristite ovaj modul, morate postaviti datum i vrijeme. Također možete koristiti RTC IC DS1307, mi smo prethodno koristili DS1307 s Arduinom.
Upoznavanje s OLED zaslonima:
Izraz OLED znači " Organska dioda koja emitira svjetlost" i koristi istu tehnologiju koja se koristi u većini naših televizora, ali ima manje piksela u usporedbi s njima. Zaista je zabavno imati ove module za prikaz zaslona koji izgledaju lijepo jer će naši projekti izgledati cool. Ovdje smo pokrili cijeli članak o OLED zaslonima i njihovim vrstama.


Koristimo monokromatski 7-pinski SSD1306 0.96 ”OLED zaslon. Razlog odabira ovog zaslona je taj što može raditi na tri različita komunikacijska protokola kao što su SPI 3 Wire način, SPI četverožični način i IIC način. Ovaj vodič obuhvatit će upotrebu modula u SPI četverožičnom načinu, jer je to najbrži i zadani način komunikacije.
Pribadače i njegove funkcije objašnjene su u donjoj tablici.
|
Pin broj |
Naziv pribadače |
Druga imena |
Upotreba |
|
1 |
Gnd |
Prizemlje |
Osovina uzemljenja modula |
|
2 |
Vdd |
Vcc, 5 V |
Priključak za napajanje (3-5V podnošljiv) |
|
3 |
SCK |
D0, SCL, CLK |
Djeluje kao zatik sata. Koristi se i za I2C i za SPI |
|
4 |
SDA |
D1, MOSI |
Podaci za pin modula. Koristi se i za IIC i za SPI |
|
5 |
OIE |
RST, VRAĆAJ |
Resetira modul (korisno tijekom SPI) |
|
6 |
DC |
A0 |
Podatkovna naredba. Koristi se za SPI protokol |
|
7 |
CS |
Odabir čipa |
Korisno kada se pod SPI protokolom koristi više modula |
U ovom uputstvu jednostavno ćemo upravljati modulom u 4-Wire SPI načinu, a ostatak ćemo ostaviti za neki drugi vodič.
Zajednica Arduino već nam je dala puno knjižnica koje se mogu izravno koristiti da bi se ovo učinilo puno jednostavnijim. Isprobao sam nekoliko knjižnica i otkrio da je knjižnica Adafruit_SSD1306 vrlo jednostavna za upotrebu i da ima pregršt grafičkih opcija, pa ćemo istu koristiti u ovom vodiču. Ali ako vaš projekt ima ograničenje memorije / brzine, pokušajte upotrijebiti knjižnicu U8g jer radi brže i zauzima manje programske memorije.
Također smo OLED povezali s Raspberry pi i Arduinom.
Potreban materijal:
- ESP32
- DS3231 RTC modul
- 7-pinski 128 × 64 OLED modul zaslona (SSD1306)
- Muško-ženske žice
- Breadboard
Kružni dijagram:
Dijagram spoja za spajanje RTC3231 na ESP ploču dat je u nastavku:

RTC DS3231 IC koristi I2C način komunikacije. Iz njega izlaze SCL, SDA, Vcc i GND pinovi. Povezivanje RTC modula s ESP32 dato je u nastavku:
- SCL od RTC -> SCL od ESP32, odnosno pin D22
- SDA RTC -> SDA ESP32 tj. Pin D21
- GND RTC-a -> GND ESP32
- Vcc RTC -> Vcc ESP32
Ovdje koristimo SPI način za povezivanje našeg 128 × 64 OLED modula zaslona (SSD1306) s ESP32. Dakle, koristit će 7 pinova. Veze s ESP32 daju se kao:
- CS (čip odabir) pin OLED -> PIN D5 ESP32
- Istosmjerni pin OLED -> PIN D4 ESP32
- RES pin OLED -> PIN D2 ESP32
- SDA pin OLED -> PIN D23 tj. MOSI ESP32
- SCK iglica OLED -> PIN D18 tj. SCK ESP32
- Vdd OLED-a -> Vcc ESP32
- GND OLED -> GND ESP32
Za ESP32 trebaju vam datoteke na ploči. Provjerite padajući izbornik upravitelja ploče Arduino IDE-a za ESP32 razvojni komplet. Ako nije, slijedite korake navedene u donjoj poveznici:
circuitdigest.com/microcontroller-projects/getting-started-with-esp32-with-arduino-ide
Također možete koristiti ESP12 za ovaj projekt, ovdje naučite koristiti ESP12.

Objašnjenje koda:
Kompletni kod za ESP32 dan je na kraju članka. Ovdje objašnjavamo nekoliko važnih dijelova koda.
U našem kodu trebamo nekoliko knjižnica koje možemo preuzeti s donjih poveznica:
1. Adafruit_SSD1306:
2. SPI:
3. Adafruit_GFX:
4. RTClib:
Dakle, uključili smo sve knjižnice
#include
Zatim definirajte sve pribadače OLED-a. Ne morate definirati pinove za RTC modul jer su ovi pinovi već definirani u WIRE knjižnici.
#define OLED_MOSI 23 #define OLED_CLK 18 #define OLED_DC 4 #define OLED_CS 5 #define OLED_RESET 2 Adafruit_SSD1306 display (OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS;
U funkciji postavljanja pozvat ćemo funkciju rtc.adjust (DateTime (__ DATE__, __TIME__)) koja će postaviti vrijeme prema našem računalu.
void setup () { Serial.begin (9600); if (! rtc.begin ()) { Serial.println ("RTC nije moguće pronaći"); dok (1); } rtc.adjust (DateTime (__ DATE__, __TIME__));
Nakon toga pozivamo funkcije prikaza za prikaz na OLED-u.
display.begin (SSD1306_SWITCHCAPVCC); display.clearDisplay (); display.setTextColor (BIJELO); //display.startscrollright(0x00, 0x0F); // Možete retkomentirati ovaj redak da biste pomicali tekst na oled display.setTextSize (2); display.setCursor (0,5); display.print ("Sat"); // Ovo će prikazati sat na OLED-u 3 sekunde display.display (); kašnjenje (3000); }
Zatim konačno u funkciji petlje , pohranit ćemo vrijeme u DateTime sada unaprijed definiranu varijablu i prikazati vrijeme koristeći funkcije prikaza kao što su setTextSize, setCursor itd. Postavite ih prema svojim potrebama i koristite funkciju display.println za prikaz na OLED-u.
void loop () { DateTime sada = rtc.now (); display.clearDisplay (); display.setTextSize (2); display.setCursor (75,0); display.println (now.second (), DEC);
Dakle, ovo je način na koji možete prikazati vrijeme na OLED-u pomoću ESP32, a kao što znate ESP je poznat po IoT mogućnostima, pa to možete koristiti za objavljivanje vremena na Internetu. U sljedećem ćemo vam članku prikazati prikaz internetskog vremena na ESP-u bez korištenja bilo kojeg RTC modula.
