Indholdsfortegnelse:

ATtiny85 IR USB -modtager: 11 trin (med billeder)
ATtiny85 IR USB -modtager: 11 trin (med billeder)

Video: ATtiny85 IR USB -modtager: 11 trin (med billeder)

Video: ATtiny85 IR USB -modtager: 11 trin (med billeder)
Video: Fix USB Device Not Recognized in Windows 11 / 10 | How To Solve usb device not recognized {5 Ways} 2024, November
Anonim
ATtiny85 IR USB -modtager
ATtiny85 IR USB -modtager

ADVARSEL, DENNE INSTRUKTABLE ER BLEV OBSOLETE

V-usb-biblioteket er designet til at fungere med USB 1.1-protokol, der næsten ikke findes i dag. Med ankomsten af USB3 har du mere end en hovedpine, der prøver at få v-usb-enheder til at fungere. Efter at have ændret mit multimediecenter har jeg mange stabilitetsproblemer, og selvom modtageren fungerer, holder den efter et stykke tid op med at fungere. Jeg har mislykket forsøget på at rette det. Jeg lavede også en atmega328p-version, men denne havde de samme problemer. Brug af en vagthundstimer til at nulstille kortet regelmæssigt hjalp heller ikke, så jeg opgav v-usb.

Gør dig selv en tjeneste, og gå ikke i gang med dette instruerbare, medmindre det er til uddannelsesmæssige formål. Jeg anbefaler i stedet at købe et chipmodul ATmega 32U4, som allerede har integreret usb -grænsefladen og følg denne vejledning:

www.sparkfun.com/tutorials/337

Så smid en IR -sensor TSOP31238 i, og du er klar til at gå.

Hej beslutningstagere! Dette er en instruktion til at bygge en fungerende USB IR -modtager ved hjælp af en Attiny85 mikrokontroller. Jeg startede dette projekt for at overvinde manglen på support (i det mindste komplet support) til nogle IR -fjernbetjeninger i GNU/Linux OS. Efter denne vejledning kan du bygge en programmerbar USB IR -modtager, der fungerer med enhver IR -fjernbetjening for et par kroner.

Først og fremmest ville denne instruerbare ikke eksistere uden det hårde arbejde fra de mennesker, der skabte de biblioteker, jeg bruger her:

  • David A. Mellis for sin fineste kerne
  • Rowdy Dog Software til deres bibliotek TinyTuner
  • Rowdy Dog Software til deres lille bootloader
  • Rancidbacon (https://rancidbacon.com/) til sin arduino-port i v-usb-biblioteket (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • seejaydee for sit IR-bibliotek for små kerner fundet på kommentarerne fra den instruerbare https://www.instructables.com/id/Attiny-IR-librar… -kode på https://www.instructables.com/id/Attiny-IR -bibliotek …

Nogle gange er det ikke let at finde den rigtige ejer af et bibliotek, så hvis jeg begik en fejl, skal du efterlade en kommentar, og jeg ville løse problemet ASAP.

Denne vejledning findes, fordi jeg ikke fandt en komplet vejledning/vejledning, der arbejdede ud af boksen (den kan findes, men jeg kunne ikke finde den), så jeg samlede alle de tilgængelige oplysninger på nettet og efter en god mængde forsøg og fejl Jeg kom med en komplet guide til at bygge en fungerende USB IR -modtager, der faktisk fungerer ret godt.

De vigtigste informationskilder, som jeg har fulgt:

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

Trin 1: Nogle overvejelser

  • Jeg ejer ikke en AVR ISP -programmør, og jeg har ikke rigtig lyst til at købe en, så jeg har brugt en Arduino til at programmere attiny85
  • Jeg er ligeglad med noget andet operativsystem end GNU/Linux, så jeg ved ikke, om dette ellers vil fungere.
  • der er andre IR -biblioteker, men jeg kunne ikke få dem til at fungere, ikke engang med en arduino. Overvej dog, at jeg startede med en begrænset viden om IR -biblioteker. Måske kunne jeg få dem til at fungere nu efter den opnåede erfaring med at behandle en hel del spørgsmål. Anyway, jeg var fortabt og desperat, før jeg fandt biblioteket, som Seejaydee leverede, og jeg har brugt det lige siden (mange tak mand!).
  • Der er andre hardwarekonfigurationer, men jeg har kun brugt den, der bruger 5V til at drive attiny85 og to 3.6V 0.5W zener -dioder til at spænde spændingen på datalinjerne, det fungerer ud af boksen, så jeg ikke rodede med andre konfigurationer.
  • Du kan bruge en 16Mhz krystal, eller du kan bruge tinytuner -biblioteket til at kalibrere det interne ur på din attiny85. Jeg anbefaler kraftigt brugen af krystallen, den er meget mere stabil og vil sandsynligvis spare dig for en masse hovedpine.
  • Jeg bruger her to forskellige bootloadere til attiny85:

a) Rowdy Dog Software -version, den har integreret en seriel grænseflade, der er meget cool og er meget lille, så du har mere plads til dit program og andre biblioteker. Problemet er, at af nogle grunde, selvom det fungerer ret godt, blev usb -enheden efter et stykke tid afbrudt (du kan finde problemerne med kommandoen dmesg). Jeg ved ikke, om dette er et problem med kernen eller en blandet kombination af kernen plus de valgte biblioteker, så efter et stykke tid besluttede jeg mig for at bruge denne kerne bare til at afkode fjernbetjeningerne og kalibrere uret (når jeg ikke bruger en 16Mhz krystal). Derefter brænder jeg bare Mellis bootloader og uploader den endelige skitse, der ikke bruger den serielle grænseflade.

b) Mellis version, stabil bootloader, jeg har brugt dette i mange projekter. Jeg ville altid have brugt denne bootloader, hvis den havde inkluderet en seriel grænseflade. Jeg bruger denne kerne i den sidste skitse efter at have afkodet alle tasterne på mine fjernbetjeninger.

Trin 2: Lad os starte med hardwaren

Lad os starte med hardware
Lad os starte med hardware
Lad os starte med hardware
Lad os starte med hardware
Lad os starte med hardware
Lad os starte med hardware

Værktøjer du har brug for:

  • et arduino -kompatibelt bord
  • en seriel til usb -adapter til at afkode dine fjernnøgler (brug bare en FT232RL)
  • en pc med GNU/Linux installeret og arduino IDE korrekt konfigureret, bruger jeg arduino IDE 1.8.0
  • en IR -fjernbetjening til at teste din enhed (selv en elendig en som dem, der findes i arduino -startsæt, virker)
  • et multimeter til at debugge dit bord (jeg håber, du ikke får brug for det, held og lykke!)

Materialelisten:

  • 1 attiny85
  • 2 68R modstande
  • 1 1,5K modstand
  • 1 4,7K modstand
  • 1 16Mhz krystal
  • 1 22pF kondensator
  • 1 0.1uF kondensator
  • 1 10uF kondensator
  • 2 3,6V 0,5W zenerdioder
  • 1 USB type A hanstik
  • 1 stripstift med 6 ben til at programmere og fejlsøge kortet.
  • 1 IR -sensor TSOP31238
  • en masse kaffe for at holde dig vågen

Inden du lodder det endelige bræt, vil du sandsynligvis gerne lave en breadboard -prototype til testformål, efter at skemaet, der er knyttet til denne instruerbare, burde være nok til at bygge det op.

For at slutte attiny85 til pc'en bruger det endelige design et USB type A -stik, der er loddet ind i brættet, men til prototypen skal du lave et USB -kabel, som du kan slutte til et brødbræt:

Loddet i et lille stykke perfboard 4 ben, skær derefter et gammelt USB -kabel og lod stifterne til 4 af ledningerne inde i usb -kablet:

  • rød er VCC (5V)
  • sort er GND
  • hvid er D-
  • grøn er D+

Opbevar alt sammen med varm lim.

Nu skal vi slutte ISP -programmøren (Arduino), USB til seriel adapter (FT232RL) og IR -sensoren til attiny85.

Du kan lade alt være forbundet, så du ville kunne brænde forskellige bootloadere, indlæse skitser og tjekke den serielle port uden at skifte ledninger, For at gøre det skal du tilslutte alt ved at følge disse instruktioner:

ISP -programmør (Arduino): dette giver os mulighed for at brænde bootloadere og indlæse skitser

  • attiny85 PB0 (pin5) til pin11 (MOSI) i arduino
  • attiny85 PB1 (pin6) til pin12 (MISO) i arduino
  • attiny85 PB2 (pin7) til pin13 (SCK) i arduino
  • attiny85 RESET (pin1) med pullup (4.6k til VCC) til pin10 i arduino
  • attiny85 VCC til 5V i arduino
  • attiny85 GND til GND i arduino

usb til seriel adapter (FT232RL): dette giver os mulighed for at kontrollere den serielle port

  • attiny85 PB0 (pin5 RX) til TX i FT232RL
  • attiny85 PB2 (pin7 TX) til RX i FT232RL
  • attiny85 GND (pin4) til GND på FT232RL
  • da attiny85 allerede er drevet af arduino, behøver du ikke tilslutte 5v på FT232RL, ellers tilslut: attiny85 VCC (pin8) til 5V på FT232RL

usb til seriel adapter (FT232RL) kun til urkalibrering (kun til bootloaderen "ATtiny85 @ 8MHz (intern oscillator; BOD deaktiveret)")

  • PB4 (pin3 RX) til TX i FT232RL attiny85
  • PB3 (pin2 TX) til RX i FT232RL attiny85
  • GND (pin4) til GND på FT232RL
  • da attiny85 allerede er drevet af arduino, behøver du ikke tilslutte 5v på FT232RL, ellers tilslut: attiny85 VCC (pin8) til 5V på FT232RL

Hvis du bruger en 16Mhz krystal, skal du slutte den til Attiny85 pins PB3 (pin2) og PB4 (pin3) og tilslut hver pin også til GND gennem en 22pF cap hver.

Filtrer Attiny85 VCC med en 0.1uF og 10uF kondensatorer, der forbinder dem parallelt med GND

Tilslut IR -sensorens udgangsstift til attiny85 PB1 (pin6), tænd den.

Byg og tilslut usb -grænsefladen:

  • GND (sort ledning): Slut den til den fælles GND (alle grunde er forbundet sammen)
  • D- (hvid ledning) forbundet til attiny85 PB0 (pin5) gennem en 68R-modstand, tilslut den også til jord gennem en 3,6V 0,5W zener og træk den op til VCC med en 1,5K modstand
  • D+ (grøn ledning) forbundet til PB2 via en 68R -modstand, tilslut den til jorden gennem en 3,6V 0,5W zener
  • 5V, kan du lade den være tilsluttet, da alt er drevet af Arduino på dette tidspunkt, ellers tilslut den til attiny85 VCC

Zenerdioderne er forbundet, således at anoderne er bundet til GND, og katoderne er forbundet til datalinjerne D+ og D-.

Trin 3: Endeligt design

Endeligt design
Endeligt design
Endeligt design
Endeligt design
Endeligt design
Endeligt design

Til det endelige design kan du bruge perfboard med gennemgående huller eller etse dit eget bord og bruge smd -komponenter. For at lære at etse et bord, bare google det, der er fantastiske tutorials tilgængelige online.

Jeg har ætset mit eget bræt, og jeg er meget tilfreds med de endelige resultater (lille, stabil og robust plade). Ja, jeg ved, at snittet er sødt, men jeg kunne ikke bruge noget elværktøj så sent på natten, og jeg bare klippe brættet med min blikskæresaks.

Sporene på billederne er i øvrigt ikke bare kobber, de er blevet behandlet med et ubehageligt kemikalie, der let stifter kobberet (det mistænkes at forårsage kræft, så brug det med stor omhu, latexkugler og en støvmaske):

Brug skemaerne ovenfor til at designe dit layout, eller du kan bare bruge mit pcb -fodaftryk til at ætse dit bord.

Trin 4: Håndtering af softwaren

Kredsløbet i dette projekt er meget let, softwaren kræver i stedet en større indsats.

Vi har brug for mindst 2 biblioteker (et mere, hvis du ikke bruger en krystal) plus 2 bootloadere for at få dette til at fungere. Da jeg startede dette projekt, testede jeg nogle biblioteker, nogle gange fungerede de ikke, og mange gange var de bare ikke konfigureret til at arbejde med en Attiny85 uden for boksen (det vidste jeg ikke endnu). Så fandt jeg problemer med bibliotekerne / bootloadere, der overlappede afbrydelser. Endelig var jeg nødt til at håndtere en hel del fejl, da jeg sluttede det sidste kredsløb til min pc. Jeg havde dog ikke denne vejledning, så jeg tror, at du ville have det godt, bare følg trinene i denne instruktive, hvis du gør det uden at lave fejl, skulle du have det godt:)

Vi skal nu installere og konfigurere et par biblioteker:

  • v-usb til arduino-bibliotek: dette bibliotek tillader mikrokontrolleren at blive genkendt af pc'en som et HID USB-tastatur, og vi vil bruge det til at sende tastetryk til pc'en. Dette bibliotek har brug for nogle ændringer for at være kompatibelt med attiny85
  • tinytuner bibliotek kun hvis du ikke vil bruge en 16Mhz krystal. Derefter skal du kalibrere mikrokontrollerens interne ur. Dette bibliotek fungerer ud af boksen.
  • Attiny-IR-bibliotek til interaktion med IR-sensoren. Dette bibliotek fungerer ud af boksen.

Vi har også brug for 2 bootloadere:

  • Dog Software -version med den serielle grænseflade tilgængelig. Denne bootloader har brug for en lille finjustering for at arbejde med attiny85, da den bruger timeren1 til millis () -funktionen og fungerer ikke med IR -biblioteket. Vi skal ændre timeren til timer0.
  • Mellis -version, stabil bootloader, som vi vil bruge i sidste fase. Dette fungerer ud af kassen.

Trin 5: Installation og konfiguration af V-usb-biblioteket

Download biblioteket fra https://code.google.com/archive/p/vusb-for-arduin… Pak filen ud, og kopier mappebibliotekerne/UsbKeyboard til din skitsebogs biblioteksmappe.

Nu skal du redigere et par filer for at være kompatible med ATtiny85 (den er konfigureret til at fungere med arduino):

A) rediger usbconfig.h:

under "Hardware Config" ændring:

#define USB_CFG_IOPORTNAME Dto ## definere USB_CFG_IOPORTNAME B

og

#define USB_CFG_DMINUS_BIT 4til#definere USB_CFG_DMINUS_BIT 0

under "Valgfri hardware -konfiguration" ændring:

#define USB_CFG_PULLUP_IOPORTNAME Dto ## definere USB_CFG_PULLUP_IOPORTNAME B

For at oprette en fuld "boot -kompatibel HID" -specifikation (ellers fungerer ingen multimedietaster):

#define USB_CFG_INTERFACE_SUBCLASS 0 // Bootto#definer USB_CFG_INTERFACE_SUBCLASS 0x01 // Boot

og

#define USB_CFG_INTERFACE_PROTOCOL 0 // Tastaturtil#definere USB_CFG_INTERFACE_PROTOCOL 0x01 // Tastatur

Eventuelt kan du også ændre producent og enhedsnavn i følgende definitioner:

#definer USB_CFG_VENDOR_NAME

#define USB_CFG_DEVICE_NAME

B) rediger UsbKeyboard.h:

lave om:

PORTD = 0; // TODO: Kun til USB -pins? DDRD | = ~ USBMASK;

til

PORTB = 0; // TODO: Kun til USB -pins? DDRB | = ~ USBMASK;

For at tillade nøglekoder yderligere end 101 ændring også:

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

og

0x29, 0x65, // USAGE_MAXIMUM (tastaturprogram) til: 0x29, 0xE7, // USAGE_MAXIMUM (tastaturapplikation)

Du skal muligvis også redigere disse 3 filer:

usbdrv.husbdrv.cUsbKeyboard.h

og hver gang du ser PROGMEM tilføj "const" før variabeltypenavnet (f.eks: PROGMEN char usbHidReportDescriptor [35] ==> PROGMEM const char usbHidReportDescriptor [35])

Hvis dette ikke er klart, besøg

Du kan undgå alle disse ændringer, hvis du bare downloader det vedhæftede bibliotek (jeg har selv foretaget alle disse ændringer) og bare udpakker det i din skitsebiblioteksmappe:

UsbKeyboard konfigureret til attiny85

Edit: for nylig har jeg opdaget, at Alejandro Leiva (https://github.com/gloob) er blevet taget sig af dette bibliotek og ser ud til også at fungere godt. Du kan også prøve hans version med de nødvendige ændringer, som jeg lavede for at få det til at fungere med attiny, så hvis du vil tjekke dette, skal du bare udtrække det inde i din sketchbook biblioteksmappe.

UsbKeyboard konfigureret til attiny85 (Alejandro Leiva version)

Trin 6: Installation af Attiny-IR og Tinytuner Libraries

A) Attiny-IR bibliotek:

download den fra https://drive.google.com/open?id=0B_w9z88wnDtFNHlq…, derefter pakker du den ud i mappen til din skitsebogsbibliotek.

B) Tinytuner bibliotek:

Dette er kun nødvendigt, hvis du ikke bruger en 16Mhz krystal, men tro mig, selvom det også fungerer uden krystallen, er det meget mere stabilt med det, og de koster et par cent, så hold det simpelt, brug en krystal og spring over dette bibliotek.

Ikke overbevist endnu? ok, download biblioteket frahttps://storage.googleapis.com/google-code-archive…, derefter pakker du det ud i mappen til skitsebøger.

Vi er færdige med bibliotekerne, nu går vi videre med at installere bootloadere.

Trin 7: Installation og konfiguration af bootloadere

Vi skal installere to bootloadere, Mellis er ifølge min erfaring mere stabil, og vi vil bruge den i den sidste skitse. Den anden udviklet af Rowdy Dog Software er en fantastisk kerne, meget lille og med en integreret seriel grænseflade tilgængelig, men min fjernbetjening styrtede ned efter noget tid med den, så vi vil bruge denne bootloader bare til at kalibrere det attiny85 interne ur og til at afkode vores fjernbetjening knapper.

Jeg ved, at der er tilgængelige biblioteker til at give attiny85 serielle muligheder, men så bliver du nødt til at finjustere de biblioteker, der bruger det serielle objekt … Jeg kan bedre lide denne procedure.

Lad os starte med installationen:

A) Mellis bootloader:

bare åbn Arduino IDE -præferencer og tilføj Yderligere Boards Manager -webadresser:

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

Åbn derefter Arduino IDE boards manager og søg efter attiny, installer boards fra Mellis. Nu skal du se Arduino ID ATtiny25/45/85 og ATtiny24/44/84 boards.

B) Rowdy Dog Software lille bootloader:

download bootloaderen fra

Pak filen ud, og kopier den lille mappe inde i din skitsebog/hardware (opret denne mappe, hvis den ikke findes endnu). derefter flytte til mappen skitsebog/hardware/lille/avr/og:

1) kopier filen Prospective Boards.txt til file boards.txt

2) rediger filen platform.txt og foretag nogle ændringer:

Fjern kommentaren af variablen compiler.path, og lad den pege på mappen hardware/tools/avr/bin/inde i din arduino installationsmappe:

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

ændre alsocompiler. S.flags = -c -g -assembler-with-cpptocompiler. S.flags = -c -g -x assembler-with-cpp

Skift derefter følgende variabler, og sørg for, at alt er på sin plads (disse filer skal eksistere, ellers peg variablerne på de rigtige stier):

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) rediger filkernerne/tiny/core_build_options.h og rediger:

#definer TIMER_TO_USE_FOR_MILLIS 1 til#definer TIMER_TO_USE_FOR_MILLIS 0

Dette er meget vigtigt, ellers udsender IR -modtageren nuller for hver knap. Denne erklæring konfigurerer timeren0 til millis () -funktionen, så timeren1 er tilgængelig for IR -biblioteket. Den endelige skitse deaktiverer alligevel timeren 0, så du har hverken millis () og delay () funktioner. Du har muligvis funktionen delayMicroseconds () i stedet.

Denne bootloader er minimal, men har inkluderet understøttelse af serieobjekter:

Attiny85 PB2 (pin7) er TX og PB0 (pin5) er RX

Du kan have en konfiguration med ISP -programmereren (arduino) og den serielle til usb -adapter tilsluttet på samme tid, så du ikke behøver at skifte ledninger for ofte:

Nu har vi både bibliotekerne og bootloaderne installeret og korrekt konfigureret, det hårdeste arbejde er afsluttet, og vi kan begynde at teste tingene op.

Trin 8: Brænding af bootloadere og uploadskitser

Jeg råder kraftigt til at aktivere det fyldige output under Arduino IDE -præferencer, så du kan finde ud af eventuelle problemer.

For at brænde en bootloader til Attiny85 skal du uploade ISP -eksemplet til Arduino og derefter vælge programmereren Arduino som internetudbyder.

Placer nu en 10uF kondensator mellem nulstillings- og jordstiftene på arduinoen (det er ikke nødvendigt for brændingsprocessen, men det er at uploade skitser til attiny85).

Nu er arduinoen klar til at brænde bootloadere og indlæse skitser. Du skal bare vælge det rigtige bræt, der er kompatibelt med din attiny og brænde det.

For at indlæse en skitse i Attiny85 skal du indlæse den i arduino IDE og klikke på "Upload ved hjælp af programmerer".

VIGTIGT: ved upload af skitsen er der 3 trin, kompilering, skrivning og verifikation. Hvis kompilering og skrivning fungerede med succes, men verificeringsprocessen mislykkes, er det muligt, at skitsen alligevel ville fungere.

Trin 9: Kalibrer Attiny85 internt ur (spring dette over, hvis du bruger en krystal)

Hvis du beslutter dig for ikke at bruge 16Mhz krystal, skal du kalibrere dit attiny85 -ur, så vi får brug for en bootloader med et serielt interface tilgængeligt, og vi vil bruge tinytuner -biblioteket til at få den korrekte kalibrering.

Følg de næste trin

  • vælg under værktøjer Arduino som internetudbyder
  • vælg kortet "ATtiny85 @ 8MHz (intern oscillator; BOD deaktiveret)"
  • Jeg går ud fra, at du har ISP -forbindelsen klar som beskrevet før tilslutning ellers gør forbindelserne
  • brænde bootloader
  • denne bootloader har konfigureret forskellige pins til det serielle interface, brug denne konfiguration kun til den aktuelle bootloader

- PB4 (pin3 RX) til TX i FT232RL attiny85 - PB3 (pin2 TX) til RX i FT232RL attiny85 - GND (pin4) til GND på FT232RL, da attiny85 allerede er drevet af arduino, skal du ikke tilslutte 5v på FT232RL, ellers tilsluttes: attiny85 VCC (pin8) til 5V på FT232RL

  • uploade tinytuner -eksemplet til attiny85
  • åbn skærmprogrammet for at overvåge den serielle kommunikation: screen /dev /ttyUSB0 9600
  • nulstil attiny85, der forbinder RESET -stiften (pin1) til GND (bare et øjeblik), en velkomstmeddelelse skulle vises på skærmvinduet
  • Fortsæt med at sende enkelte 'x'-tegn (ingen vognretur, ingen linjefødning), indtil kalibreringen er afsluttet
  • annotér et sted værdien af kalibreringen (OSCCAL = 0x). Dette er den værdi, du skal angive på de sidste skitser

Trin 10: Afkod dine fjernknapper

Nu er det tid til at afkode vores fjernbetjeningsknapper og tildele dem til bestemte tastetryk på pc'en for at gøre det ved at følge de næste trin:

  • vælg kortet "ATtiny85 @ 16MHz (intern PLL; 4.3V BOD)", hvis du ikke bruger en krystal, "ATtiny85 @ 16 MHz (ekstern krystal; 4.3 V BOD" ellers, så brænd den
  • indlæs skitsen:
  • Hvis du ikke bruger en krystal, skal du kommentere rækken, der indeholder OSCCAL -variablen, og tildele den til den værdi, du fandt, da du foretog kalibreringen af uret
  • Jeg går ud fra, at sensoren er tilsluttet som beskrevet før, ellers tilslut den
  • Jeg antager også, at FT232RL seriel til usb -adapter er tilsluttet, ellers tilslut den
  • nulstil attiny85, der forbinder RESET -stiften (pin1) til GND (bare et øjeblik)
  • tryk gentagne gange på knapperne på din fjernbetjening og tjek skærmvinduet, du skal kommentere det sidste nummer for hver post, hver knap kan producere 2 forskellige numre

Eksempel:

MODTAGET D44 3396 MODTAGET 544 1348

Kommenter 3396 og 1348 i tilknytning til den knap, du lige har ramt, så skal du beslutte, hvad du vil gøre med den knap. For eksempel kunne jeg ønske, at den knap skulle sende multimedie nøglekoden "Lydstyrke op", så skal jeg finde id'et for den nøglekode. For at gøre det skal du downloade PDF'en:

Hold øje med afsnittet "Tastatur/tastaturside" side 53, og brug tallene i kolonnen Brugs -id (dec) til at binde dine fjernbetjeningsknapper til tastaturkoder. I vores eksempel kan vi se, at nøglekoden for "Lydstyrke op" er: 128.

Rediger filen filen UsbKeyboard.h inde i UsbKeyboard-biblioteket fra v-usb-pakken, som vi installerede før, og tilføj til de eksisterende definer, hvis den ikke allerede er der:

#define KEY_VOL_UP 128

Når vi er færdige med alle vores fjernbetjeningsknapper og alle definitionerne i filen UsbKeyboard.h er klar, kan vi gå videre til det sidste trin.

Trin 11: Indlæser den sidste skitse og håber på det bedste

Indlæser den sidste skitse og håber på det bedste!
Indlæser den sidste skitse og håber på det bedste!
Indlæser den sidste skitse og håber på det bedste!
Indlæser den sidste skitse og håber på det bedste!

Vi har nu alle fjernbetjeningsknapperne afkodet, filen UsbKeyboard.h er fyldt med vores nøglekoder, så nu kan vi indlæse den endelige skitse fra arduino IDE fra:

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

Denne fil er den nøjagtige fil, jeg bruger til min modtager, og den fungerer til 2 forskellige fjernbetjeninger, så det er klart, at du bliver nødt til at opdatere den for at fungere med dine fjernbetjeninger.

Hvis du ikke bruger en krystal, skal du kommentere rækken, der indeholder OSCCAL -variablen, og tildele den til den værdi, du fandt, da du foretog kalibreringen af uret

Bemærk, at der i loop -funktionen er mange udsagn som denne:

hvis (results.value == 3405 || results.value == 1357) {// pil op

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

}

Du skal oprette dine egne udsagn, en pr. Knap i din fjernbetjening. I tilstanden "hvis" skal du indsætte result.value de værdier, som du har fundet afkodning af din fjernbetjening, og som argument for metoden UsbKeyboard.sendKeyStroke skal du sætte en af de allerede definerede nøglekoder i filen UsbKeyboard.h.

Betingelsen "if (lastStroke! = Results.value)" er nødvendig, fordi nogle fjernbetjeninger sender den samme kode to gange pr. Hit, og dette forhindrer det andet hit. Jeg er ikke helt sikker, og det kan afhænge af IR -protokollen, der er programmeret i din fjernbetjening (jeg er ikke rigtig ekspert i IR -protokoller), men ifølge min erfaring med mine egne fjernbetjeninger kan hver knap producere 2 forskellige koder og mens du holder knappen nede, sender den den samme kode, men hvis du trykker på knappen igen, sender den den anden. Så det ser ud til, at koderne sendes på en anden måde, jeg gætter på, at det er en standardtilstand at vide, hvor mange gange du virkelig rammer knappen.

Ok, vi er næsten færdige, bare upload den sidste skitse, tilslut den til pc'en og se hvordan det går.

Til dette trin er det bedre, hvis du frakobler både arduino og usb til seriel adapter og først derefter tilslutter USB'en til din pc -port (hvis noget går galt, vil dit kredsløb være lettere at fejlsøge).

Hvis alt fungerede fint, skulle du se noget, der ligner det første billede på dette trin, når du åbner en terminal og sender dmesg -kommandoen. Hvis der var problemer, skulle du have fejl som dem, der findes i det andet billede, og du skal begynde at fejlsøge dit kredsløb og/eller softwaren. En af kilderne til de første fejl, jeg havde, var en USB -hub, der ikke ville fungere med min IR -modtager (andre virkede dog) … så det er bedre for dette sidste trin at tilslutte IR -modtageren direkte til din pc -port. Eventuelle fejl kan være svære at finde, men i sidste ende, som jeg, ville du lære meget, og prisen at betale er det værd, jeg forsikrer dig.

Det er alt folkens, lad mig vide, hvis du bemærker fejl i denne instruktive og nyder din helt nye IR USB -modtager!

Anbefalede: