ESP32 NTP کلائنٹ سرور: تاریخ اور وقت حاصل کریں - Arduino IDE

Esp32 Ntp Klayn Srwr Tarykh Awr Wqt Hasl Kry Arduino Ide



ESP32 ایک مائیکرو کنٹرولر پر مبنی انٹرنیٹ آف تھنگز (IoT) بورڈ ہے جسے آلات کی ایک وسیع رینج کے ساتھ انٹرفیس کیا جا سکتا ہے۔ ESP32 بڑے پیمانے پر IoT پر مبنی منصوبوں میں استعمال ہوتا ہے۔

ESP32 یا کسی دوسرے مائیکرو کنٹرولر کے ساتھ کام کرنا بہت ضروری ہے کیونکہ ان بلٹ ٹائمر اتنا درست نہیں ہے اس لیے ہم ایک این ٹی پی ریئل ٹائم لانے کے لیے سرور اور اسے ایک متغیر کے اندر اسٹور کر سکتا ہے جسے بعد میں ESP32 کوڈ کے اندر استعمال کیا جا سکتا ہے۔

نیٹ ورک ٹائم پروٹوکول (NTP) کوآرڈینیٹڈ یونیورسل ٹائم (UTC) کا استعمال کرتا ہے جو نظام کی گھڑی کو بڑی درستگی اور درستگی کے ساتھ ہم آہنگ کرتا ہے۔ چھوٹے نیٹ ورکس پر NTP ہمیں 1 ms تک درست گھڑیاں فراہم کر سکتا ہے جبکہ بڑے نیٹ ورکس جیسے LAN (لوکل ایریا نیٹ ورک) NTP انٹرنیٹ پر دسیوں ملی سیکنڈ کے ساتھ درستگی دے سکتے ہیں۔ اس درست گھڑی کا استعمال کرتے ہوئے ESP32 ایک مخصوص وقت پر ہدایات پر عمل کر سکتا ہے۔







یہ گائیڈ درج ذیل مواد پر مشتمل ہے:



  1. این ٹی پی (نیٹ ورک ٹائم پروٹوکول) کا تعارف
  2. NTP سرور اور وقت کی ترتیبات



  3. پرنٹ لوکل ٹائم () فنکشن کا استعمال کرتے ہوئے ریئل ٹائم پرنٹ کرنا





1: NTP کا تعارف (نیٹ ورک ٹائم پروٹوکول)

NTP کا مخفف ہے۔ ن etwork ٹی ایسا کرنے کے لئے پی روٹوکول ایک معیاری ہے جو آلات کے وقت کو ان کے ٹائم زون کے ساتھ ہم آہنگ کرنے کے لیے استعمال کیا جاتا ہے۔ نیٹ ورک ٹائم پروٹوکول تمام نیٹ ورک ڈیوائسز کے وقت کو UTC کے ساتھ ہم آہنگ کرتا ہے جسے Coordinated Universal Time بھی کہا جاتا ہے۔

UTC GMT (گرین وچ مین ٹائم) کی طرح ہے لیکن یہ تبدیل نہیں ہوتا اور پوری دنیا میں ایک جیسا رہتا ہے۔ UTC استعمال کرنے کے پیچھے بنیادی خیال یہ ہے کہ سے وقت پڑھا جائے۔ این ٹی پی سرور اور UTC آفسیٹ کو لاگو کرکے ہم اپنے ٹائم زون کے مطابق مقامی وقت حاصل کرسکتے ہیں۔



2: 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 آفسیٹ آپ کے جی ایم ٹی تک رہنے والے ٹائم زون کے درمیان اوقات کے فرق کو بیان کرتا ہے۔ مثال کے طور پر، اگر ہم USA کا ٹائم زون استعمال کرتے ہیں، تو ہم اسے سیٹ کر سکتے ہیں۔ UTC = -11:00 .

2.3: ڈے لائٹ آفسیٹ

یہاں ڈے لائٹ آفسیٹ دن کی روشنی کی بچت کا وقت ہے جسے عام طور پر 1 گھنٹہ کے طور پر لیا جاتا ہے۔ دن کی روشنی کی بچت کا مطلب گرمیوں میں گھڑی کو 1 گھنٹہ آگے بڑھانا اور سردیوں میں انہیں دوبارہ تبدیل کرنا ہے۔ یہ کمانڈ عام طور پر استعمال ہوتی ہے جہاں ایک حسب ضرورت ٹائم زون استعمال ہوتا ہے اور دن کی روشنی کی بچت کا اصول لاگو ہوتا ہے۔

جیسا کہ ہم نے NTP سرور کی بنیادی باتوں کا احاطہ کر لیا ہے اب ہم دیکھیں گے کہ ہم NTP سرور کو درخواست کیسے بھیج سکتے ہیں اور ESP32 کو Arduino IDE کوڈ کے ساتھ استعمال کرتے ہوئے مقامی وقت کو پڑھ سکتے ہیں۔

3: printLocalTime() فنکشن کا استعمال کرتے ہوئے ریئل ٹائم پرنٹ کرنا

دی پرنٹ لوکل ٹائم() فنکشن کال کرے گا۔ getLocalTime() فنکشن جو NTP سرور کو درخواست بھیجتا ہے اور موصول ہونے والی تاریخ اور وقت کو اندر محفوظ کرتا ہے۔ وقت کی معلومات متغیر

3.1: ریئل ٹائم پرنٹ کرنے کے لیے کوڈ

Arduino IDE ایڈیٹر میں NTP کلائنٹ سرور کے لیے دیا گیا کوڈ چسپاں کریں۔ ESP32 کو PC کے ساتھ جوڑیں، COM پورٹ کو منتخب کریں اور کوڈ اپ لوڈ کریں۔

#include
# 'time.h' شامل کریں
const char * ssid   = 'REPLACE_WITH_YOUR_SSID'؛
const char * password = 'REPLACE_WITH_YOUR_PASSWORD'؛
const char * ntpServer = 'pool.ntp.org' ;
const long  gmtOffset_sec = 18000 ; /* GMT آف سیٹ + 5 گھنٹے ( 18000 ایس ای سی ) */
const int   daylightOffset_sec = 3600 ; /* 1 گھنٹہ دن کی روشنی آفسیٹ */
باطل پرنٹ لوکل ٹائم ( )
{
struct tm timeinfo؛
اگر ( ! لوکل ٹائم حاصل کریں۔ ( اور وقت کی معلومات ) ) {
Serial.println ( 'وقت حاصل کرنے میں ناکام' ) ;
واپسی ;
}
Serial.println ( اور وقت کی معلومات، '%A، %B %d %Y %H:%M:%S' ) ;
}
باطل سیٹ اپ ( )
{
سیریل شروع کریں۔ ( 115200 ) ;
// وائی ​​فائی سے جڑیں۔
Serial.printf ( '%s سے منسلک ہو رہا ہے' ، ssid ) ;
WiFi.begin ( ssid، پاس ورڈ ) ;
جبکہ ( WiFi.status ( ) ! = WL_CONNECTED ) {
تاخیر ( 500 ) ;
سیریل۔ پرنٹ ( ' ) ;
}
Serial.println ( 'منسلک' ) ;
// init اور حاصل کریں۔ وقت
تشکیل کا وقت ( gmtOffset_sec، daylightOffset_sec، ntpServer ) ;
پرنٹ لوکل ٹائم ( ) ;
// وائی ​​فائی کو منقطع کریں۔ کے طور پر یہ اب ضرورت نہیں ہے
WiFi.disconnect(true);
WiFi.mode(WIFI_OFF)؛
}
باطل لوپ ()
{
تاخیر (1000)؛
پرنٹ لوکل ٹائم ()؛
}

کوڈ وائی فائی اور ٹائم لائبریری کو شامل کرکے شروع کیا گیا۔ وائی ​​فائی لائبریری ESP32 کو نیٹ ورک کے ساتھ مربوط کرنے میں مدد کرے گی۔ وقت لائبریری NTP سرور کی مطابقت پذیری کو سنبھالے گی۔

اس کے بعد نیٹ ورک کا SSID اور پاس ورڈ جس سے ESP32 جڑے گا اس کی وضاحت کی گئی ہے۔ اپنے نیٹ ورک کی سند کو یہاں تبدیل کریں۔ اس کے بعد ہم نے تعریف کی ہے۔ GMT آفسیٹ جیسا کہ 18000 سیکنڈ جو ہے (UTC+5 گھنٹہ)۔ آپ یہاں اپنا ٹائم زون UTC بدل سکتے ہیں۔ پیروی کریں یا پیچھے چلیں لنک حاصل کرنے کے لئے GMT آفسیٹ آپ کے ٹائم زون کے لیے۔

اس کے علاوہ NTP سرور ایڈریس کمانڈ کا استعمال کرتے ہوئے بیان کیا گیا ہے:

const char * ntpServer = 'pool.ntp.org' ;

یہ کمانڈ خود بخود ٹائم سرور کا انتخاب کرتی ہے جو آپ کو تلاش کرے گا۔ تاہم، ہم NTP سرورز کا استعمال کرتے ہوئے ایک ٹائم زون بھی ترتیب دے سکتے ہیں۔ این ٹی پی سرور سیکشن

آخر میں ہم ESP32 کو NTP کلائنٹ کے طور پر ترتیب دیتے ہیں اور تاریخ اور وقت حاصل کرتے ہیں۔ اس کے لیے ہم نے استعمال کیا۔ تشکیل کا وقت () فنکشن

آخر میں، کا استعمال کرتے ہوئے پرنٹ لوکل ٹائم() فنکشن، موجودہ تاریخ اور وقت سیریل مانیٹر پر پرنٹ کیا جاتا ہے. یہ فنکشن ایک وقت کی ساخت پر مشتمل ہے۔ tm جس میں تمام معلومات محفوظ ہوتی ہیں۔ وقت کی معلومات متغیر

درج ذیل کمانڈز کی نمائندگی کرتے ہیں۔ وقت کی معلومات ساخت

Serial.println ( اور وقت کی معلومات، '%A، %B %d %Y %H:%M:%S' ) ;

وقت کی ساخت کا ہر خط ایک مخصوص معلومات سے متعلق ہے:

وضاحت کنندگان معلومات
%A واپسی کا ایک ہفتہ کا دن
%B واپسی کا مہینہ
%d مہینے کی واپسی کا دن
%Y موجودہ سال کی واپسی۔
%H موجودہ وقت پر واپس جائیں۔
%M موجودہ منٹ واپس کریں۔
%S موجودہ سیکنڈ واپس کریں۔

3.2: آؤٹ پٹ

کوڈ اپ لوڈ کرنے کے بعد ESP32 وائی فائی نیٹ ورک سے جڑ جائے گا اور NTP سرور کو موجودہ تاریخ اور وقت موصول کرنے کی درخواست بھیجے گا۔ مندرجہ ذیل آؤٹ پٹ کو Arduino سیریل مانیٹر پر دیکھا جا سکتا ہے۔

میرے PC اور ESP32 پر موجودہ وقت مماثل ہے۔

ہم نے کامیابی کے ساتھ NTP سرور سے ESP32 کو بطور کلائنٹ استعمال کرتے ہوئے وقت پڑھ لیا ہے۔

نتیجہ

ٹائم اسٹیمپنگ اور آؤٹ پٹ پیدا کرنے کے لیے مخصوص اوقات میں ہدایات پر عمل کرنے جیسی ایپلی کیشنز کے لیے وقت بہت اہم ہے۔ ان بلٹ ٹائمر اتنے درست نہیں ہیں، اس لیے ہم موجودہ وقت اور تاریخ کو پڑھنے کے لیے NTP سرور استعمال کر سکتے ہیں۔ اس وقت کو ہمارے کوڈ کے اندر استعمال کرنے کے لیے متغیر کے اندر محفوظ کیا جا سکتا ہے۔ یہ سبق ESP32 کا استعمال کرتے ہوئے دنیا بھر میں کسی بھی ٹائم زون کا درست وقت حاصل کرنے میں مدد کرتا ہے۔