- Kas ir RTC ??
- Iepazīšanās ar OLED displejiem:
- Nepieciešamais materiāls:
- Ķēdes shēma:
- Koda skaidrojums:
Šajā apmācībā mēs uzzināsim par reālā laika pulksteni (RTC) un tā saskarni ar ESP32 un OLED displeju.
Mēs izmantosim moduli DS3231 RTC, lai izsekotu pareizajam laikam un parādītu to SPI OLED, izmantojot mūsu mikrokontrolleru ESP32. ESP32 ir vairāk nekā mikrokontrolleris. Tā iekšpusē ir Wi-Fi un Bluetooth mikroshēma un 39 GPIO tapas. Tas atbalsta visus komunikācijas protokolus, piemēram, SPI, I2C, UART utt. Ja esat jauns ESP32 lietotājs, vispirms izlasiet mūsu pamācību Darba sākšana ar ESP32.
Kas ir RTC ??
DS3231 ir RTC (Real Time Clock) modulis. To izmanto, lai saglabātu datumu un laiku lielākajai daļai elektronikas projektu. Šim modulim ir savs monētu elementu barošanas avots, izmantojot kuru tas saglabā datumu un laiku pat tad, ja galvenā barošana tiek noņemta vai MCU ir veikta rūpīga atiestatīšana. Tāpēc, kad šajā modulī būsim iestatījuši datumu un laiku, tas vienmēr to sekos. Ir pieejami vairāki RTC IC veidi, piemēram, DS1307, DS3231 utt.
Zemāk esošajos projektos mēs iepriekš esam izmantojuši DS3231 RTC ar Arduino:
- Automātiska dzīvnieku barotava, izmantojot Arduino
- Arduino datu reģistrētājs
Piezīme: Lietojot šo moduli pirmo reizi, ir jāiestata datums un laiks. Varat arī izmantot RTC IC DS1307, mēs jau iepriekš izmantojām DS1307 ar Arduino.
Iepazīšanās ar OLED displejiem:
Termins OLED nozīmē “ organisko gaismu izstarojošo diodi”, un tajā tiek izmantota tā pati tehnoloģija, kas tiek izmantota lielākajā daļā mūsu televizoru, taču salīdzinājumā ar tiem ir mazāk pikseļu. Ir ļoti jautri iegūt šos atdzistos displeja moduļus, jo tas mūsu projektiem izskatīsies forši. Šeit esam apskatījuši pilnu rakstu par OLED displejiem un to veidiem.
Mēs izmantojam vienkrāsainu 7 kontaktu SSD1306 0,96 ”OLED displeju. Šī displeja izvēles iemesls ir tas, ka tas var strādāt ar trim dažādiem sakaru protokoliem, piemēram, SPI 3 vadu režīmu, SPI četru vadu režīmu un IIC režīmu. Šajā apmācībā tiks aplūkots, kā moduli izmantot SPI 4 vadu režīmā, jo tas ir ātrākais saziņas un noklusējuma režīms.
Adatas un tās funkcijas ir paskaidrotas zemāk esošajā tabulā.
PIN kods |
Piespraudes nosaukums |
Citi vārdi |
Lietošana |
1 |
Gnd |
Zeme |
Moduļa zemējuma tapa |
2 |
Vdd |
Vcc, 5V |
Barošanas tapa (3-5V pieļaujama) |
3 |
SCK |
D0, SCL, CLK |
Darbojas kā pulksteņa tapa. Izmanto gan I2C, gan SPI |
4 |
SDA |
D1, MOSI |
Moduļa datu tapa. Izmanto gan IIC, gan SPI |
5 |
RES |
RST, ATIESTATĪT |
Modulis tiek atiestatīts (noderīgs SPI laikā) |
6 |
DC |
A0 |
Datu komandas piespraude. Izmanto SPI protokolam |
7 |
CS |
Chip Select |
Noderīgi, ja SPI protokolā tiek izmantoti vairāki moduļi |
Šajā apmācībā mēs vienkārši darbināsim moduli 4 vadu SPI režīmā, pārējo atstāsim citai apmācībai.
Arduino kopiena jau ir devusi mums daudz bibliotēku, kuras var tieši izmantot, lai padarītu to daudz vienkāršāku. Es izmēģināju dažas bibliotēkas un atklāju, ka Adafruit_SSD1306 bibliotēku bija ļoti viegli izmantot, un tajā bija nedaudz grafisko iespēju, tāpēc mēs to izmantosim arī šajā apmācībā. Bet, ja jūsu projektam ir atmiņas / ātruma ierobežojums, mēģiniet izmantot U8g bibliotēku, jo tā darbojas ātrāk un aizņem mazāk programmas atmiņas.
Mēs esam saskarējušies arī ar OLED ar Raspberry pi un Arduino.
Nepieciešamais materiāls:
- ESP32
- DS3231 RTC modulis
- 7 kontaktu 128 × 64 OLED displeja modulis (SSD1306)
- Vīriešu-sieviešu vadi
- Maizes dēlis
Ķēdes shēma:
Ķēdes shēma RTC3231 savienošanai ar ESP plati ir sniegta zemāk:
RTC DS3231 IC izmanto I2C sakaru režīmu. Tam ir SCL, SDA, Vcc un GND tapas. RTC moduļa savienojums ar ESP32 ir norādīts zemāk:
- RTC SCL -> ESP32 SCL, ti, tapa D22
- RTC SDA -> ESP32 SDA, ti, tapa D21
- RTC GND -> ESP32 GND
- RTC Vcc -> ESP32 Vcc
Šeit mēs izmantojam SPI režīmu, lai savienotu savu 128 × 64 OLED displeja moduli (SSD1306) ar ESP32. Tātad, tas izmantos 7 tapas. Savienojumi ar ESP32 ir norādīti kā:
- CS (mikroshēmas atlase) pin OLED -> ESP32 PIN D5
- OLED līdzstrāvas tapa - ESP32 PIN D4
- OLED RES tapa -> ESP32 PIN D2
- OLED SDA tapa -> PIN D23, ti, ESP32 MOSI
- OLK SCK tapa -> PIN D18, ti, ESP32 SCK
- OLED Vdd -> ESP32 Vcc
- OLED GND -> ESP32 GND
ESP32 ir nepieciešami dēļu faili. Pārbaudiet Arduino IDE dēļu pārvaldnieka nolaižamo izvēlni ESP32 dev komplektam. Ja tā nav, rīkojieties šādi:
circuitdigest.com/microcontroller-projects/getting-started-with-esp32-with-arduino-ide
Šim projektam varat izmantot arī ESP12. Uzziniet šeit, kā izmantot ESP12.
Koda skaidrojums:
Pilnīgs ESP32 kods ir norādīts raksta beigās. Šeit mēs izskaidrojam dažas svarīgas koda daļas.
Mums ir nepieciešamas vairākas bibliotēkas, kuras izmantot mūsu kodā, kuras var lejupielādēt no šīm saitēm:
1. Adafruit_SSD1306:
2. SPI:
3. Adafruit_GFX:
4. RTClib:
Tātad mēs esam iekļāvuši visas bibliotēkas
# iekļaut
Pēc tam definējiet visas OLED tapas. Jums nav jādefinē tapas RTC modulim, jo šīs tapas jau ir definētas WIRE bibliotēkā.
#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);
Pēc iestatīšanas funkciju, mēs saucam funkciju rtc.adjust (datetime (__ DATE__, __TIME__)), kurā būs noteikta laika saskaņā ar mūsu PC laiku.
void setup () { Sērijas.sākt (9600); if (! rtc.begin ()) { Serial.println ("Nevarēja atrast RTC"); kamēr (1); } rtc.adjust (DateTime (__ DATE__, __TIME__));
Pēc tam mēs izsaucam displeja funkcijas, lai tās parādītu OLED.
display.begin (SSD1306_SWITCHCAPVCC); display.clearDisplay (); display.setTextColor (BALTS); //display.startscrollright(0x00, 0x0F); // Varat noņemt komentāru no šīs rindas, lai ritinātu tekstu vietnē oled display.setTextSize (2); display.setCursor (0,5); display.print ("Pulkstenis"); // Tas parādīs pulksteni OLED 3 sekundes display.display (); kavēšanās (3000); }
Tad beidzot cilpas funkcijā, mēs glabāsim savu laiku DateTime tagad iepriekš definētajā mainīgajā un parādīsim laiku, izmantojot displeja funkcijas, piemēram, setTextSize, setCursor utt. Iestatiet tos atbilstoši savām vajadzībām un izmantojiet display.println funkciju, lai tās parādītu OLED.
void loop () { DateTime now = rtc.now (); display.clearDisplay (); display.setTextSize (2); display.setCursor (75,0); display.println (tagad.sekunde (), DEC);
Tādējādi jūs varat parādīt laiku OLED, izmantojot ESP32, un, kā jūs zināt, ESP ir pazīstams ar savām IoT iespējām, tāpēc varat to izmantot, lai laiku publicētu internetā. Nākamajā rakstā mēs parādīsim, kā parādīt interneta laiku ESP, neizmantojot nevienu RTC moduli.