Taula de continguts:

Receptor USB IR ATtiny85: 11 passos (amb imatges)
Receptor USB IR ATtiny85: 11 passos (amb imatges)

Vídeo: Receptor USB IR ATtiny85: 11 passos (amb imatges)

Vídeo: Receptor USB IR ATtiny85: 11 passos (amb imatges)
Vídeo: ATtiny85 Relay Control with IR Remote || 2-Channel IR Remote Control System Using ATtiny85 2024, Juliol
Anonim
Receptor USB IR ATtiny85
Receptor USB IR ATtiny85

ADVERTÈNCIA, AQUEST INSTRUCTABLE S’HA FET OBSOLET

La biblioteca v-usb està dissenyada per funcionar amb el protocol USB 1.1 que pràcticament no existeix actualment. Amb l'arribada d'USB3 tindreu més que un mal de cap intentant que els dispositius v-usb funcionin. Després de canviar el meu centre multimèdia, tinc molts problemes d’estabilitat i, tot i que el receptor funciona, al cap d’un temps deixa de funcionar. No he tingut èxit en intentar solucionar-ho. Vaig fer també una versió atmega328p, però aquesta tenia els mateixos problemes: fer servir un temporitzador de gos de vigilància per restablir el tauler periòdicament tampoc va ajudar, així que vaig renunciar al v-usb.

Feu-vos un favor i no seguiu endavant amb aquesta instrucció tret que sigui amb finalitats educatives. En el seu lloc, recomano comprar un mòdul de xip ATmega 32U4 que ja ha integrat la interfície USB i seguir aquesta guia:

www.sparkfun.com/tutorials/337

A continuació, tireu un sensor IR TSOP31238 i ja esteu a punt.

Hola fabricants! es tracta d’un mètode instructiu per construir un receptor d’IR USB que funcioni mitjançant un microcontrolador Attiny85. Vaig començar aquest projecte per superar la manca de suport (com a mínim suport complet) per a alguns comandaments a distància IR del sistema operatiu GNU / Linux. Seguint aquestes instruccions, podríeu crear un receptor USB IR programable que funcioni amb qualsevol comandament IR per uns quants dòlars.

En primer lloc, aquest instructiu no existiria sense el treball dur de les persones que van crear les biblioteques que faig servir aquí:

  • David A. Mellis pel seu nucli d’atenció
  • Programari Rowdy Dog per a la seva biblioteca TinyTuner
  • Programari Rowdy Dog per al seu petit carregador d’arrencada
  • Rancidbacon (https://rancidbacon.com/) pel seu port arduino de la biblioteca v-usb (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • seejaydee per a la seva biblioteca IR per a petits nuclis que es troba als comentaris del instructable codi https://www.instructables.com/id/Attiny-IR-librar… a https://www.instructables.com/id/Attiny-IR -librar …

De vegades no és fàcil trobar el propietari adequat d’una biblioteca, de manera que, en cas que m’equivocés, deixeu un comentari i solucionaria el problema el més aviat possible.

Aquesta guia existeix perquè no he trobat cap tutoria / guia completa que surti de la caixa (pot existir, però no la he pogut trobar), així que he reunit tota la informació disponible al web i després d’una bona quantitat de proves i errors. Vaig arribar a una guia completa per construir un receptor IR USB que funcionés i que funcionés bastant bé.

Les principals fonts d'informació que he seguit:

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

Pas 1: algunes consideracions

  • No tinc un programador ISP AVR i no m'agrada comprar-ne cap, així que he utilitzat un Arduino per programar l'attiny85
  • No m'importa cap altre SO que no sigui GNU / Linux, així que no sé si això funcionarà d'una altra manera.
  • hi ha altres biblioteques IR, però no les podria fer funcionar ni amb un arduino. Tingueu en compte, però, que vaig començar amb un coneixement limitat sobre les biblioteques IR. Potser podria fer-los funcionar ara després de l’experiència adquirida tractant una bona quantitat de problemes. De totes maneres, estava desesperat i desesperat abans de trobar la biblioteca que Seejaydee proporcionava i ho he utilitzat des de llavors (moltes gràcies, home!).
  • Hi ha altres configuracions de maquinari, però només he utilitzat la que utilitza 5 V per alimentar l’attiny85 i dos díodes zener de 3,6 V 0,5 W per fixar el voltatge de les línies de dades, funciona fora de la caixa, de manera que no m’he embolicat amb altres configuracions.
  • Podeu utilitzar un cristall de 16 MHz o podeu utilitzar la biblioteca de tinytuner per calibrar el rellotge intern del vostre attiny85. Aconsello fermament l’ús del vidre, és molt més estable i probablement us estalviarà molts mals de cap.
  • Aquí estic fent servir dos carregadors d'arrencada diferents per a l'attiny85:

a) Versió del programari Rowdy Dog, ha integrat una interfície sèrie que és molt divertida i molt petita, de manera que teniu més espai per al vostre programa i altres biblioteques. El problema és que, per algunes raons, tot i que funciona força bé, al cap d’un temps el dispositiu USB es va desconnectar (podeu trobar els problemes amb l’ordre dmesg). No sé si es tracta d'un problema del nucli o d'una combinació mixta del nucli més les biblioteques escollides, així que al cap d'un temps vaig decidir utilitzar aquest nucli només per descodificar les tecles remotes i calibrar el rellotge (quan no s'utilitza un 16Mhz cristall). Després d'això, acabo de gravar el gestor d'arrencada de Mellis i penjo l'esbós definitiu que no utilitza la interfície sèrie.

b) Versió Mellis, carregador d’arrencada estable, ho he fet servir en molts projectes. Hauria utilitzat aquest carregador d’arrencada sempre si hagués inclòs una interfície sèrie. Faig servir aquest nucli a l'esbós final després de descodificar totes les tecles dels comandaments a distància.

Pas 2: Comencem pel maquinari

Comencem pel maquinari
Comencem pel maquinari
Comencem pel maquinari
Comencem pel maquinari
Comencem pel maquinari
Comencem pel maquinari

Eines que necessiteu:

  • una placa compatible amb arduino
  • un adaptador de sèrie a usb per descodificar les claus remotes (només cal que utilitzeu un FT232RL)
  • un PC amb GNU / Linux instal·lat i l’IDE arduino ben configurat, estic fent servir arduino IDE 1.8.0
  • un comandament a distància IR per provar el vostre dispositiu (fins i tot un de merda com els que es troben als kits d’arrencada d’arduino funcionarà)
  • un multímetre per depurar el tauler (espero que no el necessiteu, sort!)

La llista de materials:

  • 1 atiny85
  • 2 resistències 68R
  • 1 resistència de 1,5K
  • 1 resistència de 4,7K
  • 1 cristall de 16Mhz
  • 1 condensador de 22pF
  • 1 condensador de 0,1 uF
  • 1 condensador de 10uF
  • 2 díodes zener de 3,6 V 0,5 W
  • 1 connector macho USB tipus A.
  • 1 pin de tira amb 6 pins per programar i depurar el tauler.
  • 1 sensor IR TSOP31238
  • molt de cafè per mantenir-te despert

Abans de soldar el tauler definitiu, és probable que vulgueu fer un prototip de taulers per fer proves, seguint l’esquema adjunt a aquest instructiu, n’hi hauria prou per construir-lo.

Per connectar l’attiny85 al PC, el disseny final utilitza un connector USB tipus A que es troba soldat a la placa, però per al prototip haureu de fer un cable USB que pugueu connectar a una placa:

Soldeu en un petit tros de perfboard de 4 pins, a continuació, talleu un cable USB vell i soldeu els pins a 4 cables dins del cable USB:

  • el vermell és VCC (5V)
  • el negre és GND
  • el blanc és D-
  • el verd és D +

Mantingueu-ho tot junt amb cola calenta.

Ara hem de connectar el programador ISP (Arduino), l’adaptador USB a sèrie (FT232RL) i el sensor IR a l’attiny85.

Podeu deixar-los connectats junts per poder gravar diferents carregadors d’arrencada, carregar esbossos i comprovar el port sèrie sense canviar de cable, Per fer-ho, connecteu-ho tot seguint aquestes instruccions:

Programador ISP (Arduino): ens permet gravar carregadors d’arrencada i carregar esbossos

  • attiny85 PB0 (pin5) a pin11 (MOSI) en arduino
  • attiny85 PB1 (pin6) a pin12 (MISO) en arduino
  • attiny85 PB2 (pin7) a pin13 (SCK) en arduino
  • attiny85 RESET (pin1) amb pullup (4,6k a VCC) a pin10 en arduino
  • attiny85 VCC a 5V en arduino
  • attiny85 GND a GND en arduino

adaptador USB a sèrie (FT232RL): ens permet comprovar el port sèrie

  • attiny85 PB0 (pin5 RX) a TX al FT232RL
  • attiny85 PB2 (pin7 TX) a RX al FT232RL
  • attiny85 GND (pin4) a GND al FT232RL
  • com que attiny85 ja funciona amb l’arduino, no cal que connecteu el 5v al FT232RL; en cas contrari, connecteu: attiny85 VCC (pin8) a 5V al FT232RL

adaptador USB a sèrie (FT232RL) només per al calibratge del rellotge (només per al carregador d'arrencada "ATtiny85 @ 8MHz (oscil·lador intern; DBO desactivat)")

  • PB4 (pin3 RX) a TX a l'atiny85 FT232RL
  • PB3 (pin2 TX) a RX a l'atiny85 FT232RL
  • GND (pin4) a GND al FT232RL
  • ja que attiny85 ja funciona amb l’arduino, no cal que connecteu el 5v al FT232RL; en cas contrari, connecteu: attiny85 VCC (pin8) a 5V al FT232RL

Si utilitzeu un vidre de 16 MHz, connecteu-lo als pins PB3 (pin2) i PB4 (pin3) d'Attiny85 i connecteu cada pin a GND mitjançant un tap de 22pF cadascun.

Filtreu Attiny85 VCC amb condensadors de 0.1uF i 10uF que els connecten en paral·lel a GND

Connecteu el pin de sortida del sensor IR a l’attiny85 PB1 (pin6), enceneu-lo.

Construïu i connecteu la interfície USB:

  • GND (cable negre): connecteu-lo al GND comú (totes les bases estan connectades)
  • D- (cable blanc) connectat a attiny85 PB0 (pin5) mitjançant una resistència 68R, connecteu-lo també a terra mitjançant un zener de 3,6 V 0,5 W i estireu-lo fins a VCC amb una resistència de 1,5 K
  • D + (cable verd) connectat a PB2 mitjançant una resistència 68R, connecteu-lo a terra mitjançant un zener de 3,6 V 0,5 W
  • 5V, podeu deixar-lo sense connexió, ja que tot està alimentat per l'Arduino en aquesta etapa; en cas contrari, connecteu-lo a l'attiny85 VCC

Els díodes zener estan connectats de manera que els ànodes estan lligats a GND i els càtodes estan connectats a les línies de dades D + i D-.

Pas 3: Disseny final

Disseny final
Disseny final
Disseny final
Disseny final
Disseny final
Disseny final

Per al disseny final, podeu utilitzar perfboard amb components de forats passants o gravar el vostre propi tauler i utilitzar components smd. Per aprendre a gravar un tauler, només cal buscar-lo a Google, hi ha tutorials fantàstics disponibles en línia.

He gravat el meu propi tauler i estic molt content amb els resultats finals (tauler petit, estable i robust). Sí, sé que el tall és un xic, però no he pogut fer servir cap eina elèctrica tan tard a la nit. només heu de tallar el tauler amb les meves tisores.

Per cert, les traces de les imatges no són coure nu, s’han tractat amb un desagradable producte químic que llauna lleugerament el coure (se sospita que indueix càncer, per tant, utilitzeu-lo amb molta cura, globus de làtex i una màscara antipols):

Utilitzeu els esquemes anteriors per dissenyar el vostre disseny o només podeu utilitzar la meva petjada del pcb per gravar el tauler.

Pas 4: Gestió del programari

El circuit d’aquest projecte és molt fàcil, el programari requereix un esforç més gran.

Necessitem com a mínim 2 llibreries (una més si no utilitzeu un cristal) més 2 carregadors d’arrencada per fer que això funcioni. Quan vaig començar aquest projecte, vaig provar algunes biblioteques, de vegades no funcionaven i moltes vegades no estaven configurades per treballar amb un Attiny85 fora de la caixa (encara no ho sabia). Llavors vaig trobar problemes amb les biblioteques / carregadors d’arrencada que es superposaven a les interrupcions. Finalment, vaig haver de fer front a una bona quantitat d'errors quan vaig connectar el circuit final al meu PC. Tanmateix, no tenia aquesta guia, així que crec que estaria bé, seguiu els passos d'aquesta instrucció, si ho feu sense cometre errors, hauríeu d'estar bé:)

Ara hem d’instal·lar i configurar algunes biblioteques:

  • biblioteca v-usb per a arduino: aquesta biblioteca permet que el microcontrolador sigui reconegut pel PC com a teclat USB HID i l’utilitzarem per enviar cops de tecles al PC. Aquesta biblioteca necessita alguns canvis per ser compatible amb attiny85
  • biblioteca tinytuner només si no feu servir un cristall de 16 MHz. Haureu de calibrar el rellotge intern del microcontrolador. Aquesta biblioteca funciona fora de la caixa.
  • Biblioteca Attiny-IR per interactuar amb el sensor IR. Aquesta biblioteca funciona fora de la caixa.

També necessitem 2 carregadors d'arrencada:

  • Versió del programari Dog, amb la interfície sèrie disponible. Aquest carregador d’arrencada necessita una petita modificació per treballar amb attiny85, ja que utilitza el temporitzador1 per a la funció millis () i no funcionarà amb la biblioteca IR. Hem de canviar el temporitzador per timer0.
  • Versió Mellis, carregador d’arrencada estable que utilitzarem a la fase final. Això funciona fora de la caixa.

Pas 5: Instal·lació i configuració de la biblioteca V-usb

Baixeu-vos la biblioteca de https://code.google.com/archive/p/vusb-for-arduin … Descomprimiu el fitxer i copieu la carpeta biblioteques / UsbKeyboard a la carpeta de biblioteques de dibuixos.

Ara heu d’editar un parell de fitxers per ser compatibles amb l’ATtiny85 (està configurat per funcionar amb arduino):

A) editeu usbconfig.h:

a "Configuració de maquinari" canvia:

#define USB_CFG_IOPORTNAME Dto ## define USB_CFG_IOPORTNAME B

i

#define USB_CFG_DMINUS_BIT 4per # definir USB_CFG_DMINUS_BIT 0

canvieu a "Configuració de maquinari opcional":

#define USB_CFG_PULLUP_IOPORTNAME Dto ## define USB_CFG_PULLUP_IOPORTNAME B

Per crear una especificació completa "HID compatible amb l'arrencada" (en cas contrari, no funcionaran cap tecla multimèdia), canvieu també:

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

i

#define USB_CFG_INTERFACE_PROTOCOL 0 // Teclat per # define USB_CFG_INTERFACE_PROTOCOL 0x01 // Teclat

Opcionalment, també podeu canviar el nom del fabricant i del dispositiu en les definicions següents:

#define USB_CFG_VENDOR_NAME

#define USB_CFG_DEVICE_NAME

B) editeu UsbKeyboard.h:

canvi:

PORTD = 0; // TODO: només per a pins USB? DDRD | = ~ USBMASK;

a

PORTB = 0; // TODO: només per a pins USB? DDRB | = ~ USBMASK;

Per permetre el canvi de codis de tecles posteriors a 101 també:

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

i

0x29, 0x65, // USAGE_MAXIMUM (aplicació de teclat) a: 0x29, 0xE7, // USAGE_MAXIMUM (aplicació de teclat)

És possible que hàgiu d'editar també aquests 3 fitxers:

usbdrv.husbdrv.cUsbKeyboard.h

i cada vegada que veieu PROGMEM afegiu "const" abans del nom del tipus de variable (per exemple: PROGMEN char usbHidReportDescriptor [35] ==> PROGMEM const char usbHidReportDescriptor [35])

Si això no està clar, visiteu

Podeu evitar tots aquests canvis si només descarregueu la biblioteca adjunta (he fet tots aquests canvis jo mateix) i només l’extreu a la carpeta de les biblioteques de quaderns de dibuixos:

UsbKeyboard configurat per attiny85

Edita: recentment he descobert que Alejandro Leiva (https://github.com/gloob) s'ha ocupat d'aquesta biblioteca i sembla que també funciona. També podeu provar la seva versió amb els canvis necessaris que he fet perquè funcioni amb l’atiny, de manera que si voleu comprovar-ho, només cal que l’extreieu a la carpeta de les biblioteques de dibuixos.

UsbKeyboard configurat per attiny85 (versió Alejandro Leiva)

Pas 6: Instal·lació de les biblioteques Attiny-IR i Tinytuner

A) Biblioteca Attiny-IR:

descarregueu-lo des de https://drive.google.com/open?id=0B_w9z88wnDtFNHlq … després descomprimiu-lo a la carpeta de biblioteques de quaderns de dibuixos.

B) Biblioteca Tinytuner:

Això només es necessita si no utilitzeu un vidre de 16 MHz, però creieu-me, tot i que també funciona sense el vidre, és molt més estable i costa uns quants centaus de dòlar, així que feu-ho senzill, feu servir un vidre aquesta biblioteca.

Encara no està convençut? D'acord, descarregueu la biblioteca des de https://storage.googleapis.com/google-code-archive … després descomprimiu-la a la carpeta de les biblioteques de quaderns de dibuixos.

Ja hem acabat amb les biblioteques, ara passem a instal·lar els carregadors d’arrencada.

Pas 7: Instal·lació i configuració dels carregadors d'arrencada

Instal·larem dos carregadors d’arrencada; el de Mellis, segons la meva experiència, és més estable i l’utilitzarem a l’esbós final. L’altre desenvolupat per Rowdy Dog Software és un nucli increïble, molt petit i amb una interfície sèrie integrada disponible, però el meu comandament es va estavellar després d’haver-hi passat, de manera que farem servir aquest carregador d’arrencada només per calibrar el rellotge intern attiny85 i descodificar el comandament a distància. botons.

Sé que hi ha biblioteques disponibles per donar a les capacitats de sèrie de l'attiny85, però després haureu de modificar les biblioteques que utilitzen l'objecte de sèrie … M'agrada més aquest procediment.

Comencem per la instal·lació:

A) Mellis bootloader:

només cal obrir les preferències IDE d'Arduino i afegir a les URL addicionals del gestor de taulers:

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

A continuació, obriu el gestor de taules Arduino IDE i cerqueu attiny, instal·leu les taules des de Mellis.

B) El carregador d'arrencada del programari Rowdy Dog:

descarregueu el carregador d'arrencada des de

Descomprimiu el fitxer i copieu la petita carpeta del quadern de dibuixos / maquinari (creeu aquesta carpeta si encara no existeix). a continuació, aneu a la carpeta sketchbook / hardware / tiny / avr / i:

1) copieu el fitxer Prospective Boards.txt al fitxer boards.txt

2) editeu el fitxer platform.txt i feu alguns canvis:

Descomenteu la variable compiler.path i deixeu-la apuntant a la carpeta hardware / tools / avr / bin / de la carpeta d’instal·lació d’arduino:

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

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

A continuació, canvieu les variables següents assegurant-vos que tot estigui al seu lloc (aquests fitxers han d'existir, en cas contrari, indiqueu les variables cap als camins correctes):

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) editeu el fitxer cores / tiny / core_build_options.h i canvieu:

#define TIMER_TO_USE_FOR_MILLIS 1 a # define TIMER_TO_USE_FOR_MILLIS 0

Això és molt important, en cas contrari el receptor IR sortirà zeros per a cada botó. Aquesta sentència configura el temporitzador0 per a la funció millis () deixant el temporitzador1 disponible a la biblioteca IR. L'esbós final desactivarà el temporitzador0 de totes maneres, de manera que no tindreu disponibles ni les funcions millis () ni delay (). És possible que tingueu disponible la funció delayMicroseconds ().

Aquest carregador d’arrencada és mínim, però ha inclòs el suport d’objectes sèrie:

Attiny85 PB2 (pin7) és TX i PB0 (pin5) és RX

Podeu tenir una configuració amb el programador ISP (arduino) i l'adaptador de sèrie a usb connectats alhora, de manera que no cal canviar els cables massa sovint:

Ara tenim les biblioteques i els carregadors d’arrencada instal·lats i configurats correctament, s’ha acabat el treball més dur i podem començar a provar les coses.

Pas 8: gravar carregadors d'arrencada i penjar esbossos

Us recomano activar la sortida detallada a les preferències IDE d'Arduino perquè pugueu esbrinar qualsevol problema eventual.

Per gravar un carregador d’arrencada a l’Attiny85, heu de carregar l’exemple d’ISP a l’Arduino i, a continuació, seleccionar el programador Arduino com a ISP.

Ara col·loqueu un condensador de 10uF entre els pins de restabliment i terra a l’arduino (no és necessari per al procés de gravació, però sí per penjar esbossos a l’attiny85).

Ara l’arduino està preparat per gravar carregadors d’arrencada i carregar esbossos. Només heu de seleccionar el tauler adequat compatible amb el vostre attiny i gravar-lo.

Per carregar un esbós a l'Attiny85, carregueu-lo a l'IDE arduino i feu clic a "Puja amb el programador".

IMPORTANT: en penjar l’esbós hi ha 3 passos: recopilació, escriptura i verificació. Si la compilació i l'escriptura van funcionar correctament, però el procés de verificació falla, és possible que l'esbós funcioni igualment.

Pas 9: calibreu el rellotge intern d'Attiny85 (ometeu-ho si utilitzeu un vidre)

En cas que decidiu no utilitzar el cristall de 16Mhz, cal calibrar el rellotge attiny85, de manera que necessitarem un carregador d’arrencada amb una interfície sèrie disponible i utilitzarem la biblioteca tinytuner per obtenir el calibratge correcte.

Seguiu els passos següents

  • seleccioneu sota eines l'Arduino com a programador ISP
  • seleccioneu la placa "ATtiny85 @ 8MHz (oscil·lador intern; DBO desactivat)"
  • Suposo que teniu la connexió ISP preparada tal com es descriu abans de connectar-se, en cas contrari, feu les connexions
  • gravar el carregador d'arrencada
  • aquest carregador d'arrencada ha configurat diferents pins per a la interfície sèrie, utilitzeu aquesta configuració només per al carregador d'arrencada actual

- PB4 (pin3 RX) a TX al FT232RL attiny85 - PB3 (pin2 TX) a RX al FT232RL attiny85 - GND (pin4) a GND al FT232RL ja que el attiny85 ja funciona amb l’arduino no cal connectar-se el 5v al FT232RL, en cas contrari, connecteu-vos: attiny85 VCC (pin8) a 5V al FT232RL

  • pengeu l'exemple de tinytuner a l'attiny85
  • obriu el programa de pantalla per supervisar la comunicació en sèrie: screen / dev / ttyUSB0 9600
  • restableix l'attiny85 connectant el pin RESET (pin1) a GND (només un moment), s'hauria de mostrar un missatge de benvinguda a la finestra de la pantalla
  • Continueu enviant caràcters "x" individuals (sense retorn de carro; sense avançament de línia) fins que acabi el calibratge
  • anoteu en algun lloc el valor del calibratge (OSCCAL = 0x). Aquest és el valor que haureu de declarar als esbossos finals

Pas 10: descodifiqueu els botons remots

Ara és hora de descodificar els nostres botons remots i assignar-los a cops de tecles específics del PC, per fer-ho, seguiu els passos següents:

  • seleccioneu el tauler "ATtiny85 @ 16MHz (PLL intern; 4.3V BOD)" si no utilitzeu un cristall, "ATtiny85 @ 16 MHz (cristall extern; 4.3 V BOD" en cas contrari, llavors cremeu-lo
  • carrega l'esbós:
  • Si no utilitzeu un cristall, descomenteu la fila que conté la variable OSCCAL i assigneu-la al valor que heu trobat quan vau fer el calibratge del rellotge.
  • Suposo que el sensor està connectat tal com s’ha descrit anteriorment; en cas contrari, connecteu-lo
  • Suposo també que l'adaptador sèrie FT232RL a USB està connectat, en cas contrari, connecteu-lo
  • restableix l'attiny85 connectant el PIN RESET (pin1) a GND (només un moment)
  • prem repetidament els botons del comandament a distància i fes un cop d'ull a la finestra de la pantalla; has d'anotar l'últim número per a cada registre; cada botó pot produir 2 números diferents

Exemple:

REBUT D44 3396 REBUT 544 1348

Anoteu 3396 i 1348 en combinació amb el botó que acabeu de prémer; llavors heu de decidir què voleu fer amb aquest botó. Per exemple, podria voler que aquest botó enviés el codi de claus multimèdia "Augmentar el volum", i llavors he de trobar l'identificador d'aquest codi de clau. Per fer-ho, descarregueu el PDF:

Busqueu la secció "Pàgina de teclat / teclat" pàgina 53 i utilitzeu els números de la columna Identificació d'ús (Des) per enllaçar els botons remots als codis del teclat. En el nostre exemple, podem veure que el codi de clau per a "Augment de volum" és: 128.

Editeu el fitxer UsbKeyboard.h a la biblioteca UsbKeyboard des del paquet v-usb que hem instal·lat abans i afegiu-lo a les definicions existents si encara no hi és:

#define KEY_VOL_UP 128

Quan hàgim acabat amb tots els nostres botons de control remot i totes les definicions del fitxer UsbKeyboard.h estiguin a punt, podem passar a l'últim pas.

Pas 11: carregar l'esbós final i esperar el millor

S'està carregant l'esbós final i esperem el millor
S'està carregant l'esbós final i esperem el millor
S'està carregant l'esbós final i esperem el millor
S'està carregant l'esbós final i esperem el millor

Ara tenim tots els botons remots descodificats, el fitxer UsbKeyboard.h s’omple amb els nostres codis clau, de manera que ara podem carregar a l’IDE arduino l’esbós definitiu de:

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

Aquest fitxer és el fitxer exacte que estic fent servir per al meu receptor i funciona per a dos comandaments a distància diferents, de manera que és clar que haureu d’actualitzar-lo per poder treballar amb els vostres comandaments.

Si no utilitzeu un cristall, descomenteu la fila que conté la variable OSCCAL i assigneu-la al valor que heu trobat quan vau fer el calibratge del rellotge.

Fixeu-vos que a la funció de bucle hi ha moltes afirmacions com aquesta:

if (results.value == 3405 || results.value == 1357) {// fletxa cap amunt

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

}

Heu de crear les vostres pròpies declaracions, una per botó al comandament a distància. En la condició "si" heu d'introduir els resultats.valoreu els valors que heu trobat descodificant el comandament a distància i, com a argument del mètode UsbKeyboard.sendKeyStroke, heu de posar un dels codis clau ja definits al fitxer UsbKeyboard.h.

Es necessita la condició "if (lastStroke! = Results.value)" perquè alguns comandaments a distància envien el mateix codi dues vegades per cop i això impedeix el segon cop. No estic totalment segur i pot dependre del protocol IR que s'hagi programat al vostre comandament a distància (realment no sóc expert en protocols IR), però segons la meva experiència amb els meus comandaments a distància, cada botó pot produir 2 codis diferents i mentre premeu i manteniu premut el botó, envia el mateix codi, però si torneu a prémer el botó, envia l’altre. Per tant, sembla que els codis s’envien d’una manera alternativa, suposo que és un mode estàndard per saber quantes vegades realment premeu el botó.

D'acord, ja estem a punt d'acabar, només cal carregar l'esbós final, connectar-lo al PC i veure com va.

Per a aquest pas, és millor si desconnecteu l’arduino i l’usb de l’adaptador sèrie i només llavors, connecteu l’USB al port de la vostra PC (per si alguna cosa no funciona, el vostre circuit serà més fàcil de depurar).

Si tot funcionava bé, quan obriu un terminal i envieu l’ordre dmesg hauríeu de veure alguna cosa similar a la primera imatge d’aquest pas. Si hi ha hagut problemes, haureu de tenir errors com els que es troben a la segona imatge i heu de començar a depurar el vostre circuit i / o el programari. Una de les fonts dels errors inicials que tenia era un concentrador USB que no funcionaria amb el meu receptor IR (altres funcionaven), així que és millor que aquest darrer pas connecti el receptor IR directament al port del vostre PC. Els errors eventuals podrien ser difícils de trobar, però al final, com jo, aprendríeu molt i el preu a pagar val la pena, us ho asseguro.

Això és tot gent, feu-m'ho saber si noteu algun error en aquest instructiu i gaudiu del vostre flamant receptor USB IR.

Recomanat: