সুচিপত্র:

132 পিক্সেল ঘড়ি: 5 টি ধাপ (ছবি সহ)
132 পিক্সেল ঘড়ি: 5 টি ধাপ (ছবি সহ)

ভিডিও: 132 পিক্সেল ঘড়ি: 5 টি ধাপ (ছবি সহ)

ভিডিও: 132 পিক্সেল ঘড়ি: 5 টি ধাপ (ছবি সহ)
ভিডিও: ঘুমানোর সময় ঘাড়ে উকুন উঠে গেলো #cartoon 2024, নভেম্বর
Anonim
Image
Image
132 পিক্সেল ঘড়ি
132 পিক্সেল ঘড়ি

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

এটি ছিল আজ পর্যন্ত আমার নেওয়া সবচেয়ে বড় প্রকল্প, আমি months মাস আগে এটা নিয়ে ভাবতে শুরু করেছিলাম এবং ধারণাটি ধীরে ধীরে একত্রিত হয়েছিল। আমি ফলাফলে সত্যিই খুশি এবং আমি আপনার সাথে এটি ভাগ করার জন্য উন্মুখ।

ধাপ 1: সরবরাহ এবং সরঞ্জাম সংগ্রহ করা।

সরবরাহ এবং সরঞ্জাম সংগ্রহ।
সরবরাহ এবং সরঞ্জাম সংগ্রহ।
সরবরাহ এবং সরঞ্জাম সংগ্রহ।
সরবরাহ এবং সরঞ্জাম সংগ্রহ।
সরবরাহ এবং সরঞ্জাম সংগ্রহ।
সরবরাহ এবং সরঞ্জাম সংগ্রহ।
সরবরাহ এবং সরঞ্জাম সংগ্রহ।
সরবরাহ এবং সরঞ্জাম সংগ্রহ।

উপাদান।

এই প্রকল্পটি আমার স্থানীয় DIY দোকান থেকে একটি চিপ শখ বোর্ডে নির্মিত হয়েছে। বোর্ড পরিমাপ 850 মিমি প্রশস্ত 500 মিমি উচ্চ এবং 18 মিমি গভীর।

এই প্রকল্পে ব্যবহৃত LEDs হল 5050 WS2812b বৃত্তাকার PCB- তে লাগানো যা পিছনে সোল্ডার প্যাড সহ প্রায় 9 মিমি ব্যাস।

আমি একটি Arduino প্রো মিনি সামঞ্জস্যপূর্ণ মাইক্রো কন্ট্রোলার ব্যবহার করছি। এর 5V 16 MHZ ভার্সন। আমি এটিকে বেছে নিয়েছি কারণ এটি একটি সুপার স্লিম ডিজাইন, ছোট ফুট প্রিন্ট এবং সমস্ত প্রয়োজনীয় পোর্ট এবং ভবিষ্যতের আপগ্রেডের জন্য কিছু অতিরিক্ত। এটি 5 ভোল্টও তাই আমি LEDs, মাইক্রো কন্ট্রোলার এবং RTC এর জন্য একক পাওয়ার সাপ্লাই ব্যবহার করতে পারি

আরটিসি (রিয়েল টাইম ক্লক) মডিউল দ্বারা সময় রাখার যত্ন নেওয়া হয় যা DS3231 চিপের বৈশিষ্ট্যযুক্ত। এই চিপটি খুব সঠিক তাই সময়টি খুব বেশি ড্রিফট করা উচিত নয়।

এছাড়াও ব্যবহৃত:

তারের। ঝাল এবং গরম আঠালো।

সরঞ্জাম:

পাওয়ার ড্রিল এবং কাঠের ড্রিল বিট (10 মিমি এবং 5 মিমি)

তাতাল

গরম আঠা বন্দুক

তারের স্নিপস

ড্রেমেল এবং ডুবে যাওয়া রাউটারের আনুষাঙ্গিক

ধাপ 2: মার্কিং, ড্রিলিং এবং রাউটিং

মার্কিং, ড্রিলিং এবং রাউটিং
মার্কিং, ড্রিলিং এবং রাউটিং
মার্কিং, ড্রিলিং এবং রাউটিং
মার্কিং, ড্রিলিং এবং রাউটিং
মার্কিং, ড্রিলিং এবং রাউটিং
মার্কিং, ড্রিলিং এবং রাউটিং

তুরপুন

  • একটি প্রণালী প্রান্ত ব্যবহার করে বিপরীত কোণ থেকে একটি রেখা অঙ্কন করে বোর্ডের কেন্দ্র খুঁজুন।
  • স্ট্রিং এবং একটি কলম ব্যবহার করে 3 টি বৃত্ত চিহ্নিত করুন। বাইরের সর্বাধিক বৃত্তটি বোর্ডের প্রান্ত থেকে প্রায় 20 মিমি হওয়া উচিত এবং অন্যান্য 2 টি লাইন শেষ লাইন থেকে 15 মিমি দ্বারা সরানো উচিত।
  • বাইরের 2 লাইন এবং ভিতরের লাইনে ঘন্টা এবং সেকেন্ডের অবস্থান চিহ্নিত করতে সাহায্য করার জন্য আমি একটি মুদ্রিত ঘড়ির মুখ ব্যবহার করেছি।
  • প্রতি ঘন্টা, মিনিট এবং সেকেন্ডের জন্য প্রায় 5 মিমি গভীর 10 মিমি গর্ত ড্রিল করুন।
  • ঘন্টা, মিনিট এবং সেকেন্ডের জন্য বোর্ড থাকলেও গর্ত তৈরি করতে 5 মিমি ড্রিল ব্যবহার করুন।

রাউটিং

যদিও এই ধাপটি প্রয়োজনীয় নয়, এটি ঘড়িকে দেয়ালে ফ্লাশ লাগানোর অনুমতি দেবে।

  • বোর্ডে একটি রাউটার এবং সার্কেল গাইড রুট তারের চ্যানেল ব্যবহার করা
  • আরটিসি এবং মাইক্রো কন্ট্রোলারের বসবাসের জন্য একটি অবকাশ চিহ্নিত করুন এবং রুট করুন।
  • বাইরের লাইন থেকে তারের জন্য রেসে একটি চ্যানেল রুট করুন

ধাপ 3: এত বেশি সৈনিক, কাটা এবং স্ট্রিপিং।

তাই অনেক সৈনিক, কাটা এবং স্ট্রিপিং।
তাই অনেক সৈনিক, কাটা এবং স্ট্রিপিং।
তাই অনেক সৈনিক, কাটা এবং স্ট্রিপিং।
তাই অনেক সৈনিক, কাটা এবং স্ট্রিপিং।
তাই অনেক সৈনিক, কাটা এবং স্ট্রিপিং।
তাই অনেক সৈনিক, কাটা এবং স্ট্রিপিং।

এই পরবর্তী অংশটি বলার চেয়ে অনেক সহজ। আমার পরামর্শ এটা তাড়াহুড়ো করা নোট হবে। চেষ্টা করুন এবং একটি সিস্টেম খুঁজুন এবং একটি ছন্দ পেতে।

প্রতিটি LEDs 5 ভোল্ট ইন, 5 ভোল্ট আউট, ডেটা ইন, ডেটা আউট, গ্রাউন্ড ইন এবং গ্রাউন্ড আউট প্রয়োজন। মাইক্রো কন্ট্রোলার এবং RTC এর 400 টিরও বেশি তারের জন্য পাওয়ার সহ, সবগুলি উভয় প্রান্তে ছিনতাই এবং সোল্ডারযুক্ত।

একটি চটকদার নীল পদার্থ এই পদক্ষেপের জন্য খুব দরকারী।

  • আমি একে অপরের সাথে সংযোগের জন্য প্রয়োজনীয় তারের দৈর্ঘ্য বের করার জন্য একে অপরের পাশে তাদের গর্তে 2 টি LED স্থাপন করে শুরু করেছি।
  • একটি গাইড হিসাবে তারের 1 ম টুকরা ব্যবহার করে আমি তারপর প্রতিটি রঙের তারের 60 টি কেটে ফেলি।
  • প্রতিটি তারের প্রান্ত থেকে 2 মিমি স্লিভিং স্ট্রিপ করুন এবং সোল্ডার দিয়ে টিন করুন।
  • প্রতিটি LED প্যাডের উপর ঝাল এর একটি ছোট ব্লব erালুন।
  • মিনিট এবং সেকেন্ডের জন্য 60 এর দুটি চেইন এবং ঘন্টার জন্য 12 এর একটি চেইন গঠনের জন্য LEDs তে তারগুলি সোল্ডার করুন। আমি 5V এর জন্য লাল তার, ডাটার জন্য হলুদ এবং মাটির জন্য নীল ব্যবহার করেছি।
  • প্রতিটি LED আউট (DOUT) পরবর্তী LED এর Data In (DIN) এর সাথে সংযুক্ত করার জন্য যত্ন নিন
  • প্রতিটি চেইন ডোজ শেষ নেতৃত্বে একটি তথ্য আউট তারের প্রয়োজন হয় না।

একবার সব চেইন সম্পন্ন হলে তাদের ইনস্টল করার আগে তাদের পরীক্ষা করা ভাল ধারণা। প্রতিটি LED কাজ করছে কিনা তা নিশ্চিত করার জন্য আমি আমার Arduino UNO এবং Adafruit NeoPixel Strand Test ব্যবহার করেছি।

5V, গ্রাউন্ড এবং ডেটা ইন এর জন্য প্রতিটি চেইনের উপর লম্বা তারের সোল্ডার।

এই মুহুর্তে পাঁচটি 5v তারের, Arduino প্রো মিনি এবং 5 গ্রাউন্ড তারের সাথে সংযুক্ত তিনটি ডেটা তার থাকতে হবে।

5v তারের প্রান্ত থেকে 5 মিমি স্ট্রিপ করুন এবং সেগুলি একসাথে ঝালাই করুন এবং গ্রাউন্ড তারের জন্য পুনরাবৃত্তি করুন।

আরডিনো প্রো মিনি -র RAW পিন এবং RTC- এর VCC পিন -এ একটি 5V তারের তিনটি চেইন সোল্ডার করার পরে। আরডুইনো প্রো মিনি এবং আরটিসিতে GND থেকে একটি গ্রাউন্ড ওয়্যার এবং তারপরে আরও 2 টি তার:

এসসিএল আরটিসি থেকে এ 5 পর্যন্ত প্রো মিনিতে

প্রো মিনিতে RTC থেকে A4 পর্যন্ত SDA

LEDs থেকে তথ্য লাইন সংযুক্ত করা উচিত:

  • সেকেন্ড - ডিজিটাল পিন 3।
  • মিনিট - ডিজিটালপিন 4
  • ঘন্টা - ডিজিটালপিন 5

ধাপ 4: ইনস্টল করা

ইনস্টল করা হচ্ছে
ইনস্টল করা হচ্ছে
ইনস্টল করা হচ্ছে
ইনস্টল করা হচ্ছে
ইনস্টল করা হচ্ছে
ইনস্টল করা হচ্ছে

একবার সোল্ডার হয়ে গেলে, তাদের গর্তে এলইডি ইনস্টল করা সোজা সামনের দিকে হওয়া উচিত। এলইডিগুলি ইনস্টল করা দরকার যাতে ডাটাটি ঘড়ির কাঁটার বিপরীতে চলে যায় যখন পেছন থেকে দেখলে কোডটি সামনের দিকে সেটআপ করা হয়।

ভবিষ্যতে ব্যর্থ হলে যদি আমি একটি একক LED প্রতিস্থাপন করতে সক্ষম হতে চাই তবে আমি তাদের ধরে রাখার জন্য অল্প পরিমাণ গরম আঠা ব্যবহার করেছি।

আমি সব তারের ঝরঝরে এবং পরিপাটি রাখতে এবং বোর্ডে ব্যারেল সংযোগকারী ঠিক করতে গরম আঠা ব্যবহার করেছি।

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

এই কোডটি আরটিসিতে যে সময়টি সংকলিত হয়েছিল সে সময়ও সেট করবে। তাই শুধু আপলোড বাটন টিপে রাখা গুরুত্বপূর্ণ যাতে এটি যত তাড়াতাড়ি সম্ভব মেনে চলে এবং আপলোড করে।

এই কোডের বেশিরভাগই অ্যান্ডি ডোরোর নিওপিক্সেল রিং ক্লক থেকে ধার করা হয়েছিল। অ্যাডাফ্রুট নিওপিক্সেল স্ট্র্যান্ড টেস্ট থেকে কিছু এবং কিছু আমি একসাথে রেখেছি।

আপনাকে কয়েকটি লাইব্রেরি ইনস্টল করতে হবে। এগুলি Arduino সফটওয়্যারে লাইব্রেরি ম্যানেজার থেকে পাওয়া যায়।

Ws2812b LEDs এর জন্য Adafruit NeoPixel

I2C এর উপর RTC- এর সাথে কথা বলার জন্য ওয়্যার (এটি মান হিসাবে নির্মিত)

এবং RTClib RTC কে কি জিজ্ঞাসা করতে হবে তা জানার জন্য

/*************************************************** ************************* *** **************************************************** ****************************

পরিবর্ধন ও পরিবর্তন তালিকা

তারিখ দ্বারা কি

20140320 AFD প্রথম খসড়া 20160105 AFD বিবর্ণ arcs 20160916 AFD Trinket সামঞ্জস্যপূর্ণ 20170727 AFD 3D enclosure, পরিবর্তনশীল প্রারম্ভিক বিন্দুর জন্য STARTPIXEL যোগ করেছে, DST লাইব্রেরি ব্যবহার করে স্বয়ংক্রিয় DST সমর্থন 20180424 AFD যোগ করেছে https://github.com/andydoro/DST_RTC *

/ লাইব্রেরি কোড অন্তর্ভুক্ত করুন:

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

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

// পিন সংজ্ঞায়িত করুন

#নির্ধারিত SECPIN 3 #MINPIN 4 নির্ধারণ করুন #HOUPIN 5 নির্ধারণ করুন

#উজ্জ্বলতা 20 নির্ধারণ করুন // সর্বাধিক উজ্জ্বলতা সেট করুন

#10 নির্ধারণ করুন

#ডিফাইন g 10 #ডিফাইন b 10 RTC_DS3231 rtc; // ঘড়ি বস্তু স্থাপন

Adafruit_NeoPixel stripS = Adafruit_NeoPixel (60, SECPIN, NEO_GRB + NEO_KHZ800); // স্ট্রিপ অবজেক্ট

Adafruit_NeoPixel stripM = Adafruit_NeoPixel (60, MINPIN, NEO_GRB + NEO_KHZ800); // স্ট্রিপ বস্তু Adafruit_NeoPixel stripH = Adafruit_NeoPixel (24, HOUPIN, NEO_GRB + NEO_KHZ800); // স্ট্রিপ অবজেক্ট বাইট pixelColorRed, pixelColorGreen, pixelColorBlue; // রঙের মান ধারণ করে

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

Wire.begin (); // শুরু করুন I2C rtc.begin (); // শুরু ঘড়ি

Serial.begin (9600);

// সেট পিনমোড পিনমোড (SECPIN, আউটপুট); পিনমোড (মিনিপিন, আউটপুট); পিনমোড (হাউপিন, আউটপুট);

যদি (rtc.lostPower ()) {

Serial.println ("RTC শক্তি হারিয়েছে, সময় সেট করতে দেয়!"); // নিম্নলিখিত লাইনটি RTC সেট করে তারিখ এবং সময় এই স্কেচ সংকলিত হয়েছিল rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // এই লাইনটি একটি স্পষ্ট তারিখ ও সময় দিয়ে RTC সেট করে, উদাহরণস্বরূপ সেট করতে // জানুয়ারী 21, 2014 সকাল 3 টায় আপনি কল করবেন: // rtc.adjust (DateTime (2014, 1, 21, 3, 0, 0)); }

stripS.begin ();

stripM.begin (); stripH.begin (); //strip.show (); // সব পিক্সেল 'বন্ধ' করতে শুরু করুন

// স্টার্টআপ ক্রম

বিলম্ব (500);

colorWipeS (stripS. Color (0, g, 0), 5); // নীল রঙ WipeM (stripM. Color (r, 0, 0), 5); // নীল রঙ WipeH (stripH. Color (0, 0, b), 50); // নীল

বিলম্ব (1000);

DateTime theTime = rtc.now (); // অ্যাকাউন্টে নেয় ডিএসটি বাইট সেকেন্ডভাল = theTime.second (); // সেকেন্ড বাইট মিনিটভাল = theTime.minute () পান; // মিনিটের মধ্যে ঘন্টা ঘন্টা = theTime.hour () পান; hourval = hourval % 12; // এই ঘড়িটি 12 ঘন্টা, যদি 13-23 হয়, 0-11` তে রূপান্তরিত হয়

জন্য (uint16_t i = 0; i <secondval; i ++) {stripS.setPixelColor (i, 0, 0, b); stripS.show (); বিলম্ব (5); }

জন্য (uint16_t i = 0; i <minuteval; i ++) {stripM.setPixelColor (i, 0, g, 0); stripM.show (); বিলম্ব (5); }

জন্য (uint16_t i = 0; i <hourval; i ++) {stripH.setPixelColor (i, r, 0, 0); stripH.show (); বিলম্ব (5); }

}

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

// সময় পেতে

DateTime theTime = rtc.now (); // DST অ্যাকাউন্টে নেয়

বাইট সেকেন্ডভাল = theTime.second (); // সেকেন্ড পান

বাইট মিনিটভাল = theTime.minute (); // ঘণ্টাভাল = মিনিট সময় পান। // ঘন্টা ঘন্টা পান = ঘন্টাভাল % 12; // এই ঘড়িটি 12 ঘন্টা, যদি 13-23 হয়, 0-11` তে রূপান্তরিত হয়

stripS.setPixelColor (সেকেন্ডভাল, 0, 0, 20); stripS.show (); বিলম্ব (10); if (secondval == 59) {for (uint8_t i = stripS.numPixels (); i> 0; i--) {stripS.setPixelColor (i, 0, g, 0); stripS.show (); বিলম্ব (16);}}

stripM.setPixelColor (মিনিটভাল, 0, g, 0);

stripM.show (); বিলম্ব (10); যদি (secondval == 59 && minuteval == 59) {for (uint8_t i = stripM.numPixels (); i> 0; i--) {stripM.setPixelColor (i, r, 0, 0); stripM.show (); বিলম্ব (16);}}

stripH.setPixelColor (hourval, r, 0, 0);

stripH.show (); বিলম্ব (10); যদি (সেকেন্ডভাল == 59 && মিনিটভাল == 59 && ঘন্টাভাল == 11) {for (uint8_t i = stripH.numPixels (); i> 0; i--) {stripH.setPixelColor (i, 0, 0, b); stripH.show (); বিলম্ব (83);}} // সিরিয়াল ডিবাগিং সিরিয়াল.প্রিন্টের জন্য (ঘন্টাভাল, ডিইসি); সিরিয়াল.প্রিন্ট (':'); সিরিয়াল.প্রিন্ট (মিনিটভাল, ডিসি); সিরিয়াল.প্রিন্ট (':'); Serial.println (সেকেন্ডভাল, ডিসি); }

// একটি রঙের সাথে একের পর এক বিন্দু পূরণ করুন

void colorWipeS (uint32_t c, uint8_t wait) {for (uint16_t i = 0; i <stripS.numPixels (); i ++) {stripS.setPixelColor (i, c); stripS.show (); বিলম্ব (অপেক্ষা); }}

অকার্যকর রঙ WipeM (uint32_t c, uint8_t wait) {

জন্য (uint16_t i = 0; i <stripM.numPixels (); i ++) {stripM.setPixelColor (i, c); stripM.show (); বিলম্ব (অপেক্ষা); }}

অকার্যকর রঙ WipeH (uint32_t c, uint8_t wait) {

জন্য (uint16_t i = 0; i <stripH.numPixels (); i ++) {stripH.setPixelColor (i, c); stripH.show (); বিলম্ব (অপেক্ষা); }}

ধাপ 5: চূড়ান্ত স্পর্শ

Image
Image
চূড়ান্ত স্পর্শ
চূড়ান্ত স্পর্শ

এখন যেটা বাকি থাকতে হবে তা হল রিসেসে আরটিসি এবং মাইক্রো কন্ট্রোলারকে ঠিক করা।

আমি আরটিসি ব্যাটারি সাইড আপ লাগিয়েছি যাতে প্রয়োজনে আমি সহজেই ব্যাটারি পরিবর্তন করতে পারি।

সংযোগকারীটির + পাশের 5v তারের সাথে সংযোগ করুন এবং মাটির সাথে - পাশে

এটিকে চালু কর!

আমার একটি ইউএসবি ব্যাটারি ব্যাঙ্কের সাথে সংযুক্ত আছে কিন্তু একটি ইউএসবি ফোন চার্জার ঠিক একইভাবে কাজ করবে।

বিঃদ্রঃ:

LEDs এর উজ্জ্বলতা কোডে সেট করা আছে। বর্তমান ড্র কম রাখার জন্য এটি কম সেট করা হয়েছে। সমস্ত LEDs দিয়ে সম্পূর্ণ উজ্জ্বলতায় এটি প্রায় 8 amps আঁকতে পারে। বর্তমান সেটআপের সাথে এটি 1 এরও কম।

ঘড়ি প্রতিযোগিতা
ঘড়ি প্রতিযোগিতা
ঘড়ি প্রতিযোগিতা
ঘড়ি প্রতিযোগিতা

ঘড়ি প্রতিযোগিতায় রানার আপ

প্রস্তাবিত: