INHOUDSOPGAWE:

ATtiny85 IR USB -ontvanger: 11 stappe (met foto's)
ATtiny85 IR USB -ontvanger: 11 stappe (met foto's)

Video: ATtiny85 IR USB -ontvanger: 11 stappe (met foto's)

Video: ATtiny85 IR USB -ontvanger: 11 stappe (met foto's)
Video: Использование плат Digispark Attiny85 Mini Arduino: Урок 108 2024, Julie
Anonim
ATtiny85 IR USB -ontvanger
ATtiny85 IR USB -ontvanger

WAARSKUWING, HIERDIE INSTRUKTIEBEL HET OBSOLET geword

Die v-usb-biblioteek is ontwerp om te werk met USB 1.1-protokol wat deesdae amper nie bestaan nie. Met die aankoms van USB3 het u meer as 'n hoofpyn om v-usb-toestelle te laat werk. Nadat ek my multimediasentrum verander het, het ek baie stabiliteitskwessies, en hoewel die ontvanger werk, stop hy na 'n rukkie. Ek kon dit nie regkry nie. Ek het ook 'n atmega328p-weergawe gemaak, maar hierdie een het dieselfde probleme. Met behulp van 'n waghond-timer om die bord gereeld te herstel, het dit ook nie gehelp nie, so ek gee op met v-usb.

Maak jouself 'n guns en gaan nie voort met hierdie instruksies nie, tensy dit vir opvoedkundige doeleindes is. Ek beveel aan dat u 'n chip -module ATmega 32U4 koop wat reeds die usb -koppelvlak geïntegreer het en hierdie gids volg:

www.sparkfun.com/tutorials/337

Gooi dan 'n IR -sensor TSOP31238 in, dan is u klaar.

Hallo makers! Dit is 'n instruksie om 'n werkende USB IR -ontvanger te bou met behulp van 'n Attiny85 -mikrokontroleerder. As u hierdie instruksies volg, kan u 'n programmeerbare USB IR -ontvanger bou wat vir 'n paar dollar met enige IR -afstandsbediening werk.

In die eerste plek sou hierdie instruksies nie bestaan sonder die harde werk van die mense wat die biblioteke wat ek hier gebruik, geskep het nie:

  • David A. Mellis vir sy fyn kern
  • Rowdy Dog-sagteware vir hul biblioteek TinyTuner
  • Rowdy Dog-sagteware vir hul klein selflaaiprogram
  • Rancidbacon (https://rancidbacon.com/) vir sy arduino-poort van die v-usb-biblioteek (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • seejaydee vir sy IR-biblioteek vir klein kerne wat gevind word in die kommentaar van die instruksionele https://www.instructables.com/id/Attiny-IR-librar… -kode op https://www.instructables.com/id/Attiny-IR -biblioteek …

Dit is soms nie maklik om die regte eienaar van 'n biblioteek te vind nie, so as ek 'n fout gemaak het, laat 'n opmerking, dan los ek die probleem so gou moontlik op.

Hierdie gids bestaan omdat ek nie 'n volledige handleiding/gids gevind het nie (dit kan bestaan, maar ek kon dit nie vind nie), en ek het al die inligting op die internet versamel en na 'n goeie hoeveelheid proewe foute Ek het 'n volledige gids gekry om 'n werkende USB IR -ontvanger te bou wat eintlik redelik goed werk.

Die belangrikste inligtingsbronne wat ek gevolg het:

  • 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…

Stap 1: 'n Paar oorwegings

  • Ek besit nie 'n AVR ISP -programmeerder nie en ek wil nie regtig een koop nie, so ek het 'n Arduino gebruik om die attiny85 te programmeer
  • Ek gee nie om vir enige ander bedryfstelsel as GNU/Linux nie, so ek weet nie of dit anders gaan werk nie.
  • daar is ander IR -biblioteke, maar ek kon dit nie eers met 'n arduino laat werk nie. Dink egter daaraan dat ek begin het met 'n beperkte kennis oor IR -biblioteke. Miskien kan ek hulle nou laat werk nadat die ervaring opgedoen is om 'n groot aantal probleme te hanteer. Ek was in elk geval verdwaal en desperaat voordat ek die biblioteek gevind het wat Seejaydee verskaf het, en ek het dit sedertdien gebruik (baie dankie man!).
  • Daar is ander hardeware -konfigurasies, maar ek het slegs die een wat 5V gebruik, gebruik om die attiny85 en twee zenerdiodes van 3.6V 0.5W aan te dryf om die spanning van die data lyne te versterk; dit werk uit die boks, sodat ek nie daarmee gemors het nie ander konfigurasies.
  • U kan 'n kristal van 16 Mhz gebruik of die tinytuner -biblioteek gebruik om die interne klok van u attiny85 te kalibreer. Ek raai u ten sterkste aan om die kristal te gebruik, dit is baie stabieler en sal u waarskynlik baie hoofpyn bespaar.
  • Ek gebruik hier twee verskillende selflaaiprogramme vir die attiny85:

a) Rowdy Dog Software -weergawe, dit bevat 'n seriële koppelvlak wat baie cool en baie klein is, sodat u meer ruimte vir u program en ander biblioteke het. Die probleem is dat alhoewel dit redelik goed werk, die usb -toestel na 'n geruime tyd ontkoppel is (u kan probleme ondervind met die opdrag dmesg). Ek weet nie of dit 'n probleem is met die kern of 'n gemengde kombinasie van die kern plus die gekose biblioteke nie, en na 'n rukkie het ek besluit om hierdie kern te gebruik net om die sleutels van die afstandsbediening te dekodeer en die klok te kalibreer (as ek nie 'n 16Mhz gebruik nie kristal). Daarna brand ek net die Mellis selflaaiprogram en laai ek die definitiewe skets op wat nie die seriële koppelvlak gebruik nie.

b) Mellis -weergawe, stabiele selflaaiprogram, ek het dit in baie projekte gebruik. Ek sou hierdie selflaaiprogram altyd gebruik het as dit 'n seriële koppelvlak bevat. Ek gebruik hierdie kern in die finale skets nadat ek al die sleutels op my afstandsbedienings gedekodeer het.

Stap 2: Kom ons begin met die hardeware

Kom ons begin met die hardeware
Kom ons begin met die hardeware
Kom ons begin met die hardeware
Kom ons begin met die hardeware
Kom ons begin met die hardeware
Kom ons begin met die hardeware

Gereedskap wat u benodig:

  • 'n Arduino -versoenbare bord
  • 'n reeks na usb -adapter om u afgeleë sleutels te dekodeer (gebruik net 'n FT232RL)
  • 'n PC met GNU/Linux geïnstalleer en die arduino IDE korrek gekonfigureer, gebruik ek arduino IDE 1.8.0
  • 'n IR -afstandsbediening om u toestel te toets (selfs 'n slegte een soos dié wat in arduino -voorstelle voorkom) sal werk
  • 'n multimeter om u bord te ontfout (ek hoop dat u dit nie nodig het nie, baie geluk!)

Die lys van materiale:

  • 1 attiny85
  • 2 68R weerstande
  • 1 1.5K weerstand
  • 1 4.7K weerstand
  • 1 16 Mhz kristal
  • 1 22pF kapasitor
  • 1 0.1uF kapasitor
  • 1 10uF kapasitor
  • 2 3.6V 0.5W zenerdiodes
  • 1 USB -tipe A -aansluiting
  • 1 strookpen met 6 penne om die bord te programmeer en te ontfout.
  • 1 IR -sensor TSOP31238
  • baie koffie om jou wakker te hou

Voordat u die definitiewe bord soldeer, wil u waarskynlik 'n broodbordprototipe maak vir toetsdoeleindes.

Om die attiny85 aan die rekenaar te koppel, gebruik die finale ontwerp 'n USB -tipe A -aansluiting wat aan die bord gesoldeer is, maar vir die prototipe moet u 'n USB -kabel maak wat u aan 'n broodbord kan koppel:

Soldeer in 'n klein stuk perfboard 4 penne, sny dan 'n ou USB -kabel en soldeer die penne aan 4 van die drade in die usb -kabel:

  • rooi is VCC (5V)
  • swart is GND
  • wit is D-
  • groen is D+

Hou alles saam met warm gom.

Nou moet ons die ISP -programmeerder (Arduino), die USB na die seriële adapter (FT232RL) en die IR -sensor aan die attiny85 koppel.

U kan alles aan mekaar verbind, sodat u verskillende selflaaiprogramme kan verbrand, sketse kan laai en die seriële poort kan sien sonder om drade te verander, Om dit te doen, verbind alles volgens die volgende instruksies:

ISP -programmeerder (Arduino): hiermee kan ons selflaaiprogramme verbrand en sketse laai

  • attiny85 PB0 (pin5) tot pin11 (MOSI) in arduino
  • attiny85 PB1 (pin6) tot pin12 (MISO) in arduino
  • attiny85 PB2 (pin7) tot pin13 (SCK) in arduino
  • attiny85 RESET (pin1) met pullup (4.6k tot VCC) na pin10 in arduino
  • attiny85 VCC tot 5V in arduino
  • attiny85 GND tot GND in arduino

usb to serial adapter (FT232RL): dit stel ons in staat om die seriële poort na te gaan

  • attiny85 PB0 (pin5 RX) na TX in die FT232RL
  • attiny85 PB2 (pin7 TX) na RX in die FT232RL
  • attiny85 GND (pin4) na GND op die FT232RL
  • Aangesien die attiny85 reeds deur die arduino aangedryf word, hoef u nie die 5v op die FT232RL aan te sluit nie, anders sluit u aan: attiny85 VCC (pin8) aan 5V op die FT232RL

usb na seriële adapter (FT232RL) slegs vir die klokkalibrasie (net vir die selflaaiprogram "ATtiny85 @ 8MHz (interne ossillator; BOD gedeaktiveer)")

  • PB4 (pin3 RX) na TX in die FT232RL attiny85
  • PB3 (pin2 TX) na RX in die FT232RL attiny85
  • GND (pin4) na GND op die FT232RL
  • Aangesien die attiny85 reeds deur die arduino aangedryf word, hoef u nie die 5v op die FT232RL aan te sluit nie, anders sluit u aan: attiny85 VCC (pin8) aan 5V op die FT232RL

As u 'n 16Mhz -kristal gebruik, koppel dit aan die Attiny85 -penne PB3 (pen2) en PB4 (pin3) en koppel elke pen ook aan die GND deur 'n kap van 22pF elk.

Filter Attiny85 VCC met 'n 0.1uF en 10uF kapasitors wat hulle parallel met GND verbind

Koppel die IR -sensor se uitvoerpen aan die attiny85 PB1 (pin6), skakel dit aan.

Bou en koppel die usb -koppelvlak:

  • GND (swart draad): verbind dit met die algemene GND (alle gronde is verbind)
  • D- (wit draad) gekoppel aan attiny85 PB0 (pin5) deur middel van 'n weerstand van 68R, koppel dit ook aan die grond deur 'n 3,6V 0.5W zener en trek dit met 'n 1.5K weerstand na VCC
  • D+ (groen draad) gekoppel aan PB2 deur middel van 'n weerstand van 68R, verbind dit met die aarde via 'n 3,6V 0,5W zener
  • 5V, kan u dit sonder verbinding laat, aangesien alles op hierdie stadium deur die Arduino aangedryf word, anders kan u dit aansluit op die attiny85 VCC

Die zener-diodes is verbind sodat die anodes aan GND gekoppel is en die katodes aan die datalyne D+ en D-.

Stap 3: Finale ontwerp

Finale ontwerp
Finale ontwerp
Finale ontwerp
Finale ontwerp
Finale ontwerp
Finale ontwerp

Vir die finale ontwerp kan u perfboard met onderdele gebruik, of u eie bord ets en smd -komponente gebruik. Om te leer hoe om 'n bord te ets, google dit net; daar is wonderlike tutoriale aanlyn beskikbaar.

Ek het my eie bord geëts en ek is baie tevrede met die finale uitslae (klein, stabiele en robuuste bord). Ja, ek weet dat die snit suig, maar ek kon so laat in die nag geen elektriese gereedskap gebruik nie en ek sny net die bord met my blikskêr.

Terloops, die spore op die beelde is nie koper nie, dit is behandel met 'n nare chemikalie wat die koper effens blik (dit word vermoed dat dit kanker veroorsaak, dus gebruik dit baie versigtig, latexbolle en 'n stofmasker):

Gebruik die skemas hierbo om u uitleg te ontwerp, of u kan my PCB -voetafdruk gebruik om u bord te ets.

Stap 4: Die hantering van die sagteware

Die kring in hierdie projek is baie maklik; die sagteware verg eerder 'n groter inspanning.

Ons benodig ten minste 2 biblioteke (nog een as u nie 'n kristal gebruik nie) plus 2 selflaaiprogramme om dit te laat werk. Toe ek met hierdie projek begin, het ek 'n paar biblioteke getoets, soms het hulle nie gewerk nie, en baie keer was hulle net nie ingestel om met 'n Attiny85 uit die boks te werk nie (ek het dit nog nie geweet nie). Toe vind ek probleme met die onderbrekings van biblioteke / selflaaiprogramme. Uiteindelik moes ek 'n hele paar foute hanteer toe ek die finale kring aan my rekenaar koppel. Ek het egter nie hierdie gids gehad nie, so ek dink dit sal goed gaan, volg die stappe in hierdie instruksies; as u dit doen sonder om foute te maak, moet u goed wees:)

Ons moet nou 'n paar biblioteke installeer en instel:

  • v-usb vir arduino-biblioteek: met hierdie biblioteek kan die mikrobeheerder deur die rekenaar herken word as 'n HID USB-sleutelbord, en ons sal dit gebruik om sleutelslae na die rekenaar te stuur. Hierdie biblioteek benodig 'n paar veranderinge om versoenbaar te wees met die attiny85
  • tinytuner -biblioteek slegs as u nie 'n 16Mhz -kristal gebruik nie. U sal dan die interne klok van die mikrobeheerder moet kalibreer. Hierdie biblioteek werk uit die boks.
  • Attiny-IR-biblioteek om met die IR-sensor te kommunikeer. Hierdie biblioteek werk uit die boks.

Ons benodig ook twee selflaaiprogramme:

  • Dog Software weergawe, met die seriële koppelvlak beskikbaar. Hierdie bootloader benodig 'n klein aanpassing om met die attiny85 te werk, aangesien dit die timer1 vir die millis () -funksie gebruik en nie met die IR -biblioteek werk nie. Ons moet die timer verander na timer0.
  • Mellis -weergawe, stabiele selflaaiprogram wat ons in die laaste fase sal gebruik. Dit werk uit die boks.

Stap 5: Installasie en konfigurasie van die V-usb-biblioteek

Laai die biblioteek af vanaf https://code.google.com/archive/p/vusb-for-arduin… Pak die lêer uit en kopieer die vouerbiblioteke/UsbKeyboard in u gids met sketsboekbiblioteke.

Nou moet u 'n paar lêers wysig om versoenbaar te wees met die ATtiny85 (dit is ingestel om met arduino te werk):

A) wysig usbconfig.h:

onder "Hardware Config" verander:

#defineer USB_CFG_IOPORTNAME Dto ## definieer USB_CFG_IOPORTNAME B

en

#definieer USB_CFG_DMINUS_BIT 4om#USB_CFG_DMINUS_BIT 0 te definieer

onder "Opsionele hardeware -konfigurasie" verander:

#defineer USB_CFG_PULLUP_IOPORTNAME Dto ## definieer USB_CFG_PULLUP_IOPORTNAME B

Verander ook:

#defineer USB_CFG_INTERFACE_SUBCLASS 0 // Bootto#definieer USB_CFG_INTERFACE_SUBCLASS 0x01 // Boot

en

#definieer USB_CFG_INTERFACE_PROTOCOL 0 // Sleutelbord om#USB_CFG_INTERFACE_PROTOCOL 0x01 // sleutelbord te definieer

U kan ook die vervaardiger en toestelnaam in die volgende definisies verander:

#definieer USB_CFG_VENDOR_NAME

#definieer USB_CFG_DEVICE_NAME

B) wysig UsbKeyboard.h:

verander:

PORTD = 0; // TODO: Slegs vir USB -penne? DDRD | = ~ USBMASK;

aan

PORTB = 0; // TODO: Slegs vir USB -penne? DDRB | = ~ USBMASK;

Om sleutelkodes verder as 101 te laat verander, moet u ook:

0x25, 0x65, // LOGICAL_MAXIMUM (101) tot: 0x25, 0xE7, // LOGICAL_MAXIMUM (231)

en

0x29, 0x65, // USAGE_MAXIMUM (Keyboard Application) tot: 0x29, 0xE7, // USAGE_MAXIMUM (Keyboard Application)

Miskien moet u ook hierdie drie lêers wysig:

usbdrv.husbdrv.cUsbKeyboard.h

en elke keer as u PROGMEM sien, voeg 'const' by voor die naam van die veranderlike (byvoorbeeld: PROGMEN char usbHidReportDescriptor [35] ==> PROGMEM const char usbHidReportDescriptor [35])

As dit nie duidelik is nie, besoek

U kan al hierdie veranderinge vermy as u net die aangehegte biblioteek aflaai (ek het al hierdie veranderinge self aangebring) en dit net uit u gids met die sketsboekbiblioteke haal:

UsbKeyboard opgestel vir attiny85

Edit: onlangs het ek agtergekom dat Alejandro Leiva (https://github.com/gloob) vir hierdie biblioteek gesorg is en blykbaar ook goed werk. U kan ook sy weergawe probeer met die nodige veranderinge wat ek aangebring het om dit met die attiny te laat werk, so as u dit wil ondersoek, haal dit dan uit u gids met die sketsboekbiblioteke.

UsbKeyboard opgestel vir attiny85 (weergawe Alejandro Leiva)

Stap 6: Installasie van die Attiny-IR- en Tinytuner-biblioteke

A) Attiny-IR biblioteek:

laai dit af van https://drive.google.com/open?id=0B_w9z88wnDtFNHlq… en pak dit dan uit in u gids met sketsboekbiblioteke.

B) Tinytuner -biblioteek:

Dit is slegs nodig as u nie 'n 16Mhz -kristal gebruik nie, maar glo my, alhoewel dit ook sonder die kristal werk, is dit baie meer stabiel en kos dit 'n paar sent, dus hou dit eenvoudig, gebruik 'n kristal en slaan dit oor hierdie biblioteek.

Nog nie oortuig nie? ok, laai die biblioteek af vanaf https://storage.googleapis.com/google-code-archive… en pak dit dan uit in u gids met sketsboekbiblioteke.

Ons is klaar met die biblioteke, en nou gaan ons voort om die selflaaiprogramme te installeer.

Stap 7: Installasie en konfigurasie van die selflaaiprogramme

Ons gaan twee selflaaiprogramme installeer, die Mellis -een is volgens my ervaring meer stabiel en ons sal dit in die finale skets gebruik. Die ander een wat deur Rowdy Dog Software ontwikkel is, is 'n ongelooflike kern, baie klein en met 'n geïntegreerde seriële koppelvlak beskikbaar, maar my afstandsbediening het na 'n geruime tyd daarmee neergestort, sodat ons hierdie selflaaiprogram sal gebruik om die attiny85 interne klok te kalibreer en ons afstandsbediening te ontsyfer knoppies.

Ek weet dat daar beskikbare biblioteke is om die seriële vermoëns van attiny85 te bied, maar dan moet u die biblioteke wat die seriële voorwerp gebruik, aanpas … Ek hou meer van hierdie prosedure.

Kom ons begin met die installasie:

A) Mellis selflaaiprogram:

maak net die Arduino IDE -voorkeure oop en voeg die 'Bykomende bestuurders -URL's by:

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

Maak dan die bestuurder van die Arduino IDE -bord oop en soek na attiny, installeer die planke vanaf Mellis. Nou moet u die Arduino ID die ATtiny25/45/85 en ATtiny24/44/84 borde sien.

B) Klein bootloader van Rowdy Dog Software:

laai die selflaaiprogram af van

Pak die lêer uit en kopieer die klein vouer in u sketsboek/hardeware (skep hierdie gids as dit nog nie bestaan nie). Gaan dan na die gids sketsboek/hardware/tiny/avr/en:

1) kopieer die lêer Prospective Boards.txt in die file boards.txt

2) wysig die lêer platform.txt en maak 'n paar veranderinge:

Los die veranderlike compiler.path op en laat dit wys na die hardeware/tools/avr/bin/in die gids van u arduino -installasie:

compiler.path = {PATH_TO_YOUR_ARDUINO_FOLDER}/hardware/tools/avr/bin/

verander ook samesteller S.flags = -c -g -assembler-met-cpptocompiler. S.flags = -c -g -x assembler-with-cpp

Verander dan die volgende veranderlikes en maak seker dat alles op sy plek is (die lêers moet bestaan, anders wys die veranderlikes na die regte paaie):

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) wysig die lêerkerne/tiny/core_build_options.h en verander:

#definieer TIMER_TO_USE_FOR_MILLIS 1 om#TIMER_TO_USE_FOR_MILLIS 0 te definieer 0

Dit is baie belangrik, anders lewer die IR -ontvanger nulle vir elke knoppie. Hierdie stelling stel die timer0 vir die millis () -funksie in sodat die timer1 beskikbaar is vir die IR -biblioteek. Die finale skets sal die timer0 in elk geval deaktiveer, sodat u geen millis () en delay () funksies beskikbaar het nie. U het moontlik die funksie delayMicroseconds () beskikbaar.

Hierdie selflaaiprogram is minimaal, maar bevat ondersteuning vir seriële voorwerpe:

Attiny85 PB2 (pin7) is TX en PB0 (pin5) is RX

U kan terselfdertyd 'n konfigurasie hê met die ISP -programmeerder (arduino) en die seriële na usb -adapter, sodat u nie te gereeld van draad moet verander nie:

Nou het ons beide die biblioteke en die laaiprogramme geïnstalleer en behoorlik gekonfigureer, die moeilikste werk is voltooi en ons kan begin toets.

Stap 8: Brandlaaiprogrammeer en sketse oplaai

Ek raai u ten sterkste aan om die uitgebreide uitset te aktiveer onder die Arduino IDE -voorkeure, sodat u 'n uiteindelike probleem kan uitvind.

Om 'n selflaaiprogram in die Attiny85 te verbrand, moet u die ISP -voorbeeld na die Arduino oplaai en dan die programmeerder Arduino as ISP kies.

Plaas nou 'n 10uF -kondensator tussen die reset- en grondpenne op die arduino (dit is nie nodig vir die verbrandingsproses nie, maar dit is om sketse na die attiny85 op te laai).

Nou is die arduino gereed om selflaaiprogramme te verbrand en sketse te laai. U hoef net die regte bord te kies wat versoenbaar is met u kleed en dit te verbrand.

Om 'n skets in die Attiny85 te laai, laai dit in die arduino IDE en klik op "Laai op met programmeerder".

BELANGRIK: by die oplaai van die skets is daar drie stappe: samestelling, skryf en verifiëring. As die opstel en skryf wel suksesvol was, maar die verifikasieproses misluk, is die skets in elk geval moontlik.

Stap 9: Kalibreer die Attiny85 interne klok (slaan dit oor as u 'n kristal gebruik)

As u besluit om nie die 16Mhz -kristal te gebruik nie, moet u u attiny85 -klok kalibreer, dus benodig ons 'n selflaaiprogram met 'n seriële koppelvlak en ons sal die tinytuner -biblioteek gebruik om die korrekte kalibrasie te kry.

Volg die volgende stappe

  • kies onder tools die Arduino as ISP -programmeerder
  • kies die bord "ATtiny85 @ 8MHz (interne ossillator; BOD gedeaktiveer)"
  • Ek neem aan dat u die ISP -verbinding gereed het soos beskryf voor verbinding, anders doen u die verbindings
  • verbrand selflaaiprogram
  • hierdie bootloader het verskillende penne vir die seriële koppelvlak gekonfigureer; gebruik hierdie konfigurasie slegs vir die huidige bootloader

- PB4 (pin3 RX) na TX in die FT232RL attiny85 - PB3 (pin2 TX) na RX in die FT232RL attiny85 - GND (pin4) na GND op die FT232RL, aangesien die attiny85 reeds deur die arduino aangedryf word, hoef u nie aan te sluit nie die 5v op die FT232RL, anders verbind: attiny85 VCC (pin8) met 5V op die FT232RL

  • Laai die tinytuner -voorbeeld op na die attiny85
  • maak die skermprogram oop om die seriële kommunikasie te monitor: screen /dev /ttyUSB0 9600
  • herstel die attiny85 wat die RESET -pen (pin1) met GND verbind (net 'n oomblik), 'n welkome boodskap moet op die skermvenster verskyn
  • Gaan voort met die stuur van enkele 'x'-karakters (geen vervoer-terugkeer, geen reëlvoer) totdat die kalibrasie klaar is
  • maak iewers die waarde van die kalibrasie aan (OSCCAL = 0x). Dit is die waarde wat u op die finale sketse moet verklaar

Stap 10: Dekodeer u afstandknoppies

Dit is nou tyd om ons afstandsbedieningsknoppies te dekodeer en aan spesifieke sleutelhouers in die rekenaar toe te wys, om die volgende stappe te doen:

  • kies die bord "ATtiny85 @ 16MHz (interne PLL; 4.3V BOD)" as u nie 'n kristal gebruik nie, "ATtiny85 @ 16 MHz (eksterne kristal; 4.3 V BOD" anders, verbrand dit dan
  • laai die skets:
  • As u nie 'n kristal gebruik nie, los 'n opmerking uit die ry wat die OSCCAL -veranderlike bevat en ken dit toe aan die waarde wat u gevind het toe u die klok gekalibreer het
  • Ek neem aan dat die sensor gekoppel is soos voorheen beskryf, anders verbind dit
  • Ek neem ook aan dat die FT232RL seriële na usb -adapter gekoppel is, anders kan u dit aansluit
  • herstel die attiny85 wat die RESET -pen (pin1) met GND verbind (net 'n oomblik)
  • druk herhaaldelik op die knoppies van u afstandsbediening en kyk na die skermvenster; u moet die laaste nommer vir elke rekord aanteken; elke knoppie kan 2 verskillende nommers lewer

Voorbeeld:

ONTVANG D44 3396 ONTVANG 544 1348

Gee 'n aantekening op 3396 en 1348 in verband met die knoppie wat u net ingedruk het, dan moet u besluit wat u met die knoppie wil doen. Ek sou byvoorbeeld wou hê dat die knoppie die multimedia -sleutelkode "Volume up" moet stuur, dan moet ek die ID vir die sleutelkode vind. Laai die PDF hiervoor af:

Wees op die uitkyk vir die afdeling "Sleutelbord/sleutelbordbladsy" bladsy 53 en gebruik die nommers in die kolom Gebruiks -ID (Des) om u afstandknoppies aan sleutelbordkodes te bind. In ons voorbeeld kan ons sien dat die sleutelkode vir 'Volume up' 128 is.

Wysig die lêer die lêer UsbKeyboard.h in die UsbKeyboard-biblioteek vanuit die v-usb-pakket wat ons voorheen geïnstalleer het, en voeg by die bestaande definisies as dit nog nie daar is nie:

#definieer KEY_VOL_UP 128

As ons klaar is met al ons remote/s knoppies en al die definisies in die lêer UsbKeyboard.h gereed is, kan ons na die laaste stap gaan.

Stap 11: Laai die finale skets en hoop op die beste

Laai die finale skets en hoop op die beste!
Laai die finale skets en hoop op die beste!
Laai die finale skets en hoop op die beste!
Laai die finale skets en hoop op die beste!

Ons het nou al die afgeleë knoppies gedekodeer, die lêer UsbKeyboard.h is gevul met ons sleutelkodes, sodat ons nou die definitiewe skets van die arduino IDE kan laai uit:

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

Hierdie lêer is die presiese lêer wat ek vir my ontvanger gebruik, en dit werk vir 2 verskillende afstandbeheerders, dus u moet dit duidelik opdateer om met u afstandsbedienings te werk.

As u nie 'n kristal gebruik nie, los 'n opmerking uit die ry wat die OSCCAL -veranderlike bevat en ken dit toe aan die waarde wat u gevind het toe u die klok gekalibreer het

Let op dat daar in die lusfunksie baie stellings soos hierdie is:

if (result.value == 3405 || results.value == 1357) {// pyl na bo

as (lastStroke! = results.value) UsbKeyboard.sendKeyStroke (KEY_ARROW_UP);

}

U moet u eie stellings skep, een per knoppie in u afstandbeheer. In die "as" -voorwaarde moet u die result.value -waarde inskryf wat u gevind het om u afstandsbediening te dekodeer, en as argument van die UsbKeyboard.sendKeyStroke -metode moet u een van die reeds gedefinieerde sleutelkodes in die lêer UsbKeyboard.h plaas.

Die voorwaarde "if (lastStroke! = Results.value)" is nodig omdat sommige afstandsbedienings dieselfde kode twee keer per treffer stuur, en dit keer die tweede treffer. Ek is nie heeltemal seker nie en dit kan afhang van die IR -protokol wat in u afstandsbediening geprogrammeer is (ek is nie regtig 'n deskundige in IR -protokolle nie), maar volgens my ervaring met my eie afstandsbedienings kan elke knoppie 2 verskillende kodes produseer en terwyl u die knoppie ingedruk hou, stuur dit dieselfde kode, maar as u weer op die knoppie druk, stuur dit die ander een. Dit lyk dus asof die kodes op 'n ander manier gestuur word, ek dink dit is 'n standaardmodus om te weet hoeveel keer u regtig op die knoppie druk.

Ok, ons is amper klaar, laai net die finale skets op, koppel dit aan die rekenaar en kyk hoe dit gaan.

Vir hierdie stap is dit beter as u die arduino en die usb na die seriële adapter ontkoppel, en dan eers die USB in u rekenaarpoort aansluit (as daar iets verkeerd loop, is dit makliker om die stroombaan te ontfout).

As alles goed werk, moet u iets soortgelyk aan die eerste prent op hierdie stap sien as u 'n terminale oopmaak en die dmesg -opdrag stuur. As daar probleme is, moet u foute hê soos in die tweede prent, en u moet u kring en/of die sagteware ontfout. Een van die oorsprong van die eerste foute wat ek gehad het, was 'n USB -hub wat nie met my IR -ontvanger sou werk nie (ander werk wel) … daarom is dit beter om hierdie IR -ontvanger direk aan u PC -poort te koppel. Uiteindelik kan dit moeilik wees om foute op te spoor, maar ek sal u, soos ek, baie leer en die prys wat u moet betaal, is ek die moeite werd.

Dit is alles mense, laat weet my as u foute in hierdie instruksies opmerk en u splinternuwe IR USB -ontvanger geniet!

Aanbeveel: