সুচিপত্র:
ভিডিও: Arduino সঙ্গে বাস্তব সময় ঘড়ি: 3 ধাপ
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 08:00
এই প্রকল্পে, আমরা Arduino এবং RTC মডিউলের সাহায্যে একটি ঘড়ি তৈরি করব। যেহেতু আমরা জানি Arduino প্রকৃত সময় প্রদর্শন করতে পারে না তাই আমরা LCD- তে সঠিক সময় প্রদর্শন করতে RTC মডিউল ব্যবহার করব। সমস্ত ধাপ সাবধানে পড়ুন এটি আপনাকে ঘড়ির কাজ করতে অনেক সাহায্য করবে।
DS3231 Arduino কোডটি DS1307 কোডের মত এবং এটি উভয় RTC চিপের সাথে কাজ করে।
নীচের Arduino কোডটি DS3231 RTC এর জন্য কোন লাইব্রেরি ব্যবহার করে না, ওয়্যার লাইব্রেরি হল Arduino এবং DS3231 এর মধ্যে I2C কনভেনশন ব্যবহার করে চিঠিপত্রের জন্য।
হ্যাঁ! অনেক ইলেকট্রনিক্স ইঞ্জিনিয়ার তাদের সময় ভিত্তিক প্রকল্পের জন্য এর উপর নির্ভর করে কিন্তু RTC সম্পূর্ণ নির্ভরযোগ্য নয়। এটি ব্যাটারি চালিত এবং শীঘ্রই বা পরে প্রতিস্থাপন করতে হবে। আইওটি প্রকল্পে আসছে এটি মূল্যবান এসপিআই (সিরিয়াল পেরিফেরাল ইন্টারফেস) পিন দখল করে এবং চারপাশে জড়িয়ে থাকা তারের সাথে নোংরা হয়ে যায়। সমাধান …. এখানে আমাদের নায়ক এনটিপি (নেটওয়ার্ক টাইম প্রোটোকল) আসে। আমরা একটি ক্লায়েন্ট-সার্ভার মোড ব্যবহার করে এই প্রোটোকলটি পরিচালনা করতে যাচ্ছি। প্রক্রিয়াটি এত সহজ যে আমাদের Nodemcu ক্লায়েন্ট হিসাবে কাজ করে এবং UDP ব্যবহার করে সার্ভার থেকে একটি NTP প্যাকেট অনুরোধ করে। বিনিময়ে, সার্ভার ক্লায়েন্টকে একটি প্যাকেট পাঠায় যা ডেটা পার্স করে। এনটিপি হল সার্বজনীন সময় সিঙ্ক্রোনাইজেশন প্রোটোকল। এখন আমাদের ল্যাব ওয়ার্ক স্টেশনটি আলোকিত করা যাক
ধাপ 1: প্রয়োজনীয় উপাদান
- আরডুইনো বোর্ড
- DS3231 RTC বোর্ড
- 16x2 LCD স্ক্রিন
- 2 এক্স পুশ বোতাম
- 10K ওহম পরিবর্তনশীল প্রতিরোধক (বা potentiometer)
- 330-ওহম প্রতিরোধক
- 3V কয়েন সেল ব্যাটারি
- ব্রেডবোর্ড
- জাম্পার তার
RTC mocule DS3231
মানুষের এই দ্রুতগতির বিশ্বে সময় একটি প্রয়োজনীয় অনুভূতি। রিয়েলটাইম প্রকল্পে
আমরা RTC (A. K. A রিয়েল-টাইম ঘড়ি) ব্যবহার করি
আরটিসি রিয়েল-টাইম-ক্লক (আরটিসি) হল একটি ইন্টিগ্রেটেড সার্কিট (আইসি) যা বর্তমান সময়ের উপর নজর রাখে। আরটিসি রিয়েল মোডে সময়ের যত্ন নেয়। আরটিসি সাধারণত কম্পিউটার মাদারবোর্ড এবং এমবেডেড সিস্টেমে পাওয়া যায় যাতে সময়মত অ্যাক্সেস প্রয়োজন হয়।
ধাপ 2: Arduino ঘড়ি সংযোগ
- আরসিইউ পিনকে আরটিসি মডিউলে আরডুইনো এ 5 এর সাথে সংযুক্ত করুন
- Arduino A4 এর সাথে RTC মডিউলে SDA পিন সংযুক্ত করুন
- VCC থেকে 5v এবং GND থেকে GND সংযোগ করুন
- একটি pushbutton পিন 8 সংযুক্ত করুন
- পিন 9 এর সাথে আরেকটি পুশ বাটন সংযুক্ত করুন
- Arduino এর 2 পিন করতে LCD এর RS সংযুক্ত করুন
- Arduino এর 3 পিন করতে LCD এর E সংযোগ করুন
- LCD এর D7 কে Arduino এর 7 পিনে সংযুক্ত করুন
- Arduino এর 6 পিন করতে LCD এর D6 সংযোগ করুন
- Arduino এর 5 পিন করতে LCD এর D5 সংযোগ করুন
- Arduino এর 4 পিন করতে LCD এর D4 সংযোগ করুন
- VSS & K কে GND এর সাথে সংযুক্ত করুন
- VDD & A কে 5v এর সাথে সংযুক্ত করুন
- Vo কে potentiometer আউটপুট পিনের সাথে সংযুক্ত করুন
ধাপ 3: আরটিসির সাথে আরডুইনো ক্লকের কোড
DS3231 শুধুমাত্র BCD ফরম্যাটের সাথে কাজ করে এবং BCD কে দশমিক রূপে রূপান্তর করতে এবং এর বিপরীতে আমি নিচের 2 লাইন ব্যবহার করেছি (উদাহরণস্বরূপ মিনিটের জন্য): // BCD কে দশমিক মিনিটে রূপান্তর করুন = (মিনিট >> 4) * 10 + (মিনিট এবং 0x0F);
// দশমিককে BCD মিনিটে রূপান্তর করুন = ((মিনিট / 10) << 4) + (মিনিট % 10); void DS3231_display (): সময় এবং ক্যালেন্ডার প্রদর্শন করে, সময় প্রদর্শনের আগে এবং ক্যালেন্ডার ডেটা BCD থেকে দশমিক বিন্যাসে রূপান্তরিত হয়।
// DS3231 এবং Arduino ব্যবহার করে সেট বোতাম সহ রিয়েল টাইম ক্লক এবং ক্যালেন্ডার // এলসিডি লাইব্রেরি কোড অন্তর্ভুক্ত করুন #অন্তর্ভুক্ত // ওয়্যার লাইব্রেরি কোড অন্তর্ভুক্ত করুন (I2C প্রোটোকল ডিভাইসের জন্য প্রয়োজন) #অন্তর্ভুক্ত // এলসিডি মডিউল সংযোগ (RS, E, D4, D5, D6, D7) LiquidCrystal lcd (2, 3, 4, 5, 6, 7); অকার্যকর সেটআপ () {পিনমোড (8, INPUT_PULLUP); // button1 পিন 8 pinMode (9, INPUT_PULLUP) এর সাথে সংযুক্ত; // button2 পিন 9 এর সাথে সংযুক্ত আছে // LCD এর কলাম এবং সারির সংখ্যা lcd.begin (16, 2) সেট আপ করুন; Wire.begin (); // যোগ দিন i2c bus} char Time = "TIME:::"; char Calendar = "DATE: / / 20"; বাইট i, সেকেন্ড, মিনিট, ঘন্টা, তারিখ, মাস, বছর; অকার্যকর DS3231_display () {// BCD কে দশমিক সেকেন্ডে রূপান্তর করুন = (দ্বিতীয় >> 4) * 10 + (দ্বিতীয় এবং 0x0F); মিনিট = (মিনিট >> 4) * 10 + (মিনিট এবং 0x0F); ঘন্টা = (ঘন্টা >> 4) * 10 + (ঘন্টা & 0x0F); তারিখ = (তারিখ >> 4) * 10 + (তারিখ এবং 0x0F); মাস = (মাস >> 4) * 10 + (মাস & 0x0F); বছর = (বছর >> 4) * 10 + (বছর এবং 0x0F); // শেষ রূপান্তর সময় [12] = দ্বিতীয় % 10 + 48; সময় [11] = সেকেন্ড / 10 + 48; সময় [9] = মিনিট % 10 + 48; সময় [8] = মিনিট / 10 + 48; সময় [6] = ঘন্টা % 10 + 48; সময় [5] = ঘন্টা / 10 + 48; ক্যালেন্ডার [14] = বছর % 10 + 48; ক্যালেন্ডার [13] = বছর / 10 + 48; ক্যালেন্ডার [9] = মাস % 10 + 48; ক্যালেন্ডার [8] = মাস / 10 + 48; ক্যালেন্ডার [6] = তারিখ % 10 + 48; ক্যালেন্ডার [5] = তারিখ / 10 + 48; lcd.setCursor (0, 0); lcd.print (সময়); // ডিসপ্লে টাইম lcd.setCursor (0, 1); lcd.print (ক্যালেন্ডার); // প্রদর্শন ক্যালেন্ডার} অকার্যকর blink_parameter () {বাইট j = 0; যখন (j 23) // যদি ঘন্টা> 23 ==> ঘন্টা = 0 প্যারামিটার = 0; যদি (i == 1 && প্যারামিটার> 59) // যদি মিনিট> 59 ==> মিনিট = 0 প্যারামিটার = 0; যদি (i == 2 && প্যারামিটার> 31) // যদি তারিখ> 31 ==> তারিখ = 1 প্যারামিটার = 1; যদি (i == 3 && প্যারামিটার> 12) // যদি মাস> 12 ==> মাস = 1 প্যারামিটার = 1; যদি (i == 4 && প্যারামিটার> 99) // যদি বছর> 99 ==> বছর = 0 প্যারামিটার = 0; sprintf (টেক্সট, "%02u", প্যারামিটার); lcd.setCursor (x, y); lcd.print (টেক্সট); বিলম্ব (200); // অপেক্ষা করুন 200ms} lcd.setCursor (x, y); lcd.print (""); // দুটি স্পেস blink_parameter () প্রদর্শন করুন; sprintf (টেক্সট, "%02u", প্যারামিটার); lcd.setCursor (x, y); lcd.print (টেক্সট); blink_parameter (); if (! digitalRead (8)) {// if বাটন (পিন #8) চাপলে i ++; // পরবর্তী প্যারামিটার রিটার্ন প্যারামিটারের জন্য 'i' বৃদ্ধি; // রিটার্ন প্যারামিটার মান এবং প্রস্থান করুন}}} অকার্যকর লুপ () {যদি (! DigitalRead (8)) {// যদি বোতাম (পিন #8) টিপানো হয় i = 0; ঘন্টা = সম্পাদনা (5, 0, ঘন্টা); মিনিট = সম্পাদনা (8, 0, মিনিট); তারিখ = সম্পাদনা (5, 1, তারিখ); মাস = সম্পাদনা (8, 1, মাস); বছর = সম্পাদনা (13, 1, বছর); // দশমিককে BCD মিনিটে রূপান্তর করুন = ((মিনিট / 10) << 4) + (মিনিট % 10); ঘন্টা = ((ঘন্টা / 10) << 4) + (ঘন্টা % 10); তারিখ = ((তারিখ / 10) << 4) + (তারিখ % 10); মাস = ((মাস / 10) << 4) + (মাস % 10); বছর = ((বছর / 10) << 4) + (বছর % 10); // শেষ রূপান্তর // DS3231 RTC Wire.beginTransmission (0x68) এ ডেটা লিখুন; // DS3231 ঠিকানা Wire.write (0) দিয়ে I2C প্রোটোকল শুরু করুন; // নিবন্ধন ঠিকানা পাঠান Wire.write (0); // sesonds রিসেট করুন এবং অসিলেটর Wire.write (মিনিট) শুরু করুন; // মিনিট Wire.write (ঘন্টা) লিখুন; // লিখুন ঘন্টা Wire.write (1); // দিন লিখুন (ব্যবহৃত নয়) Wire.write (তারিখ); // তারিখ লিখুন Wire.write (মাস); // লিখুন মাস Wire.write (বছর); // লিখুন বছর Wire.endTransmission (); // সংক্রমণ বন্ধ করুন এবং I2C বাস বিলম্ব (200) ছেড়ে দিন; // অপেক্ষা করুন 200ms} Wire.beginTransmission (0x68); // DS3231 ঠিকানা Wire.write (0) দিয়ে I2C প্রোটোকল শুরু করুন; // নিবন্ধন ঠিকানা পাঠান Wire.endTransmission (মিথ্যা); // I2C Wire.requestFrom (0x68, 7) থেকে পুনরায় চালু করুন; // DS3231 থেকে 7 বাইটের অনুরোধ করুন এবং দ্বিতীয় পড়ার শেষে I2C বাস ছেড়ে দিন = Wire.read (); // রেজিস্টার 0 মিনিট = Wire.read () থেকে সেকেন্ড পড়ুন; // রেজিস্টার থেকে মিনিট পড়ুন 1 ঘন্টা = Wire.read (); // রেজিস্টার 2 Wire.read () থেকে ঘন্টা পড়ুন; // রেজিস্টার 3 থেকে দিন পড়ুন (ব্যবহার করা হয়নি) তারিখ = Wire.read (); // রেজিস্টার থেকে পড়ার তারিখ 4 মাস = Wire.read (); // রেজিস্টার থেকে পড়ার মাস 5 বছর = Wire.read (); // রেজিস্টার থেকে পড়ার বছর 6 DS3231_display (); // ডায়প্লে সময় এবং ক্যালেন্ডার বিলম্ব (50); // 50ms অপেক্ষা করুন}
প্রস্তাবিত:
সময় পরিমাপ (টেপ পরিমাপ ঘড়ি): 5 টি ধাপ (ছবি সহ)
সময় পরিমাপ (টেপ পরিমাপ ঘড়ি): এই প্রকল্পের জন্য, আমরা (অ্যালেক্স ফিল এবং আনা লিন্টন) একটি দৈনন্দিন পরিমাপের সরঞ্জাম নিয়েছি এবং এটি একটি ঘড়িতে পরিণত করেছি! মূল পরিকল্পনা ছিল একটি বিদ্যমান টেপ পরিমাপকে মোটরচালিত করা। এটি তৈরিতে, আমরা সিদ্ধান্ত নিয়েছি যে আমাদের নিজস্ব শেল তৈরি করা আরও সহজ হবে
RGB ঘড়ি বাচ্চাদের সময় সম্পর্কে শেখানোর জন্য: 4 টি ধাপ
RGB ঘড়ি বাচ্চাদের সময় সম্পর্কে শেখানোর জন্য: গত রাতে আমি একটি ধারণা নিয়ে এসেছিলাম কিভাবে আমার 5yo কে সময়ের অনুভূতি পেতে সাহায্য করতে পারি। এটা স্পষ্ট যে বাচ্চারা দৈনিক ইভেন্টের দিকে মনোযোগ দিচ্ছে যাতে আগামীতে কী ঘটতে পারে তার ধারণা পাওয়া যায়। কিন্তু আগের ঘটনাগুলি সাধারণত একটি জগাখিচুড়ি এবং খুব কমই ক্রমে হয়।
স্থানীয় সময় NEO-6M মডিউল ব্যবহার করে Arduino GPS ঘড়ি: 9 টি ধাপ
স্থানীয় সময় NEO-6M মডিউল ব্যবহার করে Arduino GPS ঘড়ি: এই টিউটোরিয়ালে আমরা শিখব কিভাবে arduino ব্যবহার করে উপগ্রহ থেকে বর্তমান সময় পেতে হয়। ভিডিওটি দেখুন
ইন্টারনেট ঘড়ি: NTP প্রোটোকল সহ ESP8266 NodeMCU ব্যবহার করে একটি OLED দিয়ে তারিখ এবং সময় প্রদর্শন করুন: 6 টি ধাপ
ইন্টারনেট ঘড়ি: NTP প্রোটোকল সহ ESP8266 NodeMCU ব্যবহার করে একটি OLED দিয়ে তারিখ এবং সময় প্রদর্শন করুন: হাই বন্ধুরা এই নির্দেশাবলীতে আমরা একটি ইন্টারনেট ঘড়ি তৈরি করব যা ইন্টারনেট থেকে সময় পাবে তাই এই প্রকল্পটি চালানোর জন্য আরটিসির প্রয়োজন হবে না, এটি কেবল একটি প্রয়োজন কাজ করছে ইন্টারনেট সংযোগ এবং এই প্রকল্পের জন্য আপনার একটি esp8266 প্রয়োজন হবে যা একটি
থাম্বহিল ঘড়ি - সময় অনুমান করা যাক: 5 টি ধাপ (ছবি সহ)
থাম্বউইল ঘড়ি - আসুন সময় অনুমান করি: হ্যালো সবাই, এখানে আমার প্রথম নির্দেশিকা আছে, তাই আমি আশা করি এটি ভাল হবে। তাছাড়া, আমার ইংলিশ লেভেল বেশ খারাপ তাই আমি আশা করি আমি খুব বেশি ভুল করব না! একটি পুরনো ল্যাব থেকে উদ্ধার করা হয়েছে