Мазмұны:

ATtiny85 IR USB қабылдағышы: 11 қадам (суреттермен)
ATtiny85 IR USB қабылдағышы: 11 қадам (суреттермен)

Бейне: ATtiny85 IR USB қабылдағышы: 11 қадам (суреттермен)

Бейне: ATtiny85 IR USB қабылдағышы: 11 қадам (суреттермен)
Бейне: 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 инфрақызыл сенсорды салыңыз, сонда сіз барасыз.

Сәлеметсіздерме жасаушылар! Бұл Attiny85 микроконтроллерінің көмегімен жұмыс істейтін USB IR қабылдағышты құруға арналған нұсқаулық, мен GNU/Linux ОЖ кейбір IR қашықтан басқару пультіне қолдаудың жетіспеушілігін (кем дегенде толық қолдауды) жою үшін осы жобаны бастадым. Осы нұсқауларды орындап, сіз бірнеше долларға кез келген ИҚ пультімен жұмыс істейтін бағдарламаланатын USB IR қабылдағышты құра аласыз.

Біріншіден, бұл нұсқаулық мен пайдаланатын кітапханаларды құрған адамдардың қажырлы еңбегісіз болмайды:

  • Дэвид А. Меллис өзінің сенімділігі үшін
  • TinyTuner кітапханасына арналған Rowdy Dog бағдарламалық жасақтамасы
  • Rowdy Dog бағдарламалық жасақтамасы жүктеушіге арналған
  • Rancidbacon (https://rancidbacon.com/) v-usb кітапханасының arduino порты үшін (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 кітапханасын қараңыз. -кітапханашы…

Кейде кітапхананың дұрыс иесін табу оңай емес, сондықтан егер мен қателескен болсам, түсініктеме қалдырыңыз, мен мәселені тезірек шешемін.

Бұл нұсқаулық бар, себебі мен қораптан жұмыс жасайтын толық оқулық/нұсқаулық таппадым (ол болуы мүмкін, бірақ мен таба алмадым), сондықтан мен Интернетте қол жетімді барлық ақпаратты жинадым және көптеген сынақтардан кейін қателер Мен өте жақсы жұмыс істейтін USB 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 басқа ОЖ маңызды емес, сондықтан басқаша жұмыс істейтінін білмеймін.
  • басқа IR кітапханалары бар, бірақ мен оларды arduino -мен де жұмыс жасай алмадым. Мен IR кітапханалары туралы шектеулі біліммен бастадым. Мүмкін, мен көптеген мәселелермен айналысатын тәжірибе алғаннан кейін оларды қазір жұмыс жасай аламын. Қалай болғанда да, мен Seejaydee ұсынған кітапхананы таппас бұрын адасып қалдым және мен оны содан бері қолданамын (адамға көп рахмет!).
  • Басқа аппараттық конфигурациялар бар, бірақ мен тек 5 -ті attiny85 -ке қуат беру үшін қолдандым және деректер желілерінің кернеуін қысу үшін 3,6В 0,5 Вт -тық екі зенодты қолдандым, ол қораптан жұмыс істейді, сондықтан мен араласпадым. басқа конфигурациялар.
  • Сіз 16 МГц кристалды қолдана аласыз немесе tinytuner кітапханасын пайдаланып attiny85 ішкі сағатын калибрлей аласыз. Мен кристалды қолдануға кеңес беремін, ол әлдеқайда тұрақты және, мүмкін, сізді көп бас ауруларынан құтқарады.
  • Мен мұнда attiny85 үшін екі түрлі жүктеушіні қолданамын:

а) Rowdy Dog бағдарламалық жасақтамасының нұсқасы, ол өте керемет сериялық интерфейсті біріктірді, сондықтан сіздің бағдарламаңызға және басқа кітапханаларға көбірек орын бар. Мәселе мынада, кейбір себептермен ол жақсы жұмыс істесе де, біраз уақыттан кейін usb құрылғысы ажыратылды (сіз мәселелерді dmesg пәрменімен таба аласыз). Мен білмеймін, бұл ядро мәселесі ме, әлде таңдалған кітапхананың аралас комбинациясы ма, мен біраз уақыттан кейін бұл ядроны қашықтағы кілттерді декодтау және сағатты калибрлеу үшін қолдануға шешім қабылдадым (16 МГц қолданбаған кезде) кристалл). Осыдан кейін мен тек Mellis жүктеушісін жазамын және сериялық интерфейсті пайдаланбайтын нақты эскизді жүктеймін.

б) Mellis нұсқасы, тұрақты жүктеуші, мен мұны көптеген жобаларда қолдандым. Егер бұл сериялық интерфейс болса, мен әрқашан жүктеушіні қолданар едім. Мен бұл ядроды қашықтан басқару пультіндегі барлық кілттерді декодтағаннан кейін соңғы эскизде қолданамын.

2 -қадам: Жабдықтан бастайық

Аппараттық құралдан бастайық
Аппараттық құралдан бастайық
Аппараттық құралдан бастайық
Аппараттық құралдан бастайық
Аппараттық құралдан бастайық
Аппараттық құралдан бастайық

Сізге қажет құралдар:

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

Материалдар тізімі:

  • 85
  • 2 68R резисторы
  • 1 1.5K резистор
  • 1 4.7K резистор
  • 1 16 МГц кристалл
  • 1 22pF конденсатор
  • 1 0.1uF конденсатор
  • 1 10uF конденсатор
  • 2 3.6В 0.5Вт зенерлік диодтар
  • 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) arduino ішіндегі pin11 (MOSI)
  • attiny85 PB1 (pin6) arduino ішіндегі pin12 (MISO)
  • attiny85 PB2 (pin7) arduino -да pin13 -ке (SCK)
  • attiny85 RESET (pin1) ардуинодағы pin10 -ға дейін (VCC -ден 4.6к)
  • arduino -да 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 -ге 5В қосудың қажеті жоқ, әйтпесе қосылыңыз: attiny85 VCC (pin8) FT232RL 5V -ге

usb сериялық адаптерге (FT232RL) тек сағат калибрлеуі үшін (тек «ATtiny85 @ 8MHz жүктеуші үшін (ішкі осциллятор; BOD өшірілген)»))

  • FT232RL attiny85 ішіндегі PB4 (pin3 RX) TX дейін
  • PB3 (pin2 TX) FX232RL attiny85 ішіндегі RX -ке
  • GND (pin4) FND232RL бойынша GND дейін
  • attiny85 arduino арқылы жұмыс істейтіндіктен, FT232RL -ге 5В қосудың қажеті жоқ, әйтпесе қосылыңыз: attiny85 VCC (pin8) FT232RL 5V -ге

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

Attiny85 VCC сүзгісі оларды 0,1uF және 10uF конденсаторлары бар, оларды GND -ге параллель қосады

IR сенсорының шығыс істікшесін attiny85 PB1 (pin6) ұясына қосыңыз, оны қосыңыз.

USB интерфейсін жасаңыз және қосыңыз:

  • GND (қара сым): оны жалпы GND -ге қосыңыз (барлық негіздер бір -біріне қосылған)
  • Attiny85 PB0 (pin5) -ке 68R резисторы арқылы қосылған D- (ақ сым), оны 3.6В 0,5 Вт ток күші бар ток арқылы жерге жалғап, оны 1.5К резистормен ВКС-қа дейін тартыңыз.
  • 68+ резистор арқылы PB2 -ге қосылған D+ (жасыл сым), оны жерге 3,6В 0,5В зенер арқылы қосыңыз
  • 5V, сіз оны қосылмай қалдыра аласыз, өйткені бәрі осы кезеңде Arduino -дан қуат алады, әйтпесе оны attiny85 VCC -ге қосыңыз

Зенер диодтары анодтар GND-ге, катодтар D+ және D- деректер желілеріне қосылатын етіп қосылады.

3 -қадам: соңғы дизайн

Соңғы дизайн
Соңғы дизайн
Соңғы дизайн
Соңғы дизайн
Соңғы дизайн
Соңғы дизайн

Соңғы дизайн үшін сіз тесік компоненттері бар перфорд тақтасын қолдана аласыз немесе өз тақтаңызды сызып, smd компоненттерін қолдана аласыз. Тақтаны қалай кесу керектігін білу үшін оны google -ге жіберіңіз, Интернетте керемет оқулықтар бар.

Мен өз тақтамды ойып алдым, мен түпкілікті нәтижелерге өте қуаныштымын (кішкентай, тұрақты және берік тақта). Ия, мен білемін, бұл кесу сорлайды, бірақ мен түнде ешқандай электр құралын қолдана алмадым. жай ғана тақтайшаны қайшымен кесіңіз.

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

Сіздің макетіңізді жасау үшін жоғарыдағы схемаларды қолданыңыз немесе тақтаны кесу үшін менің компьютерлік ізімді қолдана аласыз.

4 -қадам: Бағдарламалық жасақтамамен жұмыс

Бұл жобаның схемасы өте оңай, оның орнына бағдарламалық қамтамасыз ету үлкен күш жұмсауды қажет етеді.

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

Бізге қазір бірнеше кітапхананы орнату және конфигурациялау қажет:

  • arduino кітапханасы үшін v-usb: бұл кітапхана микроконтроллерді компьютерге HID USB пернетақтасы ретінде тануға мүмкіндік береді және біз оны компьютерге пернелер тіркесімін жіберу үшін қолданамыз. Бұл кітапхана attiny85 үйлесімді болу үшін кейбір өзгерістерді қажет етеді
  • tinytuner кітапханасы, егер сіз 16 МГц кристалды қолданбасаңыз. Содан кейін сізге микроконтроллердің ішкі сағатын калибрлеу қажет болады. Бұл кітапхана қораптан тыс жұмыс істейді.
  • IR сенсорымен өзара әрекеттесу үшін Attiny-IR-кітапханасы. Бұл кітапхана қораптан тыс жұмыс істейді.

Бізге 2 жүктеуші қажет:

  • Dog бағдарламалық жасақтамасының нұсқасы, сериялық интерфейсі бар. Бұл жүктеуші attiny85 -пен жұмыс істеу үшін кішігірім түзетулерді қажет етеді, себебі millis () функциясы үшін таймер1ді қолданады және ИҚ кітапханасымен жұмыс істемейді. Біз таймерді таймерге өзгертуіміз керек0.
  • Mellis нұсқасы, біз соңғы кезеңде қолданатын тұрақты жүктеуші. Бұл қораптан тыс жұмыс істейді.

5-қадам: V-usb кітапханасын орнату және конфигурациялау

Кітапхананы https://code.google.com/archive/p/vusb-for-arduin… ішінен жүктеп алыңыз Файлды ашыңыз және қалталар кітапханаларын/UsbKeyboard-ды эскиз кітапханалары қалтасына көшіріңіз.

Енді сізге ATtiny85 үйлесімді болу үшін бірнеше файлды өңдеу қажет (ол arduino -мен жұмыс істеу үшін конфигурацияланған):

A) 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 анықтаңыз // Bootto#USB_CFG_INTERFACE_SUBCLASS 0x01 анықтау // жүктеу

және

#USB_CFG_INTERFACE_PROTOCOL 0 анықтаңыз // USB_CFG_INTERFACE_PROTOCOL 0x01 анықтайтын#пернетақта

Сонымен қатар, келесі анықтамаларда өндіруші мен құрылғы атауын өзгертуге болады:

#USB_CFG_VENDOR_NAME анықтаңыз

#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) - 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#… кіріңіз.

Егер сіз тек бекітілген кітапхананы жүктесеңіз (мен мұның бәрін өзім жасадым) және оны эскиз кітапханасы қалтасынан шығарып алсаңыз, сіз бұл өзгерістерден аулақ бола аласыз:

UsbKeyboard attiny85 үшін конфигурацияланған

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

UsbKeyboard attiny85 үшін конфигурацияланған (Alejandro Leiva нұсқасы)

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

A) Attiny-IR кітапханасы:

оны https://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 бағдарламалық жасақтамасы шағын жүктеуші:

жүктеушіні жүктеңіз

Файлды ашыңыз және эскиз кітабының/аппараттық құралдың ішіндегі кішкентай қалтаны көшіріңіз (егер ол әлі жоқ болса, бұл қалтаны жасаңыз). содан кейін sketchbook/hardware/tiny/avr/қалтасына өтіңіз және:

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

2) platform.txt файлын өңдеңіз және кейбір өзгертулер енгізіңіз:

Compiler.path айнымалы мәніне түсініктеме бермеңіз және оны arduino орнату қалтасының ішіндегі hardware/tools/avr/bin/қалтасына көрсетіңіз:

compiler.path = {PATH_TO_YOUR_ARDUINO_FOLDER}/аппараттық құралдар/avr/bin/

alsocompiler. S.flags = -c -g -assppler-with-cpptocompiler. S.flags = -c -g -x-assembler-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

Бұл өте маңызды, әйтпесе инфрақызыл қабылдағыш әр түйме үшін нөл шығарады. Бұл мәлімдеме timer1 -ді millis () функциясы үшін конфигурациялайды, таймерді IR кітапханасына қол жетімді қалдырады. Соңғы эскиз таймерді 0 өшіреді, сондықтан сізде millis () және delay () функциялары болмайды. Оның орнына қол жетімді delayMicroseconds () функциясы болуы мүмкін.

Бұл жүктеуші минималды, бірақ сериялық нысанды қолдауды қамтиды:

Attiny85 PB2 (pin7) - TX, ал PB0 (pin5) - RX

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

Енді бізде кітапханалар да, жүктеушілер де орнатылған және дұрыс конфигурацияланған, ең қиын жұмыс аяқталды және біз тестілеуді бастай аламыз.

8 -қадам: жүктеушілерді жүктеу және эскиздерді жүктеу

Мен кез -келген мәселені шеше алу үшін Arduino IDE теңшелімдері бойынша нақты шығуды белсендіруге кеңес беремін.

Attiny85 -ке жүктеушіні жазу үшін сізге ISP үлгісін Arduino -ға жүктеу керек, содан кейін Arduino бағдарламашысын провайдер ретінде таңдау керек.

Енді 10uF конденсаторды ардуинодағы қалпына келтіру және жерге қосу түйреуіштерінің арасына салыңыз (бұл жану процесі үшін қажет емес, бірақ эскиздерді attiny85 -ке жүктеу керек).

Енді arduino жүктегіштерді жазуға және эскиздерді жүктеуге дайын. Сіз өзіңіздің аттинияңызға сәйкес келетін дұрыс тақтаны таңдап, оны жағуыңыз керек.

Attiny85 -ке эскиз жүктеу үшін оны arduino IDE -ге жүктеп, «Программист көмегімен жүктеу» түймесін басыңыз.

МАҢЫЗДЫ: эскизді жүктеу кезінде 3 қадам бар, құрастыру, жазу және тексеру. Егер құрастыру мен жазу сәтті жұмыс істесе, бірақ тексеру процесі сәтсіз болса, онда эскиз бәрібір жұмыс істеуі мүмкін.

9 -қадам: Attiny85 ішкі сағатын калибрлеңіз (егер сіз кристалды қолдансаңыз, өткізіп жіберіңіз)

Егер сіз 16 МГц кристалды пайдаланбауды шешсеңіз, сізге attiny85 сағатын калибрлеу қажет, сондықтан бізге сериялық интерфейсі бар жүктеуші қажет болады және біз калибрлеуді дұрыс алу үшін tinytuner кітапханасын қолданамыз.

Келесі қадамдарды орындаңыз

  • құралдар астында Arduino провайдер бағдарламашысы ретінде таңдаңыз
  • «ATtiny85 @ 8MHz (ішкі осциллятор; BOD өшірілген)» тақтасын таңдаңыз
  • Менің ойымша, сізде Интернетке қосылу алдында сипатталғандай дайын ISP қосылымы бар деп ойлаймын, әйтпесе қосылымдарды жасаңыз
  • жүктеуші жүктеу
  • бұл жүктеуші сериялық интерфейс үшін әр түрлі түйреуіштерді конфигурациялады, бұл конфигурацияны тек ағымдағы жүктеуші үшін қолданыңыз

- FT232RL attiny85 -те PB4 (pin3 RX) TX -ке - FT232RL -де PB3 (pin2 TX) RX -ке FT232RL -де GND -ге дейін, өйткені attiny85 -те arduino -мен жұмыс істеу керек, оған қосылудың қажеті жоқ. FT232RL -дегі 5В, әйтпесе қосылыңыз: attiny85 VCC (pin8) FT232RL 5V -ге

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

10 -қадам: Қашықтағы түймелерді декодтау

Енді қашықтағы түймелердің шифрын шешіп, оларды компьютердегі белгілі бір пернелер тіркесіміне тағайындау уақыты келді, ол үшін келесі қадамдарды орындаңыз:

  • «ATtiny85 @ 16MHz (ішкі PLL; 4.3V BOD)» тақтасын таңдаңыз, егер сіз кристалды қолданбасаңыз, «ATtiny85 @ 16 МГц (сыртқы кристалл; 4.3 В BOD»), әйтпесе оны күйдіріңіз
  • эскизді жүктеңіз:
  • Егер сіз кристалды қолданбайтын болсаңыз, OSCCAL айнымалысы бар жолға түсініктеме беріңіз және оны сағаттың калибрлеуі кезінде табылған мәнге тағайындаңыз.
  • Мен сенсор бұрын сипатталғандай қосылған деп ойлаймын, әйтпесе оны қосыңыз
  • Менің ойымша, USB адаптеріне FT232RL сериялық қосылған, әйтпесе оны қосыңыз
  • RESET түйреуішін (pin1) GND -ге қосатын attiny85 қалпына келтіріңіз (бір сәтке)
  • қашықтан басқару пультінің түймелерін қайталап басыңыз және экран терезесін тексеріңіз, әр жазбаның соңғы нөміріне түсініктеме беруіңіз керек, әр түйме 2 түрлі сан шығаруы мүмкін

Мысал:

Қабылдады D44 3396Қабылдады 544 1348

3396 және 1348 нөмірлерін жаңа басылған түйменің көмегімен түсіндіріңіз, содан кейін сіз бұл батырмамен не істеу керектігін шешуіңіз керек. Мысалы, мен бұл түйменің «Дыбыс деңгейін жоғарылату» мультимедиялық кілт кодын жіберуін қалаймын, содан кейін мен осы кодтың идентификаторын табуым керек. Ол үшін PDF файлын жүктеңіз:

«Пернетақта/пернетақта беті» 53 -бетті қараңыз және қашықтағы түймелерді пернетақта кодтарына байланыстыру үшін Use ID (Dec) бағанындағы сандарды пайдаланыңыз. Біздің мысалда біз «Дыбыс деңгейін жоғарылату» кілтінің коды: 128 екенін көре аламыз.

UsbKeyboard.h файлын UsbKeyboard кітапханасының ішіндегі біз бұрын орнатқан 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 файлына бұрыннан анықталған кілт кодтарының бірін қоюыңыз керек.

«Егер (lastStroke! = Results.value)» шарты қажет, себебі кейбір қашықтан басқару пульттері бір кодты екі рет жібереді және бұл екінші соққының алдын алады. Мен толық сенімді емеспін және бұл сіздің қашықтан басқару пультінде бағдарламаланған IR протоколына байланысты болуы мүмкін (мен IR протоколдарының маманы емеспін), бірақ менің қашықтан басқару пультіндегі тәжірибеме сәйкес әр түйме 2 түрлі кодты шығара алады. түймені басып тұрғанда, ол сол кодты жібереді, бірақ түймені қайта бассаңыз, екіншісін жібереді. Сондықтан кодтар балама түрде жіберілетін сияқты, менің ойымша, бұл түймені неше рет басқанды білу стандартты режим.

Жақсы, біз аяқталуға жақынбыз, тек соңғы эскизді жүктеп алыңыз, оны компьютерге қосыңыз және оның қалай жүретінін көріңіз.

Бұл қадам үшін, егер сіз arduino мен usb -ді сериялық адаптерге ажыратып, содан кейін ғана USB -ді компьютердің портына қоссаңыз жақсы болады (егер бірдеңе дұрыс болмаса, сіздің схемаңызды жөндеу оңай болады).

Егер бәрі жақсы жұмыс істесе, терминалды ашып, dmesg пәрменін жібергенде сіз осы қадамдағы бірінші суретке ұқсас нәрсені көресіз. Егер ақаулар болса, сізде екінші суреттегідей қателер болуы керек және сіз тізбекті және/немесе бағдарламалық жасақтаманы жөндеуді бастауыңыз керек. Менде болған алғашқы қателіктердің қайнар көзі IR қабылдағышпен жұмыс жасамайтын USB хабы болды (басқалары жұмыс істеді) … сондықтан бұл соңғы қадамда IR қабылдағышты дербес компьютердің портына қосу керек. Ақыр соңында қателерді табу қиын болуы мүмкін, бірақ соңында, мен сияқты, сіз көп нәрсені үйренетін болар едіңіз және ақы төлеуге тұрарлық, мен сендіремін.

Бұл барлық адамдар, егер сіз осы нұсқаулықта қателерді байқасаңыз және жаңа IR USB қабылдағышынан ләззат алсаңыз, маған хабарлаңыз!

Ұсынылған: