ஆர்.டி.சி அல்லது ரியல் டைம் கடிகாரம் என்பது எலக்ட்ரானிக்ஸ் மற்றும் உட்பொதிக்கப்பட்ட சாதனங்களில் பொதுவாக பயன்படுத்தப்படும் தொகுதி ஆகும். ஆனால் ஆர்டிசியின் சிக்கல் என்னவென்றால், கணினிகளில் உள்ள மைக்ரோசிப்கள் அவ்வளவு துல்லியமாக இல்லை, அவை உள்ளூர் சாதனத்தின் நேரத்தை மட்டுமே வழங்க முடியும். மறுபுறம், என்.டி.பி சேவையகங்களிலிருந்து நேரத்தைப் பெறுவதற்கு இணையத்தைப் பயன்படுத்துவது நேரத்தைப் பெறுவதற்கான சிறந்த தீர்வாகும், ஏனெனில் இது மிகவும் துல்லியமானது மற்றும் உலகின் எந்த புவியியல் பகுதியினதும் நேரத்தை வழங்க முடியும். என்டிபி சேவையகங்களைப் பயன்படுத்தி உலகின் எந்த இடத்தின் நேரத்தையும் பெற எங்களுக்கு ஒரு வைஃபை தொகுதி மற்றும் இணைய அணுகல் தேவை. இந்த டுடோரியலில், என்டிபி சேவையகங்களிலிருந்து தற்போதைய நேரத்தையும் தேதியையும் பெற ESP8266 NodeMCU ஐப் பயன்படுத்துவோம், அதை OLED டிஸ்ப்ளேயில் காண்பிப்போம்.
பிணைய நேர நெறிமுறை (என்டிபி)
கணினி நெட்வொர்க்குகளுக்கு இடையில் கடிகாரங்களை ஒத்திசைப்பதற்கான பழமையான நெட்வொர்க்கிங் இணைய நெறிமுறை (ஐபி) ஒன்றாகும். இது 1981 ஆம் ஆண்டில் டெலாவேர் பல்கலைக்கழகத்தின் டேவிட் எல். மில்ஸால் வடிவமைக்கப்பட்டது. இந்த நெறிமுறை பல நெட்வொர்க்குகளை ஒருங்கிணைந்த யுனிவர்சல் நேரத்துடன் (யுடிசி) சில மில்லி விநாடிகளுக்குள் ஒத்திசைக்க பயன்படுகிறது. உலக கடிகாரம் மற்றும் நேரத்தை ஒழுங்குபடுத்தும் முதன்மை நேர தரநிலை UTC ஆகும். வெவ்வேறு புவியியல் இருப்பிடங்களுக்கு UTC மாறாது மற்றும் மாறுபடும். என்டிபி யுடிசியை நேரக் குறிப்பாகப் பயன்படுத்துகிறது மற்றும் இணையம் முழுவதும் துல்லியமான மற்றும் ஒத்திசைக்கப்பட்ட நேரத்தை வழங்குகிறது.
என்.டி.பி ஒரு படிநிலை கிளையன்ட்-சர்வர் மாதிரியில் வேலை செய்கிறது. சிறந்த மாடலில் அணு கடிகாரங்கள், ரேடியோ அலைகள், ஜி.பி.எஸ், ஜி.எஸ்.எம் போன்ற “ஸ்ட்ராட்டம் 0” எனப்படும் குறிப்பு கடிகாரங்கள் உள்ளன, அவை செயற்கைக்கோளிலிருந்து நேரத்தைப் பெறுகின்றன. அடுக்கு 0 இலிருந்து நேரத்தைப் பெறும் சேவையகங்கள் “அடுக்கு 1” என்றும், அடுக்கு 1 இலிருந்து நேரத்தைப் பெறும் சேவையகங்கள் “அடுக்கு 2” என்றும் அழைக்கப்படுகின்றன. இது தொடர்கிறது மற்றும் ஒவ்வொரு கட்டத்திற்கும் பிறகு நேரத்தின் துல்லியம் குறைந்து கொண்டே செல்கிறது. ஒத்திசைக்க கிடைக்கக்கூடிய பல நேர மூலங்களில் சிறந்ததை என்டிபி தானாகவே தேர்வுசெய்கிறது, இது தவறு-சகிப்புத்தன்மை வாய்ந்த நெறிமுறையை உருவாக்குகிறது.
எனவே இங்கே இந்த திட்டத்தில், நாங்கள் என்டிபி சேவையகத்திலிருந்து ESP8266 NodeMCU ஐப் பயன்படுத்தி நேரத்தைப் பெறுகிறோம், அதை OLED டிஸ்ப்ளேயில் காண்பிக்கிறோம். முந்தைய டுடோரியலில் ESP32 ஐப் பயன்படுத்துவதன் மூலம் இதே வகையான இணைய கடிகாரம் கட்டப்பட்டுள்ளது.

ESP8266 துல்லியமான நேரத்தைப் பெற இணையத்தைப் பயன்படுத்தி என்டிபி சேவையகங்களை அணுகலாம். இங்கே என்டிபி கிளையன்ட்-சர்வர் பயன்முறையில் இயங்குகிறது, ஈஎஸ்பி 8266 கிளையன்ட் சாதனமாக செயல்படுகிறது மற்றும் யுடிபி (பயனர் டேட்டாகிராம் புரோட்டோகால்) ஐப் பயன்படுத்தி என்டிபி சேவையகங்களுடன் இணைகிறது. கிளையன் ஒரு கோரிக்கை பாக்கெட்டை என்டிபி சேவையகங்களுக்கு அனுப்புகிறார், அதற்கு பதிலாக என்.டி.பி ஒரு நேர முத்திரை பாக்கெட்டை அனுப்புகிறது, இது துல்லியம், நேர மண்டலம், யுனிக்ஸ் நேர முத்திரை போன்ற தகவல்களைக் கொண்டுள்ளது. பின்னர் கிளையன்ட் தேதி மற்றும் நேர விவரங்களை பிரிக்கிறது, அவை தேவைக்கேற்ப பயன்பாடுகளில் மேலும் பயன்படுத்தப்படலாம்.
கூறுகள் தேவை
- ஒரே வண்ணமுடைய 7-முள் SSD1306 0.96 ”OLED காட்சி
- ESP8266 NodeMCU
- மைக்ரோ யூ.எஸ்.பி கேபிள்
- ப்ரெட்போர்டு
- ஆண் முதல் ஆண் ஜம்பர் கம்பிகள்
சுற்று வரைபடம் மற்றும் இணைப்புகள்
இந்த 7-முள் OLED காட்சி SPI நெறிமுறையைப் பயன்படுத்தி ESP8266 தொகுதிடன் தொடர்புகொள்கிறது, இணைய நேரத்தைக் காண்பிக்க OLED SPI ஊசிகளை NodeMCU உடன் இணைக்க சுற்று வரைபடம் மற்றும் இணைப்பு அட்டவணை கீழே உள்ளன.

|
இல்லை. |
OLED காட்சி |
NodeMCU |
|
1 |
ஜி.என்.டி. |
ஜி.என்.டி. |
|
2 |
வி.டி.டி. |
3.3 வி |
|
3 |
எஸ்.சி.கே. |
டி 5 |
|
4 |
MOSI (SPI) அல்லது SDA (I2C) |
டி 7 |
|
5 |
மீட்டமை |
டி 3 |
|
6 |
டி.சி. |
டி 2 |
|
7 |
சி.எஸ் |
டி 8 |
இந்த மோனோக்ரோம் 7-பின் OLED டிஸ்ப்ளே மற்றும் ESP8266 NodeMCU உடன் அதன் இடைமுகத்தைப் பற்றி மேலும் அறிய, இணைப்பைப் பின்தொடரவும்.
குறியீடு விளக்கம்
முதலில் நாம் என்டிபி நூலகத்தை ESP8266 இல் பதிவிறக்கி நிறுவ வேண்டும். என்டிபி கிளையண்டிற்கு பல நூலகங்கள் உள்ளன. அவற்றில் ஏதேனும் ஒன்றை நீங்கள் Arduino IDE இலிருந்து நிறுவலாம். இந்த டுடோரியலில் நான் தரனாய்ஸால் என்டிபி கிளையண்ட் நூலகத்தை நிறுவியுள்ளேன், ஏனெனில் இது பயன்படுத்த எளிதானது மற்றும் என்டிபி சேவையகங்களிலிருந்து தேதி மற்றும் நேரத்தைப் பெறுவதற்கான செயல்பாடுகளைக் கொண்டுள்ளது. ESP8266 NodeMCU ஐ Arduino IDE ஐப் பயன்படுத்தி எளிதாக திட்டமிடலாம்.

என்டிபி நூலகத்தை நிறுவ, முதலில் மேலே உள்ள இணைப்பைப் பயன்படுத்தி நூலகத்தைப் பதிவிறக்கி, பின்னர் ஆர்டுயினோ ஐடிஇ பயன்படுத்தி நிறுவவும். அதை நிறுவ ஸ்கெட்ச்> நூலகத்தைச் சேர்>.ZIP நூலகத்தைச் சேர் , பின்னர் நீங்கள் ஜிப் கோப்புறையை பதிவிறக்கம் செய்த இடத்திற்குச் சென்று ஜிப் கோப்புறையைத் திறந்து Arduino IDE ஐ மறுதொடக்கம் செய்யுங்கள்.


NTPClient நூலகம் எடுத்துக்காட்டுகளுடன் வருகிறது. Arduino IDE மற்றும் Goto எடுத்துக்காட்டுகள்> NTPClient> மேம்பட்டதைத் திறக்கவும் . இந்த ஓவியத்தில் கொடுக்கப்பட்ட குறியீடு சீரியல் மானிட்டரில் என்டிபி சேவையகத்திலிருந்து நேரத்தைக் காட்டுகிறது. தற்போதைய நேரம் மற்றும் தேதியை OLED காட்சியில் காண்பிக்க இந்த ஓவியத்தைப் பயன்படுத்துவோம்.

இந்த டுடோரியலின் முடிவில் முழுமையான குறியீடு கிடைக்கிறது, குறியீட்டின் சில முக்கியமான பகுதியை இங்கே விளக்கினேன்.
நெட்வொர்க்குடன் இணைக்க ESP8266WiFi நூலகம் ESP8266 குறிப்பிட்ட Wi-Fi நடைமுறைகளை வழங்குகிறது. யுடிபி தொகுப்புகளை அனுப்புவதையும் பெறுவதையும் WiFiUDP.h கையாளுகிறது. OLED ஐ NodeMCU உடன் இடைமுகப்படுத்த SPI நெறிமுறையைப் பயன்படுத்துவதால், “SPI.h” நூலகத்தை இறக்குமதி செய்வோம். OLED காட்சிக்கு “Adafruit_GFX.h” மற்றும் “Adafruit_SSD1306.h” ஆகியவை பயன்படுத்தப்படுகின்றன.
#சேர்க்கிறது
எங்கள் OLED அளவு 128x64 எனவே திரை அகலத்தையும் உயரத்தையும் முறையே 128 மற்றும் 64 ஆக அமைத்து வருகிறோம். எனவே SPI தகவல்தொடர்புக்காக NodeMCU உடன் இணைக்கப்பட்ட OLED ஊசிகளுக்கான மாறிகள் வரையறுக்கவும்.
வரையறுத்து SCREEN_WIDTH 128 // ஓல்இடி காட்சி அகலம், பிக்சல்கள் உள்ள SCREEN_HEIGHT 64 // ஓல்இடி காட்சி உயரம், பிக்சல்கள் உள்ள வரையறுக்க : // SSD1306 காட்சிக்கு பிரகடனம் மென்பொருள் SPI (இயல்புநிலை வழக்கு) பயன்படுத்தி இணைக்கப்பட்டுள்ளது வரையறுத்து OLED_MOSI D7 வரையறுத்து OLED_CLK D5 வரையறுத்து OLED_DC D2 # OLED_CS D8 ஐ வரையறுக்கவும் # OLED_RESET D3 ஐ வரையறுக்கவும்
Adafruit_SSD1306 காட்சி (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
கீழேயுள்ள குறியீடுகளின் வரிகளில் “your_ssid” மற்றும் “your_password” ஐ உங்கள் Wi-Fi SSID மற்றும் கடவுச்சொல்லுடன் மாற்றவும்.
const char * ssid = "your_ssid"; const char * password = "your_password";
WiFi.begin செயல்பாட்டிற்கு SSID மற்றும் கடவுச்சொல்லைக் கொடுத்து WI-Fi இணைப்பை அமைக்கவும். ESP8266 இன் இணைப்பு NodeMCU உடன் இணைக்க சிறிது நேரம் எடுக்கும், எனவே அது இணைக்கப்படும் வரை நாங்கள் காத்திருக்க வேண்டும்.
WiFi.begin (ssid, password); (WiFi.status ()! = WL_CONNECTED) { தாமதம் (500); சீரியல்.பிரண்ட் ("."); }
தேதி மற்றும் நேரத்தைக் கோர, என்டிபி சேவையகங்களின் முகவரியுடன் நேர கிளையண்டைத் தொடங்கவும். சிறந்த துல்லியத்திற்காக உங்கள் புவியியல் பகுதிக்கு நெருக்கமான என்டிபி சேவையகங்களின் முகவரியைத் தேர்வுசெய்க. உலகெங்கிலும் இருந்து சேவையகங்களை வழங்கும் “ pool.ntp.org ” ஐ இங்கே பயன்படுத்துகிறோம். ஆசியாவிலிருந்து சேவையகங்களைத் தேர்வுசெய்ய விரும்பினால் “ asia.pool.ntp.org ” ஐப் பயன்படுத்தலாம். timeClient உங்கள் நேர மண்டலத்தின் மில்லி விநாடிகளில் UTC நேர ஆஃப்செட்டையும் எடுக்கிறது. உதாரணமாக, இந்தியாவுக்கான யுடிசி ஆஃப்செட் +5: 30 ஆகும், எனவே இந்த ஆஃப்செட்டை மில்லி விநாடிகளில் 5 * 60 * 60 + 30 * 60 = 19800 க்கு சமமாக மாற்றுகிறோம்.
|
பரப்பளவு |
UTC நேர ஆஃப்செட் (மணிநேரம் மற்றும் நிமிடங்கள்) |
UTC நேர ஆஃப்செட் (விநாடிகள்) |
|
இந்தியா |
+5: 30 |
19800 |
|
லண்டன் |
0:00 |
0 |
|
நியூயார்க் |
-5: 00 |
-18000 |
WiFiUDP ntpUDP; NTPClient timeClient (ntpUDP, "pool.ntp.org", 19800,60000);
காட்சியைத் தொடங்க 3.3 வி உள்நாட்டில் உருவாக்க SSD1306_SWITCHCAPVCC வழங்கப்படுகிறது. OLED தொடங்கும் போது அது உரை அளவு 2 உடன் “ WIRCOME TO CIRCUIT DIGEST ” மற்றும் 3 வினாடிகளுக்கு நீல நிறத்தைக் காண்பிக்கும்.
if (! display.begin (SSD1306_SWITCHCAPVCC)) { Serial.println (F ("SSD1306 ஒதுக்கீடு தோல்வியுற்றது")); for (;;); // தொடர வேண்டாம், என்றென்றும் லூப் செய்யுங்கள் } display.clearDisplay (); display.setTextSize (2); // 2X அளவிலான உரை display.setTextColor (BLUE) ஐ வரையவும் ; display.setCursor (5, 2); display.println ("வரவேற்கிறோம்"); display.println ("CIRCUIT"); display.println ("DIGEST"); display.display (); தாமதம் (3000);
என்டிபி சேவையகங்களிலிருந்து தேதி மற்றும் நேரத்தை அமைக்க தொடக்க () செயல்பாட்டைப் பயன்படுத்தி என்டிபி கிளையன்ட் துவக்கப்படுகிறது .
timeClient.begin ();
என்டிபி சேவையகங்களுக்கு நாங்கள் கோரும்போதெல்லாம் தேதி மற்றும் நேரத்தைப் பெற புதுப்பிப்பு () செயல்பாடு பயன்படுத்தப்படுகிறது.
timeClient.update ();
சீட் மானிட்டரில் நேரத்தை அச்சிட 115200 என்ற பாட் வீதம் அமைக்கப்பட்டுள்ளது.
சீரியல்.பெஜின் (115200); Serial.println (timeClient.getFormattedTime ());
getHours (), getMinutes (), getSeconds (), getDay ஆகியவை நூலக செயல்பாடாகும், மேலும் இது NTP சேவையகத்திலிருந்து தற்போதைய மணி, நிமிடங்கள், விநாடிகள் மற்றும் நாள் ஆகியவற்றை வழங்குகிறது. AM மற்றும் PM க்கு இடையில் நேரத்தை வேறுபடுத்துவதற்கு கீழே உள்ள குறியீடு பயன்படுத்தப்படுகிறது. GetHours () ஐப் பயன்படுத்தும் நேரம் 12 ஐ விட அதிகமாக இருந்தால், அந்த நேரத்தை பிரதமராக அதன் AM ஆக அமைப்போம்.
int hh = timeClient.getHours (); int mm = timeClient.getMinutes (); int ss = timeClient.getSeconds (); int நாள் = timeClient.getDay (); if (hh> 12) { hh = hh-12; display.print (hh); display.print (":"); display.print (மிமீ); display.print (":"); display.print (ss); display.println ("PM"); } else { display.print (hh); display.print (":"); display.print (மிமீ); display.print (":"); display.print (ss); display.println ("AM"); } int நாள் = timeClient.getDay (); display.println ("'" + arr_days + "'");
getFormattedDate () என்டிபி சேவையகத்திலிருந்து “yyyy-mm-dd” வடிவத்தில் தேதியைப் பெற பயன்படுத்தப்படுகிறது. இந்த செயல்பாடு தேதி மற்றும் நேரத்தை “yyyy-mm-dd T hh: mm: ss வடிவத்தில் தருகிறது. ஆனால் எங்களுக்கு தேதி மட்டுமே தேவை, எனவே தேதி_நேர வடிவத்தில் சேமிக்கப்பட்டுள்ள இந்த சரத்தை “டி” வரை பிரிக்க வேண்டும், இது அடி மூலக்கூறு () செயல்பாட்டின் மூலம் செய்யப்படுகிறது, பின்னர் தேதியை “தேதி” மாறியில் சேமிக்க வேண்டும்.
date_time = timeClient.getFormattedDate (); int index_date = date_time.indexOf ("T"); சரம் தேதி = தேதி_நேரம்.சப்ஸ்ட்ரிங் (0, குறியீட்டு_ தேதி); Serial.println (தேதி); display.println (தேதி); display.display ();
இந்த எப்படி இருக்கிறது ஓல்இடி இணைய நேரம் கடிகாரம் இறுதியாக இருக்கும்:

