इस ट्यूटोरियल में, हम रियल टाइम क्लॉक (RTC) और इसके इंटरफेस के साथ ESP32 और OLED डिस्प्ले के बारे में जानेंगे ।
हम सही समय पर नज़र रखने के लिए DS3231 RTC मॉड्यूल का उपयोग करेंगे और इसे SPI OLED पर हमारे ESC32 के रूप में ESP32 का उपयोग करके प्रदर्शित करेंगे। ESP32 एक माइक्रोकंट्रोलर से अधिक है। इसके अंदर वाई-फाई और ब्लूटूथ चिप है और 39 GPIO पिन हैं। यह SPI, I2C, UART, आदि जैसे सभी संचार प्रोटोकॉल का समर्थन करता है। यदि आप ESP32 के लिए नए हैं, तो सबसे पहले ESP32 ट्यूटोरियल के साथ शुरू करें।
RTC क्या है ??
DS3231 एक RTC (रियल टाइम क्लॉक) मॉड्यूल है। इसका उपयोग अधिकांश इलेक्ट्रॉनिक्स परियोजनाओं के लिए तारीख और समय बनाए रखने के लिए किया जाता है। इस मॉड्यूल की अपनी सिक्का सेल बिजली आपूर्ति है, जिसके उपयोग से यह मुख्य पावर को हटाए जाने पर भी दिनांक और समय को बनाए रखता है या MCU एक हार्ड रीसेट के माध्यम से चला गया है। इसलिए एक बार जब हम इस मॉड्यूल में दिनांक और समय निर्धारित करते हैं तो यह हमेशा इसका ट्रैक रखेगा। कई प्रकार के RTC IC उपलब्ध हैं जैसे DS1307, DS3231 आदि।
हमने पहले डीएस 3231 आरटीसी का उपयोग नीचे की परियोजनाओं में अरडूइनो के साथ किया है:
- Arduino का उपयोग कर स्वचालित पालतू फीडर
- Arduino डेटा लकड़हारा
नोट: पहली बार इस मॉड्यूल का उपयोग करते समय आपको तारीख और समय निर्धारित करना होगा। आप RTC IC DS1307 का भी उपयोग कर सकते हैं, हमने पहले Arduino के साथ DS1307 का उपयोग किया है।
OLED डिस्प्ले के बारे में जानना:
ओएलईडी शब्द " ऑर्गेनिक लाइट एमिटिंग डायोड" के लिए खड़ा है, यह उसी तकनीक का उपयोग करता है जो हमारे अधिकांश टीवी में उपयोग किया जाता है, लेकिन उनकी तुलना में कम पिक्सेल हैं। इन कूल लुकिंग डिस्प्ले मॉड्यूल का असली मज़ा है क्योंकि यह हमारे प्रोजेक्ट्स को अच्छा लगेगा। हमने यहां OLED प्रदर्शनों और इसके प्रकारों पर एक पूरा लेख शामिल किया है।
हम एक मोनोक्रोम 7-पिन SSD1306 0.96 "OLED डिस्प्ले का उपयोग कर रहे हैं । इस डिस्प्ले को चुनने का कारण यह है कि यह तीन अलग-अलग संचार प्रोटोकॉल पर काम कर सकता है जैसे कि SPI 3 वायर मोड, SPI फोर वायर मोड और IIC मोड। यह ट्यूटोरियल कवर करेगा कि एसपीआई 4-वायर मोड में मॉड्यूल का उपयोग कैसे करें क्योंकि यह संचार का सबसे तेज मोड और डिफ़ॉल्ट एक है।
पिन और इसके कार्यों को नीचे दी गई तालिका में समझाया गया है।
पिन नम्बर |
पिन नाम |
दुसरे नाम |
प्रयोग |
1 |
गाण्ड |
भूमि |
मॉड्यूल का ग्राउंड पिन |
२ |
Vdd |
Vcc, 5V |
पावर पिन (3-5V सहनीय) |
३ |
SCK |
डी 0, एससीएल, सीएलके |
घड़ी की पिन के रूप में कार्य करता है। I2C और SPI दोनों के लिए उपयोग किया जाता है |
४ |
एसडीए |
डी 1, एमओएसआई |
मॉड्यूल का डेटा पिन। IIC और SPI दोनों के लिए उपयोग किया जाता है |
५ |
रेस |
RST, RESET |
मॉड्यूल रीसेट करता है (SPI के दौरान उपयोगी) |
६ |
डीसी |
ए ० |
डेटा कमांड पिन। SPI प्रोटोकॉल के लिए उपयोग किया जाता है |
। |
सीएस |
चिप का चयन करें |
उपयोगी जब एक से अधिक मॉड्यूल SPI प्रोटोकॉल के तहत उपयोग किया जाता है |
इस ट्यूटोरियल में हम केवल 4-वायर एसपीआई मोड में मॉड्यूल संचालित करेंगे, हम बाकी को कुछ अन्य ट्यूटोरियल के लिए छोड़ देंगे।
Arduino समुदाय ने हमें पहले से ही बहुत सारे पुस्तकालय दिए हैं जो सीधे तौर पर इसे बहुत सरल बनाने के लिए उपयोग किया जा सकता है। मैंने कुछ पुस्तकालयों की कोशिश की और पाया कि Adafruit_SSD1306 लाइब्रेरी का उपयोग करना बहुत आसान था और इसमें मुट्ठी भर ग्राफ़िकल विकल्प थे इसलिए हम इस ट्यूटोरियल में इसका उपयोग करेंगे। लेकिन, अगर आपके प्रोजेक्ट में मेमोरी / स्पीड की कमी है, तो U8g लाइब्रेरी का उपयोग करने की कोशिश करें क्योंकि यह तेजी से काम करता है और कम प्रोग्राम मेमोरी पर कब्जा कर लेता है।
हमने रास्पबेरी पाई के साथ और Arduino के साथ OLED को भी बाधित किया है।
आवश्यक सामग्री:
- ईएसपी 32
- DS3231 RTC मॉड्यूल
- 7 पिन 128 × 64 ओएलईडी डिस्प्ले मॉड्यूल (SSD1306)
- नर-मादा के तार
- ब्रेड बोर्ड
सर्किट आरेख:
RTC3231 को ESP बोर्ड से जोड़ने के लिए सर्किट आरेख नीचे दिया गया है:
RTC DS3231 IC संचार के I2C मोड का उपयोग करता है । इसमें SCL, SDA, Vcc और GND पिन आते हैं। ESP32 के साथ RTC मॉड्यूल का कनेक्शन नीचे दिया गया है:
- आरटीसी का SCL -> ESP32 का SCL यानी पिन D22
- आरटीसी का एसडीए -> ईएसपी 32 का एसडीए यानी पिन डी 21
- आरटीसी का जीएनडी -> ईएसपी 32 का जीएनडी
- आरटीसी के Vcc -> ESP32 का Vcc
यहां, हम अपने 128 × 64 ओएलईडी डिस्प्ले मॉड्यूल (SSD1306) को ESP32 से जोड़ने के लिए SPI मोड का उपयोग कर रहे हैं । तो, यह 7 पिन का उपयोग करेगा। ESP32 के साथ कनेक्शन इस प्रकार हैं:
- सीएस (चिप का चयन) ओएलईडी का पिन -> ईएसपी 32 का पिन डी 5
- OLED का DC पिन -> ESP32 का पिन D4
- OLED का RES पिन -> ESP32 का पिन D2
- OLED का SDA पिन -> पिन D23 यानी ESP32 का MOSI
- OLED का SCK पिन -> PIN D18 यानी ESP32 का SCK
- OLED का Vdd -> ESP32 का Vcc
- OLED का GND -> ESP32 का GND
आपको अपने ESP32 के लिए बोर्ड फ़ाइलों की आवश्यकता है। ESP32 देव किट के लिए Arduino IDE के बोर्ड मैनेजर ड्रॉप डाउन मेनू में चेक करें। यदि यह वहां नहीं है तो नीचे दिए गए लिंक में दिए गए चरणों का पालन करें:
circuitdigest.com/microcontroller-projects/getting-started-with-esp32-with-arduino-ide
आप इस परियोजना के लिए ईएसपी 12 का उपयोग भी कर सकते हैं, ईएसपी 12 का उपयोग करने के लिए यहां जानें।
कोड स्पष्टीकरण:
ESP32 के लिए पूरा कोड लेख के अंत में दिया गया है। यहां हम कोड के कुछ महत्वपूर्ण भागों के बारे में बता रहे हैं।
हमें अपने कोड में उपयोग करने के लिए कई पुस्तकालयों की आवश्यकता है जो नीचे दिए गए लिंक से डाउनलोड किए जा सकते हैं:
1. Adafruit_SSD1306:
2. एसपीआई:
3. Adafruit_GFX:
4. RTClib:
इसलिए हमने सभी पुस्तकालयों को शामिल किया है
#शामिल
फिर OLED के सभी पिन को परिभाषित करें। आपको RTC मॉड्यूल के लिए पिन को परिभाषित करने की आवश्यकता नहीं है क्योंकि ये पिन पहले से ही WIRE लाइब्रेरी में परिभाषित हैं।
#define OLED_MOSI 23 #define OLED_CLK 18 #define OLED_DC 4 #define OLED_CS 5 #define OLED_RESET 2 Adafruit_SSD1306 प्रदर्शन (OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
में सेटअप समारोह, हम एक समारोह कॉल करेंगे rtc.adjust (DATETIME (__ DATE__, __TIME__)) जो हमारे पीसी समय के अनुसार समय निर्धारित होगा।
शून्य सेटअप () { Serial.begin (9600); अगर (rtc.begin ()) {Serial.println ( "RTC नहीं ढूँढ सका"); जबकि (1); } rtc.adjust (दिनांक समय (__ DATE__, __TIME__));
उसके बाद हम OLED पर दिखाने के लिए डिस्प्ले फंक्शन्स कहते हैं।
display.begin (SSD1306_SWITCHCAPVCC); display.clearDisplay (); display.setTextColor (WHITE); //display.startscrollright(0x00, 0x0F); // आप ओलेड डिस्प्ले पर अपने टेक्स्ट को स्क्रॉल करने के लिए इस लाइन को अनइंस्टॉल कर सकते हैं ।setTextSize (2); display.setCursor (0,5); display.print ("क्लॉक"); // यह 3 सेकंड के लिए OLED पर घड़ी प्रदर्शित करेगा। डिस्प्ले (); देरी (3000); }
फिर अंत में लूप फंक्शन में, हम अपना समय डेटाइम अब प्री-डिफाइन्ड वेरिएबल में स्टोर करेंगे और डिस्प्ले फ़ंक्शन का उपयोग करके समय प्रदर्शित करेंगे जैसे कि सेटटेक्स्टाइज, सेटकोरसॉर, आदि। इन्हें अपनी जरूरत के अनुसार सेट करें और ओएलईडी को दिखाने के लिए डिस्प्ले.प्रिंटलेन फ़ंक्शन का उपयोग करें ।
शून्य लूप () { DateTime अब = rtc.now (); display.clearDisplay (); display.setTextSize (2); display.setCursor (75,0); display.println (now.second (), DEC);
तो यह है कि आप ESP32 का उपयोग करके OLED पर समय कैसे प्रदर्शित कर सकते हैं और जैसा कि आप जानते हैं कि ESP अपनी IoT क्षमताओं के लिए जाना जाता है, इसलिए आप इसका उपयोग इंटरनेट पर समय प्रकाशित करने के लिए कर सकते हैं। अगले लेख में हम आपको बिना किसी आरटीसी मॉड्यूल का उपयोग किए ईएसपी पर इंटरनेट टाइम प्रदर्शित करने के लिए दिखाएंगे।