ESP32 NTP ক্লায়েন্ট-সার্ভার: তারিখ এবং সময় পান – Arduino IDE

Esp32 Ntp Klayenta Sarbhara Tarikha Ebam Samaya Pana Arduino Ide



ESP32 হল একটি মাইক্রোকন্ট্রোলার-ভিত্তিক ইন্টারনেট অফ থিংস (IoT) বোর্ড যা বিভিন্ন ডিভাইসের সাথে ইন্টারফেস করা যেতে পারে। ESP32 ব্যাপকভাবে IoT ভিত্তিক প্রকল্পগুলিতে ব্যবহৃত হয়।

ESP32 বা অন্য কোন মাইক্রোকন্ট্রোলারের সাথে কাজ করা খুবই গুরুত্বপূর্ণ কারণ অন্তর্নির্মিত টাইমারটি ততটা সঠিক নয় তাই আমরা একটি ব্যবহার করতে পারি এনটিপি সার্ভার রিয়েল টাইম আনতে পারে এবং এটি একটি ভেরিয়েবলের মধ্যে সংরক্ষণ করতে পারে যা পরে ESP32 কোডের ভিতরে ব্যবহার করা যেতে পারে।

নেটওয়ার্ক টাইম প্রোটোকল (এনটিপি) সমন্বিত ইউনিভার্সাল টাইম (ইউটিসি) ব্যবহার করে যা সিস্টেম ঘড়িকে দুর্দান্ত নির্ভুলতা এবং নির্ভুলতার সাথে সিঙ্ক্রোনাইজ করে। ছোট নেটওয়ার্কে NTP আমাদেরকে 1 ms এর মতো নির্ভুল ঘড়ি সরবরাহ করতে পারে যখন বড় নেটওয়ার্ক যেমন LAN (লোকাল এরিয়া নেটওয়ার্ক) NTP ইন্টারনেটে দশ মিলিসেকেন্ডে নির্ভুলতা দিতে পারে। এই নির্ভুল ঘড়িটি ব্যবহার করে ESP32 নির্দিষ্ট সময়ে নির্দেশাবলী কার্যকর করতে পারে।







এই নির্দেশিকাটিতে নিম্নলিখিত বিষয়বস্তু রয়েছে:



  1. NTP এর ভূমিকা (নেটওয়ার্ক টাইম প্রোটোকল)
  2. NTP সার্ভার এবং সময় সেটিংস



  3. printLocalTime() ফাংশন ব্যবহার করে রিয়েল টাইম মুদ্রণ





1: NTP এর ভূমিকা (নেটওয়ার্ক টাইম প্রোটোকল)

NTP এর সংক্ষিপ্ত রূপ এন etwork টি করতে পৃ রোটোকল হল একটি স্ট্যান্ডার্ড যা ডিভাইসের সময়কে তাদের টাইম জোনের সাথে সিঙ্ক্রোনাইজ করার জন্য ব্যবহৃত হয়। নেটওয়ার্ক টাইম প্রোটোকল সমস্ত নেটওয়ার্ক ডিভাইসের সময়কে UTC এর সাথে সিঙ্ক্রোনাইজ করে যা সমন্বিত ইউনিভার্সাল টাইম নামেও পরিচিত।

ইউটিসি হল GMT (গ্রিনউইচ মিন টাইম) এর মতো কিন্তু এটি পরিবর্তিত হয় না এবং সারা বিশ্বে একই থাকে। UTC ব্যবহার করার পিছনে মূল ধারণা হল থেকে সময় পড়া এনটিপি সার্ভার এবং 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 সার্ভারে একটি অনুরোধ পাঠাতে পারি এবং আরডুইনো IDE কোড সহ ESP32 ব্যবহার করে স্থানীয় সময় পড়তে পারি।

3: printLocalTime() ফাংশন ব্যবহার করে রিয়েল টাইম প্রিন্ট করা

দ্য প্রিন্ট লোকালটাইম() ফাংশন কল করবে getLocalTime() ফাংশন যা NTP সার্ভারে অনুরোধ পাঠায় এবং প্রাপ্ত তারিখ এবং সময় এর ভিতরে সংরক্ষণ করে সময় তথ্য পরিবর্তনশীল

3.1: রিয়েল টাইম প্রিন্ট করার জন্য কোড

Arduino IDE সম্পাদকে NTP ক্লায়েন্ট সার্ভারের জন্য প্রদত্ত কোড পেস্ট করুন। পিসির সাথে ESP32 সংযোগ করুন, COM পোর্ট নির্বাচন করুন এবং কোড আপলোড করুন।

# অন্তর্ভুক্ত করুন
# '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 ঘন্টা দিনের আলো অফসেট */
অকার্যকর প্রিন্ট LocalTime ( )
{
struct tm timeinfo;
যদি ( ! GetLocalTime ( এবং সময় তথ্য ) ) {
Serial.println ( 'সময় পেতে ব্যর্থ' ) ;
ফিরে ;
}
Serial.println ( এবং সময়ের তথ্য, '%A, %B %d %Y %H:%M:%S' ) ;
}
অকার্যকর সেটআপ ( )
{
সিরিয়াল.শুরু ( 115200 ) ;
// WiFi এর সাথে সংযোগ করুন
Serial.printf ( '%s এর সাথে সংযোগ করা হচ্ছে' , ssid ) ;
WiFi.begin ( ssid, পাসওয়ার্ড ) ;
যখন ( WiFi.status ( ) ! = WL_CONNECTED ) {
বিলম্ব ( 500 ) ;
সিরিয়াল.প্রিন্ট ( '' ) ;
}
Serial.println ( 'সংযুক্ত' ) ;
// init এবং পান সময়
কনফিগার করার সময় ( gmtOffset_sec, daylightOffset_sec, ntpServer ) ;
প্রিন্ট লোকালটাইম ( ) ;
// WiFi সংযোগ বিচ্ছিন্ন করুন হিসাবে এটা এর আর প্রয়োজন নেই
WiFi.disconnect(true);
WiFi.mode(WIFI_OFF);
}
অকার্যকর লুপ()
{
বিলম্ব (1000);
printLocalTime();
}

কোড ওয়াইফাই এবং টাইম লাইব্রেরি অন্তর্ভুক্ত করে শুরু হয়েছে৷ ওয়াইফাই লাইব্রেরি একটি নেটওয়ার্কের সাথে ESP32 সংযোগ করতে সাহায্য করবে যখন সময় লাইব্রেরি NTP সার্ভার সিঙ্ক্রোনাইজেশন পরিচালনা করবে।

এর পরে যে নেটওয়ার্কে ESP32 সংযোগ করবে তার SSID এবং পাসওয়ার্ড সংজ্ঞায়িত করা হয়েছে। এখানে আপনার নেটওয়ার্ক শংসাপত্র প্রতিস্থাপন করুন. এর পর আমরা সংজ্ঞায়িত করেছি GMT অফসেট হিসাবে 18000 সেকেন্ড যা (UTC+5 ঘন্টা)। আপনি এখানে আপনার নিজস্ব সময় অঞ্চল UTC প্রতিস্থাপন করতে পারেন। অনুসরণ করা লিঙ্ক পেতে GMT অফসেট আপনার সময় অঞ্চলের জন্য।

উপরন্তু NTP সার্ভার ঠিকানা কমান্ড ব্যবহার করে নির্দিষ্ট করা হয়:

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

এই কমান্ডটি স্বয়ংক্রিয়ভাবে টাইম সার্ভার নির্বাচন করে যা আপনাকে অনুসন্ধান করবে। যাইহোক, আমরা এনটিপি সার্ভার ব্যবহার করে একটি সময় অঞ্চল সেট করতে পারি যা ব্যাখ্যা করা হয়েছে NTP সার্ভার অধ্যায়.

শেষে আমরা ESP32 কে NTP ক্লায়েন্ট হিসাবে কনফিগার করি এবং তারিখ এবং সময় পেতে। যে জন্য আমরা ব্যবহার কনফিগার করার সময়() ফাংশন

অবশেষে, ব্যবহার করে প্রিন্ট লোকালটাইম() ফাংশন, বর্তমান তারিখ এবং সময় সিরিয়াল মনিটরে মুদ্রিত হয়। এই ফাংশন একটি সময় গঠন ধারণ করে টিএম যা সমস্ত তথ্য সংরক্ষণ করে সময় তথ্য পরিবর্তনশীল

নিম্নলিখিত কমান্ড প্রতিনিধিত্ব করে সময় তথ্য গঠন

Serial.println ( এবং সময়ের তথ্য, '%A, %B %d %Y %H:%M:%S' ) ;

সময়ের কাঠামোর প্রতিটি অক্ষর একটি নির্দিষ্ট তথ্যের সাথে সম্পর্কিত:

স্পেসিফায়ার তথ্য
%A এক সপ্তাহের দিন ফেরত
% বি রিটার্ন মাস
%d মাসের রিটার্ন দিন
%Y চলতি বছর রিটার্ন
% H বর্তমান ঘন্টা রিটার্ন
% এম বর্তমান মিনিট ফেরত দিন
%S বর্তমান সেকেন্ড ফেরত দিন

3.2: আউটপুট

কোড আপলোড করার পরে ESP32 একটি ওয়াইফাই নেটওয়ার্কের সাথে সংযুক্ত হবে এবং বর্তমান তারিখ এবং সময় পাওয়ার জন্য NTP সার্ভারে একটি অনুরোধ পাঠাবে। আরডুইনো সিরিয়াল মনিটরে নিম্নলিখিত আউটপুট দেখা যাবে।

আমার পিসি এবং ESP32 এর বর্তমান সময় মিলেছে।

আমরা ক্লায়েন্ট হিসাবে ESP32 ব্যবহার করে NTP সার্ভার থেকে সফলভাবে সময় পড়েছি।

উপসংহার

আউটপুট তৈরি করার জন্য নির্দিষ্ট সময়ে টাইম স্ট্যাম্পিং এবং নির্দেশাবলী কার্যকর করার মতো অ্যাপ্লিকেশনগুলির জন্য সময় খুবই গুরুত্বপূর্ণ। অন্তর্নির্মিত টাইমারগুলি এতটা সঠিক নয়, তাই আমরা বর্তমান সময় এবং তারিখ পড়ার জন্য একটি NTP সার্ভার ব্যবহার করতে পারি। এই সময়টি আমাদের কোডের ভিতরে ব্যবহার করার জন্য একটি ভেরিয়েবলের ভিতরে সংরক্ষণ করা যেতে পারে। এই পাঠটি ESP32 ব্যবহার করে বিশ্বের যেকোনো সময় অঞ্চলের সঠিক সময় পেতে সাহায্য করে।