ESP32 NTP கிளையண்ட்-சர்வர்: தேதி மற்றும் நேரத்தைப் பெறவும் - Arduino IDE

Esp32 Ntp Kilaiyant Carvar Teti Marrum Nerattaip Peravum Arduino Ide



ESP32 என்பது மைக்ரோகண்ட்ரோலர் அடிப்படையிலான இன்டர்நெட் ஆஃப் திங்ஸ் (IoT) போர்டு ஆகும், இது பரந்த அளவிலான சாதனங்களுடன் இணைக்கப்படலாம். IoT அடிப்படையிலான திட்டங்களில் ESP32 பரவலாகப் பயன்படுத்தப்படுகிறது.

ESP32 அல்லது வேறு எந்த மைக்ரோகண்ட்ரோலர் நேரத்திலும் வேலை செய்வது மிகவும் முக்கியமானது, ஏனெனில் உள்ளமைக்கப்பட்ட டைமர் துல்லியமாக இல்லை, எனவே நாம் ஒரு பயன்படுத்தலாம் என்டிபி சேவையகம் நிகழ்நேரத்தைப் பெறவும், பின்னர் ESP32 குறியீட்டிற்குள் பயன்படுத்தக்கூடிய மாறியில் சேமிக்கவும்.

நெட்வொர்க் நேர நெறிமுறை (NTP) கணினி கடிகாரத்தை மிகவும் துல்லியமாகவும் துல்லியமாகவும் ஒத்திசைக்கும் ஒருங்கிணைந்த யுனிவர்சல் நேரத்தை (UTC) பயன்படுத்துகிறது. சிறிய நெட்வொர்க்குகளில் NTP ஆனது 1 ms போன்ற துல்லியமான கடிகாரங்களை நமக்கு வழங்க முடியும், அதே நேரத்தில் LAN (லோக்கல் ஏரியா நெட்வொர்க்) NTP போன்ற பெரிய நெட்வொர்க்குகள் இணையத்தில் பல்லாயிரக்கணக்கான மில்லி விநாடிகளில் துல்லியத்தை வழங்க முடியும். இந்த துல்லியமான கடிகாரம் ESP32 ஐப் பயன்படுத்தி ஒரு குறிப்பிட்ட நேரத்தில் வழிமுறைகளை இயக்க முடியும்.







இந்த வழிகாட்டி பின்வரும் உள்ளடக்கங்களைக் கொண்டுள்ளது:



  1. என்டிபி அறிமுகம் (நெட்வொர்க் டைம் புரோட்டோகால்)
  2. NTP சேவையகம் மற்றும் நேர அமைப்புகள்



  3. printLocalTime() செயல்பாட்டைப் பயன்படுத்தி நிகழ்நேரத்தை அச்சிடுதல்





1: என்டிபி அறிமுகம் (நெட்வொர்க் டைம் புரோட்டோகால்)

NTP என்பதன் சுருக்கம் என் etwork டி செய்ய பி ரோட்டோகால் என்பது சாதனங்களின் நேரத்தை அவற்றின் நேர மண்டலத்துடன் ஒத்திசைக்கப் பயன்படும் ஒரு தரநிலையாகும். நெட்வொர்க் நேர நெறிமுறையானது அனைத்து நெட்வொர்க் சாதனங்களின் நேரத்தையும் UTC உடன் ஒத்திசைக்கிறது, இது ஒருங்கிணைந்த உலகளாவிய நேரம் என்றும் அழைக்கப்படுகிறது.

UTC GMT (கிரீன்விச் சராசரி நேரம்) போன்றது ஆனால் அது மாறாது மற்றும் உலகம் முழுவதும் ஒரே மாதிரியாக உள்ளது. UTC ஐப் பயன்படுத்துவதற்குப் பின்னால் உள்ள முக்கிய யோசனை, நேரத்தைப் படிப்பதாகும் என்டிபி சேவையகம் மற்றும் UTC ஆஃப்செட்டைப் பயன்படுத்துவதன் மூலம் நமது நேர மண்டலத்தின்படி உள்ளூர் நேரத்தைப் பெறலாம்.



2: NTP சேவையகம் மற்றும் நேர அமைப்புகள்

NTP சேவையகத்திலிருந்து நேரத்தைப் படிக்க, இந்த மாறிகளைப் பயன்படுத்தி குறியீட்டிற்குள் பின்வரும் மாறிகளை அறிவிக்க வேண்டும், NTP சேவையகத்திலிருந்து நேரத்தைப் பெறலாம்.

  • என்டிபி சர்வர்
  • GMT ஆஃப்செட்
  • பகல்நேர ஆஃப்செட்

2.1: என்டிபி சர்வர்

இருந்து கால அவகாசம் கோருவோம் pool.ntp.org இது சர்வரில் உலகளாவிய நேரத் தரவைக் கொண்டுள்ளது மற்றும் இந்த பூலைப் பயன்படுத்தி எவரும் தங்கள் உள்ளூர் நேரத்தைக் கோரலாம். நாங்கள் அணுகக்கூடிய வேறு சில சேவையகங்கள் பின்வருமாறு:

பகுதி ஹோஸ்ட் பெயர்
உலகம் முழுவதும் pool.ntp.org
ஆசியா asia.pool.ntp.org
ஐரோப்பா europe.pool.ntp.org
வட அமெரிக்கா North-america.pool.ntp.org
ஓசியானியா oceania.pool.ntp.org
தென் அமெரிக்கா south-america.pool.ntp.org

2.2: GMT ஆஃப்செட்

GMT ஆஃப்செட், GMTக்கு நீங்கள் வாழும் நேர மண்டலத்திற்கு இடையே உள்ள மணிநேர வித்தியாசத்தை விவரிக்கிறது. எடுத்துக்காட்டாக, அமெரிக்காவின் நேர மண்டலத்தைப் பயன்படுத்தினால், அதை அமைக்கலாம் UTC = -11:00 .

2.3: டேலைட் ஆஃப்செட்

இங்கே பகல்நேர ஆஃப்செட் என்பது பகல்-சேமிப்பு நேரமாகும், இது வழக்கமாக 1 மணிநேரமாக எடுத்துக்கொள்ளப்படுகிறது. பகல் சேமிப்பு நேரம் என்பது கோடையில் கடிகாரத்தை 1 மணிநேரம் முன்னோக்கி நகர்த்துவது மற்றும் குளிர்காலத்தில் அவற்றை மீண்டும் மாற்றுவது. இந்த கட்டளை பொதுவாக தனிப்பயன் நேர மண்டலம் பயன்படுத்தப்படும் மற்றும் பகல் சேமிப்பு விதி பயன்படுத்தப்படும்.

NTP சேவையகத்தின் அடிப்படைகளை நாங்கள் உள்ளடக்கியிருப்பதால், இப்போது NTP சேவையகத்திற்கு ஒரு கோரிக்கையை எவ்வாறு அனுப்புவது என்பதைச் சரிபார்ப்போம் மற்றும் Arduino IDE குறியீட்டைக் கொண்டு ESP32 ஐப் பயன்படுத்தி உள்ளூர் நேரத்தைப் படிப்போம்.

3: printLocalTime() செயல்பாட்டைப் பயன்படுத்தி நிகழ்நேரத்தை அச்சிடுதல்

தி printLocalTime() செயல்பாடு அழைக்கும் getLocalTime() NTP சேவையகத்திற்கு கோரிக்கையை அனுப்பும் செயல்பாடு மற்றும் பெறப்பட்ட தேதி மற்றும் நேரத்தை உள்ளே சேமிக்கிறது நேரம் தகவல் மாறி.

3.1: நிகழ்நேரத்தில் அச்சிடுவதற்கான குறியீடு

என்டிபி கிளையன்ட் சர்வருக்கு கொடுக்கப்பட்ட குறியீட்டை Arduino IDE எடிட்டரில் ஒட்டவும். PC உடன் ESP32 ஐ இணைக்கவும், COM போர்ட்டைத் தேர்ந்தெடுத்து குறியீட்டைப் பதிவேற்றவும்.

# அடங்கும்
# 'time.h' அடங்கும்
கான்ஸ்ட் சார் * ssid     = “REPLACE_WITH_YOUR_SSID”;
கான்ஸ்ட் சார் * கடவுச்சொல் = “REPLACE_WITH_YOUR_PASSWORD”;
கான்ஸ்ட் சார் * ntpServer = 'pool.ntp.org' ;
நீளம்  gmtOffset_sec = 18000 ; /* GMT ஆஃப்செட் + 5 மணிநேரம் ( 18000 SEC ) */
const int   daylightOffset_sec = 3600 ; /* 1 மணிநேரம் பகல்நேர ஆஃப்செட் */
void printLocalTime ( )
{
struct tm timeinfo;
என்றால் ( ! GetLocalTime ( & நேரத் தகவல் ) ) {
Serial.println ( 'நேரம் பெற முடியவில்லை' ) ;
திரும்ப ;
}
Serial.println ( & நேரத் தகவல், '%A, %B %d %Y %H:%M:%S' ) ;
}
வெற்றிட அமைப்பு ( )
{
தொடர்.தொடங்கு ( 115200 ) ;
// WiFi உடன் இணைக்கவும்
Serial.printf ( '%s உடன் இணைக்கிறது' , ssid ) ;
WiFi.தொடங்கு ( ssid, கடவுச்சொல் ) ;
போது ( வைஃபை.நிலை ( ) ! = WL_CONNECTED ) {
தாமதம் ( 500 ) ;
தொடர்.அச்சு ( '.' ) ;
}
Serial.println ( 'இணைக்கப்பட்டது' ) ;
// init மற்றும் கிடைக்கும் நேரம்
configTime ( gmtOffset_sec, daylightOffset_sec, ntpServer ) ;
அச்சு லோக்கல் டைம் ( ) ;
// வைஃபை இணைப்பை துண்டிக்கவும் என அது இனி தேவை இல்லை
WiFi.disconnect(உண்மை);
WiFi.mode(WIFI_OFF);
}
வெற்றிட வளையம்()
{
தாமதம் (1000);
printLocalTime();
}

வைஃபை மற்றும் நேர நூலகத்தை உள்ளடக்கியதன் மூலம் குறியீடு தொடங்கப்பட்டது. வைஃபை ESP32 ஐ நெட்வொர்க்குடன் இணைக்க நூலகம் உதவும் நேரம் நூலகம் NTP சேவையக ஒத்திசைவைக் கையாளும்.

அதன் பிறகு ESP32 இணைக்கப்படும் பிணையத்தின் SSID மற்றும் கடவுச்சொல் வரையறுக்கப்படுகிறது. உங்கள் நெட்வொர்க் நற்சான்றிதழை இங்கே மாற்றவும். அதன் பிறகு நாங்கள் வரையறுத்துள்ளோம் GMT ஆஃப்செட் 18000 நொடி, அதாவது (UTC+5 மணிநேரம்). உங்கள் சொந்த நேர மண்டல UTC ஐ இங்கே மாற்றலாம். பின்பற்றவும் இணைப்பு பெற GMT ஆஃப்செட் உங்கள் நேர மண்டலத்திற்கு.

கூடுதலாக NTP சேவையக முகவரி கட்டளையைப் பயன்படுத்தி குறிப்பிடப்படுகிறது:

கான்ஸ்ட் சார் * ntpServer = 'pool.ntp.org' ;

இந்த கட்டளை தானாகவே உங்களைத் தேடும் நேர சேவையகத்தைத் தேர்ந்தெடுக்கும். இருப்பினும், இல் விளக்கப்பட்டுள்ள NTP சேவையகங்களைப் பயன்படுத்தி நேர மண்டலத்தையும் அமைக்கலாம் என்டிபி சர்வர் பிரிவு.

முடிவில் ESP32 ஐ NTP கிளையண்ட்டாக உள்ளமைத்து தேதி மற்றும் நேரத்தைப் பெறுவோம். அதற்காக நாங்கள் பயன்படுத்தினோம் configTime() செயல்பாடு.

இறுதியாக, பயன்படுத்தி printLocalTime() செயல்பாடு, தற்போதைய தேதி மற்றும் நேரம் தொடர் மானிட்டரில் அச்சிடப்படும். இந்த செயல்பாடு ஒரு நேர அமைப்பைக் கொண்டுள்ளது டிஎம் இது அனைத்து தகவல்களையும் சேமிக்கிறது நேரம் தகவல் மாறி.

பின்வரும் கட்டளைகள் குறிக்கின்றன நேரம் தகவல் கட்டமைப்பு.

Serial.println ( & நேரத் தகவல், '%A, %B %d %Y %H:%M:%S' ) ;

நேரக் கட்டமைப்பின் ஒவ்வொரு எழுத்தும் ஒரு குறிப்பிட்ட தகவலுடன் தொடர்புடையது:

குறிப்பான்கள் தகவல்
%A ஒரு வாரத்தில் திரும்பும் நாள்
%B திரும்பும் மாதம்
%d மாதத்தின் திரும்பும் நாள்
% ஒய் நடப்பு ஆண்டு திரும்பவும்
%H தற்போதைய மணிநேரத்தை திரும்பப் பெறவும்
% எம் தற்போதைய நிமிடங்களைத் திரும்பு
%S தற்போதைய வினாடிகளைத் திரும்பு

3.2: வெளியீடு

குறியீட்டைப் பதிவேற்றிய பிறகு ESP32 WiFi நெட்வொர்க்குடன் இணைக்கப்பட்டு, தற்போதைய தேதி மற்றும் நேரத்தைப் பெற NTP சேவையகத்திற்கு கோரிக்கையை அனுப்பும். பின்வரும் வெளியீட்டை Arduino தொடர் மானிட்டரில் காணலாம்.

எனது PC மற்றும் ESP32 இல் தற்போதைய நேரம் பொருந்துகிறது.

ESP32 ஐ கிளையண்ட்டாகப் பயன்படுத்தி NTP சர்வரிலிருந்து நேரத்தை வெற்றிகரமாகப் படித்தோம்.

முடிவுரை

வெளியீட்டை உருவாக்க குறிப்பிட்ட நேரங்களில் டைம் ஸ்டாம்பிங் மற்றும் வழிமுறைகளை செயல்படுத்துதல் போன்ற பயன்பாடுகளுக்கு நேரம் மிகவும் முக்கியமானது. உள்ளமைக்கப்பட்ட டைமர்கள் அவ்வளவு துல்லியமாக இல்லை, எனவே தற்போதைய நேரத்தையும் தேதியையும் படிக்க NTP சேவையகத்தைப் பயன்படுத்தலாம். இந்த நேரத்தை எங்கள் குறியீட்டிற்குள் பயன்படுத்த ஒரு மாறிக்குள் சேமிக்க முடியும். ESP32ஐப் பயன்படுத்தி உலகெங்கிலும் உள்ள எந்த நேர மண்டலத்தின் துல்லியமான நேரத்தைப் பெற இந்தப் பாடம் உதவுகிறது.