ورکشاپ آموزشی - آیسی مدار
رفتن به محتوا

ریموت کنترل تلویزیون با مصرف انرژی فوق‌پایین و میکروکنترلر ATtiny84

ابزار و گجت
۰ نظر
۷۵ نفر
کد ۴۳۱۶

ریموت کنترل‌های تلویزیون پر از دکمه‌های ریز و درشتی هستن که خیلیاشون اصلا به کارمون نمیان. مخصوصا برای افراد مسن یا کسایی که مشکل بینایی دارن، پیدا کردن دکمه‌های اصلی مثل کم و زیاد کردن صدا یا عوض کردن کانال از بین اون‌همه دکمه خیلی سخته. تازه مشکل زود تموم شدن باتری رو هم بهش اضافه کن!

تو این پروژه می‌خوایم یه ریموت کنترل خیلی ساده و کاربردی با میکروکنترلر ATtiny84 بسازیم. این ریموت فقط دکمه‌های ضروری رو داره، دکمه‌هاش برجسته و قابل لمسه و مهم‌تر از همه، طوری طراحی شده که مصرف انرژی فوق‌العاده پایینی داره و می‌تونه با دو تا باتری قلمی تا چند سال بدون مشکل کار کنه.

بیا با هم این مدار جمع‌وجور رو مونتاژ کنیم. قرار نیست کار پیچیده‌ای انجام بدیم؛ فقط یه کم لحیم‌کاری، پرینت سه‌بعدی قاب و آپلود کردن کدهای آماده روی میکروکنترلر. پس وسایلت رو آماده کن تا شروع کنیم.

قطعات موردنیاز

  • میکروکنترلر ATtiny84 (یا ATtiny84A)
  • ال‌ای‌دی فرستنده مادون قرمز (IR)
  • ترانزیستور NPN برای راه‌اندازی ال‌ای‌دی مادون قرمز
  • دو عدد مقاومت
  • شش عدد میکروسوئیچ (دکمه فشاری لمسی)
  • جا باتری مخصوص دو عدد باتری قلمی (AA)
  • پین هدر 6 تایی برای برنامه‌ریزی ISP
  • برد مدار چاپی (فایل‌های گربر برای چاپ آماده است)
  • قاب پرینت سه‌بعدی (فایل‌های STL آماده است)
  • پیچ‌های سایز M2
  • هویه، سیم‌لحیم و سیم‌چین
  • مولتی‌متر برای تست اتصالات
  • پروگرامر AVR ISP
  • کامپیوتر به همراه نرم‌افزار VS Code و افزونه PlatformIO
  • پرینتر سه‌بعدی
مرحله ۱

هدف و بررسی کلی پروژه

تو این آموزش، قرار نیست یه ریموت همه‌کاره و شلوغ بسازیم؛ بلکه هدفمون طراحی یه ریموت کنترل لمسی، ساده و فوق‌العاده کم‌مصرفه که به‌طور ویژه برای استفاده راحت‌تر افراد کم‌بینا طراحی شده و می‌تونه با همون دو تا باتری قلمی اولیه، سال‌ها کار کنه.

مرحله ۲

قطعات و ابزارهای مورد نیاز

برای ساخت این ریموت، به قطعات خیلی زیادی نیاز نداری. کل تمرکز این طراحی روی سادگی، هزینه پایین و مصرف انرژی حداقل بوده.

قطعات الکترونیکی

  1. میکروکنترلر ATtiny84 (یا ATtiny84A)
  2. ال‌ای‌دی فرستنده مادون قرمز (IR ال‌ای‌دی)
  3. ترانزیستور NPN برای درایو کردن ال‌ای‌دی
  4. دو تا مقاومت
  5. شش تا دکمه فشاری تکتایل (Tactile)
  6. جا باتری برای دو تا باتری قلمی
  7. پین‌هدر 6 تایی برای پروگرام کردن مدار
  8. برد مدار چاپی (PCB)

قطعات مکانیکی

  1. قاب طراحی‌شده برای پرینتر سه‌بعدی
  2. پیچ‌های ظریف M2

ابزارها

  1. هویه و سیم‌لحیم
  2. سیم‌چین یا پنس
  3. مولتی‌متر (برای عیب‌یابی و تست‌های اولیه)
  4. پروگرامر AVR ISP
  5. کامپیوتر برای کامپایل و فلش کردن کدها (با نرم‌افزار VS Code و افزونه PlatformIO)
  6. پرینتر سه‌بعدی (یا دسترسی به خدمات پرینت)

تموم فایل‌های این پروژه (از نقشه مدار و کدهای برنامه گرفته تا فایل‌های سه‌بعدی قاب) به‌صورت متن‌باز در دسترسه. می‌تونی دقیقا همین مدل رو بسازی یا به سلیقه خودت طراحیش رو تغییر بدی.

مرحله ۳

استخراج کدهای مادون قرمز ریموت اصلی (اختیاری)

این مرحله فقط وقتی لازمه که بخوای ریموت رو برای یه تلویزیون خاص با پروتکل مادون قرمز متفاوت تنظیم کنی. اگه می‌خوای از فایل‌های آماده همین پروژه (که برای تلویزیون‌های فیلیپس با پروتکل RC6 نوشته شده) استفاده کنی، می‌تونی کلا از این مرحله رد بشی.

برای اینکه بتونی کدهای ریموت اصلی تلویزیونت رو کپی کنی، یه ابزار کمکی کوچیک با استفاده از رزبری‌پای پیکو و ماژول گیرنده مادون قرمز TSOP1138 در نظر گرفته شده. این ابزار پروتکل و کد دکمه‌ها رو می‌خونه و روی مانیتور سریال بهت نشون میده.

خیلی راحت قطعات رو روی یه برد بورد ببند. ماژول گیرنده رو به پایه GPIO15 وصل کن. حالا ریموت اصلی تلویزیون رو بگیر سمت گیرنده و دکمه‌هایی که می‌خوای رو فشار بده.

نرم‌افزار بهت میگه که ریموت از چه پروتکلی استفاده می‌کنه و کد دقیق هر دکمه چیه. بعدا می‌تونی همین کدها رو جایگزین کدهای قبلی توی فریم‌ور میکروکنترلر ATtiny84 کنی.

مرحله ۴

تنظیمات نرم‌افزاری و راز مصرف پایین باتری

کدهای اصلی مربوط به میکروکنترلر ATtiny84 رو می‌تونی تو پوشه remote_control_software پیدا کنی. این پروژه برای اجرا با افزونه PlatformIO در محیط Visual Studio Code آماده شده تا خیلی راحت بتونی کدها رو کامپایل و روی برد آپلود کنی.

برای شروع، نرم‌افزار VS Code و افزونه PlatformIO رو نصب کن. بعد پوشه کدها رو به‌عنوان یه پروژه باز کن. افزونه به‌صورت خودکار تنظیمات و ابزارهای لازم رو بارگذاری می‌کنه.

اگه می‌خوای ریموت رو برای تلویزیون خودت شخصی‌سازی کنی، باید پروتکل و کدهای مادون قرمز رو تو سورس‌کد تغییر بدی. این کار با یه تنظیم ساده تو منو انجام نمیشه و باید مستقیم کدها رو دستکاری کنی. می‌تونی این کار رو دستی انجام بدی یا از هوش مصنوعی کمک بگیری. من خودم برای ویرایش این کدها از ابزارهای هوش مصنوعی مثل Codex استفاده کردم و نتیجه خیلی خوبی گرفتم.

مهم‌ترین بخش این کدها، طراحی فوق‌کم‌مصرفشه. میکروکنترلر ATtiny84 تقریبا تو تمام طول روز تو حالت خواب عمیق (Sleep Mode) به سر می‌بره و فقط وقتی بیدار میشه که تو یکی از دکمه‌ها رو فشار بدی. دقیقا به خاطر همینه که ریموت می‌تونه سال‌ها با دو تا باتری قلمی کار کنه.

مرحله ۵

مونتاژ برد مدار چاپی (PCB)

مدار این ریموت روی یه برد اختصاصی و کوچیک پیاده میشه. تمام فایل‌های طراحی، شماتیک و فایل‌های گربر تو پوشه remote_control_electronics آماده هستن.

می‌تونی این برد رو خودت تو خونه بسازی یا فایل گربر رو به شرکت‌های چاپ PCB بدی تا برات تولیدش کنن. این برد دولایه است و طراحیش طوریه که لحیم‌کاری دستی قطعات روش خیلی سادست.

قبل از شروع لحیم‌کاری، حتما یه نگاه به چاپ راهنمای روی برد (Silkscreen) بنداز تا جهت قرارگیری قطعاتی مثل میکروکنترلر، ترانزیستور و ال‌ای‌دی مادون قرمز رو اشتباه نکنی و بعدا به دردسر نیفتی.

همیشه لحیم‌کاری رو از قطعات ریزتر شروع کن. اول مقاومت‌ها و پین‌هدر پروگرامر رو نصب کن، بعد برو سراغ میکروکنترلر، ترانزیستور و ال‌ای‌دی. در آخر هم دکمه‌ها و کانکتور باتری رو لحیم کن.

مرحله ۶

چاپ سه‌بعدی قاب ریموت

قاب این ریموت کنترل کاملا سه‌بعدی طراحی شده. فایل‌های طراحی که با نرم‌افزار فیوژن 360 آماده شدن، به همراه فایل‌های آماده چاپ (STL) تو پوشه mechanical_design قرار دارن.

این قطعات رو می‌تونی با هر پرینتر سه‌بعدی معمولی‌ای چاپ کنی. فیلامنت PLA برای این کار عالیه، اما اگه خواستی می‌تونی از PETG یا هر متریال دیگه‌ای هم استفاده کنی.

یه نکته مهم موقع پرینت قاب اینه که باید چند تا مهره M2 رو وسط کار داخل قطعه جاگذاری کنی. برای این کار، تو نرم‌افزار اسلایسر تنظیم کن که پرینتر تو لایه‌های خاصی مکث کنه، مهره‌ها رو سر جاشون بذار و بعد اجازه بده پرینت ادامه پیدا کنه.

وقتی چاپ تموم شد، اضافات و پرزهای روی کار رو تمیز کن. قبل از بستن کامل قاب، یه بار برد و دکمه‌ها رو روش قرار بده تا مطمئن بشی همه‌چیز سر جای خودش می‌شینه و گیر نمی‌کنه.

مرحله ۷

سرهم کردن قطعات ریموت

حالا وقتشه که تمام بخش‌ها رو به هم وصل کنیم. برای اینکه بدونی هر قطعه دقیقا کجا قرار می‌گیره، حتما به عکس‌های آموزشی نگاه کن. اول از همه، برد لحیم‌شده و دکمه‌ها رو داخل قاب قرار بده.

مطمئن شو که دکمه‌ها به راحتی فشرده میشن و دقیقا روبه‌روی سوراخ‌های قاب قرار گرفتن. بعدش با پیچ‌های 7 میلی‌متری M2 قطعات رو به هم محکم کن.

تو این پروژه یه ترفند جالب برای اتصالات باتری پیاده شده. به‌جای استفاده از جا باتری‌های آماده، فقط از فنر یه جا باتری معمولی استفاده می‌کنیم. برای هر دو قطب باتری، یه مهره M3 رو تو شیارهای مخصوصی که داخل قاب پرینت‌شده هست، قرار بده.

سیم‌ها رو به کابل‌شو لحیم کن و بعد با پیچ‌های کوتاه M3 اونا رو به مهره‌ها ببند. این روش باعث میشه اتصال باتری خیلی محکم و مطمئن بشه. تو عکس‌ها می‌تونی جزئیات این کار رو کامل ببینی.

وقتی همه قطعات رو سر هم کردی، قاب رو ببند و پیچ‌هاش رو سفت کن. حالا ریموت از لحاظ ظاهری و مکانیکی کاملا آمادست و فقط مونده که کدهارو روش آپلود کنی.

مرحله ۸

تنظیم کلاک میکروکنترلر روی ۸ مگاهرتز

قبل از اینکه کدهای اصلی رو روی برد بریزی، باید تنظیمات فیوزبیت‌های ATtiny84 رو طوری تغییر بدی که با نوسان‌ساز داخلی روی فرکانس 8 مگاهرتز کار کنه. این کار با ابزار avrdude انجام میشه و برای هر میکروکنترلر فقط یه بار باید انجامش بدی. پروگرامر ISP رو به پین‌هدر روی برد وصل کن و یه ترمینال باز کن. اول از همه، تنظیمات فعلی فیوزبیت‌ها رو با این دستور بخون:

avrdude -c usbasp -p t84 -U lfuse:r:-:h -U hfuse:r:-:h -U efuse:r:-:h. حالا برای اینکه فرکانس داخلی روی 8 مگاهرتز تنظیم بشه (و تقسیم‌کننده کلاک غیرفعال بشه)، این دستور رو برای فیوزبیت پایینی (Low Fuse) وارد کن: avrdude -c usbasp -p t84 -U lfuse:w:0xE2:m.

در نهایت، یه بار دیگه تنظیمات رو بخون تا مطمئن بشی همه‌چیز درست ذخیره شده: avrdude -c usbasp -p t84 -U lfuse:r:-:h -U hfuse:r:-:h -U efuse:r:-:h با انجام این مراحل، میکروکنترلر کانفیگ شده و برای دریافت کدهای اصلی تو قدم بعدی آمادست.

مرحله ۹

آپلود کدها روی برد ATtiny84

برنامه‌ریزی ریموت مستقیما از داخل نرم‌افزار VS Code و افزونه PlatformIO انجام میشه. پروگرامر رو به برد ATtiny84 متصل نگه‌دار. پوشه کدها رو تو محیط VS Code باز کن.

وقتی پروژه لود شد، فقط کافیه روی دکمه فلش سمت راست (Upload) در نوار ابزار پایین PlatformIO کلیک کنی. کدها کامپایل و روی برد آپلود میشن. به همین راحتی، ریموت تو آماده تست شدنه!

مرحله ۱۰

تست نهایی و شخصی‌سازی ریموت

حالا ریموتت آماده کاره. باتری‌ها رو جا بزن و دکمه‌های اصلی مثل خاموش/روشن، کم و زیاد کردن صدا و سه تا دکمه کانال رو تست کن. برای اینکه بفهمی ال‌ای‌دی مادون قرمز درست کار می‌کنه یا نه، دوربین گوشیت رو باز کن و بگیر سمتش؛ وقتی دکمه رو فشار میدی باید یه نور چشمک‌زن ضعیف تو صفحه گوشی ببینی.

همچنین می‌تونی از همون ترفند گیرنده TSOP1138 که قبلا گفتم، برای تست ارسال کدهای درست استفاده کنی. اگه تلویزیون هیچ واکنشی نشون نداد، اول اتصالات باتری، قطب‌های ال‌ای‌دی و لحیم‌کاری‌های روی برد رو چک کن. بعدشم مطمئن شو که کدهای مادون قرمز درستی رو تو فریم‌ور تعریف کرده باشی.

بهترین ویژگی این پروژه اینه که خیلی راحت می‌تونی تغییرش بدی. می‌تونی کدها رو برای یه تلویزیون دیگه بازنویسی کنی، کاربرد دکمه‌ها رو عوض کنی یا تعداد کانال‌ها رو بیشتر کنی. حتی قابش رو هم می‌تونی مطابق سلیقه خودت دوباره طراحی کنی.

دمت گرم که تا آخر این آموزش با آیسی‌مدار همراه بودی. ساختن گجت‌هایی که استفاده روزمره رو برای همه (به خصوص افراد مسن و کم‌بینا) راحت‌تر می‌کنه، واقعا لذت‌بخش و باارزشه. اگه این ریموت کاربردی رو ساختی یا ایده‌ای برای بهتر کردنش داری، حتما تو بخش نظرات برامون بنویس و تجربه‌هات رو به اشتراک بذار.

تو میتونی اولین سازنده باشی!

اگه پروژه رو ساختی به اشتراک بزار و اعتبار هدیه بگیر

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

آموزش‌های مشابه

گفتگو‌های کاربران

هنوز نظری ثبت نشده؛ تو شروع کن!