Innholdsfortegnelse:

ATtiny85 IR USB -mottaker: 11 trinn (med bilder)
ATtiny85 IR USB -mottaker: 11 trinn (med bilder)

Video: ATtiny85 IR USB -mottaker: 11 trinn (med bilder)

Video: ATtiny85 IR USB -mottaker: 11 trinn (med bilder)
Video: LDmicro 20: решен вопрос жидкокристаллического дисплея I2C (программирование ПЛК микроконтроллера с помощью LDmicro) 2024, Juli
Anonim
ATtiny85 IR USB -mottaker
ATtiny85 IR USB -mottaker

ADVARSEL, DENNE INSTRUKTABLENE HAR BLITT OBSOLETE

V-usb-biblioteket er designet for å fungere med USB 1.1-protokoll som neppe eksisterer i dag. Med ankomsten av USB3 vil du ha mer enn hodepine som prøver å få v-usb-enheter til å fungere. Etter å ha byttet multimediesenter, har jeg mange stabilitetsproblemer, og selv om mottakeren fungerer, slutter den etter en stund å fungere. Jeg har mislyktes med å prøve å fikse det. Jeg lagde også en atmega328p-versjon, men denne hadde de samme problemene. Å bruke en vakthund-timer for å tilbakestille brettet med jevne mellomrom hjalp heller ikke, så jeg gir opp v-usb.

Gjør deg selv en tjeneste, og ikke fortsett med denne instruksen med mindre det er for utdanningsformål. Jeg anbefaler i stedet å kjøpe en brikkemodul ATmega 32U4 som allerede har integrert usb -grensesnittet og følg denne veiledningen:

www.sparkfun.com/tutorials/337

Kast deretter inn en IR -sensor TSOP31238, og du er i gang.

Hei skapere! Dette er en instruksjon for å bygge en fungerende USB IR -mottaker ved hjelp av en Attiny85 mikrokontroller. Jeg startet dette prosjektet for å overvinne mangelen på støtte (i det minste fullstendig støtte) for noen IR -fjernkontroller i GNU/Linux OS. Etter denne instruksjonen kan du bygge en programmerbar USB IR -mottaker som fungerer med en hvilken som helst IR -fjernkontroll for noen få dollar.

Først og fremst ville dette instruerbare ikke eksistere uten hardt arbeid fra menneskene som opprettet bibliotekene jeg bruker her:

  • David A. Mellis for sin lille kjerne
  • Rowdy Dog-programvare for biblioteket deres TinyTuner
  • Rowdy Dog Software for deres lille bootloader
  • Rancidbacon (https://rancidbacon.com/) for sin arduino-port i v-usb-biblioteket (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • seejaydee for IR-biblioteket for små kjerner som finnes i kommentarene til den instruerbare https://www.instructables.com/id/Attiny-IR-librar… -koden på https://www.instructables.com/id/Attiny-IR -bibliotek …

Noen ganger er det ikke lett å finne den rette eieren av et bibliotek, så hvis jeg gjorde en feil, vennligst legg igjen en kommentar, og jeg ville løse problemet ASAP.

Denne guiden eksisterer fordi jeg ikke fant en komplett opplæring/guide som fungerte ut av esken (den kan finnes, men jeg fant den ikke), så jeg samlet all informasjonen som er tilgjengelig på nettet og etter en god mengde forsøk og feil Jeg kom med en komplett guide for å bygge en fungerende USB IR -mottaker som faktisk fungerer ganske bra.

De viktigste informasjonskildene 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…

Trinn 1: Noen hensyn

  • Jeg eier ikke en AVR ISP programmerer, og jeg har egentlig ikke lyst til å kjøpe en, så jeg har brukt en Arduino til å programmere attiny85
  • Jeg bryr meg ikke om noe annet operativsystem enn GNU/Linux, så jeg vet ikke om dette kommer til å fungere ellers.
  • Det er andre IR -biblioteker, men jeg kunne ikke få dem til å fungere, ikke engang med en arduino. Tenk imidlertid at jeg begynte med en begrenset kunnskap om IR -biblioteker. Kanskje jeg kunne få dem til å fungere nå etter at jeg har fått erfaring med å håndtere en god del problemer. Uansett, jeg var fortapt og desperat før jeg fant biblioteket som Seejaydee ga, og jeg har brukt det siden (mange takk mann!).
  • Det er andre maskinvarekonfigurasjoner, men jeg har bare brukt den som bruker 5V for å drive attiny85 og to 3,6V 0,5W zenerdioder for å klemme spenningen til datalinjene, det fungerer ut av esken, så jeg ikke rotet med andre konfigurasjoner.
  • Du kan bruke en 16Mhz krystall, eller du kan bruke tinytuner -biblioteket til å kalibrere den interne klokken til attiny85. Jeg anbefaler sterkt bruken av krystallet, det er mye mer stabilt og vil sannsynligvis spare deg for mye hodepine.
  • Jeg bruker her to forskjellige oppstartslastere for attiny85:

a) Rowdy Dog Software -versjon, den har integrert et serielt grensesnitt som er veldig kult og er veldig lite, slik at du har mer plass til programmet og andre biblioteker. Problemet er at av noen grunner, selv om det fungerer ganske bra, ble usb -enheten etter en tid koblet fra (du kan finne problemene med kommandoen dmesg). Jeg vet ikke om dette er et kjerneproblem eller en blandet kombinasjon av kjernen pluss de valgte bibliotekene, så etter en stund bestemte jeg meg for å bruke denne kjernen bare for å dekode fjernkontrolltastene og kalibrere klokken (når jeg ikke bruker en 16Mhz krystall). Etter det brenner jeg bare Mellis bootloader og laster opp den definitive skissen som ikke bruker det serielle grensesnittet.

b) Mellis -versjon, stabil oppstartslaster, jeg har brukt dette i mange prosjekter. Jeg ville alltid ha brukt denne bootloaderen hvis den hadde inkludert et serielt grensesnitt. Jeg bruker denne kjernen i den siste skissen etter å ha avkodet alle tastene på fjernkontrollene mine.

Trinn 2: La oss starte med maskinvaren

La oss starte med maskinvaren
La oss starte med maskinvaren
La oss starte med maskinvaren
La oss starte med maskinvaren
La oss starte med maskinvaren
La oss starte med maskinvaren

Verktøy du trenger:

  • et arduino -kompatibelt brett
  • en seriell til usb -adapter for å dekode fjernkontrollnøklene dine (bare bruk en FT232RL)
  • en PC med GNU/Linux installert og arduino IDE riktig konfigurert, jeg bruker arduino IDE 1.8.0
  • en IR -fjernkontroll for å teste enheten din (til og med en elendig en som de som finnes i arduino startpakker vil fungere)
  • et multimeter for å feilsøke brettet ditt (jeg håper du ikke trenger det, lykke til!)

Listen over materialer:

  • 1 attiny85
  • 2 68R motstander
  • 1 1,5K motstand
  • 1 4,7K motstand
  • 1 16Mhz krystall
  • 1 22pF kondensator
  • 1 0.1uF kondensator
  • 1 10uF kondensator
  • 2 3,6V 0,5W zenerdioder
  • 1 USB type A hankontakt
  • 1 stripepinne med 6 pinner for å programmere og feilsøke brettet.
  • 1 IR -sensor TSOP31238
  • mye kaffe for å holde deg våken

Før du lodder det endelige brettet, vil du sannsynligvis lage en brødbrettprototype for testformål. Etter at skjemaet som er vedlagt denne instruksjonsboken burde være nok til å bygge den opp.

For å koble attiny85 til PCen bruker den endelige designen en USB type A -kontakt som er loddet inn i brettet, men for prototypen må du lage en USB -kabel som du kan koble til et brødbrett:

Lodd inn i et lite stykke perfboard 4 pins, klipp deretter en gammel USB -kabel og lodd pinnene til 4 av ledningene inne i usb -kabelen:

  • rødt er VCC (5V)
  • svart er GND
  • hvit er D-
  • grønt er D+

Hold alt sammen med varmt lim.

Nå må vi koble ISP -programmereren (Arduino), USB til seriell adapter (FT232RL) og IR -sensoren til attiny85.

Du kan la alle være tilkoblet, slik at du kan brenne forskjellige oppstartslastere, laste skisser og sjekke serieporten uten å skifte ledninger, For å gjøre det, koble til alt ved å følge disse instruksjonene:

ISP -programmerer (Arduino): dette lar oss brenne bootloadere og laste skisser

  • 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 to serial adapter (FT232RL): dette lar oss sjekke den serielle porten

  • attiny85 PB0 (pin5 RX) til TX i FT232RL
  • attiny85 PB2 (pin7 TX) til RX i FT232RL
  • attiny85 GND (pin4) til GND på FT232RL
  • siden attiny85 allerede er drevet av arduino trenger du ikke koble 5v på FT232RL, ellers koble til: attiny85 VCC (pin8) til 5V på FT232RL

usb til seriell adapter (FT232RL) bare for klokkekalibrering (bare for oppstartslasteren "ATtiny85 @ 8MHz (intern oscillator; BOD deaktivert)")

  • PB4 (pin3 RX) til TX i FT232RL attiny85
  • PB3 (pin2 TX) til RX i FT232RL attiny85
  • GND (pin4) til GND på FT232RL
  • siden attiny85 allerede er drevet av arduino trenger du ikke koble 5v på FT232RL, ellers koble til: attiny85 VCC (pin8) til 5V på FT232RL

Hvis du bruker en 16Mhz krystall, kobler du den til Attiny85 pins PB3 (pin2) og PB4 (pin3) og kobler hver pin også til GND gjennom en 22pF cap hver.

Filtrer Attiny85 VCC med en 0.1uF og 10uF kondensatorer som kobler dem parallelt med GND

Koble IR -sensorens utgangspinne til attiny85 PB1 (pin6), slå den på.

Bygg og koble til usb -grensesnittet:

  • GND (svart ledning): koble den til den vanlige GND (alle grunner er koblet sammen)
  • D- (hvit ledning) koblet til attiny85 PB0 (pin5) gjennom en 68R-motstand, koble den også til jord gjennom en 3,6V 0,5W zener og dra den opp til VCC med en 1,5K-motstand
  • D+ (grønn ledning) koblet til PB2 gjennom en 68R -motstand, koble den til jord gjennom en 3,6V 0,5W zener
  • 5V, kan du la den være tilkoblet siden alt drives av Arduino på dette stadiet, ellers koble den til attiny85 VCC

Zenerdiodene er koblet slik at anodene er knyttet til GND og katodene er koblet til datalinjene D+ og D-.

Trinn 3: Endelig design

Endelig design
Endelig design
Endelig design
Endelig design
Endelig design
Endelig design

For den endelige designen kan du bruke perfboard med gjennomgående hullkomponenter eller etse ditt eget brett og bruke smd -komponenter. For å lære å etse et brett, bare google det, det er fantastiske opplæringsprogrammer tilgjengelig online.

Jeg har etset mitt eget brett og er veldig fornøyd med de endelige resultatene (lite, stabilt og robust brett). Ja, jeg vet at kuttet er surt, men jeg kunne ikke bruke noe elektroverktøy så sent på kvelden og jeg bare kutt brettet med tinnskåren min.

Sporene på bildene er forresten ikke bart kobber, de har blitt behandlet med en ekkel kjemikalie som lett tenner kobberet (det mistenkes at det kan forårsake kreft, så bruk det med stor forsiktighet, latexglober og en støvmaske):

Bruk skjemaene ovenfor for å designe oppsettet ditt, eller du kan bare bruke PCB -fotavtrykket mitt for å etse brettet ditt.

Trinn 4: Håndtere programvaren

Kretsen i dette prosjektet er veldig enkel, programvaren krever i stedet en større innsats.

Vi trenger minst to biblioteker (ett til hvis du ikke bruker krystall) pluss to oppstartslastere for å få dette til å fungere. Da jeg startet dette prosjektet testet jeg noen biblioteker, noen ganger fungerte de ikke, og mange ganger var de bare ikke konfigurert til å fungere med en Attiny85 ut av esken (jeg visste det ikke ennå). Så fant jeg problemer med bibliotekene / bootloaders som overlapper avbrudd. Til slutt måtte jeg håndtere en god del feil da jeg koblet den siste kretsen til min PC. Jeg hadde imidlertid ikke denne veiledningen, så jeg tror du hadde det bra, bare følg trinnene i denne instruksen, hvis du gjør det uten å gjøre feil, bør du ha det bra:)

Vi trenger nå å installere og konfigurere noen få biblioteker:

  • v-usb for arduino-bibliotek: dette biblioteket lar mikrokontrolleren bli gjenkjent av PC-en som et HID USB-tastatur, og vi bruker den til å sende tastetrykk til PC-en. Dette biblioteket trenger noen endringer for å være kompatibelt med attiny85
  • tinytuner bibliotek bare hvis du ikke vil bruke en 16Mhz krystall. Du må da kalibrere den interne klokken til mikrokontrolleren. Dette biblioteket fungerer ut av esken.
  • Attiny-IR-bibliotek for å samhandle med IR-sensoren. Dette biblioteket fungerer ut av esken.

Vi trenger også 2 bootloaders:

  • Dog Software -versjon, med det serielle grensesnittet tilgjengelig. Denne bootloaderen trenger en liten finjustering for å jobbe med attiny85 da den bruker timeren1 for millis () -funksjonen og vil ikke fungere med IR -biblioteket. Vi må endre timeren til timer0.
  • Mellis -versjon, stabil oppstartslaster som vi skal bruke i siste fase. Dette fungerer ut av esken.

Trinn 5: Installasjon og konfigurasjon av V-usb-biblioteket

Last ned biblioteket fra https://code.google.com/archive/p/vusb-for-arduin…Pakk ut filen og kopier mappebibliotekene/UsbKeyboard til mappen for skissebøker.

Nå må du redigere et par filer for å være kompatible med ATtiny85 (den er konfigurert til å fungere med arduino):

A) rediger usbconfig.h:

under "Hardware Config" endring:

#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 maskinvarekonfigurasjon" endring:

#define USB_CFG_PULLUP_IOPORTNAME Dto ## definere USB_CFG_PULLUP_IOPORTNAME B

For å lage en full "boot -kompatibel HID" -spesifikasjon (ellers fungerer ingen multimedietaster):

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

og

#define USB_CFG_INTERFACE_PROTOCOL 0 // Tastaturfor å#definere USB_CFG_INTERFACE_PROTOCOL 0x01 // Tastatur

Alternativt kan du også endre produsent og enhetsnavn i følgende definisjoner:

#define USB_CFG_VENDOR_NAME

#define USB_CFG_DEVICE_NAME

B) rediger UsbKeyboard.h:

endring:

PORTD = 0; // TODO: Bare for USB -pinner? DDRD | = ~ USBMASK;

til

PORTB = 0; // TODO: Bare for USB -pinner? DDRB | = ~ USBMASK;

For å tillate nøkkelkoder ytterligere enn 101 endring også:

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

og

0x29, 0x65, // USAGE_MAXIMUM (tastaturapplikasjon) til: 0x29, 0xE7, // USAGE_MAXIMUM (tastaturapplikasjon)

Du må kanskje redigere også disse 3 filene:

usbdrv.husbdrv.cUsbKeyboard.h

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

Hvis dette ikke er klart, besøk

Du kan unngå alle disse endringene hvis du bare laster ned det vedlagte biblioteket (jeg har gjort alle disse endringene selv) og bare pakker det ut i skissebokbibliotekets mappe:

UsbKeyboard konfigurert for attiny85

Edit: nylig har jeg oppdaget at Alejandro Leiva (https://github.com/gloob) har blitt tatt vare på dette biblioteket og ser ut til å fungere bra også. Du kan også prøve versjonen hans med de nødvendige endringene som jeg gjorde for å få det til å fungere med attiny, så hvis du vil sjekke dette, kan du bare pakke det ut i mappen til skissebokbibliotekene.

UsbKeyboard konfigurert for attiny85 (Alejandro Leiva versjon)

Trinn 6: Installasjon av Attiny-IR og Tinytuner Libraries

A) Attiny-IR-bibliotek:

last den ned fra https://drive.google.com/open?id=0B_w9z88wnDtFNHlq…, så pakk den ut i mappen for skissebøker.

B) Tinytuner bibliotek:

Dette er bare nødvendig hvis du ikke bruker en 16Mhz krystall, men tro meg, selv om det fungerer også uten krystallet, er det mye mer stabilt med det og de koster noen få cent, så hold det enkelt, bruk en krystall og hopp over dette biblioteket.

Ikke overbevist ennå? ok, last ned biblioteket frahttps://storage.googleapis.com/google-code-archive… så pakker du det ut i mappen for skissebøker.

Vi er ferdige med bibliotekene, nå går vi videre med å installere bootloaders.

Trinn 7: Installasjon og konfigurasjon av oppstartsladere

Vi skal installere to oppstartslastere, Mellis er etter min erfaring mer stabil, og vi vil bruke den i den siste skissen. Den andre utviklet av Rowdy Dog Software er en fantastisk kjerne, veldig liten og med et integrert serielt grensesnitt tilgjengelig, men fjernkontrollen min krasjet etter en stund med den, så vi vil bruke denne bootloaderen bare for å kalibrere attiny85 interne klokke og til å dekode fjernkontrollen knappene.

Jeg vet at det er tilgjengelige biblioteker for å gi attiny85 serielle evner, men da må du tilpasse bibliotekene som bruker det serielle objektet … Jeg liker denne fremgangsmåten bedre.

La oss starte med installasjonen:

A) Mellis bootloader:

bare åpne Arduino IDE -preferansene og legg til Ytterligere Boards Manager -nettadresser:

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

Åpne deretter Arduino IDE boards manager og søk etter attiny, installer brettene fra Mellis. Nå bør du se Arduino ID ATtiny25/45/85 og ATtiny24/44/84 boards.

B) Rowdy Dog Software liten bootloader:

Last ned bootloader fra

Pakk ut filen og kopier den lille mappen inne i skisseboken/maskinvaren (lag denne mappen hvis den ikke finnes ennå). flytt deretter til mappen skissebok/hardware/tiny/avr/og:

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

2) rediger filen platform.txt og gjør noen endringer:

Fjern kommentaren av variabelen compiler.path og la den peke på mappen hardware/tools/avr/bin/inne i arduino installasjonsmappen:

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

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

Endre deretter følgende variabler og sørg for at alt er på plass (disse filene må eksistere, ellers peker du variablene til de riktige banene):

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 filkjernene/tiny/core_build_options.h og endre:

#define TIMER_TO_USE_FOR_MILLIS 1 til#definere TIMER_TO_USE_FOR_MILLIS 0

Dette er veldig viktig, ellers sender IR -mottakeren ut nuller for hver knapp. Denne setningen konfigurerer timer0 for millis () -funksjonen og lar timeren1 være tilgjengelig for IR -biblioteket. Den siste skissen vil deaktivere timeren 0 uansett, så du vil ikke ha tilgjengelige verken millis () og delay () funksjoner. Du kan ha tilgjengelig delayMicroseconds () -funksjon i stedet.

Denne bootloaderen er minimal, men har inkludert støtte for serielle objekter:

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

Du kan ha en konfigurasjon med ISP -programmereren (arduino) og seriell til usb -adapteren tilkoblet samtidig, slik at du ikke trenger å skifte ledninger for ofte:

Nå har vi både bibliotekene og oppstartslasterne installert og riktig konfigurert, det hardeste arbeidet er fullført, og vi kan begynne å teste ting.

Trinn 8: Burning Bootloaders og opplastingsskisser

Jeg anbefaler på det sterkeste å aktivere den omfattende utgangen under Arduino IDE -preferansene, slik at du kan finne ut eventuelle problemer.

For å brenne en bootloader til Attiny85 må du laste opp ISP -eksemplet til Arduino og deretter velge programmereren Arduino som ISP.

Plasser nå en 10uF kondensator mellom tilbakestillings- og bakkepinnene på arduinoen (det er ikke nødvendig for brenningsprosessen, men det er å laste opp skisser til attiny85).

Nå er arduinoen klar til å brenne oppstartslastere og laste skisser. Du trenger bare å velge riktig brett som er kompatibelt med din attiny og brenne det.

For å laste en skisse inn i Attiny85, last den inn i arduino IDE og klikk på "Last opp med programmerer".

VIKTIG: Når du laster opp skissen, er det 3 trinn, kompilering, skriving og bekreftelse. Hvis kompilering og skriving fungerte vellykket, men bekreftelsesprosessen mislykkes, er det mulig at skissen fungerer uansett.

Trinn 9: Kalibrer Attiny85 internklokke (hopp over dette hvis du bruker en krystall)

Hvis du bestemmer deg for ikke å bruke 16Mhz -krystallet, må du kalibrere attiny85 -klokken din, så vi trenger en bootloader med et serielt grensesnitt tilgjengelig, og vi bruker tinytuner -biblioteket for å få riktig kalibrering.

Følg de neste trinnene

  • velg under verktøy Arduino som ISP -programmerer
  • velg brettet "ATtiny85 @ 8MHz (intern oscillator; BOD deaktivert)"
  • Jeg antar at du har ISP -tilkoblingen klar som beskrevet før du kobler til, ellers gjør tilkoblingene
  • brenne bootloader
  • denne bootloaderen har konfigurert forskjellige pins for det serielle grensesnittet, bruk denne konfigurasjonen bare for den nåværende bootloaderen

- PB4 (pin3 RX) til TX i FT232RL attiny85 - PB3 (pin2 TX) til RX i FT232RL attiny85 - GND (pin4) til GND på FT232RL siden attiny85 allerede er drevet av arduinoen trenger du ikke koble til 5v på FT232RL, ellers koble til: attiny85 VCC (pin8) til 5V på FT232RL

  • last opp tinytuner -eksempelet til attiny85
  • åpne skjermprogrammet for å overvåke den serielle kommunikasjonen: screen /dev /ttyUSB0 9600
  • tilbakestill attiny85 som kobler RESET -pin (pin1) til GND (bare et øyeblikk), en velkomstmelding skal vises på skjermvinduet
  • Fortsett å sende enkelt "x" -tegn (ingen vognretur, ingen linjemating) til kalibreringen er fullført
  • merk et sted verdien av kalibreringen (OSCCAL = 0x). Dette er verdien du må angi på de siste skissene

Trinn 10: Dekodér fjernkontrollene

Nå er det på tide å dekode fjernkontrollknappene våre og tilordne dem til bestemte tastetrykk på PCen, for å gjøre det, følg de neste trinnene:

  • velg brettet "ATtiny85 @ 16MHz (intern PLL; 4.3V BOD)" hvis du ikke bruker en krystall, "ATtiny85 @ 16 MHz (ekstern krystall; 4.3 V BOD" ellers, så brenn den
  • last skissen:
  • Hvis du ikke bruker en krystall, må du kommentere raden som inneholder OSCCAL -variabelen og tilordne den til verdien du fant da du kalibrerte klokken
  • Jeg antar at sensoren er tilkoblet som beskrevet tidligere, ellers kobler du den til
  • Jeg antar også at FT232RL seriell til usb -adapter er tilkoblet, ellers kobler du den til
  • tilbakestill attiny85 som kobler RESET -pinnen (pin1) til GND (bare et øyeblikk)
  • trykk gjentatte ganger på knappene på fjernkontrollen og sjekk skjermvinduet, du må kommentere det siste tallet for hver post, hver knapp kan produsere 2 forskjellige tall

Eksempel:

Mottatt D44 3396 MOTTAGET 544 1348

Merk 3396 og 1348 i tilknytning til knappen du nettopp traff, så må du bestemme hva du vil gjøre med den knappen. For eksempel kan jeg ønske at den knappen skal sende multimedienøkkelkoden "Volum opp", så må jeg finne ID -en for nøkkelkoden. For å gjøre det, last ned PDFen:

Se opp for delen "Tastatur/tastaturside" side 53, og bruk tallene i kolonnen Bruk -ID (des) for å knytte fjernkontrollknappene til tastaturkoder. I vårt eksempel kan vi se at nøkkelkoden for "Volum opp" er: 128.

Rediger filen UsbKeyboard.h inne i UsbKeyboard-biblioteket fra v-usb-pakken som vi installerte før, og legg til de eksisterende definisjonene hvis den ikke allerede er der:

#define KEY_VOL_UP 128

Når vi er ferdige med alle våre fjernkontroller/knapper og alle definisjonene i filen UsbKeyboard.h er klare, kan vi gå til det siste trinnet.

Trinn 11: Last den siste skissen og håp på det beste

Laster den siste skissen og håper på det beste!
Laster den siste skissen og håper på det beste!
Laster den siste skissen og håper på det beste!
Laster den siste skissen og håper på det beste!

Vi har nå dekodert alle fjernkontrollknappene, filen UsbKeyboard.h er fylt med nøkkelkodene våre, så nå kan vi laste inn den definitive skissen fra arduino IDE fra:

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

Denne filen er den nøyaktige filen jeg bruker for mottakeren min, og den fungerer for 2 forskjellige fjernkontroller, så det er klart du må oppdatere den for å fungere med fjernkontrollen/e.

Hvis du ikke bruker en krystall, må du kommentere raden som inneholder OSCCAL -variabelen og tilordne den til verdien du fant da du kalibrerte klokken

Legg merke til at det i loop -funksjonen er mange utsagn som denne:

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

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

}

Du må lage dine egne uttalelser, én per knapp i fjernkontrollen. I tilstanden "hvis" må du sette inn result.value verdiene du har funnet for å dekode fjernkontrollen, og som argument for metoden UsbKeyboard.sendKeyStroke må du sette en av de allerede definerte nøkkelkodene i filen UsbKeyboard.h.

Betingelsen "if (lastStroke! = Results.value)" er nødvendig fordi noen fjernkontroller sender den samme koden to ganger per treff, og dette forhindrer det andre treffet. Jeg er ikke helt sikker, og det kan avhenge av IR -protokollen som er programmert i fjernkontrollen din (jeg er egentlig ikke ekspert på IR -protokoller), men i henhold til min erfaring med mine egne fjernkontroller kan hver knapp produsere 2 forskjellige koder og mens du trykker og holder inne knappen, sender den den samme koden, men hvis du trykker på knappen igjen sender den den andre. Så det ser ut til at kodene blir sendt på en alternativ måte, jeg antar at det er en standardmodus å vite hvor mange ganger du virkelig trykker på knappen.

Ok, vi er nesten ferdige, bare last opp den siste skissen, koble den til PC -en og se hvordan det går.

For dette trinnet er det bedre hvis du kobler fra både arduino og usb til seriell adapter, og bare da kobler du USB -en til PC -porten din (i tilfelle noe går galt, blir kretsen enklere å feilsøke).

Hvis alt fungerte bra, bør du se noe som ligner det første bildet på dette trinnet når du åpner en terminal og sender dmesg -kommandoen. Hvis det var problemer, bør du ha feil som de som finnes i det andre bildet, og du må begynne å feilsøke kretsen og/eller programvaren. En av kildene til de første feilene jeg hadde var en USB -hub som ikke ville fungere med min IR -mottaker (andre fungerte skjønt) … så det er bedre for dette siste trinnet å koble IR -mottakeren direkte til PC -porten. Eventuelle feil kan være vanskelig å finne, men på slutten, som meg, ville du lære mye, og prisen du må betale er verdt det, jeg kan forsikre deg.

Det er alt folkens, gi meg beskjed hvis du merker noen feil i denne instruksjonsfulle og liker den splitter nye IR USB -mottakeren!

Anbefalt: