- Ce este RTC ??
- Noțiuni de bază despre afișajele OLED:
- Material necesar:
- Diagrama circuitului:
- Explicatie cod:
În acest tutorial, vom afla despre Ceasul în timp real (RTC) și interfața acestuia cu afișajul ESP32 și OLED.
Vom folosi modulul DS3231 RTC pentru a urmări ora corectă și pentru a-l afișa pe SPI OLED utilizând ESP32 ca microcontroler. ESP32 este mai mult decât un microcontroler. Are cip Wi-Fi și Bluetooth în interior și 39 de pini GPIO. Acceptă toate protocoalele de comunicații, cum ar fi SPI, I2C, UART etc. Dacă sunteți nou la ESP32, accesați mai întâi tutorialul nostru Noțiuni introductive despre ESP32.
Ce este RTC ??
DS3231 este un modul RTC (Real Time Clock). Este folosit pentru a menține data și ora pentru majoritatea proiectelor electronice. Acest modul are propria sa sursă de alimentare cu celulă monedă folosind care menține data și ora chiar și atunci când alimentarea principală este scoasă sau MCU a trecut printr-o resetare hard. Deci, odată ce am setat data și ora în acest modul, acesta îl va urmări întotdeauna. Există mai multe tipuri de IC-uri RTC disponibile, cum ar fi DS1307, DS3231 etc.
Am folosit anterior DS3231 RTC cu Arduino în proiectele de mai jos:
- Alimentator automat pentru animale de companie folosind Arduino
- Arduino Data Logger
Notă: Când utilizați acest modul pentru prima dată, trebuie să setați data și ora. Puteți utiliza și RTC IC DS1307, am folosit anterior DS1307 cu Arduino.
Noțiuni de bază despre afișajele OLED:
Termenul OLED înseamnă „ diodă cu lumină organică”, care folosește aceeași tehnologie care este utilizată în majoritatea televizoarelor noastre, dar are mai puțini pixeli în comparație cu acestea. Este foarte distractiv să aveți aceste module de afișare interesante, deoarece proiectele noastre vor arăta cool. Am acoperit aici un articol complet despre afișajele OLED și tipurile sale.
Folosim un ecran OLED monocrom cu 7 pini SSD1306 0,96 ”. Motivul pentru alegerea acestui afișaj este că poate funcționa pe trei protocoale de comunicații diferite, cum ar fi modul SPI 3 Wire, SPI mode cu patru fire și modul IIC. Acest tutorial va acoperi modul de utilizare a modulului în modul SPI cu 4 fire, deoarece este cel mai rapid mod de comunicare și cel implicit.
Pinii și funcțiile sale sunt explicate în tabelul de mai jos.
Numarul pin |
Nume PIN |
Alte nume |
Utilizare |
1 |
Gnd |
Sol |
Pinul de masă al modulului |
2 |
Vdd |
Vcc, 5V |
Pin de alimentare (3-5V tolerabil) |
3 |
SCK |
D0, SCL, CLK |
Acționează ca știftul ceasului. Folosit atât pentru I2C, cât și pentru SPI |
4 |
SDA |
D1, MOSI |
Pinul de date al modulului. Folosit atât pentru IIC, cât și pentru SPI |
5 |
RES |
RST, RESET |
Resetează modulul (util în timpul SPI) |
6 |
DC |
A0 |
Pinul de comandă a datelor. Folosit pentru protocolul SPI |
7 |
CS |
Chip Select |
Util când sunt utilizate mai multe module în cadrul protocolului SPI |
În acest tutorial vom opera pur și simplu modulul în modul SPI cu 4 fire, restul îl vom lăsa pentru un alt tutorial.
Comunitatea Arduino ne-a oferit deja o mulțime de biblioteci care pot fi utilizate direct pentru a simplifica mult acest lucru. Am încercat câteva biblioteci și am constatat că Biblioteca Adafruit_SSD1306 era foarte ușor de utilizat și avea o mână de opțiuni grafice, prin urmare, vom folosi același lucru în acest tutorial. Dar, dacă proiectul dvs. are o constrângere de memorie / viteză, încercați să utilizați Biblioteca U8g, deoarece funcționează mai repede și ocupă mai puțină memorie de program.
De asemenea, am interfațat OLED cu Raspberry pi și cu Arduino.
Material necesar:
- ESP32
- Modulul DS3231 RTC
- Modul de afișare OLED 128 × 64 cu 7 pini (SSD1306)
- Firele mascul-feminin
- Breadboard
Diagrama circuitului:
Schema de circuit pentru conectarea RTC3231 la placa ESP este prezentată mai jos:
RTC DS3231 IC utilizează modul de comunicare I2C. Are pini SCL, SDA, Vcc și GND care ies din el. Conexiunea modulului RTC cu ESP32 este dată mai jos:
- SCL al RTC -> SCL al ESP32 adică Pinul D22
- SDA RTC -> SDA ESP32 adică Pinul D21
- GND de RTC -> GND de ESP32
- Vcc de RTC -> Vcc de ESP32
Aici, folosim modul SPI pentru a conecta modulul nostru de afișaj OLED de 128 × 64 (SSD1306) la ESP32. Deci, va folosi 7 pini. Conexiunile cu ESP32 sunt date ca:
- Pinul CS (Chip select) al OLED -> PIN D5 al ESP32
- Pinul DC al OLED -> PIN D4 al ESP32
- PIN PIN al OLED -> PIN D2 al ESP32
- Pinul SDA al OLED -> PIN D23 adică MOSI al ESP32
- Pin SCK al OLED -> PIN D18 adică SCK al ESP32
- Vdd din OLED -> Vcc din ESP32
- GND din OLED -> GND din ESP32
Aveți nevoie de fișiere de bord pentru ESP32. Verificați meniul derulant al managerului de bord al kitului Arduino IDE pentru ESP32 dev. Dacă nu este acolo, urmați pașii dați în linkul de mai jos:
circuitdigest.com/microcontroller-projects/getting-started-with-esp32-with-arduino-ide
De asemenea, puteți utiliza ESP12 pentru acest proiect, învățați aici să utilizați ESP12.
Explicatie cod:
Codul complet pentru ESP32 este dat la sfârșitul articolului. Aici explicăm câteva părți importante ale codului.
Avem nevoie de mai multe biblioteci în codul nostru, care pot fi descărcate de pe linkurile de mai jos:
1. Adafruit_SSD1306:
2. SPI:
3. Adafruit_GFX:
4. RTClib:
Așa că am inclus toate bibliotecile
#include
Apoi definiți toți pinii OLED. Nu trebuie să definiți pini pentru modulul RTC, deoarece acești pini sunt deja definiți în biblioteca WIRE.
#define OLED_MOSI 23 #define OLED_CLK 18 #define OLED_DC 4 #define OLED_CS 5 #define OLED_RESET 2 Afișaj Adafruit_SSD1306 (OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
În funcția de configurare , vom apela o funcție rtc.adjust (DateTime (__ DATE__, __TIME__)) care va seta ora în funcție de ora computerului nostru.
void setup () { Serial.begin (9600); if (! rtc.begin ()) { Serial.println ("Nu s-a putut găsi RTC"); în timp ce (1); } rtc.adjust (DateTime (__ DATE__, __TIME__));
După aceea, apelăm funcțiile de afișare pentru a fi afișate pe OLED.
display.begin (SSD1306_SWITCHCAPVCC); display.clearDisplay (); display.setTextColor (ALB); //display.startscrollright(0x00, 0x0F); // Puteți decomenta această linie pentru a vă derula textul pe afișajul oled.setTextSize (2); display.setCursor (0,5); display.print ("Ceas"); // Aceasta va afișa ceasul pe OLED timp de 3 secunde display.display (); întârziere (3000); }
Apoi, în sfârșit, în funcția buclă , ne vom stoca ora în DateTime, acum variabilă predefinită și vom afișa ora folosind funcții de afișare precum setTextSize, setCursor, etc. Setați-le în funcție de nevoile dvs. și utilizați funcția display.println pentru a afișa pe OLED.
bucla void () { DateTime now = rtc.now (); display.clearDisplay (); display.setTextSize (2); display.setCursor (75,0); display.println (now.second (), DEC);
Deci, astfel puteți afișa ora pe OLED folosind ESP32 și, după cum știți, ESP este cunoscut pentru capacitățile sale IoT, astfel încât să puteți utiliza acest lucru pentru a publica ora pe internet. În articolul următor vă vom arăta să afișați Ora Internetului pe ESP fără a utiliza niciun modul RTC.