- Què és RTC ??
- Informació sobre les pantalles OLED:
- Material requerit:
- Esquema de connexions:
- Explicació del codi:
En aquest tutorial, coneixerem el rellotge en temps real (RTC) i la seva interfície amb la pantalla ESP32 i OLED.
Utilitzarem el mòdul DS3231 RTC per fer un seguiment de l’hora correcta i el mostrarem a SPI OLED utilitzant ESP32 com a microcontrolador. ESP32 és més que un microcontrolador. Té xip Wi-Fi i Bluetooth al seu interior i 39 pins GPIO. Admet tots els protocols de comunicació com SPI, I2C, UART, etc. Si no sou nou a ESP32, aneu primer al nostre tutorial Introducció a ESP32.
Què és RTC ??
DS3231 és un mòdul RTC (Real Time Clock). S'utilitza per mantenir la data i l'hora de la majoria de projectes electrònics. Aquest mòdul té la seva pròpia font d’alimentació amb cèl·lula de moneda mitjançant la qual manté la data i l’hora, fins i tot quan s’elimina l’alimentació principal o quan la MCU ha realitzat un restabliment complet. Per tant, un cop definida la data i l’hora en aquest mòdul, en farà un seguiment sempre. Hi ha diversos tipus de circuits integrats RTC disponibles com DS1307, DS3231, etc.

Anteriorment hem utilitzat DS3231 RTC amb Arduino en els següents projectes:
- Alimentador automàtic d’animals de companyia mitjançant Arduino
- Registrador de dades Arduino
Nota: Quan utilitzeu aquest mòdul per primera vegada, heu d’establir la data i l’hora. També podeu utilitzar RTC IC DS1307, prèviament hem utilitzat DS1307 amb Arduino.
Informació sobre les pantalles OLED:
El terme OLED significa " díode emissor de llum orgànica" que utilitza la mateixa tecnologia que s'utilitza a la majoria dels nostres televisors, però té menys píxels en comparació amb ells. És molt divertit tenir aquests mòduls de pantalla d’aspecte fantàstic, ja que farà que els nostres projectes semblin genials. Aquí hem tractat un article complet sobre pantalles OLED i els seus tipus.


Utilitzem una pantalla OLED SSD1306 de 0,96 polzades monocroma. La raó per escollir aquesta pantalla és que pot funcionar en tres protocols de comunicacions diferents, com ara el mode SPI 3 Wire, el mode SPI de quatre fils i el mode IIC. Aquest tutorial explicarà com utilitzar el mòdul en mode de 4 fils SPI, ja que és el mode de comunicació més ràpid i el predeterminat.
Els pins i les seves funcions s’expliquen a la taula següent.
|
Número de pin |
Nom del pin |
Altres noms |
Ús |
|
1 |
Gnd |
Terra |
Pas de terra del mòdul |
|
2 |
Vdd |
Vcc, 5V |
Pin d'alimentació (tolerable de 3-5 V) |
|
3 |
SCK |
D0, SCL, CLK |
Actua com el passador del rellotge. S’utilitza tant per a I2C com per a SPI |
|
4 |
SDA |
D1, MOSI |
Pin de dades del mòdul. S’utilitza tant per a IIC com per a SPI |
|
5 |
RES |
RST, RESET |
Restableix el mòdul (útil durant SPI) |
|
6 |
DC |
A0 |
Pin de comandament de dades. S'utilitza per al protocol SPI |
|
7 |
CS |
Selecció de xip |
Útil quan s'utilitza més d'un mòdul sota el protocol SPI |
En aquest tutorial simplement farem servir el mòdul en mode SPI de 4 fils, deixarem la resta per a algun altre tutorial.
La comunitat Arduino ja ens ha donat moltes biblioteques que es poden utilitzar directament per fer-ho molt més senzill. Vaig provar algunes biblioteques i vaig trobar que la biblioteca Adafruit_SSD1306 era molt fàcil d'utilitzar i tenia un grapat d'opcions gràfiques, de manera que farem servir el mateix en aquest tutorial. Però, si el vostre projecte té una limitació de memòria / velocitat, proveu d'utilitzar la biblioteca U8g, ja que funciona més ràpidament i ocupa menys memòria del programa.
També hem interficat OLED amb Raspberry pi i Arduino.
Material requerit:
- ESP32
- Mòdul RTC DS3231
- Mòdul de visualització OLED de 7 pins 128 × 64 (SSD1306)
- Filferro mascle-femella
- Taula de pa
Esquema de connexions:
A continuació es mostra el diagrama de circuits per connectar RTC3231 a la placa ESP:

RTC DS3231 IC utilitza el mode de comunicació I2C. Té pins SCL, SDA, Vcc i GND que en surten. La connexió del mòdul RTC amb ESP32 es dóna a continuació:
- SCL de RTC -> SCL de ESP32 és a dir, Pin D22
- SDA de RTC -> SDA de ESP32 és a dir, Pin D21
- GND de RTC -> GND de ESP32
- Vcc de RTC -> Vcc de ESP32
Aquí, utilitzem el mode SPI per connectar el nostre mòdul de pantalla OLED de 128 × 64 (SSD1306) a ESP32. Per tant, utilitzarà 7 pins. Les connexions amb ESP32 es donen com:
- Pin CS (selecció de xip) d'OLED -> PIN D5 d'ESP32
- Pin DC d'OLED -> PIN D4 d'ESP32
- PIN RES d'OLED -> PIN D2 d'ESP32
- Pin SDA d'OLED -> PIN D23 és a dir, MOSI d'ESP32
- Pin SCK de OLED -> PIN D18 és a dir, SCK de ESP32
- Vdd d’OLED -> Vcc d’ESP32
- GND de OLED -> GND de ESP32
Necessiteu fitxers de tauler per al vostre ESP32. Consulteu el menú desplegable del gestor de taules del kit de desenvolupament Arduino IDE per ESP32. Si no hi és, seguiu els passos que s'indiquen a l'enllaç següent:
circuitdigest.com/microcontroller-projects/getting-started-with-esp32-with-arduino-ide
També podeu utilitzar ESP12 per a aquest projecte; apreneu aquí a utilitzar ESP12.

Explicació del codi:
Al final de l'article es dóna un codi complet per a ESP32. Aquí expliquem algunes parts importants del codi.
Necessitem diverses biblioteques per utilitzar-les al nostre codi que es poden descarregar des dels enllaços següents:
1. Adafruit_SSD1306:
2. SPI:
3. Adafruit_GFX:
4. RTClib:
Per tant, hem inclòs totes les biblioteques
#incloure
A continuació, definiu tots els pins d'OLED. No cal que definiu pins per al mòdul RTC perquè aquests pins ja estan definits a la biblioteca WIRE.
#define OLED_MOSI 23 #define OLED_CLK 18 #define OLED_DC 4 #define OLED_CS 5 #define OLED_RESET 2 Pantalla Adafruit_SSD1306 (OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
A la funció de configuració , anomenarem una funció rtc.adjust (DateTime (__ DATE__, __TIME__)) que establirà l’hora segons l’hora del nostre PC.
configuració nul·la () { Serial.begin (9600); if (! rtc.begin ()) { Serial.println ("No s'ha pogut trobar RTC"); mentre que (1); } rtc.adjust (DateTime (__ DATE__, __TIME__));
Després d'això, anomenem funcions de visualització per mostrar-les en OLED.
display.begin (SSD1306_SWITCHCAPVCC); display.clearDisplay (); display.setTextColor (BLANC); //display.startscrollright(0x00, 0x0F); // Podeu descomentar aquesta línia per desplaçar el text a la pantalla oled.setTextSize (2); display.setCursor (0,5); display.print ("Rellotge"); // Es mostrarà el rellotge en OLED durant 3 segons display.display (); retard (3000); }
Després, finalment, en funció de bucle , emmagatzemarem la nostra hora a la variable DataTime ara predefinida i mostrarem l’hora mitjançant funcions de visualització com setTextSize, setCursor, etc. Establiu-les segons la vostra necessitat i utilitzeu la funció display.println per mostrar-la a OLED.
bucle buit () { Data i hora ara = rtc.now (); display.clearDisplay (); display.setTextSize (2); display.setCursor (75,0); display.println (now.second (), DEC);
Així doncs, és així com podeu mostrar l'hora en OLED mitjançant ESP32 i, com ja sabeu, l'ESP és conegut per les seves funcions IoT, de manera que podeu utilitzar-lo per publicar l'hora a Internet. En el proper article us mostrarem que mostreu l’hora d’Internet a ESP sense utilitzar cap mòdul RTC.
