فهرست مطالب:

ساعت 132 پیکسلی: 5 مرحله (همراه با تصاویر)
ساعت 132 پیکسلی: 5 مرحله (همراه با تصاویر)

تصویری: ساعت 132 پیکسلی: 5 مرحله (همراه با تصاویر)

تصویری: ساعت 132 پیکسلی: 5 مرحله (همراه با تصاویر)
تصویری: لحظه دستگیری قاتل که دو فرد را در کنار خیابان سر برید ! 2024, نوامبر
Anonim
Image
Image
ساعت 132 پیکسلی
ساعت 132 پیکسلی

من تا زمانی که به یاد دارم وسواس LED ها و زمان را داشتم. در این پروژه من یک ساعت دیواری بزرگ ایجاد کرده ام که زمان فعلی را با استفاده از 132 LED نئوپیکسلی نصب شده و از طریق یک تخته صنوبر نشان می دهد. این دیجیتال ترکیبی آنالوگ با پیکسل جداگانه برای هر ساعت ، دقیقه و ثانیه است.

این بزرگترین پروژه ای بود که تا به امروز انجام داده بودم ، 6 ماه پیش درباره آن فکر کردم و ایده به آرامی جمع شد. من واقعاً از نتیجه خوشحالم و مشتاقانه منتظر به اشتراک گذاشتن آن با شما هستم.

مرحله 1: جمع آوری وسایل و ابزار

جمع آوری وسایل و ابزار
جمع آوری وسایل و ابزار
جمع آوری وسایل و ابزار
جمع آوری وسایل و ابزار
جمع آوری وسایل و ابزار
جمع آوری وسایل و ابزار
جمع آوری وسایل و ابزار
جمع آوری وسایل و ابزار

اجزاء

این پروژه بر روی یک تخته سرگرمی از فروشگاه DIY محلی من ساخته شده است. اندازه تخته 850 میلی متر عرض 500 میلی متر ارتفاع و 18 میلی متر عمق دارد.

LED های مورد استفاده در این پروژه 5050 WS2812b هستند که روی PCB های دایره ای نصب شده اند و قطر آنها تقریباً 9 میلی متر است و در پشت آنها پد لحیم کاری شده است.

من از میکرو کنترلر سازگار با Arduino Pro Mini استفاده می کنم. این نسخه 5V 16 MHZ است. من این را انتخاب کردم زیرا دارای طراحی فوق العاده باریک ، چاپ پای کوچک و تمام درگاه های ضروری به علاوه مقداری اضافی برای ارتقاء در آینده است. همچنین 5 ولت است بنابراین می توانم از منبع تغذیه LED ، کنترلر میکرو و RTC استفاده کنم

زمان را یک ماژول RTC (ساعت زمان واقعی) که دارای تراشه DS3231 است مراقبت می کند. این تراشه بسیار دقیق است بنابراین زمان نباید بیش از حد پیش برود.

همچنین استفاده می شود:

سیم لحیم کاری و چسب حرارتی.

ابزارها:

مته برقی و مته چوبی (10 میلی متر و 5 میلی متر)

آهن لحیم کاری

چسب حرارتی تفنگی

تکه های سیم

لوازم جانبی روتر Dremel و plunge

مرحله 2: علامت گذاری ، حفاری و مسیریابی

علامت گذاری ، حفاری و مسیریابی
علامت گذاری ، حفاری و مسیریابی
علامت گذاری ، حفاری و مسیریابی
علامت گذاری ، حفاری و مسیریابی
علامت گذاری ، حفاری و مسیریابی
علامت گذاری ، حفاری و مسیریابی

حفاری

  • با استفاده از یک لبه تنگ ، با کشیدن خطی از گوشه های مقابل ، مرکز تخته را پیدا کنید.
  • با استفاده از یک رشته و یک قلم 3 دایره را علامت گذاری کنید. بیرونی ترین دایره باید حدود 20 میلی متر از لبه تخته فاصله داشته باشد و 2 خط دیگر 15 میلی متر از خط آخر حرکت می کند.
  • من از صفحه ساعت چاپ شده برای کمک به من در مشخص کردن موقعیت هر یک از دقیقه ها و ثانیه ها در 2 خط خارجی و ساعت در خط داخلی استفاده کردم.
  • سوراخ های 10 میلی متری با عمق تقریباً 5 میلی متر برای هر ساعت ، دقیقه و ثانیه ایجاد کنید.
  • از مته 5 میلی متری برای ایجاد سوراخ در تخته به مدت یک ساعت ، دقیقه و ثانیه استفاده کنید.

مسیریابی

اگرچه این مرحله ضروری نیست ، اما می تواند ساعت را روی دیوار نصب کند.

  • با استفاده از روتر و راهنمای دایره ، کانال های سیم را در برد بکشید
  • علامت گذاری کنید و یک محل تعطیل را برای زندگی RTC و Micro Controller تعیین کنید.
  • یک کانال را از خطوط بیرونی به سمت حفره سیم بکشید

مرحله 3: بسیار سرباز ، برش و سلب

بسیار سرباز ، برش و سلب
بسیار سرباز ، برش و سلب
بسیار سرباز ، برش و سلب
بسیار سرباز ، برش و سلب
بسیار سرباز ، برش و سلب
بسیار سرباز ، برش و سلب

گفتن این قسمت بعدی بسیار راحت تر از انجام دادن است. توصیه من این است که عجله کنید. سعی کنید یک سیستم پیدا کنید و وارد ریتم شوید.

هر یک از LED ها به 5 ولت ورودی ، 5 ولت خروجی ، Data in ، Data out ، Ground in و Ground out نیاز دارند. شامل تغذیه میکرو کنترلر و RTC بیش از 400 سیم آن ، که همگی از دو طرف جدا شده و لحیم شده اند.

یک ماده آبی چسبناک برای این مرحله بسیار مفید است.

  • من با قرار دادن 2 LED در سوراخ های آنها در کنار یکدیگر شروع کردم تا طول سیم مورد نیاز برای اتصال به یکدیگر را مشخص کنم.
  • با استفاده از قطعه اول سیم به عنوان راهنما ، 60 سیم از هر سیم رنگی را برش می دهم.
  • 2 میلی متر آستین را از انتهای هر سیم جدا کنید و آنها را با لحیم محکم کنید.
  • یک تکه کوچک لحیم کاری را روی هر یک از پدهای LED لحیم کنید.
  • سیم ها را به LED ها بچسبانید تا دو زنجیره 60 در دقیقه و ثانیه و یک زنجیره 12 در ساعت ایجاد شود. من از سیم قرمز برای 5 ولت ، زرد برای داده ها و آبی برای زمین استفاده کردم.
  • مراقب باشید که هر Data Out (DOUT) را به Data In (DIN) LED بعدی متصل کنید
  • آخرین led در هر دوز زنجیره ای نیازی به سیم خارج از داده ندارد.

پس از اتمام تمام زنجیره ها ، بهتر است قبل از نصب آنها را آزمایش کنید. من از Arduino UNO و Adafruit NeoPixel Strand Test برای تأیید کارکرد هر LED استفاده کردم.

سیمهای بلندتری را روی هر یک از زنجیرها به مدت 5V ، Ground و Data in متصل کنید.

در این مرحله باید پنج سیم 5 ولت ، سه سیم داده متصل به Arduino Pro Mini و 5 سیم زمینی وجود داشته باشد.

5 میلی متر از انتهای سیم های 5 ولت جدا کنید و همه آنها را با هم لحیم کنید و این کار را برای سیم های زمین تکرار کنید.

پس از اتمام سه زنجیره ، یک سیم 5 ولت را به پین RAW Arduino Pro Mini و همچنین روی پین VCC برای RTC لحیم کنید. سیم اتصال به GND در Arduino Pro Mini و RTC و سپس 2 سیم دیگر:

SCL از RTC تا A5 در Pro Mini

SDA از RTC تا A4 در Pro Mini

خطوط داده LED ها باید به موارد زیر متصل شوند:

  • ثانیه - پین دیجیتال 3.
  • صورتجلسه - DigitalPin 4
  • ساعت - DigitalPin 5

مرحله 4: نصب

در حال نصب
در حال نصب
در حال نصب
در حال نصب
در حال نصب
در حال نصب

پس از لحیم کاری ، نصب LED ها در سوراخ های آنها باید مستقیما رو به جلو باشد. چراغ های LED باید نصب شوند تا داده ها در خلاف جهت عقربه های ساعت حرکت کنند وقتی از پشت به آن نگاه می کنید زیرا کد در جلو تنظیم شده است.

من از مقدار کمی چسب حرارتی برای نگه داشتن آنها استفاده کردم زیرا می خواهم بتوانم در صورت خرابی در آینده یک LED را جایگزین کنم.

من همچنین از چسب حرارتی برای تمیز و مرتب نگه داشتن همه سیمها و اتصال لوله به تخته استفاده کردم.

تعدادی راهنمای برنامه نویسی arduino pro mini موجود است. من از روش مبدل USB به سریال خارجی برای بارگذاری این کد در Arduino استفاده می کنم:

این کد همچنین زمان RTC را بر روی زمان کامپایل تنظیم می کند. بنابراین مهم است که فقط دکمه بارگذاری را ببندید تا مطابقت داشته باشد و در اسرع وقت بارگذاری شود.

بیشتر این کد از ساعت حلقه NeoPixel توسط اندی دورو وام گرفته شده است. برخی از آزمون Adafruit NeoPixel Strand Test و برخی دیگر را با هم ترکیب کردم.

شما باید چند کتابخانه نصب کرده باشید. آنها در نرم افزار Arduino از مدیر کتابخانه ها در دسترس هستند.

Adafruit NeoPixel برای LED های ws2812b

سیم برای صحبت با RTC از طریق I2C (این دستگاه به صورت استاندارد ساخته شده است)

و RTClib برای اینکه بدانید از RTC چه چیزی بخواهید

/********************************************** **************************NeoPixel Ring Clock توسط اندی دورو ([email protected]) https://andydoro.com/ringclock/ *********************************************** **************************

تاریخچه ویرایشهای

تاریخ بر اساس چه چیزی

20140320 AFD اولین پیش نویس 20160105 AFD Faded arcs 20160916 AFD Trinket سازگار 20170727 AFD STARTPIXEL را برای محوطه سه بعدی ، نقطه شروع متغیر ، پشتیبانی خودکار DST 20180424 AFD با استفاده از کتابخانه DST اضافه کرد https://github.com/andydoro/DST_RTC *

/ شامل کد کتابخانه:

#شامل #شامل شود

#عبارتند از

// پین ها را تعریف کنید

#تعریف SECPIN 3 #تعریف MINPIN 4 #تعریف HOUPIN 5

#تعریف BRIGHTNESS 20 // حداکثر روشنایی را تنظیم کنید

#تعریف r 10

#تعریف g 10 #تعریف b 10 RTC_DS3231 rtc؛ // ایجاد شی ساعت

نوار Adafruit_NeoPixelS = Adafruit_NeoPixel (60 ، SECPIN ، NEO_GRB + NEO_KHZ800) ؛ // نوار شی

نوار Adafruit_NeoPixelM = Adafruit_NeoPixel (60 ، MINPIN ، NEO_GRB + NEO_KHZ800) ؛ // strip object Adafruit_NeoPixel stripH = Adafruit_NeoPixel (24 ، HOUPIN ، NEO_GRB + NEO_KHZ800) ؛ // strip object byte pixelColorRed، pixelColorGreen، pixelColorBlue؛ // مقادیر رنگ را نگه می دارد

void setup () {

Wire.begin ()؛ // شروع I2C rtc.begin ()؛ // شروع ساعت

Serial.begin (9600)؛

// تنظیم pinmode pinMode (SECPIN ، OUTPUT) ؛ pinMode (MINPIN ، OUTPUT) ؛ pinMode (HOUPIN ، OUTPUT) ؛

if (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 (نوارهای S. Color (0 ، g ، 0) ، 5) ؛ // آبی رنگ WipeM (stripM. Color (r، 0، 0)، 5)؛ // رنگ آبی WipeH (stripH. Color (0، 0، b)، 50)؛ // آبی

تاخیر (1000) ؛

DateTime theTime = rtc.now ()؛ // بایت DST secondval = theTime.second () را در نظر می گیرد. // ثانیه بایت دقیقه دقیقه = theTime.minute ()؛ // دریافت دقیقه int hourval = theTime.hour ()؛ ساعت = ساعت ساعتی٪ 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 را در نظر می گیرد

بایت secondval = theTime.second ()؛ // ثانیه بدست آورید

بایت دقیقه = theTime.minute ()؛ // دریافت دقیقه int hourval = theTime.hour ()؛ // دریافت ساعت hourval = hourval٪ 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 ، گرم ، 0) ؛

stripM.show ()؛ تأخیر (10) ؛ if (secondval == 59 && minuteval == 59) {for (uint8_t i = stripM.numPixels ()؛ i> 0؛ i--) {stripM.setPixelColor (i، r، 0، 0)؛ stripM.show ()؛ تأخیر (16) ؛}}

stripH.setPixelColor (ساعتی ، r ، 0 ، 0) ؛

stripH.show ()؛ تأخیر (10) ؛ if (secondval == 59 && minuteval == 59 && hourval == 11) {for (uint8_t i = stripH.numPixels ()؛ i> 0؛ i--) {stripH.setPixelColor (i، 0، 0، b) ؛ stripH.show ()؛ تأخیر (83)؛}} // برای اشکال زدایی سریال Serial.print (hourval، DEC)؛ Serial.print (':')؛ Serial.print (دقیقه ، DEC) ؛ Serial.print (':')؛ Serial.println (درجه دوم ، DEC) ؛ }

// نقاط را یکی پس از دیگری با رنگ پر کنید

void colorWipeS (uint32_t c، uint8_t wait) {for (uint16_t i = 0؛ i <stripS.numPixels ()؛ i ++) {stripS.setPixelColor (i، c)؛ stripS.show ()؛ تأخیر (صبر) ؛ }}

void colorWipeM (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 منتظر بمانید) {

برای (uint16_t i = 0؛ i <stripH.numPixels ()؛ i ++) {stripH.setPixelColor (i، c)؛ stripH.show ()؛ تأخیر (صبر) ؛ }}

مرحله 5: لمس نهایی

Image
Image
لمس نهایی
لمس نهایی

تنها چیزی که باید باقی بماند این است که RTC و Micro Controller را در قسمت تعطیلی ثابت کنید.

من باتری RTC را به سمت بالا نصب کرده ام تا در صورت نیاز بتوانم به راحتی باتری را عوض کنم.

سیمهای 5v را به طرف + کانکتور و Ground را به طرف آن وصل کنید

آن را قدرت دهید!

من خودم را به یک باتری USB متصل کرده ام اما یک شارژر تلفن USB نیز به همان خوبی کار می کند.

توجه داشته باشید:

روشنایی LED ها در کد تنظیم شده است. برای پایین نگه داشتن قرعه کشی فعلی پایین تنظیم شده است. در روشنایی کامل با همه LED ها روشن می تواند نزدیک به 8 آمپر بکشد. با تنظیم فعلی کمتر از 1 است.

مسابقه ساعت
مسابقه ساعت
مسابقه ساعت
مسابقه ساعت

نفر دوم در مسابقه ساعت

توصیه شده: