Мазмуну:

ATtiny85 IR USB алуучу: 11 кадам (Сүрөттөр менен)
ATtiny85 IR USB алуучу: 11 кадам (Сүрөттөр менен)

Video: ATtiny85 IR USB алуучу: 11 кадам (Сүрөттөр менен)

Video: ATtiny85 IR USB алуучу: 11 кадам (Сүрөттөр менен)
Video: ATtiny85 Relay Control with IR Remote || 2-Channel IR Remote Control System Using ATtiny85 2024, Июль
Anonim
ATtiny85 IR USB алуучу
ATtiny85 IR USB алуучу

ЭСКЕРТҮҮ, БУЛ КӨРСӨТҮЛБӨС ЭСКИРИП КЕТТИ

V-usb китепканасы азыркы учурда дээрлик жок USB 1.1 протоколу менен иштөө үчүн иштелип чыккан. USB3 келиши менен сизде v-usb түзмөктөрүн иштетүү үчүн башыңыз ооруп калат. Мультимедиа борборумду алмаштыргандан кийин, менде көптөгөн туруктуулук маселелери пайда болду жана ресивер иштесе да, бир аздан кийин ал иштебей калды. Мен аны оңдоого аракет кыла албадым. Мен ошондой эле atmega328p версиясын жасадым, бирок ушул эле көйгөйлөр бар болчу. Көзөмөлдөөчү таймерди колдонуп, тактаны мезгил-мезгили менен калыбына келтирүү да жардам берген жок, ошондуктан мен v-usbден баш тарттым.

Өзүңүзгө жакшылык кылыңыз жана бул билим берүү максаттары үчүн болбосо, бул көрсөтмөлүү ишке ашпаңыз. Мен анын ордуна USB интерфейсин интеграциялаган ATmega 32U4 чип модулун сатып алууну сунуштайм жана бул көрсөтмөнү аткарыңыз:

www.sparkfun.com/tutorials/337

Андан кийин TSOP31238 IR сенсорун ыргытыңыз жана барганыңыз жакшы.

Салам жаратуучулар! Бул Attiny85 микроконтроллерин колдонуп иштеп жаткан IR IR алуучуну курууга көрсөтмө. Мен бул долбоорду GNU/Linux OSтеги кээ бир IR пульттары үчүн колдоонун жоктугунан (жок дегенде толук колдоо) жоюу үчүн баштадым. Бул көрсөтмөлөргө ылайык, бир нече долларга каалаган IR пульту менен иштей турган программалоочу USB IR кабылдагычын түзө аласыз.

Биринчиден, бул көрсөтмө мен колдонгон китепканаларды түзгөн адамдардын талыкпаган эмгеги болбосо болбойт эле:

  • Дэвид А. Меллис өзүнүн ишенимдүү өзөгү үчүн
  • TinyTuner китепканасы үчүн Rowdy Dog программасы
  • Rowdy Dog программасы кичинекей жүктөгүч үчүн
  • V-usb китепканасынын arduino порту үчүн Rancidbacon (https://rancidbacon.com/) (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • https://www.instructables.com/id/Attiny-IR боюнча https://www.instructables.com/id/Attiny-IR-librar… комментарийлеринде табылган кичинекей өзөктөр үчүн IR китепканасы үчүн seejaydee -китепкана…

Кээде китепкананын туура ээсин табуу оңой эмес, андыктан мен ката кетирген болсом, комментарий калтырыңыз, мен маселени тез арада чечмекмин.

Бул колдонмо бар, анткени мен кутудан иштеп жаткан толук окуу куралын/гидди таппадым (бар болушу мүмкүн, бирок мен таба алган жокмун), ошондуктан мен Интернетте болгон бардык маалыматты чогулттум жана жакшы сыноолордон кийин каталар Мен чындыгында абдан жакшы иштеген жумушчу IR IR алуучуну куруу боюнча толук көрсөтмө менен келдим.

Мен ээрчип жүргөн негизги маалымат булактары:

  • 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 программисти жок жана мен чындыгында аны сатып алууну каалабайм, ошондуктан мен attiny85ти программалоо үчүн Arduino колдондум.
  • Мен GNU/Linuxтан башка OSке кызыкпайм, андыктан бул башкача иштээрин билбейм.
  • башка IR китепканалары бар, бирок мен аларды arduino менен да иштей албадым. Мен IR китепканалары жөнүндө чектелген билим менен баштаганымды эске алыңыз. Балким, мен тажрыйба топтогон маселелерди чечкенден кийин аларды азыр иштете алмакмын. Баары бир, мен Seejaydee камсыз кылган китепкананы таба электе эле адашып калдым жана ошондон бери колдонуп келем (адамга чоң рахмат!).
  • Башка аппараттык конфигурациялар бар, бирок мен 5V колдонуп, attiny85ти жана эки 3.6V 0.5W зенер диоддорун маалымат линияларынын чыңалуусун кысуу үчүн колдондум, ал кутудан иштейт, ошондуктан мен чаташкан жокмун башка конфигурациялар.
  • Сиз 16 МГц кристаллды колдоно аласыз же tinytuner китепканасын attiny85 ички саатыңызды калибрлөө үчүн колдоно аласыз. Мен кристаллды колдонууга катуу кеңеш берем, ал алда канча туруктуу жана, балким, сизге көп баш ооруну аябайт.
  • Мен бул жерде attiny85 үчүн эки башка жүктөгүчтү колдонуп жатам:

a) Rowdy Dog Software версиясы, ал абдан сонун сериялык интерфейсти бириктирген жана анча чоң эмес, андыктан программаңызга жана башка китепканаларга көбүрөөк орун бар. Көйгөй, кээ бир себептерден улам, ал абдан жакшы иштесе да, бир аз убакыттан кийин usb түзмөгү ажыратылган (сиз dmesg буйругу менен маселелерди таба аласыз). Мен билбейм, бул өзөктүн көйгөйүбү же өзөктүн аралаш аралашмасыбы жана тандалган китепканаларбы, бир аз убакыттан кийин мен бул ядродон алыскы баскычтарды декоддоо жана саатты калибрлөө үчүн колдонууну чечтим (16 МГцти колдонбогондо) кристалл). Андан кийин, мен Mellis жүктөгүчүн өрттөп, сериялык интерфейсти колдонбогон акыркы эскизди жүктөп берем.

б) Mellis версиясы, туруктуу жүктөгүч, мен муну көптөгөн долбоорлордо колдоном. Мен бул жүктөгүчтү ар дайым колдонгон элем, эгер ал сериялык интерфейсти камтыса. Мен бул ядроду пульттогу бардык ачкычтарды декоддоодон кийин акыркы эскизде колдоном.

2 -кадам: Аппаратура менен баштайлы

Келгиле, жабдык менен баштайлы
Келгиле, жабдык менен баштайлы
Келгиле, жабдык менен баштайлы
Келгиле, жабдык менен баштайлы
Келгиле, жабдык менен баштайлы
Келгиле, жабдык менен баштайлы

Сизге керектүү шаймандар:

  • arduino менен шайкеш келген такта
  • алыстан баскычтарды чечүү үчүн USB адаптерине сериялык (жөн гана FT232RL колдонуңуз)
  • GNU/Linux орнотулган жана arduino IDE туура конфигурацияланган компьютер, мен arduino IDE 1.8.0 колдонуп жатам
  • IR прибору сиздин түзмөгүңүздү сынап көрөт (ал тургай arduino стартерлеринде кездешкендей иштейт)
  • тактаңызды оңдоо үчүн мультиметр (сизге кереги жок деп ишенем, ийгилик!)

Материалдардын тизмеси:

  • 1 аттин85
  • 2 68R каршылыгы
  • 1 1.5K каршылык
  • 1 4.7K каршылыгы
  • 1 16 МГц кристалл
  • 1 22pF конденсатор
  • 1 0.1uF конденсатор
  • 1 10uF конденсатор
  • 2 3.6V 0.5W zener диоддор
  • 1 USB түрү А эркек туташтыргычы
  • Тактада программалоо жана мүчүлүштүктөрдү жаратуу үчүн 6 казыгы бар 1 тилке төөнөгүч.
  • 1 IR сенсор TSOP31238
  • сергек болуу үчүн кофе көп

Тактай тактаны ширетүүдөн мурун, балким, тестирлөө үчүн нандын прототибин жасагыңыз келет, бул нускамага тиркелген схемага ылайык, аны куруу үчүн жетиштүү болушу керек.

Attiny85ти ЖКга туташтыруу үчүн, акыркы дизайнда тактага кошулган А типтеги USB туташтыргычы колдонулат, бирок прототип үчүн сиз панельге туташтыра турган USB кабелин жасашыңыз керек болот:

Перфорборддун кичинекей бир бөлүгүнө 4 казыкка ширетип, андан кийин эски USB кабелин кесип, казыктарды USB кабелинин ичиндеги зымдардын 4кө туташтырыңыз:

  • кызыл VCC (5V)
  • кара GND болуп саналат
  • ак D-
  • жашыл D+

Баарын ысык клей менен бирге кармаңыз.

Эми биз ISP программистин (Arduino), USBди сериялык адаптерге (FT232RL) жана IR сенсорун attiny85ке туташтырышыбыз керек.

Сиз ар кандай жүктөгүчтөрдү күйгүзүп, эскиздерди жүктөп жана зымдарды алмаштырбастан сериялык портту текшере алгыдай кылып, бардыгын бирге калтырсаңыз болот, Бул үчүн, бул көрсөтмөлөрдү аткарып, бардыгын туташтырыңыз:

ISP программисти (Arduino): бул бизге жүктөгүчтөрдү өрттөөгө жана эскиздерди жүктөөгө мүмкүндүк берет

  • attiny85 PB0 (pin5) pin11 (MOSI) үчүн arduino
  • attiny85 PB1 (pin6) arduino ичинде pin12 (MISO)
  • attiny85 PB2 (pin7) pin13 (SCK) үчүн arduino
  • attiny85 RESET (pin1) менен тартуу (VCCге 4.6k чейин)
  • attiny85 VCC 5Vдан ардуиного
  • attiny85 GNDден GNDга ардуинодо

usb to serial adapter (FT232RL): бул бизге сериялык портту текшерүүгө мүмкүндүк берет

  • attiny85 PB0 (pin5 RX) FT232RLдеги TXке
  • attiny85 PB2 (pin7 TX) FT232RLдеги RXке
  • attiny85 GND (pin4) FT232RL боюнча GNDге
  • attiny85 буга чейин arduino тарабынан иштелгендиктен, FT232RLдеги 5v туташтыруунун кажети жок, антпесе туташтырыңыз: attiny85 VCC (pin8) 5V менен FT232RL

USB сериялык адаптерге (FT232RL) сааттын калибрлөө үчүн гана (жөн эле жүктөөчү үчүн "ATtiny85 @ 8MHz (ички осциллятор; BOD өчүрүлгөн)")

  • PB4 (pin3 RX) TXке FT232RL attiny85
  • PB3 (pin2 TX) RXке FT232RL attiny85
  • GND (pin4) үчүн FND232RL боюнча GND
  • attiny85 буга чейин arduino тарабынан иштелгендиктен, FT232RLдеги 5v туташтыруунун кажети жок, антпесе туташтырыңыз: attiny85 VCC (pin8) 5V менен FT232RL

Эгерде сиз 16 МГц кристаллын колдонсоңуз, аны Attiny85 казыктарына PB3 (pin2) жана PB4 (pin3) туташтырыңыз жана ар бир пинди GNDге 22pF капкагы аркылуу туташтырыңыз.

Аларды GNDге параллель туташтырган 0.1uF жана 10uF конденсаторлору менен Attiny85 VCC чыпкасы

IR сенсорунун чыгуучу пинин attiny85 PB1ге (pin6) туташтырыңыз, аны күйгүзүңүз.

USB интерфейсин түзүү жана туташтыруу:

  • GND (кара зым): аны жалпы GNDге туташтырыңыз (бардык негиздер биригет)
  • D- (ак зым) 68R каршылыгы аркылуу attiny85 PB0 (pin5) менен туташып, аны 3.6V 0.5W зенер аркылуу жерге туташтырып, 1.5K каршылыгы менен VCCге чейин тартыңыз
  • D+ (жашыл зым) 68R каршылыгы аркылуу PB2ге туташып, аны 3.6V 0.5W зенер аркылуу жерге туташтырыңыз
  • 5V, сиз аны туташпай калтырсаңыз болот, анткени бул этапта баары Arduino тарабынан иштейт, антпесе attiny85 VCCге туташтырыңыз

Зенер диоддор аноддор GNDге байланган жана катоддор D+ жана D- линияларына туташкан.

3 -кадам: Акыркы Дизайн

Акыркы Дизайн
Акыркы Дизайн
Акыркы Дизайн
Акыркы Дизайн
Акыркы Дизайн
Акыркы Дизайн

Акыркы дизайн үчүн сиз тешик компоненттери менен перфордборду колдоно аласыз же өз тактаңызды чийип, smd компоненттерин колдоно аласыз. Тактанын этикетин үйрөнүү үчүн, жөн гана google, Интернетте сонун окуу куралдары бар.

Мен өзүмдүн тактайымды чийип салдым жана акыркы жыйынтыктарга абдан кубанычтамын (кичинекей, туруктуу жана бекем такта). Ооба, мен кесилгенин билем, бирок түн ичинде мен эч кандай электр куралын колдоно албадым. тактайды менин калай кесүүчү кайчым менен кескиле.

Айтмакчы, сүрөттөрдөгү издер жез эмес, алар жезди бир аз калайтуучу жагымсыз химиялык заттар менен иштетилген (бул рак оорусун пайда кылат деп шектелген, андыктан аны этияттык менен колдонуңуз, латекс глобустары жана чаң маскасы):

Макетиңизди иштеп чыгуу үчүн жогорудагы схемаларды колдонуңуз же тактаңызды чийүү үчүн менин компьютеримдин изин колдонсоңуз болот.

4 -кадам: Программалык камсыздоо менен иштөө

Бул долбоордун схемасы абдан оңой, анын ордуна программалык камсыздоо чоң күчтү талап кылат.

Бул ишти жасоо үчүн бизге жок дегенде 2 китепкана керек (эгер дагы бирөө кристаллды колдонбосо) жана 2 жүктөөчү. Мен бул долбоорду баштаганда кээ бир китепканаларды сынап көрдүм, кээде алар иштебей калды жана көп учурда алар Attiny85 менен иштөө үчүн конфигурацияланган эмес (мен муну азырынча билген эмесмин). Андан кийин мен үзгүлтүккө учураган китепканалар / жүктөгүчтөр менен көйгөйлөрдү таптым. Акыры, мен акыркы схеманы компьютериме туташтырганда, бир топ каталар менен күрөшүүгө туура келди. Менде бул жол көрсөткүч жок болчу, андыктан сизде баары жакшы болмок деп ойлойм, жөн гана бул инструктивдүү кадамдарды аткарыңыз, эгер сиз муну катасыз кылсаңыз, анда жакшы болушуңуз керек:)

Биз азыр бир нече китепканаларды орнотуп, конфигурациялашыбыз керек:

  • arduino китепканасы үчүн v-usb: бул китепкана микроконтроллерди ЖК тарабынан USB HID клавиатурасы катары таанууга мүмкүндүк берет жана биз аны баскычтардын штрихтерин ЖКга жөнөтүү үчүн колдонобуз. Бул китепкана attiny85 менен шайкеш болушу үчүн кээ бир өзгөртүүлөрдү талап кылат
  • tinytuner китепканасы, эгер сиз 16 МГц кристаллын колдонбосоңуз. Сиз андан кийин микроконтроллердин ички саатын калибрлешиңиз керек. Бул китепкана кутудан тышкары иштейт.
  • IR сенсор менен иштөө үчүн Attiny-IR-китепканасы. Бул китепкана кутудан тышкары иштейт.

Бизге дагы 2 жүктөгүч керек:

  • Dog Software версиясы, сериялык интерфейси бар. Бул жүктөгүч attiny85 менен иштөө үчүн кичине оңдоп -түзөөгө муктаж, анткени ал millis () функциясы үчүн timer1ди колдонот жана IR китепканасы менен иштебейт. Биз таймерди таймерге алмаштырышыбыз керек0.
  • Mellis версиясы, акыркы баскычта колдоно турган туруктуу жүктөгүч. Бул кутудан иштейт.

5-кадам: V-USB китепканасынын орнотулушу жана конфигурациясы

Китепкананы https://code.google.com/archive/p/vusb-for-arduin…Унзип алыңыз жана папкалардын китепканаларын/UsbKeyboardду эскиз китепканаларынын папкасына көчүрүңүз.

Эми сиз ATtiny85 менен шайкеш келүү үчүн бир нече файлды түзөтүшүңүз керек (ал arduino менен иштөө үчүн конфигурацияланган):

A) usbconfig.h түзөтүү:

"Hardware Config" өзгөртүү астында:

#Define USB_CFG_IOPORTNAME Dto ## USB_CFG_IOPORTNAME B аныктоо

жана

#USB_CFG_DMINUS_BIT 4ти аныктоо үчүн USB_CFG_DMINUS_BIT 0 аныктоо 0

"Кошумча жабдууларды конфигурациялоо" бөлүмүндө:

#USB_CFG_PULLUP_IOPORTNAME Dto ## USB_CFG_PULLUP_IOPORTNAME B аныктоо

Толук "жүктөөчү шайкеш HID" спецификасын түзүү үчүн (антпесе мультимедиялык ачкычтар иштебейт), ошондой эле өзгөртүңүз:

#define USB_CFG_INTERFACE_SUBCLASS 0 // Bootto#аныктоо USB_CFG_INTERFACE_SUBCLASS 0x01 // Жүктөө

жана

#define USB_CFG_INTERFACE_PROTOCOL 0 // Keyboardto#аныктоо USB_CFG_INTERFACE_PROTOCOL 0x01 // Баскычтоп

Кааласаңыз, сиз төмөнкү аныктамаларда өндүрүүчүнү жана түзмөктүн атын өзгөртө аласыз:

#define USB_CFG_VENDOR_NAME

#define USB_CFG_DEVICE_NAME

B) UsbKeyboard.h түзөтүү:

өзгөртүү:

PORTD = 0; // TODO: USB казыктары үчүн гана? DDRD | = ~ USBMASK;

чейин

PORTB = 0; // TODO: USB казыктары үчүн гана? DDRB | = ~ USBMASK;

101ден көбүрөөк ачкыч коддоруна уруксат берүү үчүн:

0x25, 0x65, // LOGICAL_MAXIMUM (101) to: 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])

Эгерде бул так болбосо, Эгерде сиз тиркелген китепкананы жүктөп алсаңыз (мен мунун баарын өзүм киргизгем) жана эскиз китепкана китепканасынын папкасынан чыгарып салсаңыз, бул өзгөрүүлөрдүн баарынан сактансаңыз болот:

UsbKeyboard attiny85 үчүн конфигурацияланган

Түзөтүү: жакында мен Алехандро Лейванын (https://github.com/gloob) бул китепканага кам көрүлгөнүн жана ошондой эле жакшы иштеп жаткандыгын байкадым. Сиз ошондой эле анын версиясын мен аттиния менен иштеши үчүн киргизген керектүү өзгөртүүлөр менен сынап көрсөңүз болот, андыктан эгер сиз муну текшергиңиз келсе, аны эскиз китепканаларынын папкасынан чыгарып алыңыз.

UsbKeyboard attiny85 үчүн конфигурацияланган (Алехандро Лейванын версиясы)

6-кадам: Attiny-IR жана Tinytuner китепканаларын орнотуу

A) Attiny-IR китепканасы:

drive.google.com/open?id=0B_w9z88wnDtFNHlq…ден жүктөп алыңыз, андан кийин эскиз китепканаларынын папкасына ачыңыз.

B) Tinytuner китепканасы:

Бул сиз 16 МГц кристаллды колдонбогондо гана керек, бирок мага ишениңиз, ал кристаллсыз эле иштесе дагы, ал бир топ туруктуу жана баасы бир нече центке барабар, андыктан аны жөнөкөй кармаңыз, кристалды колдонуңуз жана өткөрүп жибериңиз бул китепкана.

Дагы эле ишене элексизби? макул, китепкананы жүктөп алыңыз https://storage.googleapis.com/google-code-archive… анан эскиз китепканалар папкасына ачыңыз.

Биз китепканаларды бүтүрдүк, эми жүктөгүчтөрдү орнотууга кириштик.

7 -кадам: Жүктөөчүлөрдү орнотуу жана конфигурациялоо

Биз эки жүктөгүчтү орнотмокчубуз, Mellis менин тажрыйбама караганда туруктуу жана биз аны акыркы эскизде колдонобуз. Rowdy Dog Software тарабынан иштелип чыккан экинчиси - бул эң сонун ядро, абдан кичине жана интегралдык сериялык интерфейси бар, бирок менин пультим бир аз убакыттан кийин кыйрады, андыктан биз бул жүктөгүчтү attiny85 ички саатын калибрлөө үчүн жана пультту декоддоо үчүн колдонобуз. баскычтар.

Мен attiny85 сериялык мүмкүнчүлүктөрдү берүү үчүн жеткиликтүү китепканалар бар экенин билем, бирок андан кийин сериялык объектти колдонгон китепканаларды оңдоо керек болот … Мага бул процедура жакты.

Келгиле, орнотуудан баштайлы:

A) Mellis жүктөгүч:

жөн гана Arduino IDE артыкчылыктарын ачыңыз жана Кошумча такталар менеджеринин URL'дери:

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

Андан кийин Arduino IDE такталарынын менеджерин ачыңыз жана аттелин издеңиз, Mellisтен такталарды орнотуңуз. Эми сиз Arduino ID ATtiny25/45/85 жана ATtiny24/44/84 такталарын көрүшүңүз керек.

B) Rowdy Dog Software кичинекей жүктөгүч:

жүктөгүчтү https://storage.googleapis.com/google-code-archive… жүктөп алыңыз

Файлды ачып, эскиз китебиңиздин/жабдууңуздун кичинекей папкасын көчүрүңүз (эгер ал жок болсо, бул папканы түзүңүз). андан кийин папкага өтүңүз эскиз китеби/аппараттык/tiny/avr/жана:

1) Prospective Boards.txt файлын board.txt файлына көчүрүңүз

2) platform.txt файлын түзөтүп, кээ бир өзгөртүүлөрдү киргизиңиз:

Compiler.path өзгөрмөсүн комментарийлебеңиз жана аны arduino орнотуу папкасынын ичиндеги папкага/куралдар/avr/bin/көрсөтүүгө калтырыңыз:

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}/аппараттык/куралдар/avr/bin/avrdude

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

tools.avrdude.cmd.path.linux = {runtime.ide.path}/аппараттык/куралдар/avr/bin/avrdude

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

3) cores/tiny/core_build_options.h файлын өзгөртүү жана өзгөртүү:

#TIMER_TO_USE_FOR_MILLIS 1 үчүн#TIMER_TO_USE_FOR_MILLIS үчүн 0 аныктоо 0

Бул абдан маанилүү, антпесе IR кабылдагычы ар бир баскыч үчүн нөлдү чыгарат. Бул билдирүү timer0ди millis () функциясы үчүн конфигурациялайт, таймер1ди IR китепканасына жеткиликтүү калтырат. Акыркы эскиз таймерди 0 өчүрөт, андыктан millis () жана delay () функциялары жеткиликтүү болбойт. Анын ордуна сизде delayMicroseconds () функциясы болушу мүмкүн.

Бул жүктөгүч минималдуу, бирок Сериялык объектилерди колдоону камтыйт:

Attiny85 PB2 (pin7) - TX жана PB0 (pin5) - RX

Сиз провайдер программасы менен конфигурацияга ээ боло аласыз (arduino) жана USB адаптерине сериал бир убакта туташкан, андыктан зымдарды тез -тез алмаштыруунун кажети жок:

Азыр бизде китепканалар да, жүктөгүчтөр да орнотулган жана туура конфигурацияланган, эң татаал иш аяктады жана биз тестирлөөнү баштай алабыз.

8 -кадам: Жүктөгүчтөрдү күйгүзүү жана эскиздерди жүктөө

Мен ар кандай маселени чечүү үчүн Arduino IDE артыкчылыктарынын астындагы кеңири чыгууну активдештирүүнү кеңеш кылам.

Жүктөгүчтү Attiny85ке жаздыруу үчүн ISP мисалын Arduinoго жүктөп, андан кийин Arduino программистин ISP катары тандоо керек.

Эми 10uF конденсаторду arduinoдогу баштапкы абалга келтирүү менен жерге төөнөгүчтөрдүн ортосуна коюңуз (бул күйүү процессине кереги жок, бирок эскиздерди attiny85ке жүктөө).

Эми arduino жүктөгүчтөрдү өрттөөгө жана эскиздерди жүктөөгө даяр. Сиз жөн гана аттинияңызга туура келген туура тактаны тандап, өрттөшүңүз керек.

Эскизди Attiny85ке жүктөө үчүн, аны arduino IDEге жүктөп, "Программистти колдонуп жүктөө" дегенди басыңыз.

МААНИЛҮҮ: эскизди жүктөөдө 3 кадам бар, компиляция, жазуу жана текшерүү. Эгерде компиляция жана жазуу ийгиликтүү иштесе, бирок текшерүү процесси ишке ашпай калса, анда эскиз баары бир иштеши мүмкүн.

9 -кадам: Attiny85 ички саатын калибрлеңиз (эгер кристалл колдонсоңуз муну өткөрүп жибериңиз)

Эгерде сиз 16 МГц кристаллды колдонбоону чечсеңиз, анда attiny85 саатыңызды калибрлешиңиз керек, андыктан бизге сериялык интерфейси бар жүктөгүч керек болот жана биз туура калибрлөө үчүн tinytuner китепканасын колдонобуз.

Кийинки кадамдарды аткарыңыз

  • куралдардын астында Arduino провайдер программисти катары тандаңыз
  • "ATtiny85 @ 8MHz (ички осциллятор; BOD өчүрүлгөн)" тактасын тандоо
  • Мен сиз ISP туташууңузду туташуудан мурун айтылгандай даяр деп ойлойм, антпесе туташууларды жасаңыз
  • bootloader күйгүзүү
  • Бул жүктөгүч сериялык интерфейс үчүн ар кандай казыктарды конфигурациялаган, бул конфигурацияны учурдагы жүктөгүч үчүн гана колдонуңуз

- PB4 (pin3 RX) TXке FT232RL attiny85 - PB3 (pin2 TX) RXке FT232RL attiny85 - GND (пин4) FND232RL боюнча GNDге, анткени attiny85 ардуино менен иштейт, сиз туташтыруунун кажети жок. FT232RLдеги 5v, антпесе туташыңыз: attiny85 VCC (pin8) FT232RLдеги 5Vга

  • tinytuner мисалын attiny85ке жүктөңүз
  • сериялык байланышты көзөмөлдөө үчүн экран программасын ачыңыз: screen /dev /ttyUSB0 9600
  • RESET pin (pin1) менен GND (бир көз ирмем) туташтырган attiny85ти баштапкы абалга келтирүү, саламдашуу билдирүүсү экрандын терезесинде көрсөтүлүшү керек
  • Калибрлөө аяктаганга чейин жалгыз "x" тамгаларын жөнөтүүнү улантыңыз (каретка кайтаруу жок; линия берилбейт)
  • калибрлөөнүн маанисин бир жерге жазыңыз (OSCCAL = 0x). Бул акыркы эскиздерде жарыялооңуз керек болгон баалуулук

10 -кадам: Алыскы баскычтарыңыздын кодун чечиңиз

Эми биздин алыскы баскычтарды чечип, аларды компьютердеги белгилүү бир баскычтарга дайындоо убактысы келди, муну үчүн кийинки кадамдарды аткарыңыз:

  • "ATtiny85 @ 16MHz (ички PLL; 4.3V BOD)" тактасын тандаңыз, эгерде сиз кристалл колдонбосоңуз, "ATtiny85 @ 16 MHz (тышкы кристалл; 4.3 V BOD"), антпесе күйгүзүңүз
  • эскизди жүктөө:
  • Эгерде сиз кристаллды колдонбосоңуз, анда OSCCAL өзгөрмөсүн камтыган катарга комментарий бербеңиз жана аны сааттын калибрлөөсүн жүргүзгөндө тапкан мааниге дайындаңыз.
  • Мен сенсор мурун сүрөттөлгөндөй туташкан деп ойлойм, антпесе туташтырыңыз
  • Мен USB адаптерине FT232RL сериясы туташкан деп ойлойм, антпесе туташтырыңыз
  • RESET пинди (pin1) GNDге туташтырган attiny85ти баштапкы абалга келтирүү (бир көз ирмем)
  • пульттун баскычтарын бир нече жолу басыңыз жана экран терезесин текшериңиз, ар бир жазуу үчүн акыркы номерге аннотация жазышыңыз керек, ар бир баскыч 2 башка номерди чыгарышы мүмкүн

Мисал:

АЛЫНДЫ D44 3396RECEIVED 544 1348

Жөн эле басылган баскычка байланыштуу 3396 жана 1348 -ге аннотация бериңиз, анда сиз бул баскыч менен эмне кылууну чечишиңиз керек. Мисалы, мен бул баскычтын "Добушун жогорулатуу" мультимедиялык ачкыч кодун жөнөтүшүн кааласам, анда ошол коддун идентификаторун табышым керек. Бул үчүн PDFти жүктөп алыңыз:

"Клавиатура/Ариптакта Барагы" бөлүмүнүн 53 -бетине көңүл буруңуз жана алыстан баскычтарыңызды клавиатура коддоруна байлоо үчүн Use ID (Dec) тилкесиндеги сандарды колдонуңуз. Биздин мисалда "Үндү жогорулатуу" үчүн ачкыч коду: 128 экенин көрө алабыз.

UsbKeyboard китепканасынын ичиндеги UsbKeyboard.h файлын биз мурда орноткон v-usb пакетинен түзөтөбүз жана эгерде ал жок болсо, учурдагы аныктамаларга кошобуз:

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);

}

Алыстан башкаруу пультунда бир баскычка бирден өзүңүздүн билдирүүлөрүңүздү түзүшүңүз керек. "Эгерде" шартында, сиз пультту чечүү үчүн тапкан баалуулуктарды results.valueга киргизишиңиз керек жана UsbKeyboard.sendKeyStroke методунун аргументи катары UsbKeyboard.h файлына мурунтан аныкталган ачкыч коддорунун бирин коюшуңуз керек.

"If (lastStroke! = Results.value)" шарты талап кылынат, анткени кээ бир пульт бир эле кодду эки жолу жөнөтөт жана бул экинчи соккунун алдын алат. Мен так билбейм жана бул сиздин пультуңузга программаланган IR протоколуна көз каранды болушу мүмкүн (мен чындыгында IR протоколдорунун адиси эмесмин), бирок менин жеке пульттагы тажрыйбама ылайык, ар бир баскыч 2 башка кодду чыгара алат жана баскычты басып, кармап турганыңызда, ал ошол эле кодду жөнөтөт, бирок баскычты кайра бассаңыз, экинчисин жөнөтөт. Ошентип, коддор альтернативалуу түрдө жөнөтүлгөн окшойт, менимче, бул баскычты канча жолу басканыңызды билүү стандарттык режим.

Макул, биз дээрлик бүттүк, жөн гана акыркы эскизди жүктөп, аны компьютерге туташтырып, анын кандай жүрүп жатканын көрүңүз.

Бул кадам үчүн, эгер сиз arduino менен usbди сериялык адаптерге ажыратып койсоңуз жакшы болот, ошондо гана USBди PC портуна туташтырыңыз (бир нерсе туура эмес болуп калса, сиздин схемаңызды оңдоо оңой болот).

Эгерде баары жакшы иштесе, терминалды ачып, dmesg командасын жөнөткөндө, сиз бул кадамдын биринчи сүрөтүнө окшош нерсени көрүшүңүз керек. Эгерде көйгөйлөр болсо, сизде экинчи сүрөттөгүдөй каталар болушу керек жана сиз схемаңызды жана/же программаңызды мүчүлүштүктөрдү оңдоону башташыңыз керек. Мендеги алгачкы каталардын булагынын бири - бул менин IR кабылдагычым менен иштебей турган USB борбору (башкалары иштеген) … ошондуктан бул акыркы кадам үчүн IR кабылдагычты түздөн -түз сиздин PC портуна туташтыруу жакшы. Акыр -аягы каталарды табуу кыйын болушу мүмкүн, бирок аягында, мен сыяктуу, сиз көп нерсени үйрөнөсүз жана төлөөнүн баасы татыктуу, мен ишендирем.

Мунун баары адамдар, эгер сиз бул көрсөтмөдө кандайдыр бир каталарды байкасаңыз жана жаңы IR USB ресиверден ырахат алсаңыз, мага кабарлаңыз!

Сунушталууда: