فهرست مطالب:

گیرنده USB ATtiny85 IR: 11 مرحله (همراه با تصاویر)
گیرنده USB ATtiny85 IR: 11 مرحله (همراه با تصاویر)

تصویری: گیرنده USB ATtiny85 IR: 11 مرحله (همراه با تصاویر)

تصویری: گیرنده USB ATtiny85 IR: 11 مرحله (همراه با تصاویر)
تصویری: با این برد چه کارا که نمیشه کرد !!!!!🤐🤐 2024, نوامبر
Anonim
گیرنده USB ATtiny85 IR
گیرنده USB ATtiny85 IR

هشدار ، این دستورالعمل منسوخ شده است

کتابخانه v-usb طوری طراحی شده است که با پروتکل USB 1.1 کار کند که امروزه به سختی وجود دارد. با ورود USB3 بیش از یک سر درد خواهید داشت تا بتوانید دستگاه های v-usb را کار کنید. پس از تغییر مرکز چندرسانه ای ، مشکلات پایداری زیادی دارم و حتی اگر گیرنده کار می کند ، پس از مدتی از کار می افتد. من در تلاش برای رفع آن ناموفق بوده ام. من یک نسخه atmega328p نیز تهیه کردم ، اما این یکی مشکلات مشابهی داشت. استفاده از تایمر نگهبان برای تنظیم مجدد برد به صورت دوره ای نیز کمکی نکرد ، بنابراین من از v-usb دست کشیدم.

به خودتان لطف کنید و این دستورالعمل را ادامه ندهید مگر اینکه برای اهداف آموزشی باشد. در عوض توصیه می کنم ماژول تراشه ATmega 32U4 را بخرید که قبلاً رابط usb را یکپارچه کرده است و این راهنما را دنبال کنید:

www.sparkfun.com/tutorials/337

سپس یک سنسور مادون قرمز TSOP31238 را داخل دستگاه بریزید و خوب پیش می روید.

سلام سازندگان! این یک دستورالعمل برای ساخت یک گیرنده IR USB فعال با استفاده از میکروکنترلر Attiny85 است. من این پروژه را برای غلبه بر عدم پشتیبانی (حداقل پشتیبانی کامل) برای برخی از کنترل های IR در سیستم عامل GNU/Linux آغاز کردم. با پیروی از این دستورالعمل ها می توانید یک گیرنده مادون قرمز USB قابل برنامه ریزی بسازید که با هر ریموت IR برای چند دلار کار می کند.

اول از همه ، این دستورالعمل بدون تلاش زیاد افرادی که کتابخانه هایی را ایجاد کرده اند که من در اینجا از آنها استفاده می کنم وجود نخواهد داشت:

  • David A. Mellis به خاطر هسته برجسته خود
  • نرم افزار Rowdy Dog برای کتابخانه آنها TinyTuner
  • نرم افزار Rowdy Dog برای بوت لودر کوچک آنها
  • Rancidbacon (https://rancidbacon.com/) برای پورت arduino خود از کتابخانه v-usb (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • seejaydee برای کتابخانه IR خود برای هسته های کوچک در نظرات https://www.instructables.com/id/Attiny-IR-librar… آموزنده در https://www.instructables.com/id/Attiny-IR -کتابخانه…

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

این راهنما وجود دارد زیرا من یک آموزش/راهنمای کامل که در جعبه کار می کند ، پیدا نکردم (ممکن است وجود داشته باشد ، اما نتوانستم آن را پیدا کنم) ، بنابراین تمام اطلاعات موجود در وب و پس از یک آزمایش خوب و خطاها من یک راهنمای کامل برای ساخت یک گیرنده مادون قرمز USB کار کردم که در واقع بسیار خوب کار می کند.

منابع اصلی اطلاعاتی که من دنبال کرده ام:

  • https://nathan.chantrell.net/20121014/tinypcremot…
  • https://forum.arduino.cc/index.php؟PHPSESSID=ap4jg…
  • https://blog.petrockblock.com/2012/05/19/usb-keybo…
  • https://learn.adafruit.com/using-an-infrared-libr…
  • https://codeandlife.com/2012/03/03/diy-usb-passwor…
  • https://codeandlife.com/2012/02/22/v-usb-with-atti…
  • https://www.instructables.com/id/Attiny-IR-librar…

مرحله 1: برخی ملاحظات

  • من برنامه نویس AVR ISP ندارم و واقعاً علاقه ای به خرید آن ندارم بنابراین از Arduino برای برنامه ریزی attiny85 استفاده کرده ام
  • من به هیچ سیستم عامل دیگری به جز GNU/Linux اهمیتی نمی دهم ، بنابراین نمی دانم که این در غیر این صورت کار می کند یا خیر.
  • کتابخانه های IR دیگری نیز وجود دارد اما من نمی توانم آنها را حتی با آردوینو کار کنم. در نظر داشته باشید که من با دانش محدودی در مورد کتابخانه های IR شروع کردم. شاید من بتوانم آنها را وادار به کار کنم بعد از تجربه ای که در زمینه مسائل نسبتاً مناسبی کسب کردم. به هر حال ، من قبل از پیدا کردن کتابخانه ای که سیجیدی تهیه کرده بود ، گم شده بودم و ناامید بودم و از آن زمان تا کنون از آن استفاده می کنم (بسیار متشکرم!).
  • پیکربندی های سخت افزاری دیگری نیز وجود دارد ، اما من فقط از یکی استفاده می کنم که از 5 ولت برای تغذیه attiny85 استفاده می کند و دو دیود زنر 3.6 ولت 0.5 وات برای بستن ولتاژ خطوط داده ، از جعبه کار می کند ، بنابراین من با آن مشکلی ندارم سایر تنظیمات
  • می توانید از کریستال 16 مگاهرتز یا کتابخانه tinytuner برای تنظیم ساعت داخلی attiny85 خود استفاده کنید. من اکیداً توصیه می کنم از کریستال استفاده کنید ، زیرا بسیار پایدارتر است و احتمالاً از بسیاری از سردردها جلوگیری می کند.
  • من در اینجا از دو بوت لودر مختلف برای attiny85 استفاده می کنم:

الف) نسخه نرم افزاری Rowdy Dog ، دارای یک رابط سریال است که بسیار جالب است و بسیار کوچک است ، بنابراین شما فضای بیشتری برای برنامه خود و سایر کتابخانه ها دارید. مشکل این است که به دلایلی حتی با وجود اینکه بسیار خوب کار می کند ، پس از مدتی دستگاه USB قطع شد (می توانید مشکلات مربوط به دستور dmesg را پیدا کنید). نمی دانم آیا این مشکل هسته است یا ترکیبی از هسته به علاوه کتابخانه های انتخاب شده ، پس از مدتی تصمیم گرفتم از این هسته فقط برای رمزگشایی کلیدهای راه دور و کالیبراسیون ساعت استفاده کنم (هنگام استفاده از 16 مگاهرتز کریستال) پس از آن ، من فقط بوت لودر Mellis را می سوزانم و طرح نهایی را که از رابط سریال استفاده نمی کند بارگذاری می کنم.

ب) نسخه Mellis ، بوت لودر پایدار ، من از آن در بسیاری از پروژه ها استفاده کرده ام. من اگر از رابط سریال استفاده کنم همیشه از این بوت لودر استفاده می کردم. من از این هسته در طرح نهایی پس از رمزگشایی همه کلیدهای کنترل از راه دور استفاده می کنم.

مرحله 2: بیایید با سخت افزار شروع کنیم

بیایید با سخت افزار شروع کنیم
بیایید با سخت افزار شروع کنیم
بیایید با سخت افزار شروع کنیم
بیایید با سخت افزار شروع کنیم
بیایید با سخت افزار شروع کنیم
بیایید با سخت افزار شروع کنیم

ابزارهای مورد نیاز:

  • یک برد سازگار با آردوینو
  • آداپتور سریال به usb برای رمزگشایی کلیدهای راه دور (فقط از FT232RL استفاده کنید)
  • رایانه ای با GNU/Linux نصب شده و arduino IDE به درستی پیکربندی شده است ، من از arduino IDE 1.8.0 استفاده می کنم
  • یک دستگاه کنترل از راه دور IR برای آزمایش دستگاه شما (حتی یک دستگاه بدتر مانند موارد موجود در کیت های راه اندازی arduino کار می کند)
  • یک مولتی متر برای اشکال زدایی برد شما (امیدوارم به آن احتیاج نداشته باشید ، موفق باشید!)

لیست مواد:

  • 1 attiny85
  • 2 مقاومت 68R
  • 1 مقاومت 1.5K
  • 1 مقاومت 4.7K
  • کریستال 16 مگاهرتز
  • 1 خازن 22pF
  • 1 خازن 0.1uF
  • 1 خازن 10uF
  • 2 دیود زنر 3.6 ولت 0.5 وات
  • 1 کانکتور USB نوع A مردانه
  • 1 پین نواری با 6 پین برای برنامه ریزی و اشکال زدایی برد.
  • 1 سنسور IR TSOP31238
  • مقدار زیادی قهوه برای بیدار نگه داشتن شما

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

برای اتصال attiny85 به رایانه شخصی ، در طرح نهایی از کانکتور USB نوع A استفاده شده است که روی برد لحیم شده است ، اما برای نمونه اولیه شما باید یک کابل USB بسازید که بتوانید آن را به یک تخته نان متصل کنید:

4 پین را به قطعه ای کوچک از ورق ورق بچسبانید ، سپس یک کابل USB قدیمی را ببرید و پین ها را به 4 سیم داخل کابل usb لحیم کنید:

  • قرمز VCC (5V) است
  • سیاه GND است
  • سفید D- است
  • سبز D+ است

همه چیز را با چسب داغ نگه دارید.

اکنون باید برنامه نویس ISP (آردوینو) ، USB را به آداپتور سریال (FT232RL) و سنسور IR را به attiny85 متصل کنیم.

می توانید همه را با هم متصل کنید تا بتوانید بوت لودرهای مختلف را بسوزانید ، طرح ها را بارگذاری کرده و بدون تغییر سیم ، پورت سریال را بررسی کنید ،

برای انجام این کار ، همه چیز را طبق دستورالعمل زیر متصل کنید:

برنامه نویس ISP (آردوینو): این به ما امکان می دهد بوت لودرها را بسوزانیم و طرح ها را بارگذاری کنیم

  • attiny85 PB0 (pin5) تا pin11 (MOSI) در آردوینو
  • attiny85 PB1 (pin6) تا pin12 (MISO) در آردوینو
  • attiny85 PB2 (pin7) تا pin13 (SCK) در آردوینو
  • attiny85 RESET (pin1) با کشش (4.6k تا VCC) تا pin10 در آردوینو
  • attiny85 VCC تا 5V در آردوینو
  • attiny85 GND به GND در آردوینو

usb to serial adapter (FT232RL): این به ما اجازه می دهد تا پورت سریال را بررسی کنیم

  • attiny85 PB0 (pin5 RX) به TX در FT232RL
  • attiny85 PB2 (pin7 TX) به RX در FT232RL
  • attiny85 GND (pin4) به GND در FT232RL
  • از آنجایی که attiny85 از قبل با آردوینو کار می کند ، نیازی به اتصال 5V به FT232RL ندارید ، در غیر این صورت اتصال کنید: attiny85 VCC (pin8) به 5V در FT232RL

usb به سریال آداپتور (FT232RL) فقط برای کالیبراسیون ساعت (فقط برای بوت لودر "ATtiny85 @ 8MHz (نوسان ساز داخلی ؛ BOD غیرفعال است)")

  • PB4 (pin3 RX) تا TX در FT232RL attiny85
  • PB3 (pin2 TX) تا RX در FT232RL attiny85
  • GND (pin4) تا GND در FT232RL
  • از آنجایی که attiny85 از قبل با آردوینو کار می کند ، نیازی به اتصال 5V به FT232RL ندارید ، در غیر این صورت اتصال کنید: attiny85 VCC (pin8) به 5V در FT232RL

اگر از کریستال 16 مگاهرتز استفاده می کنید ، آن را به پایه های Attiny85 PB3 (pin2) و PB4 (pin3) وصل کنید و هر پین را از طریق یک درپوش 22pF به GND وصل کنید.

VCC Attiny85 را با خازنهای 0.1uF و 10uF به موازات GND فیلتر کنید

پین خروجی سنسور IR را به attiny85 PB1 (pin6) وصل کنید ، آن را روشن کنید.

ایجاد و اتصال رابط usb:

  • GND (سیم سیاه): آن را به GND متصل کنید (همه زمینه ها به هم متصل می شوند)
  • D- (سیم سفید) متصل به attiny85 PB0 (pin5) از طریق یک مقاومت 68R ، آن را نیز از طریق زنر 3.6 ولت 0.5 وات به زمین متصل کرده و با مقاومت 1.5K آن را تا VCC بکشید.
  • D+ (سیم سبز) از طریق مقاومت 68R به PB2 متصل است ، آن را از طریق زنر 3.6 ولت 0.5 وات به زمین وصل کنید
  • 5V ، می توانید آن را بدون اتصال رها کنید زیرا در این مرحله همه چیز توسط آردوینو تغذیه می شود ، در غیر این صورت آن را به attiny85 VCC وصل کنید

دیودهای زنر به گونه ای متصل می شوند که آندها به GND و کاتدها به خطوط داده D+ و D- متصل می شوند.

مرحله 3: طراحی نهایی

طرح نهایی
طرح نهایی
طرح نهایی
طرح نهایی
طرح نهایی
طرح نهایی

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

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

به هر حال ، آثار موجود در تصاویر مس عاری نیست ، آنها با یک ماده شیمیایی تند و زننده که کمی مس را قلع می دهد ، درمان شده است (مشکوک به ایجاد سرطان است ، بنابراین از آن با احتیاط زیاد ، کره های لاتکس و ماسک گرد و غبار استفاده کنید):

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

مرحله 4: برخورد با نرم افزار

مدار در این پروژه بسیار آسان است ، در عوض نرم افزار به تلاش بیشتری نیاز دارد.

برای انجام این کار ، ما حداقل به 2 کتابخانه (در صورتی که از کریستال استفاده نمی کنید ، یک کتابخانه دیگر) به علاوه 2 بوت لودر نیاز داریم. هنگامی که این پروژه را شروع کردم ، برخی از کتابخانه ها را آزمایش کردم ، گاهی اوقات آنها کار نمی کردند و بسیاری اوقات آنها به گونه ای تنظیم نشده بودند که با Attiny85 خارج از جعبه کار کنند (من هنوز این را نمی دانستم). سپس من مشكلاتی را پیدا كردم كه كتابخانه ها / بوت لودرها با وقفه هایی همپوشانی دارند. سرانجام وقتی مدار نهایی را به رایانه خود وصل کردم ، باید با مقدار قابل توجهی خطا روبرو می شدم. هرچند من این راهنما را نداشتم ، بنابراین فکر می کنم همه چیز خوب است ، فقط مراحل این دستورالعمل را دنبال کنید ، اگر این کار را بدون اشتباه انجام دهید ، باید خوب باشید:)

اکنون باید چند کتابخانه را نصب و پیکربندی کنیم:

  • v-usb for arduino library: این کتابخانه به میکروکنترلر اجازه می دهد تا توسط کامپیوتر به عنوان صفحه کلید HID USB شناخته شود و ما از آن برای ارسال ضربه های کلیدی به رایانه استفاده می کنیم. این کتابخانه برای سازگاری با attiny85 به برخی تغییرات نیاز دارد
  • کتابخانه tinytuner فقط در صورتی که از کریستال 16 مگاهرتز استفاده نکنید. سپس باید ساعت داخلی میکروکنترلر را کالیبره کنید. این کتابخانه خارج از جعبه کار می کند.
  • کتابخانه Attiny-IR برای تعامل با سنسور IR. این کتابخانه در جعبه کار می کند.

ما همچنین به 2 بوت لودر نیاز داریم:

  • نسخه نرم افزار Dog ، با رابط سریال موجود. این بوت لودر برای کار با attiny85 به یک تغییر کوچک نیاز دارد زیرا از timer1 برای تابع millis () استفاده می کند و با کتابخانه IR کار نمی کند. ما باید تایمر را به timer0 تغییر دهیم.
  • نسخه ملیس ، بوت لودر پایدار که در مرحله نهایی از آن استفاده خواهیم کرد. این خارج از جعبه کار می کند.

مرحله 5: نصب و پیکربندی کتابخانه V-usb

کتابخانه را از https://code.google.com/archive/p/vusb-for-arduin… بارگیری کنید و فایل را از حالت فشرده خارج کرده و کتابخانه های پوشه/UsbKeyboard را در پوشه کتابخانه های طرح طرح خود کپی کنید.

حالا برای سازگاری با ATtiny85 باید چند فایل را ویرایش کنید (برای کار با arduino پیکربندی شده است):

الف) ویرایش usbconfig.h:

در بخش "پیکربندی سخت افزار" تغییر دهید:

#تعریف USB_CFG_IOPORTNAME D##تعریف USB_CFG_IOPORTNAME B

و

#تعریف USB_CFG_DMINUS_BIT 4 برای#تعریف USB_CFG_DMINUS_BIT 0

در بخش "پیکربندی سخت افزار اختیاری" تغییر دهید:

#تعریف USB_CFG_PULLUP_IOPORTNAME D##تعریف USB_CFG_PULLUP_IOPORTNAME B

برای ایجاد یک مشخصات کامل HID سازگار با بوت (در غیر این صورت هیچ کلید چند رسانه ای کار نمی کند) ، موارد زیر را نیز تغییر دهید:

#تعریف USB_CFG_INTERFACE_SUBCLASS 0 // بوتو#تعریف USB_CFG_INTERFACE_SUBCLASS 0x01 // بوت

و

#تعریف USB_CFG_INTERFACE_PROTOCOL 0 // صفحه کلید برای#تعریف USB_CFG_INTERFACE_PROTOCOL 0x01 // صفحه کلید

در صورت تمایل می توانید نام سازنده و دستگاه را در تعریف های زیر تغییر دهید:

#تعریف USB_CFG_VENDOR_NAME

#USB_CFG_DEVICE_NAME را #تعریف کنید

ب) UsbKeyboard.h را ویرایش کنید:

تغییر دادن:

PORTD = 0 ؛ // TODO: فقط برای پین های USB؟ DDRD | = ~ USBMASK؛

به

PORTB = 0 ؛ // TODO: فقط برای پین های USB؟ DDRB | = ~ USBMASK؛

برای اجازه دادن به کدهای کلیدی بیشتر از 101 نیز تغییر دهید:

0x25 ، 0x65 ، // LOGICAL_MAXIMUM (101) تا: 0x25 ، 0xE7 ، // LOGICAL_MAXIMUM (231)

و

0x29 ، 0x65 ، // USAGE_MAXIMUM (برنامه کاربردی صفحه کلید) تا: 0x29 ، 0xE7 ، // USAGE_MAXIMUM (برنامه صفحه کلید)

ممکن است لازم باشد این 3 فایل را نیز ویرایش کنید:

usbdrv.husbdrv.cUsbKeyboard.h

و هر زمان که می بینید PROGMEM قبل از نام نوع متغیر "const" اضافه می کند (به عنوان مثال: PROGMEN char usbHidReportDescriptor [35] ==> PROGMEM const char usbHidReportDescriptor [35])

اگر این واضح نیست به https://forum.arduino.cc/index.php؟topic=391253.0#… مراجعه کنید

اگر فقط کتابخانه پیوست را بارگیری کنید (من همه این تغییرات را خودم انجام دادم) و فقط آن را در داخل پوشه کتابخانه های sketchbook خود استخراج کنید ، می توانید اجتناب کنید.

UsbKeyboard برای attiny85 پیکربندی شده است

ویرایش: اخیراً متوجه شده ام که الخاندرو لیوا (https://github.com/gloob) از این کتابخانه مراقبت کرده است و به نظر می رسد که به خوبی نیز کار می کند. شما همچنین می توانید نسخه او را با تغییرات لازم که من ایجاد کرده ام کار کنم تا بتوانم آن را با توجه به کار کنم ، امتحان کنید ، بنابراین اگر می خواهید این مورد را بررسی کنید ، فقط آن را در داخل پوشه کتابخانه های اسکچ بوک خود استخراج کنید.

UsbKeyboard برای attiny85 پیکربندی شده است (نسخه Alejandro Leiva)

مرحله 6: نصب کتابخانه های Attiny-IR و Tinytuner

الف) کتابخانه Attiny-IR:

آن را از https://drive.google.com/open؟id=0B_w9z88wnDtFNHlq… بارگیری کنید و سپس آن را در پوشه کتابخانه های طرح کتاب خود باز کنید.

ب) کتابخانه Tinytuner:

این فقط در صورتی مورد نیاز است که از کریستال 16 مگاهرتز استفاده نمی کنید ، اما باور کنید ، اگرچه بدون کریستال نیز کار می کند ، اما با آن بسیار پایدارتر است و چند سنت هزینه دارند ، بنابراین ساده باشید ، از کریستال استفاده کنید و رد شوید این کتابخانه

هنوز قانع نشده اید؟ خوب ، کتابخانه را از https://storage.googleapis.com/google-code-archive… بارگیری کنید و سپس آن را در پوشه کتابخانه های طرح کتاب خود باز کنید.

کار ما با کتابخانه ها تمام شده است ، اکنون به سراغ نصب بوت لودرها می رویم.

مرحله 7: نصب و پیکربندی Bootloaders

ما قصد داریم دو بوت لودر نصب کنیم که Mellis طبق تجربه من پایدارتر است و ما از آن در طرح نهایی استفاده خواهیم کرد. یکی دیگر که توسط Rowdy Dog Software توسعه یافته یک هسته عالی است ، بسیار کوچک و دارای رابط سریال یکپارچه در دسترس است ، اما ریموت من پس از مدتی با آن خراب شد ، بنابراین ما از این بوت لودر فقط برای کالیبره کردن ساعت داخلی attiny85 و رمزگشایی از راه دور خود استفاده خواهیم کرد. دکمه ها.

من می دانم که کتابخانه های موجود برای ارائه قابلیت های سریال attiny85 وجود دارد ، اما پس از آن شما باید کتابخانه هایی را که از شیء سریال استفاده می کنند تغییر دهید … من این روش را بیشتر دوست دارم.

بیایید با نصب شروع کنیم:

الف) بوت لودر Mellis:

فقط ترجیحات Arduino IDE را باز کرده و "آدرس های اضافی مدیران تابلوها" را اضافه کنید:

raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

سپس مدیر بردهای Arduino IDE را باز کرده و به دنبال attiny باشید ، تخته ها را از Mellis نصب کنید. در حال حاضر باید Arduino ID را با بردهای ATtiny25/45/85 و ATtiny24/44/84 ببینید.

ب) بوت لودر کوچک Rowdy Dog Software:

بوت لودر را از https://storage.googleapis.com/google-code-archive دانلود کنید…

فایل را از حالت فشرده خارج کرده و پوشه کوچک داخل دفترچه طرح یا سخت افزار خود را کپی کنید (اگر این پوشه هنوز وجود ندارد) ایجاد کنید. سپس به پوشه sketchbook/hardware/tiny/avr/بروید و:

1) فایل Prospective Boards.txt را در فایل boards.txt کپی کنید

2) فایل platform.txt را ویرایش کرده و برخی تغییرات را اعمال کنید:

متغیر compiler.path را کامنت نکنید و آن را به پوشه hardware/tools/avr/bin/در داخل پوشه نصب arduino خود نشان دهید.

compiler.path = {PATH_TO_YOUR_ARDUINO_FOLDER}/سخت افزار/ابزار/avr/bin/

تغییر alsocompiler. S.flags = -c -g -assembler-with-cpptocompiler. S.flags = -c -g -x assembler-with-cpp

سپس متغیرهای زیر را تغییر دهید تا مطمئن شوید همه چیز در جای خود است (این فایل ها باید وجود داشته باشند ، در غیر این صورت متغیرها را به مسیرهای درست نشان دهید):

tools.avrdude.cmd.path = {runtime.ide.path}/hardware/tools/avr/bin/avrdude

tools.avrdude.config.path = {runtime.ide.path} /hardware/tools/avr/etc/avrdude.conf

tools.avrdude.cmd.path.linux = {runtime.ide.path}/hardware/tools/avr/bin/avrdude

tools.avrdude.config.path.linux = {runtime.ide.path} /hardware/tools/avr/etc/avrdude.conf

3) هسته های فایل/tiny/core_build_options.h را ویرایش کرده و تغییر دهید:

#تعریف TIMER_TO_USE_FOR_MILLIS 1 تا#تعریف TIMER_TO_USE_FOR_MILLIS 0

این بسیار مهم است ، در غیر این صورت گیرنده IR برای هر دکمه صفر می دهد. این دستور timer0 را برای تابع millis () پیکربندی می کند و تایمر 1 را در اختیار کتابخانه IR قرار می دهد. طرح نهایی به هر حال timer0 را غیرفعال می کند ، بنابراین شما توابع نه millis () و تاخیر () را در دسترس نخواهید داشت. ممکن است در عوض تابع delayMicroseconds () در دسترس داشته باشید.

این بوت لودر حداقل است ، اما شامل پشتیبانی از Serial object می باشد:

Attiny85 PB2 (pin7) TX و PB0 (pin5) RX است

می توانید پیکربندی را با برنامه نویس ISP (arduino) و آداپتور سریال به usb به طور همزمان وصل کنید ، بنابراین نیازی به تغییر سیم زیاد ندارید:

اکنون ما هم کتابخانه ها و هم بوت لودرها را نصب کرده ایم و به درستی پیکربندی شده ایم ، سخت ترین کار به پایان رسیده است و می توانیم آزمایشات را شروع کنیم.

مرحله 8: سوزاندن بوت لودرها و بارگذاری طرح ها

من اکیداً توصیه می کنم خروجی مفصل را تحت تنظیمات Arduino IDE فعال کنید تا بتوانید هرگونه مشکل احتمالی را مشخص کنید.

برای رایت یک بوت لودر در Attiny85 باید نمونه ISP را در Arduino بارگذاری کرده و سپس برنامه نویس Arduino را به عنوان ISP انتخاب کنید.

حالا یک خازن 10uF بین پین های تنظیم مجدد و پایه روی آردوینو قرار دهید (برای فرآیند سوختن لازم نیست ، اما برای بارگذاری طرح ها در attiny85).

اکنون آردوینو آماده سوزاندن بوت لودرها و بارگیری طرح ها است. شما فقط باید تخته مناسب سازگار با ظاهر خود را انتخاب کرده و آن را بسوزانید.

برای بارگذاری طرح در Attiny85 ، آن را در arduino IDE بارگذاری کرده و روی "بارگذاری با استفاده از برنامه نویس" کلیک کنید.

مهم: هنگام بارگذاری طرح 3 مرحله وجود دارد ، گردآوری ، نوشتن و تأیید. اگر تدوین و نوشتن با موفقیت انجام شد ، اما روند تأیید ناموفق بود ، ممکن است طرح به هر حال کار کند.

مرحله 9: ساعت داخلی Attiny85 را کالیبره کنید (اگر از کریستال استفاده می کنید این مورد را رد کنید)

در صورتی که تصمیم گرفتید از کریستال 16 مگاهرتز استفاده نکنید ، باید ساعت attiny85 خود را کالیبره کنید ، بنابراین ما به یک بوت لودر با رابط سریال در دسترس نیاز داریم و از کتابخانه tinytuner برای کالیبراسیون صحیح استفاده می کنیم.

مراحل بعدی را دنبال کنید

  • در زیر ابزارها Arduino را به عنوان برنامه نویس ISP انتخاب کنید
  • برد "ATtiny85 @ 8MHz (نوسان ساز داخلی ؛ BOD غیرفعال است) را انتخاب کنید
  • من فرض می کنم که شما اتصال ISP را همانطور که قبلاً توضیح داده اید آماده کرده اید ، در غیر این صورت اتصالات را انجام دهید
  • بوت لودر را بسوزانید
  • این بوت لودر پین های مختلفی را برای رابط سریال پیکربندی کرده است ، از این پیکربندی فقط برای بوت لودر فعلی استفاده کنید

- PB4 (pin3 RX) تا TX در FT232RL attiny85 - PB3 (pin2 TX) تا RX در FT232RL attiny85 - GND (pin4) تا GND در FT232RL زیرا attiny85 از قبل با آردوینو تغذیه می شود که نیازی به اتصال ندارید 5v در FT232RL ، در غیر این صورت وصل کنید: attiny85 VCC (pin8) به 5V در FT232RL

  • مثال tinytuner را در attiny85 بارگذاری کنید
  • برنامه صفحه را برای نظارت بر ارتباط سریال باز کنید: screen /dev /ttyUSB0 9600
  • تنظیم مجدد attiny85 که پین RESET (pin1) را به GND متصل می کند (فقط یک لحظه) ، یک پیام خوش آمد گویی باید در پنجره صفحه نمایش داده شود
  • تا زمانی که کالیبراسیون به پایان برسد ، ارسال کاراکترهای تک (x) (بدون حمل و بازگشت ؛ بدون تغذیه خط) ادامه دهید
  • در جایی ارزش کالیبراسیون (OSCCAL = 0x) را یادداشت کنید. این مقدار است که باید در طرح های نهایی اعلام کنید

مرحله 10: دکمه های راه دور خود را رمزگشایی کنید

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

  • اگر از کریستال استفاده نمی کنید ، برد "ATtiny85 @ 16MHz (PLL داخلی ؛ 4.3V BOD)" را انتخاب کنید ، در غیر این صورت ، ATtiny85 @ 16 MHz (کریستال خارجی ؛ 4.3 V BOD) ، سپس آن را بسوزانید
  • طرح را بارگذاری کنید:
  • اگر از کریستال استفاده نمی کنید ، سطر حاوی متغیر OSCCAL را کامنت نکنید و آن را به مقداری که هنگام کالیبراسیون ساعت پیدا کرده اید اختصاص دهید.
  • من فرض می کنم که سنسور همانطور که در قبل توضیح داده شد متصل است ، در غیر این صورت آن را وصل کنید
  • من همچنین فرض می کنم که سریال FT232RL به آداپتور USB متصل است ، در غیر این صورت آن را وصل کنید
  • تنظیم مجدد attiny85 اتصال پین RESET (pin1) به GND (فقط یک لحظه)
  • دکمه های ریموت خود را بارها و بارها بزنید و پنجره صفحه را بررسی کنید ، برای هر رکورد باید آخرین شماره را یادداشت کنید ، هر دکمه ممکن است 2 عدد مختلف تولید کند

مثال:

دریافت D44 3396 دریافت 544 1348

3396 و 1348 را در ارتباط با دکمه ای که تازه فشار داده اید یادداشت کنید ، سپس باید تصمیم بگیرید که می خواهید با آن دکمه چه کار کنید. به عنوان مثال ، من می توانم از آن دکمه برای ارسال کلید چند رسانه ای "افزایش صدا" استفاده کنم ، سپس باید شناسه آن کد کلیدی را پیدا کنم. برای انجام این کار ، PDF را بارگیری کنید:

به بخش "صفحه کلید/صفحه کلید" صفحه 53 توجه کنید و از اعداد موجود در ستون شناسه استفاده (Dec) برای اتصال دکمه های راه دور خود به کدهای صفحه کلید استفاده کنید. در مثال ما می توانیم ببینیم که کد کلید "افزایش صدا" عبارت است از: 128.

فایل UsbKeyboard.h را در داخل کتابخانه UsbKeyboard از بسته v-usb که قبلاً نصب کرده بودیم ویرایش کنید و اگر در حال حاضر وجود ندارد به تعریف های موجود اضافه کنید:

#KEY_VOL_UP 128 را تعریف کنید

وقتی کار با تمام دکمه های کنترل از راه دور و تمام تعریفات موجود در فایل UsbKeyboard.h آماده شد ، می توانیم به آخرین مرحله برویم.

مرحله 11: بارگیری طرح نهایی و امید برای بهترین

بارگیری طرح نهایی و امید برای بهترین!
بارگیری طرح نهایی و امید برای بهترین!
بارگیری طرح نهایی و امید برای بهترین!
بارگیری طرح نهایی و امید برای بهترین!

ما اکنون همه دکمه های راه دور را رمزگشایی کرده ایم ، فایل UsbKeyboard.h با کدهای کلیدی ما پر شده است ، بنابراین اکنون می توانیم طرح نهایی را در arduino IDE بارگیری کنیم:

github.com/venumz/ATtiny85-USB-IR-receiver…

این فایل همان فایل دقیقی است که من برای گیرنده خود استفاده می کنم ، و برای 2 ریموت مختلف کار می کند ، بنابراین به طور واضح برای کار با کنترل از راه دور خود باید آن را به روز کنید.

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

توجه داشته باشید که در تابع حلقه جملات زیادی مانند این وجود دارد:

if (results.value == 3405 || results.value == 1357) {// پیکان به بالا

if (lastStroke! = results.value) UsbKeyboard.sendKeyStroke (KEY_ARROW_UP) ؛

}

شما باید اظهارات خود را ایجاد کنید ، یکی در هر دکمه در کنترل از راه دور. در شرط "اگر" باید نتایج را قرار دهید. مقادیری را که برای رمزگشایی ریموت خود پیدا کرده اید ارزش گذاری کنید و به عنوان آرگومان روش UsbKeyboard.sendKeyStroke باید یکی از کدهای کلیدی از قبل تعریف شده را در فایل UsbKeyboard.h قرار دهید.

شرط "if (lastStroke! = results.value)" مورد نیاز است زیرا برخی از راه دور در هر ضربه یک کد را دو بار ارسال می کند و این مانع از ضربه دوم می شود. من کاملاً مطمئن نیستم و ممکن است به پروتکل IR بستگی داشته باشد که در ریموت شما برنامه ریزی شده است (من واقعاً متخصص پروتکل های IR نیستم) اما طبق تجربه ای که از راه دور خودم دارم ، هر دکمه می تواند 2 کد مختلف تولید کند. در حالی که دکمه را فشار می دهید و نگه می دارید ، همان کد را ارسال می کند ، اما اگر دوباره دکمه را فشار دهید ، کد دیگر را ارسال می کند. بنابراین به نظر می رسد که کدها به صورت متناوب ارسال می شوند ، من حدس می زنم این یک حالت استاندارد است که بدانید چند بار واقعاً دکمه را فشار داده اید.

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

برای این مرحله ، بهتر است آردوینو و usb را به آداپتور سریال وصل کنید و تنها در این صورت ، USB را به پورت رایانه خود وصل کنید (در صورت خرابی مشکل اشکال زدایی مدار شما ساده تر می شود).

اگر همه چیز خوب کار کرد ، وقتی یک ترمینال را باز می کنید و دستور dmesg را ارسال می کنید ، باید چیزی شبیه به تصویر اول در این مرحله مشاهده کنید. اگر مشکلی وجود داشت ، باید خطاهایی مانند آنچه در تصویر دوم یافت می شود داشته باشید و باید اشکال زدایی مدار و/یا نرم افزار خود را شروع کنید. یکی از منابع اصلی خطاهای اولیه من یک هاب USB بود که با گیرنده IR من کار نمی کرد (هر چند دیگران کار می کردند) … بنابراین بهتر است در آخرین مرحله گیرنده IR را مستقیماً به پورت رایانه خود وصل کنید. یافتن خطاهای احتمالی ممکن است دشوار باشد ، اما در پایان ، مانند من ، شما چیزهای زیادی یاد خواهید گرفت و به شما اطمینان می دهم که باید هزینه آن را بپردازید.

این همه افراد است ، در صورت مشاهده هرگونه خطا در این دستورالعمل و لذت بردن از گیرنده IR جدید USB خود ، به من اطلاع دهید!

توصیه شده: