Ebben az oktatóanyagban megismerhetjük a valós idejű órát (RTC) és annak kapcsolódását az ESP32 és OLED kijelzőhöz.
A DS3231 RTC modult használjuk a pontos idő követésére és az SPI OLED-en való megjelenítésére, az ESP32 használatával mikrokontrollerként. Az ESP32 több mint mikrovezérlő. Wi-Fi és Bluetooth chip van benne, és 39 GPIO tű. Támogat minden kommunikációs protokollt, például SPI, I2C, UART, stb. Ha még nem ismeri az ESP32 alkalmazást, akkor először nézze át az ESP32 kezdő lépéseinket.
Mi az RTC ??
A DS3231 egy RTC (Real Time Clock) modul. A legtöbb elektronikai projekt dátumának és idejének fenntartására szolgál. Ennek a modulnak saját érmeelemes tápegysége van, amely akkor is fenntartja a dátumot és az időt, ha a fő áramellátás megszűnik, vagy ha az MCU keményen visszaáll. Tehát miután beállítottuk a dátumot és az időt ebben a modulban, mindig nyomon fogja követni. Többféle RTC IC kapható, mint például a DS1307, a DS3231 stb.
Korábban már használtuk a DS3231 RTC-t az Arduinóval az alábbi projektekben:
- Automatikus állateledel Arduino használatával
- Arduino Data Logger
Megjegyzés: A modul első használatakor be kell állítania a dátumot és az időt. Használhatja az RTC IC DS1307-et is, korábban már használtuk a DS1307-et az Arduinóval.
Ismerkedés az OLED kijelzőkkel:
Az OLED kifejezés „ szerves fénykibocsátó dióda” rövidítése, ugyanazt a technológiát használja, amelyet a legtöbb televíziónkban használnak, de kevesebb pixel van hozzájuk képest. Nagyon szórakoztató, hogy ezek a hűvös megjelenésű modulok megvannak, mivel ez a projektjeinket remekül kinézeti. Itt egy teljes cikket ismertettünk az OLED kijelzőiről és típusairól.
Most egy monokróm 7-pólusú SSD1306 0,96” -os OLED kijelző. A kijelző kiválasztásának oka az, hogy három különböző kommunikációs protokollon működhet, mint például az SPI 3 vezetékes mód, az SPI négy vezetékes mód és az IIC mód. Ez az oktatóanyag bemutatja, hogyan kell a modult SPI 4 vezetékes módban használni, mivel ez a leggyorsabb és az alapértelmezett kommunikációs mód.
A csapokat és funkcióit az alábbi táblázat ismerteti.
Pinkód |
PIN neve |
Más nevek |
Használat |
1 |
Gnd |
Talaj |
A modul földelt csapja |
2 |
Vdd |
Vcc, 5V |
Tápcsatlakozó (3-5V tolerálható) |
3 |
SCK |
D0, SCL, CLK |
Óraszegként működik. I2C és SPI esetén egyaránt használható |
4 |
SDA |
D1, MOSI |
A modul adatlapja. IIC-hez és SPI-hez egyaránt használják |
5. |
RES |
RST, RESET |
Visszaállítja a modult (SPI során hasznos) |
6. |
DC |
A0 |
Data Command pin. SPI protokollhoz használják |
7 |
CS |
Chip Select |
Hasznos, ha több modult használ SPI protokoll alatt |
Ebben az oktatóanyagban egyszerűen működtetjük a modult 4-vezetékes SPI módban, a többit más oktatóanyagra hagyjuk.
Az Arduino közösség rengeteg könyvtárat adott már nekünk, amelyek közvetlenül felhasználhatók ennek egyszerűbbé tételéhez. Kipróbáltam néhány könyvtárat, és megállapítottam, hogy az Adafruit_SSD1306 könyvtár nagyon könnyen használható és egy maroknyi grafikus lehetőséggel rendelkezik, ezért ugyanezt fogjuk használni ebben az oktatóanyagban. De ha a projekt memória- / sebességkorlátozással rendelkezik, próbálkozzon az U8g könyvtár használatával, mivel az gyorsabban működik és kevesebb programmemóriát foglal el.
Csatlakoztattuk az OLED-et a Raspberry pi-hez és az Arduino-hoz is.
Szükséges anyag:
- ESP32
- DS3231 RTC modul
- 7 tűs 128 × 64 OLED kijelző modul (SSD1306)
- Férfi-női vezetékek
- Kenyérlemez
Kördiagramm:
Az RTC3231 és az ESP kártya összekapcsolásának kapcsolási rajza az alábbiakban látható:
Az RTC DS3231 IC I2C kommunikációs módot használ. SCL, SDA, Vcc és GND csapok jönnek ki belőle. Az RTC modul és az ESP32 összekapcsolása az alábbiakban látható:
- RTL SCL -> ESP32 SCL, azaz D22 tű
- RTC SDA -> ESP32 SDA, azaz D21 tű
- RTC GND -> ESP32 GND
- RTC Vcc -> ESP32 Vcc
Itt SPI módot használunk 128 × 64 OLED kijelző modulunk (SSD1306) csatlakoztatásához az ESP32-hez. Tehát 7 csapot fog használni. Az ESP32 kapcsolatai a következők:
- CS (chip kiválasztása) OLED tű -> ESP32 D5 PIN-kódja
- OLED DC tű -> ESP32 D4 PIN
- OLED RES tű -> ESP32 D2 PIN
- SDA csap OLED -> PIN D23, azaz MOSI az ESP32-ből
- SCK pin of OLED -> PIN D18 azaz SCK of ESP32
- OLD Vdd -> ESP32 Vcc
- OLED GND -> ESP32 GND
Alaplapfájlokra van szükség az ESP32-hez. Ellenőrizze az ESP32 fejlesztőkészlet Arduino IDE alaplapkezelőjének legördülő menüjét. Ha nincs ott, kövesse az alábbi linken megadott lépéseket:
circuitdigest.com/microcontroller-projects/getting-started-with-esp32-with-arduino-ide
Használhatja az ESP12-et is ehhez a projekthez, itt tanulhatja meg az ESP12 használatát.
Kód Magyarázat:
Az ESP32 teljes kódja a cikk végén található. Itt megmagyarázzuk a kód néhány fontos részét.
Számos könyvtárra van szükségünk a kódunkban, amelyek az alábbi linkekről tölthetők le:
1. Adafruit_SSD1306:
2. SPI:
3. Adafruit_GFX:
4. RTClib:
Tehát az összes könyvtárat felvettük
#include
Ezután adja meg az OLED összes csapját. Az RTC modulhoz nem szükséges definiálnia a csapokat, mert ezek a csapok már meg vannak határozva a WIRE könyvtárban.
#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);
A setup függvényben meghívunk egy rtc.adjust (DateTime (__ DATE__, __TIME__)) függvényt, amely beállítja az időt a PC időnknek megfelelően.
void setup () { Soros.kezdés (9600); if (! rtc.begin ()) { Serial.println ("Nem sikerült megtalálni az RTC-t"); míg (1); } rtc.adjust (DateTime (__ DATE__, __TIME__));
Ezt követően meghívjuk a megjelenítési funkciókat, hogy megjelenjenek az OLED-en.
display.begin (SSD1306_SWITCHCAPVCC); display.clearDisplay (); display.setTextColor (FEHÉR); //display.startscrollright(0x00, 0x0F); // Ezt a sort törölheti a szöveg megjelenítéséhez az oled display.setTextSize (2); display.setCursor (0,5); display.print ("Óra"); // Ez 3 másodpercig megjeleníti az Órát az OLED-en display.display (); késés (3000); }
Aztán végül loop funkció fogjuk tárolni korunk DateTime most előre definiált változó, és megjeleníti az időt kijelző funkciók, mint setTextSize, setCursor, stb Set ezek szerint a szükség és használata display.println funkció mutatni az OLED.
void loop () { DateTime now = rtc.now (); display.clearDisplay (); display.setTextSize (2); display.setCursor (75,0); display.println (most.second (), DEC);
Tehát így jelenítheti meg az időt az OLED-en az ESP32 használatával, és mint tudja, az ESP ismert az IoT képességeiről, így ezt felhasználhatja az idő közzétételére az interneten. A következő cikkben megmutatjuk, hogyan jelenítsen meg Internet-időt az ESP-n, RTC-modul használata nélkül.