ESP32 NTP క్లయింట్-సర్వర్: తేదీ మరియు సమయాన్ని పొందండి - Arduino IDE

Esp32 Ntp Klayint Sarvar Tedi Mariyu Samayanni Pondandi Arduino Ide



ESP32 అనేది మైక్రోకంట్రోలర్-ఆధారిత ఇంటర్నెట్ ఆఫ్ థింగ్స్ (IoT) బోర్డు, ఇది విస్తృత శ్రేణి పరికరాలతో ఇంటర్‌ఫేస్ చేయబడుతుంది. IoT ఆధారిత ప్రాజెక్ట్‌లలో ESP32 విస్తృతంగా ఉపయోగించబడుతుంది.

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

నెట్‌వర్క్ టైమ్ ప్రోటోకాల్ (NTP) కోఆర్డినేటెడ్ యూనివర్సల్ టైమ్ (UTC)ని ఉపయోగిస్తుంది, ఇది సిస్టమ్ గడియారాన్ని చాలా ఖచ్చితత్వంతో మరియు ఖచ్చితత్వంతో సమకాలీకరిస్తుంది. చిన్న నెట్‌వర్క్‌లలో NTP మనకు 1 ms వరకు ఖచ్చితమైన గడియారాలను అందించగలదు, అయితే LAN (లోకల్ ఏరియా నెట్‌వర్క్) NTP వంటి పెద్ద నెట్‌వర్క్‌లు ఇంటర్నెట్‌లో పదుల మిల్లీసెకన్లతో ఖచ్చితత్వాన్ని అందించగలవు. ఈ ఖచ్చితమైన గడియారాన్ని ESP32 ఉపయోగించి నిర్దిష్ట సమయంలో సూచనలను అమలు చేయవచ్చు.







ఈ గైడ్ కింది విషయాలను కలిగి ఉంది:



  1. NTP (నెట్‌వర్క్ టైమ్ ప్రోటోకాల్)కి పరిచయం
  2. NTP సర్వర్ మరియు సమయ సెట్టింగ్‌లు



  3. ప్రింట్‌లోకల్‌టైమ్() ఫంక్షన్‌ని ఉపయోగించి రియల్ టైమ్ ప్రింటింగ్





1: NTP (నెట్‌వర్క్ టైమ్ ప్రోటోకాల్)కి పరిచయం

NTP అనేది సంక్షిప్త రూపం ఎన్ etwork టి చెయ్యవలసిన పి rotocol అనేది పరికరాల సమయాన్ని వాటి టైమ్ జోన్‌తో సమకాలీకరించడానికి ఉపయోగించే ప్రమాణం. నెట్‌వర్క్ టైమ్ ప్రోటోకాల్ అన్ని నెట్‌వర్క్ పరికరాల సమయాన్ని UTCతో సమకాలీకరిస్తుంది, దీనిని కోఆర్డినేటెడ్ యూనివర్సల్ టైమ్ అని కూడా పిలుస్తారు.

UTC GMT (గ్రీన్‌విచ్ మీన్ టైమ్) లాగా ఉంటుంది కానీ అది మారదు మరియు ప్రపంచవ్యాప్తంగా అలాగే ఉంటుంది. UTCని ఉపయోగించడం వెనుక ఉన్న ప్రధాన ఆలోచన సమయం నుండి సమయం చదవడం NTP సర్వర్ మరియు UTC ఆఫ్‌సెట్‌ని వర్తింపజేయడం ద్వారా మన సమయ మండలానికి అనుగుణంగా స్థానిక సమయాన్ని పొందవచ్చు.



2: NTP సర్వర్ మరియు సమయ సెట్టింగ్‌లు

NTP సర్వర్ నుండి సమయాన్ని చదవడానికి మనం ఈ వేరియబుల్స్‌ని ఉపయోగించి కోడ్ లోపల క్రింది వేరియబుల్‌లను ప్రకటించాలి, మనం NTP సర్వర్ నుండి సమయాన్ని పొందవచ్చు.

  • NTP సర్వర్
  • GMT ఆఫ్‌సెట్
  • డేలైట్ ఆఫ్‌సెట్

2.1: NTP సర్వర్

నుండి సమయం అభ్యర్థిస్తాము 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కి నివసిస్తున్న టైమ్ జోన్ మధ్య గంటలలో సమయ వ్యత్యాసాన్ని వివరిస్తుంది. ఉదాహరణకు, మేము USA యొక్క టైమ్ జోన్‌ని ఉపయోగిస్తే, మేము దానిని సెట్ చేయవచ్చు UTC = -11:00 .

2.3: డేలైట్ ఆఫ్‌సెట్

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

మేము NTP సర్వర్ యొక్క ప్రాథమికాలను కవర్ చేసినందున, ఇప్పుడు మేము NTP సర్వర్‌కు అభ్యర్థనను ఎలా పంపవచ్చో తనిఖీ చేస్తాము మరియు Arduino IDE కోడ్‌తో ESP32ని ఉపయోగించి స్థానిక సమయాన్ని ఎలా చదవవచ్చో తనిఖీ చేస్తాము.

3: printLocalTime() ఫంక్షన్‌ని ఉపయోగించి నిజ సమయంలో ముద్రించడం

ది ప్రింట్‌లోకల్ టైమ్() ఫంక్షన్ కాల్ చేస్తుంది getLocalTime() NTP సర్వర్‌కు అభ్యర్థనను పంపుతుంది మరియు అందుకున్న తేదీ మరియు సమయాన్ని లోపల నిల్వ చేస్తుంది సమయ సమాచారం వేరియబుల్.

3.1: నిజ సమయంలో ముద్రించడానికి కోడ్

NTP క్లయింట్ సర్వర్ కోసం ఇచ్చిన కోడ్‌ని Arduino IDE ఎడిటర్‌లో అతికించండి. ESP32ని PCతో కనెక్ట్ చేయండి, COM పోర్ట్‌ని ఎంచుకుని, కోడ్‌ని అప్‌లోడ్ చేయండి.

#ని చేర్చండి
#'time.h'ని చేర్చండి
కాన్స్ట్ చార్ * ssid     = “REPLACE_WITH_YOUR_SSID”;
కాన్స్ట్ చార్ * పాస్వర్డ్ = “REPLACE_WITH_YOUR_PASSWORD”;
కాన్స్ట్ చార్ * ntpServer = 'pool.ntp.org' ;
దీర్ఘకాలం  gmtOffset_sec = 18000 ; /* GMT OFFSET + 5 గంటలు ( 18000 SEC ) */
const int   daylightOffset_sec = 3600 ; /* 1 గంట పగటి ఆఫ్‌సెట్ */
శూన్యం printLocalTime ( )
{
struct tm సమయ సమాచారం;
ఉంటే ( ! గెట్ లోకల్ టైమ్ ( & సమయ సమాచారం ) ) {
Serial.println ( 'సమయం పొందడంలో విఫలమైంది' ) ;
తిరిగి ;
}
Serial.println ( & సమయ సమాచారం, '%A, %B %d %Y %H:%M:%S' ) ;
}
శూన్యమైన సెటప్ ( )
{
సీరియల్.ప్రారంభం ( 115200 ) ;
// WiFiకి కనెక్ట్ చేయండి
Serial.printf ( '%sకి కనెక్ట్ అవుతోంది' , ssid ) ;
WiFi.begin ( ssid, పాస్వర్డ్ ) ;
అయితే ( WiFi. స్థితి ( ) ! = WL_కనెక్ట్ చేయబడింది ) {
ఆలస్యం ( 500 ) ;
సీరియల్.ప్రింట్ ( '.' ) ;
}
Serial.println ( 'కనెక్ట్ చేయబడింది' ) ;
// init మరియు పొందండి సమయం
configTime ( gmtOffset_sec, daylightOffset_sec, ntpServer ) ;
ప్రింట్ లోకల్ టైమ్ ( ) ;
// వైఫైని డిస్‌కనెక్ట్ చేయండి వంటి అది ఇకపై అవసరం లేదు
WiFi.disconnect(నిజం);
WiFi.mode(WIFI_OFF);
}
శూన్య లూప్()
{
ఆలస్యం (1000);
printLocalTime();
}

WiFi మరియు సమయ లైబ్రరీని చేర్చడం ద్వారా కోడ్ ప్రారంభించబడింది. వైఫై ESP32ని నెట్‌వర్క్‌తో కనెక్ట్ చేయడానికి లైబ్రరీ సహాయం చేస్తుంది సమయం లైబ్రరీ NTP సర్వర్ సమకాలీకరణను నిర్వహిస్తుంది.

ఆ తర్వాత ESP32 కనెక్ట్ అయ్యే నెట్‌వర్క్ యొక్క SSID మరియు పాస్‌వర్డ్ నిర్వచించబడుతుంది. మీ నెట్‌వర్క్ ఆధారాలను ఇక్కడ భర్తీ చేయండి. ఆ తర్వాత మేము నిర్వచించాము GMT ఆఫ్‌సెట్ 18000 సెకన్లు అంటే (UTC+5 గంట). మీరు ఇక్కడ మీ స్వంత టైమ్ జోన్ UTCని భర్తీ చేయవచ్చు. అనుసరించండి లింక్ పొందడానికి GMT ఆఫ్‌సెట్ మీ టైమ్ జోన్ కోసం.

అదనంగా NTP సర్వర్ చిరునామా ఆదేశాన్ని ఉపయోగించి పేర్కొనబడింది:

కాన్స్ట్ చార్ * ntpServer = 'pool.ntp.org' ;

ఈ ఆదేశం మిమ్మల్ని శోధించే సమయ సర్వర్‌ను స్వయంచాలకంగా ఎంచుకుంటుంది. అయితే, లో వివరించిన NTP సర్వర్‌లను ఉపయోగించి మనం టైమ్ జోన్‌ను కూడా సెట్ చేయవచ్చు NTP సర్వర్ విభాగం.

ముగింపులో మేము ESP32ని NTP క్లయింట్‌గా మరియు తేదీ మరియు సమయాన్ని పొందేందుకు కాన్ఫిగర్ చేస్తాము. దాని కోసం మేము ఉపయోగించాము configTime() ఫంక్షన్.

చివరగా, ఉపయోగించి ప్రింట్‌లోకల్ టైమ్() ఫంక్షన్, ప్రస్తుత తేదీ మరియు సమయం సీరియల్ మానిటర్‌లో ముద్రించబడుతుంది. ఈ ఫంక్షన్ సమయ నిర్మాణాన్ని కలిగి ఉంటుంది tm ఇది మొత్తం సమాచారాన్ని నిల్వ చేస్తుంది సమయ సమాచారం వేరియబుల్.

కింది ఆదేశాలు సూచిస్తాయి సమయ సమాచారం నిర్మాణం.

Serial.println ( & సమయ సమాచారం, '%A, %B %d %Y %H:%M:%S' ) ;

సమయ నిర్మాణం యొక్క ప్రతి అక్షరం నిర్దిష్ట సమాచారానికి సంబంధించినది:

స్పెసిఫైయర్లు సమాచారం
%A వారంలో తిరిగి వచ్చే రోజు
%B తిరిగి వచ్చే నెల
%d నెలలో తిరిగి వచ్చే రోజు
% Y ప్రస్తుత సంవత్సరాన్ని తిరిగి ఇవ్వండి
%H ప్రస్తుత గంటను తిరిగి ఇవ్వండి
%M ప్రస్తుత నిమిషాలను తిరిగి ఇవ్వండి
%S ప్రస్తుత సెకన్లను తిరిగి ఇవ్వండి

3.2: అవుట్‌పుట్

కోడ్ అప్‌లోడ్ చేసిన తర్వాత ESP32 WiFi నెట్‌వర్క్‌తో కనెక్ట్ అవుతుంది మరియు ప్రస్తుత తేదీ మరియు సమయాన్ని స్వీకరించడానికి NTP సర్వర్‌కు అభ్యర్థనను పంపుతుంది. కింది అవుట్‌పుట్‌ను Arduino సీరియల్ మానిటర్‌లో చూడవచ్చు.

నా PC మరియు ESP32లో ప్రస్తుత సమయం సరిపోలింది.

మేము ESP32ని క్లయింట్‌గా ఉపయోగించి NTP సర్వర్ నుండి సమయాన్ని విజయవంతంగా చదివాము.

ముగింపు

అవుట్‌పుట్‌ను రూపొందించడానికి నిర్దిష్ట సమయాల్లో టైమ్ స్టాంపింగ్ మరియు సూచనలను అమలు చేయడం వంటి అప్లికేషన్‌లకు సమయం చాలా ముఖ్యం. ఇన్‌బిల్ట్ టైమర్‌లు అంత ఖచ్చితమైనవి కావు, కాబట్టి మేము ప్రస్తుత సమయం మరియు తేదీని చదవడానికి NTP సర్వర్‌ని ఉపయోగించవచ్చు. ఈ సమయాన్ని మా కోడ్ లోపల ఉపయోగించడానికి వేరియబుల్ లోపల నిల్వ చేయవచ్చు. ఈ పాఠం ESP32ని ఉపయోగించి ప్రపంచవ్యాప్తంగా ఉన్న ఏ సమయ మండలానికైనా ఖచ్చితమైన సమయాన్ని పొందడంలో సహాయపడుతుంది.