সুচিপত্র:

Stepper Pomodoro টাইমার: 3 ধাপ (ছবি সহ)
Stepper Pomodoro টাইমার: 3 ধাপ (ছবি সহ)

ভিডিও: Stepper Pomodoro টাইমার: 3 ধাপ (ছবি সহ)

ভিডিও: Stepper Pomodoro টাইমার: 3 ধাপ (ছবি সহ)
ভিডিও: कबड्डी टाइमर। 30 Sec Kabaddi Timer & Raid Timer with Hooter, Timer Device for Sports #shortfeed 2024, জুলাই
Anonim
Image
Image
ধাপ 1: কন্টেইনারের বাইরে সোল্ডারিং এবং সংযোগ সার্কিট
ধাপ 1: কন্টেইনারের বাইরে সোল্ডারিং এবং সংযোগ সার্কিট

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

সরঞ্জাম

• তাতাল

• তারের স্ট্রিপার

• লেজার কাটার (অথবা স্যান্ডার নির্ভর করে আপনি কিভাবে টাইমারের ডায়াল তৈরি করতে চান)

• ড্রিল (আমি একটি ড্রিল প্রেস ব্যবহার করে ডায়ালগুলির জন্য যথেষ্ট বড় গর্ত মুছতে)

উপকরণ

Ar 1 Arduino Uno

Half 1 অর্ধ-আকারের ব্রেডবোর্ড

H 3 এইচ ব্রিজ (আমি DRV8833 ব্যবহার করেছি, একটি মোটর শিল্ড ওয়োল্ড আমাকে কিছু সময় এবং মাথাব্যথা বাঁচিয়েছে)

Ste 3 স্টেপার মোটর (আমি NEMA 17 স্টেপার ব্যবহার করেছি)

• 1 বোতাম

• 1 220-1K ওহম প্রতিরোধক (সীমার মধ্যে যে কোনটি ভাল)

• এসি/ডিসি অ্যাডাপ্টার (আমি 12V ব্যবহার করেছি, সম্ভবত এই পরিমাণ স্টেপারগুলির জন্য খুব বড়)

• পাওয়ার স্প্লিটার

• ইউএসবি এ-বি তার

• ব্রেডবোর্ডের তার

ঝাল

Time টাইমার ধারক জন্য উপকরণ

Dial ডায়ালের জন্য এক্রাইলিক

• নখ বা ধাতব পিনগুলি টাইমারের স্থির বাহু হিসাবে কাজ করে

ধাপ 1: ধাপ 1: কনটেইনারের বাইরে সোল্ডারিং এবং সংযোগ সার্কিট

এই ধাপের জন্য আমি আমার সমস্ত H সেতুগুলিকে একসাথে সোল্ডার করে শুরু করেছি (যদি আপনি মোটর ieldাল কিনে থাকেন তবে আপনার এইগুলি সোল্ডার করার দরকার নেই। একবার আপনার প্রতিটি স্টেপারের জন্য একটি এইচ ব্রিজ থাকলে আপনি আপনার স্টেপারগুলি কীভাবে তারযুক্ত হয় তা পরীক্ষা করতে পারেন।

NEMA 17 গুলি বাইপোলার স্টেপার মোটর নামে পরিচিত, যার অর্থ হল তাদের মোটরের মধ্যে দুটি (একের পরিবর্তে) কয়েল সেট রয়েছে যা মোটরের সুনির্দিষ্ট চলাফেরার জন্য মেরু পরিবর্তন করে। বাইপোলার স্টেপারগুলিতে সাধারণত চারটি তার এবং পোলার স্টেপারগুলিতে সাধারণত ছয়টি থাকে, এটি অনলাইনে নির্দেশাবলীকে কিছুটা জটিল করে তোলে। যাইহোক আপনি দুটি তারের সাথে একটি মাল্টি মিটার সংযুক্ত করতে পারেন এবং দেখতে পারেন যে সেগুলি সংযুক্ত আছে কি না। NEMA 17 স্টেপারের রেড, ইয়েলো, গ্রে, গ্রিন কালার অর্ডারে তারের অর্ডার আছে, লাল এবং ধূসর প্রথম পোলার পেয়ার এবং হলুদ এবং সবুজ দ্বিতীয় পোলার পেয়ার। যদি কোনও সময়ে স্টেপার প্রত্যাশিত আন্দোলনটি সম্পন্ন করার পরিবর্তে ঝাঁকুনি শুরু করে, তবে অসুবিধা হল যে আপনার তারগুলি একরকম সঠিকভাবে তাদের যমজগুলিতে মেরুকরণ করা হয়নি বা একটি সংযোগ বিচ্ছিন্ন। প্রতিটি স্টেপার চারটি আউটপুট পিনের মাধ্যমে নিয়ন্ত্রিত হয় যা DRV8833 H সেতুর সাথে সংযোগ স্থাপন করে। DRV8833 এ ইনপুটের জন্য ওয়্যারিং অর্ডার হল: IN1, IN2, পাওয়ার, গ্রাউন্ড, IN3, IN4। আউটপুট উদ্দেশ্যে NEMA শুধু ছয়টি পিনের মধ্যবর্তী চারটির সাথে সংযুক্ত করে: লাল, ধূসর, হলুদ, সবুজ। এখন বিদ্যুৎ সংযোগ করা যাক। আমার NEMAs ডিজিটাল পোর্টে 2-13 আছে।

এটি পাওয়ার জন্য আমি একটি 12V এসি/ডিসি অ্যাডাপ্টার স্প্লিটারের সাথে কিনেছি যাতে আরডুইনো এবং সমস্ত স্টেপার উভয়ই পাওয়ার সক্ষম হয়। সতর্কতা: ইতিমধ্যেই পোর্ট থেকে পাওয়ার প্রাপ্ত আরডুইনো থেকে আপনার পাওয়ার এবং গ্রাউন্ড ওয়্যারগুলিকে এসি/ডিসি থেকে সরাসরি পাওয়ার পাওয়ার ব্রেডবোর্ডে সংযুক্ত করবেন না। এটা আপনার বোর্ড ভাজা হবে। 12V অ্যাডাপ্টারটি প্রাচীরের মধ্যে লাগানো থেকে স্প্লিটারের একটি অংশ সরাসরি Arduino বন্দরে এবং অন্যটি রুটি বোর্ডের ইতিবাচক এবং নেতিবাচক দিকে চলে যায়।

অবশেষে, বোতামটি সংযুক্ত করার সময় এসেছে। বোতামের একপাশে উভয় শক্তির প্রয়োজন হবে (আমাদের প্রতিরোধক বিভক্ত) পাশাপাশি আউটপুট পিনটি সোল্ডার করা হয়েছে (এটি রুটিবোর্ড থেকেও করা যেতে পারে)। অন্য পিন আমাদের স্থল হবে। এই তিনটি তারের মধ্যে প্লাগ করা উচিত: 5V থেকে প্রতিরোধক সঙ্গে শক্তি, A0 থেকে আউটপুট, এবং Arduino Uno বোর্ড নিজেই সব স্থল থেকে স্থল।

এখান থেকে আমাদের এখানে পাওয়া এই বেসিক স্টেপার টেস্ট কোড ব্যবহার করে স্টেপারগুলিকে নিয়ন্ত্রণ করার চেষ্টা করতে হবে। Arduino.cc এ এই ব্যাখ্যাটি যদি আপনার প্রয়োজন হয় তবে দ্বি/ইউনিপোলার স্টেপারগুলির আরও পুঙ্খানুপুঙ্খ ব্যাখ্যা দেয়। পরবর্তীতে Pomodoro এর কোডে প্রবেশ করা যাক!

ধাপ 2: ধাপ 2: কোড আপলোড করা এবং এটি আপনার প্রয়োজনের সাথে সামঞ্জস্য করা

ধাপ 2: কোড আপলোড করা এবং এটি আপনার প্রয়োজনের সাথে সামঞ্জস্য করা
ধাপ 2: কোড আপলোড করা এবং এটি আপনার প্রয়োজনের সাথে সামঞ্জস্য করা

নীচে বোতাম সহ আমার Pomodoro এর জন্য কোড দেওয়া আছে, যাতে এটি আপনার সেটআপে কাস্টমাইজ করতে এই ধাপগুলি অনুসরণ করুন:

1. আপনার ব্যক্তিগত স্টেপার টাইপের বিপ্লব প্রতি কতটি ধাপ আছে তা নির্ধারণ করুন (NEMA 17s এর 200 আছে এবং এটি ধাপে ধাপে পূর্ণসংখ্যায় তালিকাভুক্ত করা হয় যার নাম StepPerRevolution)।

2. স্থির পূর্ণসংখ্যা কলার বাটনপিনে আপনার বোতামটি কোথায় প্রবেশ করছে তা সেট করুন।

3. স্টেপারদের কমান্ড করার জন্য আপনার আরডুইনো কোথায় আউটপুট করা উচিত তা নির্ধারণ করুন (এই অংশগুলি H সেতু প্রকারের মধ্যে সবচেয়ে বেশি পরিবর্তিত হতে পারে কারণ অনেকেরই বিভিন্ন লাইব্রেরি রয়েছে যা তারা ব্যবহার করে)।

4. সেটপিডে RPMs এ স্টেপার গতি সেট করুন

5. আপনার স্টেপারগুলি চালু হওয়ার আগে আপনি কতবার চালু করতে চান তা সেট করুন (আমার স্টেপারগুলি দশ মিনিট গণনা করে, তাই তারা 1 RPM এ দশবার ঘোরান)।

6 আপনি কতক্ষণ পিছনে ঘুরতে চান তা সেট করুন।

#অন্তর্ভুক্ত

const int stepsPerRevolution = 200; // আমার স্টেপার মোটরগুলির প্রতিটি পূর্ণ বিপ্লবে কতগুলি ধাপ রয়েছে তা স্থির করে

const int buttonPin = A0; // আমার বোতাম ইনপুট স্থির সেটিং

Stepper firstStepper (stepsPerRevolution, 2, 3, 4, 5); // নির্দিষ্ট পিনগুলিতে স্টেপার লাইব্রেরি শুরু করুন

স্টেপার দ্বিতীয় Stepper তৃতীয় Stepper (stepsPerRevolution, 10, 11, 12, 13); Stepper firstStepperBack (stepsPerRevolution, 2, 3, 4, 5); // এই পিনগুলিতে স্টেপার লাইব্রেরিটি পুনরায় চালু করুন যাতে স্টিপার সেকেন্ড স্টেপারব্যাক (ধাপসমূহ, e,,,)) এর মেয়াদ শেষ হয়ে যাওয়ার সময় সতর্ক করা যায়। Stepper তৃতীয় StepperBack (stepsPerRevolution, 10, 11, 12, 13);

int minutesCounter = 0; // int গণনা steppers সম্পূর্ণ বিপ্লব

int timerState = নিম্ন; // পোমোডোরো টাইমারের বর্তমান অবস্থা (উচ্চ = চালু, নিম্ন = বন্ধ/রিসেট) int buttonState; // ইনপুট পিন থেকে শেষ পড়া int lastButtonState = HIGH; // ইনপুট পিন থেকে আগের পড়া

// নিম্নলিখিত ভেরিয়েবলগুলি স্বাক্ষরবিহীন লম্বা কারণ সময়, মিলিসেকেন্ডে পরিমাপ করা, // একটি int- এ সঞ্চয় করার চেয়ে দ্রুত একটি বড় সংখ্যা হয়ে যাবে। স্বাক্ষরবিহীন দীর্ঘ lastDebounceTime = 0; // শেষবার আউটপুট পিনটি স্বাক্ষরবিহীন দীর্ঘ debounceDelay = 50 টগল করা হয়েছিল; // ডিবাউন্স সময়; আউটপুট flickers যদি বৃদ্ধি

অকার্যকর সেটআপ() {

pinMode (buttonPin, INPUT_PULLUP); // একটি ইনপুট হিসাবে বোতামের ধ্রুবক সেট করুন

firstStepper.setSpeed (1); // স্টেপার সেকেন্ড স্টেপার সেট সেট স্পিড (1) প্রতি 10 মিনিট গণনার জন্য 1 rpm এ গতি সেট করুন; thirdStepper.setSpeed (1); firstStepperBack.setSpeed (30); // Pomodoro secondStepperBack.setSpeed (30) সম্পন্ন করার পরে সময় শেষ হয়ে গেছে তা সতর্ক করার জন্য 30 rpm এ গতি সেট করুন; তৃতীয় স্টেপারব্যাক। সেট স্পিড (30);

Serial.begin (9600); // 9600 বড রেট দিয়ে সিরিয়াল মনিটর শুরু করুন

}

অকার্যকর লুপ () {

// একটি স্থানীয় পরিবর্তনশীল মধ্যে সুইচ অবস্থা পড়ুন: int reading = digitalRead (buttonPin);

// আপনি শুধু বোতাম টিপেছেন কিনা তা পরীক্ষা করে দেখুন

/ //

// যদি সুইচ পরিবর্তন হয়, শব্দ বা চাপের কারণে:

যদি (পড়া! = lastButtonState) {// ডিবাউন্সিং টাইমার lastDebounceTime = millis () রিসেট করুন; } যদি ((মিলিস () - lastDebounceTime)> debounceDelay) {// যাই হোক না কেন পড়া, এটি দীর্ঘ সময় ধরে আছে // ডিবাউন্স বিলম্বের চেয়ে, তাই এটিকে প্রকৃত বর্তমান অবস্থা হিসাবে নিন:

// যদি বোতামের অবস্থা পরিবর্তিত হয়:

যদি (পড়া! = buttonState) {buttonState = reading;

// শুধুমাত্র টাইমার অ্যাক্টিভেটন টগল করুন যদি নতুন বোতামের অবস্থা নির্দেশ করে যে এটি চাপা ছিল

// চালু করার জন্য একবার চাপুন, আবার চাপুন যদি বন্ধ করতে হয় (buttonState == LOW) {timerState =! timerState; সিরিয়াল.প্রিন্ট ("টাইমার স্টেট হল"); Serial.println (টাইমার স্টেট); }}}

যদি (টাইমার স্টেট == উচ্চ) {

Serial.println ("Pomodoro টাইমার শুরু হয়েছে"); যদি (minutesCounter <11) {// যদি বর্তমান দ্বিতীয় মান আগের মান থেকে আলাদা হয় তাহলে firstStepper.step (stepsPerRevolution); // টার্ন স্টেপার 200 স্টেপ/1 রেভ মিনিট কাউন্টার ++; Serial.print ("minutesCounter is"); Serial.println (minutesCounter); }

যদি (11 <= minutesCounter && minutesCounter <21) {// যদি বর্তমান দ্বিতীয় মান আগের মান থেকে আলাদা হয় তাহলে secondStepper.step (stepsPerRevolution); // টার্ন স্টেপার 200 স্টেপ/1 রেভ মিনিট কাউন্টার ++; Serial.print ("minutesCounter is"); Serial.println (minutesCounter); }

যদি (21 <= minutesCounter && minutesCounter <31) {// যদি বর্তমান দ্বিতীয় মান আগের মান থেকে আলাদা হয় তবে thirdStepper.step (stepsPerRevolution); // টার্ন স্টেপার 200 স্টেপ/1 রেভ মিনিট কাউন্টার ++; Serial.print ("minutesCounter is"); Serial.println (minutesCounter); }

যদি (31 <= minutesCounter && minutesCounter <1031) {// যদি বর্তমান দ্বিতীয় মান আগের মান থেকে আলাদা হয় তাহলে firstStepperBack.step (-1); // পর্যায়ক্রমে স্টেপার ফিরে 1 ধাপে প্রদর্শিত হবে যেমন সব একসাথে চলছে সেকেন্ড স্টেপারব্যাক.স্টেপ (-1); thirdStepperBack.step (-1); মিনিট কাউন্টার ++; Serial.print ("minutesCounter is"); Serial.println (minutesCounter); }} অন্য {Serial.println ("Pomodoro টাইমার বন্ধ"); } // পড়া সংরক্ষণ করুন। পরের বার লুপের মাধ্যমে, // এটি হবে LastButtonState: lastButtonState = reading; }

ধাপ 3: ধাপ 3: যদি আপনি চান তবে স্টেপার এবং আরডুইনো ধারণ করুন

ধাপ 3: যদি আপনি চান তবে স্টেপারস এবং আরডুইনো রাখুন
ধাপ 3: যদি আপনি চান তবে স্টেপারস এবং আরডুইনো রাখুন
ধাপ 3: যদি আপনি চান তবে স্টেপার এবং আরডুইনো ধারণ করুন
ধাপ 3: যদি আপনি চান তবে স্টেপার এবং আরডুইনো ধারণ করুন
ধাপ 3: যদি আপনি চান তবে স্টেপারস এবং আরডুইনো রাখুন
ধাপ 3: যদি আপনি চান তবে স্টেপারস এবং আরডুইনো রাখুন

আমি আমার ঘড়ির জন্য একটি সমান্তরাল ফর্ম তৈরি করতে বেছে নিয়েছি। এই ফর্ম এবং লাল ওকের উপাদান পছন্দ মধ্য শতাব্দীর আধুনিক আসবাবপত্র দ্বারা অনুপ্রাণিত হয়েছিল। একটা অংশ যেটাতে আমার সবচেয়ে বেশি অসুবিধা হয়েছিল তা হলো স্টেপারগুলিকে ডায়াল দিয়ে তাদের পোর্টহোল দিয়ে লাগানো।

প্রস্তাবিত: