فهرست مطالب:
- تدارکات
- مرحله 1: ایده
- مرحله 2: برخی از نظریه های تماشای دودویی
- مرحله 3: شروع به کار
- مرحله 4: انتخاب اجزاء
- مرحله 5: شماتیک
- مرحله 6: طرح PCB
- مرحله 7: طراحی سه بعدی
- مرحله 8: کد
- مرحله نهم: برنامه نویسی
- مرحله 10: لحیم کاری
- مرحله 11: مونتاژ
- مرحله 12: نتیجه گیری و بهبود
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:52
من به تازگی با مفهوم ساعت های دودویی آشنا شدم و تحقیقات خود را آغاز کردم تا ببینم آیا می توانم برای خودم ساعت مچی بسازم یا نه. با این حال ، من نتوانستم یک طرح موجود را پیدا کنم که همزمان کاربردی و شیک باشد. بنابراین ، من تصمیم گرفتم طرح خود را کاملاً از ابتدا ایجاد کنم!
تدارکات
همه فایلهای این پروژه:
کتابخانه های کد آردوینو را می توانید از GitHub در اینجا بارگیری کنید:
کتابخانه M41T62 RTC
کتابخانه FastLED
کتابخانه LowPower
مرحله 1: ایده
اخیراً به تصویری زیر برخورد کردم:
ساعت مچی دودویی DIY
ویدئوی بالا یک ساعت اصلی باینری خانگی را نشان می دهد. من نمی دانستم که چنین چیزی وجود دارد اما پس از انجام تحقیقات بیشتر در مورد موضوع ساعت های دودویی ، به سرعت متوجه شدم که تعداد زیادی طرح مختلف وجود دارد! من می خواستم یکی را برای خودم بسازم اما نتوانستم طرحی را که دوست داشتم پیدا کنم. ساعتهای دودویی که من پیدا کردم فاقد ویژگی های زیادی بودند و ظاهر خاصی نداشتند. بنابراین ، من تصمیم گرفتم که خودم را کاملاً از ابتدا طراحی کنم!
اولین قدم تعیین معیارهای طراحی من بود. این چیزی است که من به آن رسیدم:
- رابط RGB دودویی
- نمایش زمان (با زمان سنج بسیار دقیق)
- نمایش تاریخ
- قابلیت کرونومتر
- عملکرد زنگ هشدار
- عمر باتری حداقل 2 هفته
- شارژ USB
- نرم افزار به راحتی توسط کاربر قابل تنظیم است
- طراحی تمیز و ساده
این معیارها پایه و اساس کل پروژه شد. قدم بعدی این بود که بفهمم چگونه می خواهم ساعت کار کند!
مرحله 2: برخی از نظریه های تماشای دودویی
طرح ساده بود. ساعت دودویی دقیقاً مانند یک ساعت معمولی عمل می کند ، با این تفاوت که رابط کاربری دوتایی است ، به طور خاص ، BCD (اعشاری دودویی). BCD یک نوع رمزگذاری دوتایی است که در آن هر رقم اعشاری با تعداد ثابت بیت نشان داده می شود. من به 4 بیت نیاز دارم تا بتوانم رقمی از 0-9 را نشان دهم. و برای یک استاندارد
ساعت: میلی متر
قالب زمان ، من به 4 عدد از آن ارقام نیاز دارم. این بدان معناست که من در مجموع به 16 بیت نیاز دارم که با 16 LED نشان داده می شود.
خواندن زمان در BCD هنگامی که به آن عادت کردید بسیار آسان است. ردیف در پایین ساعت نشان دهنده کمترین بیت (1) و ردیف در بالای آن مهمترین بیت (8) است. هر ستون نشان دهنده یک رقم در است
ساعت: میلی متر
قالب زمان اگر LED روشن است ، آن مقدار را حساب می کنید. اگر LED خاموش است ، آن را نادیده می گیرید.
برای خواندن رقم اول به سادگی تمام LED های فعال شده مربوط به اولین ستون (سمت چپ) را جمع کنید. همین کار را برای سایر ارقام از چپ به راست انجام دهید. شما اکنون زمان را در BCD خوانده اید!
این اصل برای بقیه عملکردهای ساعت یکسان خواهد بود. استفاده از LED های RGB به تمایز بین عملکردها و حالت های مختلف با استفاده از رنگ های مختلف کمک می کند. رنگها توسط کاربر انتخاب می شوند و می توانند به راحتی با هر پالت رنگی که ترجیح می دهند تنظیم شوند. این به کاربر اجازه می دهد تا به راحتی در عملکردها حرکت کند بدون اینکه دچار سردرگمی شود.
مرحله بعدی ایجاد بلوک دیاگرام بود!
مرحله 3: شروع به کار
مانند هر پروژه الکترونیکی معمولی ، نمودار بلوک بخش مهمی در مراحل اولیه طراحی است. با استفاده از معیارها ، من موفق به جمع آوری نمودار بلوک بالا شدم. هر بلوک در نمودار یک تابع در مدار را نشان می دهد و فلش ها ارتباط توابع را نشان می دهند. بلوک دیاگرام به طور کلی نمای خوبی از نحوه عملکرد مدار دارد.
گام بعدی این بود که تصمیم گیری در مورد اجزای فردی برای هر بلوک در بلوک دیاگرام شروع شود!
مرحله 4: انتخاب اجزاء
معلوم شد که اجزای زیادی در این مدار وجود دارد. در زیر ، برخی از ضروری ترین آنها را همراه با توضیحی در مورد دلیل انتخاب آنها انتخاب کرده ام.
LED ها
برای رابط باینری ، انتخاب نسبتاً مستقیم بود. من می دانستم که می خواهم از LED ها برای صفحه نمایش استفاده کنم و متوجه شدم که برای نمایش هرچه بیشتر اطلاعات به 16 عدد از آنها (در شبکه 4 × 4) نیاز دارم. در طول تحقیقات من برای LED کامل ، APA102 همچنان ظاهر می شد. این LED بسیار کوچک (2 میلی متر در 2 میلی متر) آدرس پذیر با طیف گسترده ای از رنگ ها و نسبتاً ارزان است. حتی اگر قبلاً با آنها کار نکرده بودم ، به نظر می رسید که آنها برای این پروژه مناسب هستند ، بنابراین تصمیم گرفتم از آنها استفاده کنم.
میکروکنترلر
انتخاب میکروکنترلر نیز بسیار ساده بود. من تجربه زیادی در استفاده از Atmega328P-AU در برنامه های مستقل داشته ام و با ویژگی های آن بسیار آشنا بودم. این همان میکروکنترلری است که در بردهای آردوینو نانو استفاده می شود. من می دانم که احتمالاً میکروکنترلر ارزان تری وجود دارد که می توانستم از آن استفاده کنم ، اما دانستن اینکه Atmega328 از تمام کتابخانه های آردوینو پشتیبانی کامل خواهد داشت ، عامل مهمی در انتخاب آن برای این پروژه بود.
RTC (ساعت در زمان واقعی)
نیاز اصلی RTC دقت بود. من می دانستم که این ساعت هیچ گونه اتصال به اینترنت نخواهد داشت و بنابراین نمی تواند خود را از طریق اتصال به اینترنت دوباره تنظیم کند ، کاربر باید آن را مجدداً به صورت دستی تنظیم مجدد کند. بنابراین ، من می خواستم زمان سنجی را تا آنجا که ممکن است دقیق کنم. M41T62 RTC دارای یکی از بالاترین دقت هایی است که من توانستم پیدا کنم (pp 2ppm که معادل 5 ثانیه per در ماه است). ترکیب دقت بالا با سازگاری I2C و مصرف جریان بسیار پایین ، این RTC را به انتخاب خوبی برای این پروژه تبدیل کرد.
مبدل تقویت DC-DC
انتخاب IC DC-DC Boost Converter IC به سادگی با نگاه به مدار و پی بردن به ولتاژها و جریانهای مورد نیاز انجام شد. اجرای مدار با ولتاژ پایین مصرف فعلی را کاهش می دهد اما من نمی توانم به زیر 4.5 ولت (حداقل ولتاژ میکروکنترلر در کلاک 16 مگاهرتز) بروم و نمی توانم از 4.5 ولت (حداکثر ولتاژ RTC) فراتر بروم. این بدان معناست که مجبور شدم مدار را دقیقاً در 4.5 ولت اجرا کنم تا بتوانم قطعات را طبق مشخصات توصیه شده آنها کار کنم. من محاسبه کردم که حداکثر جریان مدار از 250 میلی آمپر تجاوز نمی کند. بنابراین ، من به دنبال یک مبدل تقویت کننده بودم که بتواند شرایط را برآورده کند و به سرعت با TPS61220 روبرو شد. TPS61220 به حداقل اجزای خارجی نیاز داشت ، نسبتاً ارزان بود و می توانست الزامات جریان و ولتاژ را برآورده کند.
باتری
نیاز اصلی باتری اندازه بود. باتری باید به اندازه کافی کوچک باشد تا بتواند داخل محفظه ساعت جا بگیرد بدون اینکه ظاهری حجیم به نظر برسد. من تصور کردم که باتری نمی تواند بیش از 20mm × 35mm × 10mm باشد. با این محدودیت های اندازه و نیاز فعلی 250 میلی آمپر ، باتری های من به باتری های LiPo محدود شد. من یک باتری "Turnigy nano-tech 300mAh 1S" در Hobbyking پیدا کردم که تصمیم گرفتم از آن استفاده کنم.
IC شارژ
هیچ الزام خاصی برای کنترل کننده شارژ وجود نداشت مگر اینکه باید با باتری 1S LiPo سازگار باشد. من MCP73831T را پیدا کردم که یک کنترل کننده شارژ کاملاً یکپارچه است که برای برنامه های شارژ تک سلولی طراحی شده است. یکی از ویژگی های آن قابلیت تنظیم جریان شارژ از طریق یک مقاومت خارجی است که من در این برنامه بسیار مفید می دانم.
حفاظت از LiPo
من می خواستم نظارت بر ولتاژ و جریان را برای محافظت از باتری در برابر هرگونه خطرناک بیش از حد شارژ و تخلیه بیش از حد در نظر بگیرم. تعداد محدودی IC وجود داشت که چنین ویژگی هایی را ارائه می داد و یکی از گزینه های ارزانتر IC BQ29700 بود. این دستگاه به حداقل مقدار اجزای خارجی نیاز داشت و شامل تمام حفاظت لازم برای یک باتری LiPo تک سلولی بود.
اکنون که اجزاء انتخاب شده اند ، زمان ایجاد شماتیک فرا رسیده است!
مرحله 5: شماتیک
با استفاده از Altium Designer ، با استفاده از توصیه های هر یک از برگه های داده م componentلفه ، توانستم شماتیک بالا را جمع آوری کنم. شماتیک برای خواندن بیشتر به بلوک های مختلف تقسیم شده است. من همچنین برخی از یادداشت ها را با اطلاعات مهم اضافه کردم تا در صورت تمایل افراد دیگر بخواهند این طرح را دوباره خلق کنند.
مرحله بعدی طرح شماتیک روی PCB بود!
مرحله 6: طرح PCB
طرح PCB چالش برانگیزترین بخش این پروژه بود. من استفاده از PCB 2 لایه را انتخاب کردم تا هزینه های تولید PCB را به حداقل برسانم. من ترجیح دادم از ساعت استاندارد 36 میلی متری استفاده کنم زیرا به نظر می رسید که به خوبی با LED ها مطابقت دارد. من چند سوراخ پیچ 1 میلی متری برای محکم کردن PCB در محفظه ساعت اضافه کردم. هدف این بود که با قرار دادن همه اجزای سازنده (البته به جز LED ها) در لایه زیرین ، یک طراحی تمیز و زیبا داشته باشید. من همچنین می خواستم از حداقل تعداد مطلق ویاها برای جلوگیری از مشاهده ویاهای قابل مشاهده در لایه بالا استفاده کنم. این بدان معناست که من مجبور شدم همه آثار را روی یک لایه واحد قرار دهم در حالی که مطمئن می شوم قسمت های "پر سر و صدا" مدار را از آثار سیگنال حساس دور نگه می دارم. من همچنین اطمینان حاصل کردم که همه آثار را تا آنجا که ممکن است کوتاه نگه دارم ، خازن های بای پس را نزدیک به بار قرار می دهم ، از قطعات ضخیم تری برای اجزای قدرت بالا استفاده می کنم و در غیر اینصورت تمام شیوه های معمول معمول طراحی PCB را دنبال می کنم. مسیریابی زمان زیادی طول کشید ، اما فکر می کنم بسیار خوب بود.
گام بعدی ایجاد یک مدل سه بعدی برای محفظه ساعت بود!
مرحله 7: طراحی سه بعدی
محفظه ساعت پس از یک طراحی ساعت معمولی و کلاسیک با استفاده از Fusion 360 طراحی شد. من از یک فاصله استاندارد 18 میلی متری برای بند ساعت استفاده کردم تا ساعت را با انواع زیادی از بندهای دیگر سازگار کنم. برش برای PCB 0 ، 4 میلی متر بزرگتر از خود PCB طراحی شده است تا بتواند برای هر گونه نادرستی تولید مناسب باشد. من چند پایه پیچ برای نصب PCB و یک لبه کوچک برای قرار دادن PCB در آن قرار دادم. من مطمئن شدم که PCB را یک میلی متر از بالا فرو می برم تا لبه های تیز LED ها روی لباس گیر نکنند. ارتفاع محفظه فقط با ضخامت باتری تعیین می شود. بقیه محفظه به گونه ای طراحی شده است که به سادگی با لبه های گرد و گوشه های صیقلی خوب به نظر برسد. من مجبور بودم طرح را با چاپ سه بعدی دوستانه نگه دارم تا بتوانم آن را در خانه بدون هیچ گونه مواد پشتیبانی کننده چاپ کنم.
اکنون که سخت افزار به پایان رسیده است زمان شروع کار بر روی نرم افزار فرا رسیده است!
مرحله 8: کد
من کد را با قرار دادن همه کتابخانه های لازم شروع کردم. این شامل کتابخانه برای ارتباط با RTC و رانندگی LED ها است. پس از آن ، توابع جداگانه ای برای هر یک از حالت ها ایجاد کردم. وقتی کاربر با فشردن یک دکمه حالت ها را تغییر می دهد ، برنامه عملکرد مربوط به آن حالت را فرا می خواند. اگر کاربر در مدت زمان مشخص شده دکمه ای را فشار ندهد ، ساعت به خواب می رود.
حالت خواب با روشن شدن همه LED ها تا خاموش شدن کامل نشان داده می شود. استفاده از حالت خواب عمر باتری را بسیار افزایش می دهد و LED ها را در زمان عدم استفاده خاموش نگه می دارد. کاربر می تواند با فشار دادن دکمه بالا ساعت را بیدار کند. هنگام بیدار شدن ، ساعت میزان باتری را بررسی می کند تا مطمئن شود که نیازی به شارژ ندارد. در صورت نیاز به شارژ ، LED ها قبل از نمایش زمان چند بار قرمز می شوند. اگر باتری زیر حد بحرانی باشد ، به هیچ وجه روشن نمی شود.
بقیه زمان برنامه نویسی باعث شد تا حالت های دیگر تا حد امکان بصری شود. من تصور می کردم که داشتن یک دکمه یکسان برای عملکرد یکسان در همه حالت ها ، ساده ترین است. پس از چند آزمایش ، این پیکربندی دکمه است که به آن رسیدم:
- دکمه بالا: بیدار شدن / چرخه بین حالت های "زمان نمایش" ، "تاریخ نمایش" ، "کرونومتر" و "زنگ هشدار".
- نگه داشتن دکمه بالا: حالت "تنظیم زمان" ، "تنظیم تاریخ" ، "شروع کرونومتر" یا "تنظیم زنگ هشدار" را وارد کنید.
- فشار دکمه پایین: افزایش روشنایی.
- نگه داشتن دکمه پایین: وارد حالت "انتخاب رنگ" شوید.
دکمه پایینی همیشه مسئول روشنایی و تنظیم رنگ است ، فارغ از اینکه در چه وضعیتی هستید. هنگامی که کاربر وارد حالت "انتخاب رنگ" می شود ، LED ها شروع به دوچرخه سواری در بین همه رنگهای RGB احتمالی می کنند. کاربر می تواند انیمیشن را متوقف کرده و رنگ مورد نظر خود را برای آن حالت خاص (زمان نمایش با رنگ قرمز ، تاریخ نمایش به رنگ آبی و غیره) انتخاب کند. رنگ ها به راحتی توسط کاربر قابل تنظیم هستند تا به آنها در تشخیص حالت های مختلف کمک کند.
اکنون که کد به پایان رسید زمان بارگذاری آن بر روی میکروکنترلر فرا رسیده بود!
مرحله نهم: برنامه نویسی
تقریبا زمان لحیم کاری و مونتاژ فرا رسیده بود اما قبل از آن من نیاز به برنامه ریزی میکروکنترلر داشتم. من این آموزش را دنبال کردم
بوت لودر را به یک ATMga328P-AU SMD رایت کنید
نحوه سوزاندن بوت لودر و برنامه ریزی میکروکنترلر با استفاده از Arduino Uno معمولی به عنوان برنامه نویس.
اولین قدم این بود که با بارگذاری کد نمونه "ArduinoISP" ، Arduino Uno را به ISP تبدیل کنید. من از یک تخته نان به همراه یک سوکت برنامه نویسی استفاده کردم و شماتیک را از آموزش ایجاد کردم. پس از آن ، من فقط با فشار دادن "Burn Bootloader" در Arduino IDE ، بوت لودر را روی میکروکنترلر رایت کردم.
هنگامی که میکروکنترلر دارای یک بوت لودر بود ، من به سادگی میکروکنترلر موجود را از Arduino Uno حذف کردم و از برد Arduino Uno به عنوان یک آداپتور USB به سریال استفاده کردم تا کد را روی سوکت برنامه نویسی در میکروکنترلر بارگذاری کنم. پس از اتمام بارگذاری ، می توانم فرآیند لحیم کاری را آغاز کنم.
مرحله بعدی جمع آوری تمام اجزاء و لحیم کاری آنها بود!
مرحله 10: لحیم کاری
فرآیند لحیم کاری به دو قسمت تقسیم شد. ابتدا لایه زیرین باید لحیم شود و سپس لایه بالا.
من با استفاده از نوار PCB ساعت را بین چند تخته نمونه قرار دادم. این امر باعث می شود که PCB در حین لحیم کاری حرکت نکند ، که بسیار مهم است. سپس استنسیل لحیم کاری را روی PCB قرار دادم و از مقدار زیادی خمیر لحیم کاری برای پوشاندن تمام لحیم های لحیم استفاده کردم. من از یک موچین نازک برای قرار دادن همه اجزا روی پدهای مربوطه استفاده کردم. سپس از یک تفنگ حرارتی برای جوشاندن مجدد لحیم کاری همه اجزا در محل استفاده کردم.
وقتی لایه زیرین لحیم شد ، یک بازرسی بصری سریع به آن دادم تا مطمئن شوم که لحیم کاری موفق بوده است. سپس تخته را ورق زدم و روش لحیم کاری را در طرف دیگر تکرار کردم ، این بار با تمام LED ها. بسیار مهم است که هنگام لحیم کاری لایه رویی ، صفحه را بیش از حد گرم نکنید ، زیرا همه اجزای زیر در معرض سقوط هستند. خوشبختانه همه قطعات در جای خود باقی ماندند و پس از لحیم کاری دکمه ها در محل با استفاده از لحیم کاری معمولی ، PCB به پایان رسید!
اکنون زمان تجمع نهایی فرا رسیده بود!
مرحله 11: مونتاژ
مونتاژ بسیار ساده بود. باتری را به PCB وصل کردم و باتری و PCB را داخل محفظه چاپ سه بعدی قرار دادم. من چهار پیچ را در سوراخ های نصب در هر گوشه PCB پیچ کردم. بعد از آن ، بندهای ساعت را با استفاده از میله های فنری 18 میلی متری وصل کردم و ساعت کامل شد!
مرحله 12: نتیجه گیری و بهبود
ساعت طبق انتظار کار می کند و از نحوه عملکرد آن بسیار خوشحالم. من تا به حال مشکلی با آن نداشته ام و باتری پس از یک هفته استفاده تقریباً به طور کامل شارژ می شود.
ممکن است در آینده ویژگی های دیگری به ساعت اضافه کنم. از آنجا که پورت USB به میکروکنترلر متصل است ، سیستم عامل را می توان در هر زمان با ویژگی های جدید به روز کرد. هرچند فعلا ، من همچنان از این نسخه ساعت استفاده می کنم و می بینم که چگونه پس از استفاده طولانی مدت ماندگار می شود.
اگر در مورد این پروژه هرگونه نظر ، نظر یا س questionsالی دارید ، لطفاً آنها را در زیر بگذارید. همچنین می توانید آنها را به [email protected] ارسال کنید.
جایزه اول در مسابقه ساعت
توصیه شده:
Micro Binary Clock: 10 مرحله (همراه با تصاویر)
Micro Binary Clock: قبلاً یک Instructable (Binary DVM) ایجاد کرده بود که از محدوده صفحه نمایش محدود با استفاده از باینری استفاده می کرد. این تنها یک گام کوچک بود که قبلاً ماژول کد اصلی برای تبدیل اعشاری به دودویی به ایجاد یک ساعت دودویی ایجاد کرده بود اما t
DIY Arduino Binary Clock: 14 مرحله (همراه با تصاویر)
DIY Arduino Binary Clock: دوباره ساعت کلاسیک دودویی است! اما این بار با عملکردهای بیشتر! در این آموزش ، من به شما نشان می دهم که چگونه می توانید یک ساعت زنگ دار دودویی با آردوینو بسازید که می تواند نه تنها زمان ، بلکه تاریخ ، ماه را حتی با زمان سنج و سرگرم کننده به شما نشان دهد
The Nerd Watch: 10 مرحله (همراه با تصاویر)
The Nerd Watch: ساعت Nerd زمان را به صورت دودویی نمایش می دهد که دکمه فشار داده می شود و توسط Sam DeRose در طی کارآموزی تابستانی در مقر ما ایجاد شده است. این ساعت با چشمک زدن دو LED به ترتیب ساعت و دقیقه را نشان می دهد تا دو عدد باینری 4 بیتی را نشان دهد (در
TTGO T-Watch: 9 مرحله (همراه با تصاویر)
TTGO T-Watch: این دستورالعمل ها نحوه شروع بازی با TTGO T-Watch را نشان می دهد
DIY Apple Watch Charging Stand (IKEA Hack): 5 مرحله (همراه با تصاویر)
DIY Apple Watch Charging Stand (IKEA Hack): اگر از کابل شارژ طولانی مدت Apple Watch خود اذیت شده اید ، می توانید این پایه شارژ را بسازید و از آن لذت ببرید