DS1307 మరియు OLED డిస్ప్లే ఉపయోగించి ESP32 రియల్ టైమ్ క్లాక్ (RTC)

Ds1307 Mariyu Oled Disple Upayoginci Esp32 Riyal Taim Klak Rtc



ESP32 అంతర్నిర్మిత RTC మాడ్యూల్‌తో వస్తుంది, అయితే అది పవర్ ఉన్నప్పుడే పని చేస్తుంది. ఒకవేళ పవర్ పోయినట్లయితే, గడియారం రీసెట్ చేయబడుతుంది మరియు సరైన సమయాన్ని ఉంచుకోలేకపోతుంది. కాబట్టి మీరు సమయాన్ని ట్రాక్ చేయాలనుకుంటే లేదా ఏదైనా సమయ-ఆధారిత పరికరాన్ని నియంత్రించాలనుకుంటే, DS1307 RTC సెన్సార్‌ని ప్రయత్నించండి. అయితే, మీరు మీ ESP32 బోర్డ్‌తో బ్యాకప్ బ్యాటరీని కనెక్ట్ చేయడం గురించి ఆలోచిస్తూ ఉండవచ్చు, కానీ మీకు విద్యుత్ కొరత ఉన్నట్లయితే ఇది ఉత్తమమైన సందర్భం కాదు. DS1307 సెన్సార్‌ను ఉపయోగించడం ఉత్తమ ప్రత్యామ్నాయం, ఇది ఒక అంతర్నిర్మిత బ్యాటరీతో వస్తుంది, ఇది కనీసం ఒక సంవత్సరం పాటు ఉంటుంది.

విషయాలను స్పష్టం చేయడానికి, ESP32 యొక్క అంతర్గత నిజ-సమయ గడియారం (RTC) ప్రధాన ప్రాసెసర్ ఆఫ్‌లో ఉన్నప్పుడు లేదా గాఢ నిద్రలో ఉన్నప్పుడు కూడా సమయాన్ని ట్రాక్ చేయగలదు. మీరు ఎక్కువ శక్తిని ఉపయోగించకుండా లేదా ప్రధాన ప్రాసెసర్‌ను ప్రభావితం చేయకుండా సమయాన్ని ట్రాక్ చేయడానికి ESP32 RTCని ఉపయోగించవచ్చు. కానీ ఇది అమలు చేయడానికి ఇప్పటికీ శక్తి అవసరం, అంత ఎక్కువ కాదు కానీ అంతర్గత RTC నడపడానికి కనీస శక్తి అవసరం.

కాబట్టి దీనితో, మాకు బాహ్య RTC మాడ్యూల్‌ను ఉపయోగించడం మాత్రమే పరిష్కారం. DS1307 RTC మాడ్యూల్‌తో ESP32 బోర్డ్‌ను ఇంటర్‌ఫేస్ చేసే దశలను చూద్దాం.







కంటెంట్:

1. RTC DS1307 మాడ్యూల్ అంటే ఏమిటి

DS1307 అనేది తక్కువ-శక్తి పరికరం, ఇది సమయం మరియు తేదీని ఖచ్చితంగా ట్రాక్ చేయగలదు. ఇది బైనరీ-కోడెడ్ డెసిమల్ (BCD) ఆకృతిని ఉపయోగిస్తుంది. ఇది సెకన్లు, నిమిషాలు మరియు గంటలు మరియు రోజులు వంటి వివరణాత్మక ఆకృతిలో మీకు సమయాన్ని తెలియజేస్తుంది. మీరు తేదీని నెల మరియు సంవత్సరం వంటి పూర్తి ఆకృతిలో కూడా ముద్రించవచ్చు. 2100 వరకు లీప్ ఇయర్‌గా ఉన్నప్పుడు కూడా దీనికి తెలుసు. DS1307తో కమ్యూనికేట్ చేయడానికి, మీరు I2C ప్రోటోకాల్‌ని ఉపయోగించవచ్చు.





DS1307 అంతర్నిర్మిత బ్యాటరీని కలిగి ఉంది, ఇది బాహ్య 5V మూలం లేకుండా ఒక సంవత్సరం పాటు శక్తిని అందిస్తుంది. ఈ బ్యాటరీ బ్యాకప్‌ని ఉపయోగించి, ఇది మెయిన్ పవర్ ఆఫ్‌లో ఉన్నప్పుడు కూడా సమయాన్ని నిలుపుకోగలదు. ఇది కొంత డేటాను నిల్వ చేయడానికి SRAM యొక్క 56 బైట్‌లను కూడా కలిగి ఉంది. DS1307 అనేది Arduino లేదా ESP32 బోర్డ్‌తో కలిపి అనేక అప్లికేషన్‌లను కలిగి ఉండే సులభ పరికరం. ఉదాహరణకు, ఈ డేటా డేటా లాగింగ్, అలారం సిస్టమ్‌లు లేదా పారిశ్రామిక నియంత్రణలో సహాయపడుతుంది. మీకు నమ్మకమైన సమయపాలన అవసరమైతే, DS1307 ఒక గొప్ప ఎంపిక.





RTC DS1307 మాడ్యూల్ లక్షణాలు

RTC DS1307 మాడ్యూల్‌లో RTC IC, EEPROM, క్రిస్టల్ ఓసిలేటర్ మరియు బ్యాకప్ కోసం బ్యాటరీ హోల్డర్ ఉంటాయి.



ఈ భాగాల వివరాలు క్రింద ఉన్నాయి:

DS1307 RTC IC : DS1307 RTC IC అనేది 8-పిన్ చిప్, ఇది I2C ప్రోటోకాల్‌ని ఉపయోగించి సమయం మరియు తేదీని ట్రాక్ చేస్తుంది. ఇది చాలా తక్కువ శక్తిని ఉపయోగిస్తుంది, 500nA కంటే తక్కువ. ఇది సమయాన్ని సెకన్లు, నిమిషాలు మరియు గంటలలో మరియు తేదీని రోజులు, నెలలు మరియు సంవత్సరాలలో ప్రదర్శించగలదు. ఇది 24-గంటల మరియు 12-గంటల ఫార్మాట్‌ల మధ్య కూడా మారవచ్చు.

24C32 EEPROM IC : 24C32 EEPROM IC అనేది Atmel నుండి 32-బైట్ చిప్, ఇది సెట్టింగ్‌లు, సమయం మరియు తేదీని నిల్వ చేస్తుంది. ఇది I2C ప్రోటోకాల్‌ను కూడా ఉపయోగిస్తుంది.

32.768kHz క్రిస్టల్ : 32.768kHz క్రిస్టల్ ఓసిలేటర్ DS1307 RTC IC కోసం క్లాక్ ఫ్రీక్వెన్సీని అందిస్తుంది.

బ్యాటరీ హోల్డర్ : బ్యాటరీ హోల్డర్ CR2032 బ్యాటరీని కలిగి ఉంది. ఇది 3V లిథియం కాయిన్ సెల్. ఇది DS1307 RTC ICకి నిరంతర విద్యుత్‌ను అందిస్తుంది.

DS18B20 సెన్సార్ ప్రొవిజన్ : DS18B20 సెన్సార్ ప్రొవిజన్ మిమ్మల్ని టంకము చేయడానికి మరియు DS18B20 ఉష్ణోగ్రత సెన్సార్‌ని ఉపయోగించడానికి అనుమతిస్తుంది. ఇది ముందుగా టంకం చేయబడలేదు. మీరు త్రూ-హోల్ ప్యాకేజీని టంకము చేయవచ్చు మరియు మాడ్యూల్ యొక్క DS పిన్ నుండి ఉష్ణోగ్రతను పొందవచ్చు.

దిగువ జాబితా DS1307 RTC సెన్సార్ యొక్క కొన్ని శీఘ్ర వివరణలను అందిస్తుంది:

  • ఆపరేటింగ్ వోల్టేజ్: 4.5–5.5 V, సాధారణంగా 5 V
  • ప్రస్తుత వినియోగం : 1.5 mA కంటే తక్కువ
  • ఖచ్చితత్వం : 0-40 °C, క్రిస్టల్‌పై ఆధారపడి ఉంటుంది
  • బ్యాటరీ : CR2032 (3 V నాణెం)
  • జ్ఞాపకశక్తి : 56 బైట్లు నాన్‌వోలేటైల్ RAM
  • ఇంటర్ఫేస్ : టూ-వైర్ (I2C) సీరియల్ ఇంటర్‌ఫేస్
  • అవుట్‌పుట్ : 1 Hz అవుట్‌పుట్ పిన్
  • ప్రోగ్రామబుల్ స్క్వేర్ వేవ్ అవుట్‌పుట్ : బ్యాటరీ-బ్యాకప్ మోడ్‌లో 500 nA కంటే తక్కువ వినియోగిస్తుంది
  • పవర్-ఫెయిల్ డిటెక్షన్ : ఆటోమేటిక్ పవర్-ఫెయిల్ డిటెక్షన్ మరియు స్విచ్ సర్క్యూట్రీ
  • పవర్-సెన్స్ సర్క్యూట్ : ఇది విద్యుత్ కొరతపై సరఫరాను బ్యాకప్ చేయడానికి స్వయంచాలకంగా మారవచ్చు
  • లీపు సంవత్సరం పరిహారం : 2100 సంవత్సరం వరకు చెల్లుతుంది

RTC DS1307 మాడ్యూల్ పిన్అవుట్

మాడ్యూల్ వివిధ ఫంక్షన్లతో అనేక పిన్‌లను కలిగి ఉంది.

  • VCC మాడ్యూల్‌కు శక్తినివ్వడానికి 3.3V మరియు 5.5V మధ్య DC వోల్టేజ్ అవసరమయ్యే పిన్.
  • GND తక్కువ వోల్టేజ్ లేదా గ్రౌండ్ కోసం పిన్.
  • SDA మరియు SCL I2C బస్సు ద్వారా డేటా మరియు క్లాక్ సిగ్నల్‌లను కమ్యూనికేట్ చేసే పిన్‌లు.
  • DS మీరు RTC మాడ్యూల్‌లో ఒకటి ఉంటే DS1307 సెన్సార్‌తో ఉష్ణోగ్రతను కొలిచే పిన్.
  • SQ 1 Hz, 4 kHz, 8 kHz లేదా 32 kHz పౌనఃపున్యంతో స్క్వేర్-వేవ్ సిగ్నల్‌ను రూపొందించే పిన్, మీరు దీన్ని ప్రోగ్రామ్ చేసే విధానంపై ఆధారపడి ఉంటుంది.
  • ఒకటి ప్రధాన పవర్ ఆఫ్‌లో ఉన్నప్పుడు సమయాన్ని ఖచ్చితంగా ఉంచడానికి 3V బ్యాటరీని ఉపయోగించే పిన్.

2. ESP32తో RTC DS1307 మరియు OLED డిస్‌ప్లేను ఎలా ఇంటర్‌ఫేస్ చేయాలి

DS1307 మరియు OLED డిస్‌ప్లేతో ESP32ని ఇంటర్‌ఫేస్ చేయడానికి, మీరు ESP32 బోర్డు యొక్క అంతర్నిర్మిత I2C పిన్‌లను ఉపయోగించవచ్చు. DS1307 మరియు OLED డిస్‌ప్లే రెండూ I2C-ఆధారిత పరికరాలు. అప్పుడు I2C బస్‌లో I2C మాస్టర్ స్లేవ్ ప్రోటోకాల్‌ని ఉపయోగించి కమ్యూనికేట్ చేయవచ్చు.

మేము DS1307 మరియు OLED డిస్ప్లేతో ESP32 యొక్క ఇంటర్‌ఫేసింగ్ వైపు వెళ్లడానికి ముందు, ముందుగా మీరు కొన్ని అవసరమైన లైబ్రరీలను ఇన్‌స్టాల్ చేయాలి.

అవసరమైన లైబ్రరీలను ఇన్‌స్టాల్ చేస్తోంది

మీకు రెండు లైబ్రరీలు అవసరం, ఒకటి RTC మాడ్యూల్ మరియు ఒకటి OLED డిస్ప్లే కోసం. RTC మాడ్యూల్‌తో OLEDని ఉపయోగించి, మీరు అద్భుతమైన మరియు ఇంటరాక్టివ్ క్లాక్ ప్రివ్యూలను సృష్టించవచ్చు. మీకు స్క్రీన్‌పై సమయాన్ని ప్రదర్శించే ప్లాన్ లేకపోతే, మీరు ఈ లైబ్రరీ ఇన్‌స్టాలేషన్‌ను దాటవేయవచ్చు.

మీకు అవసరమైన రెండు లైబ్రరీలు క్రిందివి:

  • RTClib (Adafruit ద్వారా) అనేది RTC నుండి సమయాన్ని సెట్ చేయడానికి మరియు పొందడానికి Arduino IDE లైబ్రరీ. ఇది తేదీలు, సమయాలు మరియు వ్యవధులను మార్చడానికి తరగతులను కూడా అందిస్తుంది. ఈ లైబ్రరీని ఉపయోగించి, మీరు DS1307 మరియు DS3231 వంటి రియల్ టైమ్ క్లాక్ (RTC) మాడ్యూల్‌లను ఇంటర్‌ఫేస్ చేయవచ్చు మరియు ప్రోగ్రామ్ చేయవచ్చు.
  • ఎస్ SD1306 (Adafruit ద్వారా) అనేది Arduino కోసం ఒక లైబ్రరీ, దీన్ని ఉపయోగించి మీరు OLED డిస్ప్లేలను Arduino లేదా ఏదైనా ఇతర మైక్రోకంట్రోలర్ బోర్డుతో ఇంటర్‌ఫేస్ చేయవచ్చు మరియు ప్రోగ్రామ్ చేయవచ్చు.

Arduino IDEలో ఈ రెండు లైబ్రరీలను డౌన్‌లోడ్ చేసి, ఇన్‌స్టాల్ చేయడానికి, ముందుగా తెరవండి లైబ్రరీ మేనేజర్ RTClib లైబ్రరీ కోసం శోధించండి మరియు క్లిక్ చేయండి ఇన్‌స్టాల్ చేయండి :

మీరు లైబ్రరీ లేదా దాని డిపెండెన్సీలను మాత్రమే ఇన్‌స్టాల్ చేసే ఎంపికను పొందుతారు. క్లిక్ చేయండి అన్నీ ఇన్‌స్టాల్ చేయండి లైబ్రరీని పూర్తిగా ఇన్‌స్టాల్ చేయడానికి బటన్. ఈ విధంగా మీరు ఈ లైబ్రరీ యొక్క డిపెండెన్సీలపై ఆధారపడి ఉండే కోడ్‌ని సవరించినట్లయితే మీకు ఎటువంటి లోపం ఉండదు.

అదేవిధంగా, SSD1306 లైబ్రరీ కోసం శోధించండి. OLED డిస్‌ప్లే కోసం ఈ లైబ్రరీ అవసరం. క్లిక్ చేయండి ఇన్‌స్టాల్ చేయండి కొనసాగించడానికి.

ఈసారి మీకు కూడా అదే నిర్ధారణ సందేశం వస్తుంది. పై క్లిక్ చేయండి అన్నీ ఇన్‌స్టాల్ చేయండి ఎంపిక.

ఇప్పుడు OLED మరియు DS1307 కోసం రెండు లైబ్రరీలు ఇన్‌స్టాల్ చేయబడ్డాయి మరియు ఉపయోగించడానికి సిద్ధంగా ఉన్నాయి. అయితే దీనికి ముందు, మొదట, OLED డిస్ప్లే కోసం I2C చిరునామాను కనుగొనండి.

3. OLED డిస్ప్లే యొక్క I2C చిరునామాను కనుగొనడం

I2C అడ్రస్ అనేది I2C బస్‌లోని ప్రతి పరికరానికి ప్రత్యేకమైన ఐడెంటిఫైయర్. ఇది మాస్టర్ పరికరాన్ని దాని చిరునామాకు డేటాను పంపడం ద్వారా నిర్దిష్ట స్లేవ్ పరికరంతో కమ్యూనికేట్ చేయడానికి అనుమతిస్తుంది. I2C చిరునామా యొక్క ఉద్దేశ్యం ఒకే బస్సులో బహుళ పరికరాల మధ్య వైరుధ్యాలు మరియు గందరగోళాన్ని నివారించడం.

I2C పరికరం యొక్క చిరునామాను పొందడానికి, మీరు a ఉపయోగించవచ్చు బస్సును స్కాన్ చేసి చిరునామాలను ముద్రించే సాధారణ స్కెచ్ అది కనుగొన్న పరికరాలలో. ప్రత్యామ్నాయంగా, మీరు పరికరం యొక్క డిఫాల్ట్ లేదా కాన్ఫిగర్ చేయదగిన చిరునామాను చూడటానికి దాని డేటాషీట్‌ని తనిఖీ చేయవచ్చు.

ఇక్కడ మా విషయంలో I2C స్కానర్ కోడ్‌ను అమలు చేసిన తర్వాత OLED స్క్రీన్ యొక్క క్రింది I2C చిరునామా Arduino IDE టెర్మినల్‌లో ప్రదర్శించబడుతుంది.

చాలా సార్లు, మీరు కూడా అదే పొందే అవకాశం ఎక్కువగా ఉంటుంది 0x3C మీ OLED స్క్రీన్ చిరునామా.

4. OLED మరియు RTC DS1307 మాడ్యూల్‌ను ESP32తో ఇంటర్‌ఫేసింగ్ చేయడం

1. DS1307 మాడ్యూల్ మరియు రెండింటి యొక్క SDA మరియు SCL పిన్‌లను కనెక్ట్ చేయండి I2C పిన్‌లకు OLED డిస్‌ప్లే ESP32 యొక్క. సాధారణంగా, ఇవి GPIO 21 మరియు GPIO 22 , కానీ అవసరమైతే మీరు కోడ్‌లో ఏవైనా ఇతర పిన్‌లను కూడా కేటాయించవచ్చు.

2. DS1307 యొక్క VCC మరియు GND మరియు OLED డిస్ప్లే రెండింటినీ ESP32 యొక్క 3.3V మరియు GND పిన్‌లకు కనెక్ట్ చేయండి.

3. నిజ-సమయ గడియారం కోసం బ్యాకప్ శక్తిని అందించడానికి DS1307 మాడ్యూల్‌లో CR2032 కాయిన్ సెల్ బ్యాటరీని చొప్పించండి.

4. ఈ ట్యుటోరియల్ నుండి ఉదాహరణ కోడ్‌ను మీ ESP32 బోర్డుకి అప్‌లోడ్ చేయండి. అనుకూల అవుట్‌పుట్‌ల కోసం కోడ్‌ని సవరించండి.

అప్‌లోడ్ చేసిన తర్వాత, సెట్ చేసిన సమయం నుండి గడియారం ప్రారంభమవుతుంది మరియు OLED స్క్రీన్‌పై సమయాన్ని ప్రదర్శిస్తుంది.

5. సర్క్యూట్ రేఖాచిత్రం

DS1307తో ESP32 యొక్క సర్క్యూట్ రేఖాచిత్రం సరళమైనది, కేవలం నాలుగు వైర్‌లను కనెక్ట్ చేయాలి. మీరు OLED మరియు DS1307 సెన్సార్‌ల I2C వైర్లు SDA మరియు SCLలను తగ్గించవచ్చు. అదేవిధంగా, ఈ రెండు సెన్సార్‌లను పవర్ అప్ చేయడానికి, ESP32 బోర్డు యొక్క 3V3 మరియు GND పిన్‌ను ఉపయోగించవచ్చు. అవసరమైతే మీరు ప్రత్యేక మూలం నుండి కూడా శక్తిని పొందవచ్చు.

గమనిక : ESP32 యొక్క ప్రస్తుత పరిమితిని మించకుంటే, RTC DS1307ని ESP32 యొక్క 3.3V పిన్ నుండి పవర్ చేయడం సురక్షితం. కానీ మీరు సురక్షితమైన సైట్‌లో ఉండాలనుకుంటే, మీరు RTC మాడ్యూల్ కోసం ప్రత్యేక పవర్ సోర్స్‌ని ఉపయోగించవచ్చు లేదా తక్కువ-పవర్ DS3231 సెన్సార్‌ని ప్రయత్నించవచ్చు, దీని ఆపరేటింగ్ పరిధి 3.3 నుండి 5.5 VDC మధ్య ఉంటుంది.

దిగువ చిత్రం RTC DS1307 సెన్సార్‌తో ESP32 యొక్క కనెక్షన్‌ని వివరిస్తుంది.

అదేవిధంగా, మీరు సమయాన్ని ప్రదర్శించడానికి OLED స్క్రీన్‌ను కనెక్ట్ చేయాలనుకుంటే, మీరు అదే I2C పిన్‌లను మరియు ESP32 బోర్డు యొక్క పవర్ పిన్‌లను ఉపయోగించవచ్చు.

6. కోడ్

దిగువ కోడ్‌ని ఉపయోగించి, మేము RTCలో ప్రస్తుత తేదీ మరియు సమయాన్ని సెట్ చేస్తాము. సమయాన్ని సెట్ చేసిన తర్వాత, కోడ్ Arduino IDE టెర్మినల్‌లో సమయాన్ని ప్రదర్శిస్తుంది. మీరు కోడ్‌ను అప్‌లోడ్ చేయడానికి ముందు, మీరు దానిని మీ ప్రస్తుత తేదీ మరియు సమయంతో అప్‌డేట్ చేయాలి.

#'RTClib.h'ని చేర్చండి
RTC_DS1307 DS1307_RTC;
చార్ వారం_రోజులు [ 7 ] [ 12 ] = { 'ఆదివారం' , 'సోమవారం' , 'మంగళవారం' , 'బుధవారం' , 'గురువారం' , 'శుక్రవారం' , 'శనివారం' } ;
శూన్యమైన సెటప్ ( ) {
సీరియల్.ప్రారంభం ( 115200 ) ;
#ifndef ESP8266
అయితే ( ! క్రమ ) ;
#ఎండిఫ్
ఉంటే ( ! DS1307_RTC.ప్రారంభం ( ) ) {
Serial.println ( 'ఆర్టీసిని కనుగొనలేకపోయాము' ) ;
అయితే ( 1 ) ;
}
DS1307_RTC.అడ్జస్ట్ ( తేదీ సమయం ( ఎఫ్ ( __తేదీ__ ) , ఎఫ్ ( __TIME__ ) ) ) ;
}
శూన్య లూప్ ( ) {
DateTime now = DS1307_RTC.now ( ) ;
సీరియల్.ప్రింట్ ( ఇప్పుడు.సంవత్సరం ( ) , DEC ) ;
సీరియల్.ప్రింట్ ( '/' ) ;
సీరియల్.ప్రింట్ ( ఇప్పుడు.నెల ( ) , DEC ) ;
సీరియల్.ప్రింట్ ( '/' ) ;
సీరియల్.ప్రింట్ ( ఇప్పుడు.రోజు ( ) , DEC ) ;
సీరియల్.ప్రింట్ ( '(' ) ;
సీరియల్.ప్రింట్ ( వారం_రోజులు [ ఇప్పుడు.dayOfTheWeek ( ) ] ) ;
సీరియల్.ప్రింట్ ( ')' ) ;
సీరియల్.ప్రింట్ ( ఇప్పుడు.గంట ( ) , DEC ) ;
సీరియల్.ప్రింట్ ( ':' ) ;
సీరియల్.ప్రింట్ ( ఇప్పుడు.నిమిషం ( ) , DEC ) ;
సీరియల్.ప్రింట్ ( ':' ) ;
సీరియల్.ప్రింట్ ( ఇప్పుడు.రెండవ ( ) , DEC ) ;
Serial.println ( ) ;
ఆలస్యం ( 1000 ) ;
}

ఈ కోడ్ ఉపయోగిస్తుంది RTClib లైబ్రరీ తేదీ మరియు సమయాన్ని ట్రాక్ చేసే DS1307 రియల్ టైమ్ క్లాక్ మాడ్యూల్‌తో ఇంటర్‌ఫేస్ చేయడానికి.

ది సెటప్ బాడ్ రేటును ప్రారంభించడంతో ఫంక్షన్ ప్రారంభమైంది. ఆ తర్వాత, ఈ విభాగం లోపల, DS1307 సెన్సార్‌తో కంప్యూటర్ యొక్క తేదీ మరియు సమయాన్ని సమకాలీకరించడానికి మేము ఫంక్షన్‌ను నిర్వచించాము. ఇది కోడ్ కంపైలేషన్ సమయాన్ని RTC సెన్సార్‌కి అప్‌లోడ్ చేస్తుంది.

మీరు ఉపయోగించవచ్చు లూప్ RTC నుండి తేదీ మరియు సమయాన్ని పొందడానికి ఫంక్షన్. ఆపై, మీరు దీన్ని సీరియల్ మానిటర్‌లో ఇలా ప్రదర్శించవచ్చు: సంవత్సరం/నెల/రోజు (వారంలో రోజు) గంట:నిమిషం:సెకండ్. ప్రతి లూప్ తర్వాత ఒక సెకను ఆలస్యాన్ని జోడించాలని గుర్తుంచుకోండి, కాబట్టి కోడ్ చాలా వేగంగా పని చేయదు.

OLED డిస్ప్లేలో ప్రస్తుత సమయాన్ని ప్రదర్శించండి

OLED స్క్రీన్‌పై అదే సమయాన్ని ప్రదర్శించడానికి, మేము OLED స్క్రీన్ కోసం అదనపు కోడ్ భాగాన్ని జోడించాలి. ఇచ్చిన కోడ్‌ను అప్‌లోడ్ చేయండి. ఈ కోడ్ మీ OLED స్క్రీన్‌పై ప్రస్తుత సమయాన్ని ప్రదర్శిస్తుంది.

గుర్తుంచుకోండి, ఇక్కడ మనం 0.96-అంగుళాల 128×64 I2C SSD OLED డిస్ప్లే మాడ్యూల్‌ని ఉపయోగిస్తాము. మీరు ఏదైనా ఇతర పరిమాణాన్ని ఉపయోగిస్తుంటే, దానికి అనుగుణంగా కోడ్‌ను సవరించండి. అలాగే, I2C చిరునామాను తనిఖీ చేసి, ఇచ్చిన కోడ్‌లో దాన్ని సవరించండి. మా విషయంలో, మేము OLED స్క్రీన్ కోసం I2C చిరునామా 0x3Cని కలిగి ఉన్నాము.

#ని చేర్చండి
# చేర్చండి
# చేర్చండి
#'RTClib.h'ని చేర్చండి
#SCREEN_WIDTH 128ని నిర్వచించండి
#SCREEN_HEIGHT 64ని నిర్వచించండి

Adafruit_SSD1306 ప్రదర్శన ( SCREEN_WIDTH, SCREEN_HEIGHT, & వైర్, - 1 ) ;
RTC_DS1307 RTC;
చార్ రోజులు [ 7 ] [ 12 ] = { 'ఆదివారం' , 'సోమవారం' , 'మంగళవారం' , 'బుధవారం' , 'గురువారం' , 'శుక్రవారం' , 'శనివారం' } ;
శూన్యమైన సెటప్ ( ) {
సీరియల్.ప్రారంభం ( 115200 ) ;
ఉంటే ( ! RTC.ప్రారంభం ( ) ) {
Serial.println ( 'ఆర్టీసిని కనుగొనలేకపోయాము' ) ;
అయితే ( 1 ) ;
}
RTC.అడ్జస్ట్ ( తేదీ సమయం ( ఎఫ్ ( __తేదీ__ ) , ఎఫ్ ( __TIME__ ) ) ) ;
ఉంటే ( ! ప్రదర్శన.ప్రారంభం ( SSD1306_SWITCHCAPVCC, 0x3C ) ) {
Serial.println ( ఎఫ్ ( 'SSD1306 కేటాయింపు విఫలమైంది' ) ) ;
కోసం ( ;; ) ;
}
ఆలస్యం ( 1000 ) ;
display.clearDisplay ( ) ;
display.setTextSize ( 2 ) ;
display.setTextColor ( తెలుపు ) ;
display.setకర్సర్ ( 30 , ఇరవై ) ;
display.println ( 'Linux' ) ;
display.display ( ) ;
ఆలస్యం ( 3000 ) ;
display.clearDisplay ( ) ;
}
శూన్య లూప్ ( ) {
DateTime now = RTC.now ( ) ;
display.clearDisplay ( ) ;
display.setTextSize ( 2 ) ;
display.setకర్సర్ ( 0 , 0 ) ;
display.print ( ఇప్పుడు.రోజు ( ) ) ;
display.print ( '/' ) ;
display.print ( ఇప్పుడు.నెల ( ) ) ;
display.print ( '/' ) ;
display.print ( ఇప్పుడు.సంవత్సరం ( ) ) ;
display.println ( రోజులు [ ఇప్పుడు.dayOfTheWeek ( ) ] ) ;
display.println ( '' ) ;
display.setకర్సర్ ( 0 , 40 ) ;
ఉంటే ( ఇప్పుడు.గంట ( ) < 10 )
display.print ( '0' ) ;
display.print ( ఇప్పుడు.గంట ( ) ) ;
display.print ( ':' ) ;
ఉంటే ( ఇప్పుడు.నిమిషం ( ) < 10 )
display.print ( '0' ) ;
display.print ( ఇప్పుడు.నిమిషం ( ) ) ;
display.print ( ':' ) ;
ఉంటే ( ఇప్పుడు.రెండవ ( ) < 10 )
display.print ( '0' ) ;
display.println ( ఇప్పుడు.రెండవ ( ) ) ;
display.display ( ) ;
}

RTC మరియు డిస్ప్లే కోసం మేము ఇన్‌స్టాల్ చేసిన లైబ్రరీలతో కోడ్ ప్రారంభమైంది. ఆ తర్వాత, ఇది స్క్రీన్ పరిమాణం మరియు ప్రదర్శన చిరునామాను నిర్వచిస్తుంది. ఇది వారపు రోజుల పేర్లతో శ్రేణిని ప్రారంభిస్తుంది.

ది సెటప్ భాగం సీరియల్ కమ్యూనికేషన్‌తో ప్రారంభమవుతుంది. ఇది RTC మరియు డిస్ప్లే పని చేస్తున్నాయో లేదో తనిఖీ చేస్తుంది. ఆ తర్వాత, మేము 3 సెకన్ల పాటు ప్రదర్శించబడే స్ట్రింగ్ టెక్స్ట్ “Linuxhint”ని నిర్వచించాము. ఇది ప్రారంభ లేదా ప్రారంభ సందేశం మాత్రమే, మీరు ఈ సందేశాన్ని మీ అనుకూల వచనంతో కూడా సవరించవచ్చు.

ది లూప్ ఫంక్షన్ DS1307 మాడ్యూల్ తేదీ మరియు సమయాన్ని పొందుతుంది. ఆ తర్వాత, ఇది ప్రదర్శనను క్లియర్ చేస్తుంది మరియు తేదీ మరియు సమయాన్ని ఫార్మాట్ చేసిన విధంగా ప్రింట్ చేస్తుంది. కోడ్ గంటలు, నిమిషాలు మరియు సెకన్లకు ప్రధాన సున్నాలను జోడిస్తుంది, ఒకవేళ వాటి విలువలు 10 కంటే తక్కువగా ఉంటే.

7. హార్డ్వేర్

ESP32 బోర్డుకి కోడ్‌ను అప్‌లోడ్ చేసిన తర్వాత, మీరు OLED స్క్రీన్‌పై క్రింది అవుట్‌పుట్‌ను చూస్తారు. హార్డ్‌వేర్ కోసం, మేము OLED స్క్రీన్ మరియు I2C RTC DS1307 మాడ్యూల్‌ని ఉపయోగించాము. 30 పిన్‌లతో ESP32 బోర్డు ఉపయోగించబడుతుంది. మీరు ఏదైనా ఇతర ESP32 బోర్డుతో కూడా ప్రయోగాలు చేయవచ్చు, కానీ I2C పిన్‌లను సరిగ్గా కనెక్ట్ చేసినట్లు నిర్ధారించుకోండి.

ముగింపు

RTC DS1307 బ్యాటరీ బ్యాకప్ మద్దతుతో 56-బైట్ SRAMని కలిగి ఉంది. ఇది I2C కమ్యూనికేషన్ ప్రోటోకాల్‌ను ఉపయోగించే 8-పిన్ పరికరం. DS1307 RTC మాడ్యూల్‌ను ESP32తో ఇంటర్‌ఫేస్ చేయడానికి, మీరు ESP32 బోర్డు యొక్క I2C పిన్స్ (GPIO 22 (SCL) మరియు GPIO 21 (SDA))లను ఉపయోగించవచ్చు. మీరు Arduino IDE కన్సోల్‌లో సమయాన్ని ముద్రించవచ్చు లేదా సమయాన్ని ప్రదర్శించడానికి OLED లేదా I2C LCD వంటి ఏదైనా స్క్రీన్‌ని ఉపయోగించవచ్చు. DS1307 RTC మాడ్యూల్ అనేది వివిధ అప్లికేషన్‌లలో సమయం మరియు తేదీని ట్రాక్ చేయడానికి ఉపయోగకరమైన పరికరం. కొన్ని ప్రధాన అనువర్తనాల్లో డేటా లాగర్లు, డిజిటల్ గడియారాలు మరియు స్మార్ట్‌వాచ్‌లు ఉన్నాయి.