Tabla de contenido:

Receptor USB IR ATtiny85: 11 pasos (con imágenes)
Receptor USB IR ATtiny85: 11 pasos (con imágenes)

Video: Receptor USB IR ATtiny85: 11 pasos (con imágenes)

Video: Receptor USB IR ATtiny85: 11 pasos (con imágenes)
Video: PROGRAMA ATTINY 85 DESDE ARDUINO UNO 2024, Mes de julio
Anonim
Receptor USB IR ATtiny85
Receptor USB IR ATtiny85

ADVERTENCIA, ESTE INSTRUCTABLE SE HA OBSOLETO

La biblioteca v-usb está diseñada para funcionar con el protocolo USB 1.1 que casi no existe en la actualidad. Con la llegada de USB3, tendrá más que un dolor de cabeza tratando de hacer que los dispositivos v-usb funcionen. Después de cambiar mi centro multimedia, tengo muchos problemas de estabilidad y aunque el receptor funciona, después de un tiempo deja de funcionar. No he tenido éxito al intentar arreglarlo. También hice una versión atmega328p pero esta tenía los mismos problemas. Usar un temporizador de vigilancia para restablecer la placa periódicamente tampoco ayudó, así que renuncio a v-usb.

Hágase un favor y no siga adelante con este instructivo a menos que sea con fines educativos. En su lugar, recomiendo comprar un módulo de chip ATmega 32U4 que ya ha integrado la interfaz USB y seguir esta guía:

www.sparkfun.com/tutorials/337

Luego, agregue un sensor de infrarrojos TSOP31238 y estará listo.

¡Hola, creadores! Este es un instructivo para construir un receptor IR USB que funcione usando un microcontrolador Attiny85. Comencé este proyecto para superar la falta de soporte (al menos soporte completo) para algunos controles remotos IR en el sistema operativo GNU / Linux. Siguiendo estas instrucciones, podría construir un receptor IR USB programable que funcione con cualquier control remoto IR por unos pocos dólares.

En primer lugar, este instructable no existiría sin el arduo trabajo de las personas que crearon las bibliotecas que utilizo aquí:

  • David A. Mellis por su attiny core
  • Software Rowdy Dog para su biblioteca TinyTuner
  • Rowdy Dog Software para su minúsculo gestor de arranque
  • Rancidbacon (https://rancidbacon.com/) para su puerto arduino de la biblioteca v-usb (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • seejaydee para su biblioteca de IR para núcleos diminutos que se encuentran en los comentarios del código instructable https://www.instructables.com/id/Attiny-IR-librar… en https://www.instructables.com/id/Attiny-IR -librar…

A veces no es fácil encontrar al propietario adecuado de una biblioteca, así que en caso de que cometiera un error, deje un comentario y resolveré el problema lo antes posible.

Esta guía existe porque no encontré un tutorial / guía completo listo para usar (puede existir, pero no pude encontrarlo), así que reuní toda la información disponible en la web y después de una buena cantidad de pruebas y Errores Se me ocurrió una guía completa para construir un receptor de infrarrojos USB que funcione bastante bien.

Las principales fuentes de información que he seguido:

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

Paso 1: algunas consideraciones

  • No tengo un programador AVR ISP y no me apetece comprar uno, así que he usado un Arduino para programar el attiny85
  • No me importa ningún otro sistema operativo que no sea GNU / Linux, así que no sé si esto funcionará de otra manera.
  • hay otras bibliotecas de infrarrojos, pero no pude hacer que funcionen ni siquiera con un arduino. Sin embargo, tenga en cuenta que comencé con un conocimiento limitado sobre las bibliotecas de infrarrojos. Tal vez podría hacer que funcionen ahora, después de la experiencia adquirida en el tratamiento de una gran cantidad de problemas. De todos modos, estaba perdido y desesperado antes de encontrar la biblioteca que me proporcionó Seejaydee y la he usado desde entonces (¡muchas gracias hombre!).
  • Hay otras configuraciones de hardware, pero solo he usado la que usa 5V para alimentar el attiny85 y dos diodos Zener de 3.6V 0.5W para sujetar el voltaje de las líneas de datos, funciona fuera de la caja, así que no me metí con otras configuraciones.
  • Puede usar un cristal de 16Mhz o puede usar la biblioteca tinytuner para calibrar el reloj interno de su attiny85. Recomiendo encarecidamente el uso del cristal, es mucho más estable y probablemente te ahorrará muchos dolores de cabeza.
  • Estoy usando aquí dos cargadores de arranque diferentes para el attiny85:

a) Versión del software Rowdy Dog, tiene integrada una interfaz serial que es muy chula y es muy pequeña para que tengas más espacio para tu programa y otras librerías. El problema es que, por algunas razones, aunque funciona bastante bien, después de un tiempo el dispositivo USB se desconectó (puede encontrar los problemas con el comando dmesg). No sé si esto es un problema del núcleo o una combinación mixta del núcleo más las bibliotecas elegidas, así que después de un tiempo decidí usar este núcleo solo para decodificar las teclas remotas y calibrar el reloj (cuando no estoy usando un 16Mhz cristal). Después de eso, simplemente grabo el gestor de arranque Mellis y subo el boceto definitivo que no usa la interfaz serial.

b) Versión Mellis, gestor de arranque estable, lo he usado en muchos proyectos. Siempre habría usado este cargador de arranque si hubiera incluido una interfaz en serie. Utilizo este núcleo en el boceto final después de decodificar todas las teclas de mis controles remotos.

Paso 2: comencemos con el hardware

Comencemos con el hardware
Comencemos con el hardware
Comencemos con el hardware
Comencemos con el hardware
Comencemos con el hardware
Comencemos con el hardware

Herramientas que necesita:

  • una placa compatible con arduino
  • un adaptador de serie a usb para decodificar sus llaves remotas (solo use un FT232RL)
  • una PC con GNU / Linux instalado y el IDE de arduino configurado correctamente, estoy usando IDE de arduino 1.8.0
  • un control remoto IR para probar su dispositivo (incluso uno de mierda como los que se encuentran en los kits de inicio de arduino funcionará)
  • un multímetro para depurar tu placa (espero que no lo necesites, ¡buena suerte!)

La lista de materiales:

  • 1 attiny85
  • 2 resistencias 68R
  • 1 resistencia de 1.5K
  • 1 resistencia de 4.7K
  • 1 cristal de 16Mhz
  • 1 condensador de 22pF
  • 1 condensador de 0.1uF
  • 1 condensador de 10 uF
  • 2 diodos Zener de 3.6V 0.5W
  • 1 conector macho USB tipo A
  • 1 tira pin con 6 pines para programar y depurar la placa.
  • 1 sensor de infrarrojos TSOP31238
  • mucho café para mantenerte despierto

Antes de soldar la placa definitiva, probablemente desee hacer un prototipo de placa para pruebas, seguir el esquema adjunto a este instructivo debería ser suficiente para construirlo.

Para conectar el attiny85 a la PC, el diseño final usa un conector USB tipo A que está soldado a la placa, pero para el prototipo necesitará hacer un cable USB que pueda conectar a una placa:

Suelde en un pequeño trozo de placa de 4 pines, luego corte un cable USB viejo y suelde los pines a 4 de los cables dentro del cable USB:

  • rojo es VCC (5V)
  • el negro es GND
  • el blanco es D-
  • el verde es D +

Mantenga todo junto con pegamento termofusible.

Ahora necesitamos conectar el programador ISP (Arduino), el adaptador USB a serie (FT232RL) y el sensor IR al attiny85.

Puede dejar conectados todos juntos para que pueda grabar diferentes cargadores de arranque, cargar bocetos y verificar el puerto serie sin cambiar los cables, Para ello, conecta todo siguiendo estas instrucciones:

Programador ISP (Arduino): esto nos permite grabar bootloaders y cargar bocetos

  • 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) con pullup (4.6k a VCC) al pin10 en arduino
  • attiny85 VCC a 5V en arduino
  • attiny85 GND a GND en arduino

adaptador usb a serie (FT232RL): esto nos permite comprobar el puerto serie

  • attiny85 PB0 (pin5 RX) a TX en el FT232RL
  • attiny85 PB2 (pin7 TX) a RX en el FT232RL
  • attiny85 GND (pin4) a GND en el FT232RL
  • dado que el attiny85 ya está alimentado por el arduino, no necesita conectar el 5v en el FT232RL, de lo contrario conecte: attiny85 VCC (pin8) a 5V en el FT232RL

adaptador usb a serie (FT232RL) solo para la calibración del reloj (solo para el cargador de arranque "ATtiny85 @ 8MHz (oscilador interno; BOD desactivado)")

  • PB4 (pin3 RX) a TX en el FT232RL attiny85
  • PB3 (pin2 TX) a RX en el FT232RL attiny85
  • GND (pin4) a GND en el FT232RL
  • dado que el attiny85 ya está alimentado por el arduino, no necesita conectar el 5v en el FT232RL, de lo contrario conecte: attiny85 VCC (pin8) a 5V en el FT232RL

Si usa un cristal de 16Mhz, conéctelo a los pines PB3 (pin2) y PB4 (pin3) de Attiny85 y conecte cada pin a GND también a través de una tapa de 22pF cada uno.

Filtro Attiny85 VCC con condensadores de 0.1uF y 10uF conectándolos en paralelo a GND

Conecte el pin de salida del sensor IR al attiny85 PB1 (pin6), enciéndalo.

Construya y conecte la interfaz usb:

  • GND (cable negro): conéctelo al GND común (todas las conexiones a tierra se conectan juntas)
  • D- (cable blanco) conectado a attiny85 PB0 (pin5) a través de una resistencia 68R, conéctelo también a tierra a través de un zener de 3.6V 0.5W y tírelo a VCC con una resistencia de 1.5K
  • D + (cable verde) conectado a PB2 a través de una resistencia 68R, conéctelo a tierra a través de un zener de 3.6V 0.5W
  • 5V, puede dejarlo desconectado ya que todo está encendido por el Arduino en esta etapa, de lo contrario conéctelo al attiny85 VCC

Los diodos Zener están conectados de modo que los ánodos estén conectados a GND y los cátodos estén conectados a las líneas de datos D + y D-.

Paso 3: Diseño final

Diseño final
Diseño final
Diseño final
Diseño final
Diseño final
Diseño final

Para el diseño final, puede usar perfboard con componentes de orificio pasante o grabar su propia placa y usar componentes smd. Para aprender a grabar un tablero, solo busque en Google, hay increíbles tutoriales disponibles en línea.

He grabado mi propia tabla y estoy muy contento con los resultados finales (tabla pequeña, estable y robusta). Sí, sé que el corte apesta, pero no pude usar ninguna herramienta eléctrica tan tarde en la noche y solo corta la tabla con mis tijeras de hojalatero.

Por cierto, las huellas en las imágenes no son de cobre desnudo, han sido tratadas con un químico desagradable que tinte ligeramente el cobre (se sospecha que induce cáncer, así que úselo con mucho cuidado, globos de látex y una mascarilla antipolvo):

Use los esquemas anteriores para diseñar su diseño o simplemente puede usar mi huella de PCB para grabar su tablero.

Paso 4: lidiar con el software

El circuito en este proyecto es muy fácil, el software en cambio requiere un esfuerzo mayor.

Necesitamos al menos 2 bibliotecas (una más si no está usando un cristal) más 2 cargadores de arranque para que esto funcione. Cuando comencé este proyecto probé algunas bibliotecas, a veces no funcionaban y muchas veces simplemente no estaban configuradas para funcionar con un Attiny85 listo para usar (aún no lo sabía). Luego encontré problemas con las interrupciones superpuestas de bibliotecas / cargadores de arranque. Finalmente tuve que lidiar con una buena cantidad de errores cuando conecté el circuito final a mi PC. Sin embargo, no tenía esta guía, así que creo que estaría bien, solo siga los pasos en este instructivo, si lo hace sin cometer errores, debería estar bien:)

Ahora necesitamos instalar y configurar algunas bibliotecas:

  • v-usb para biblioteca arduino: esta biblioteca permite que el microcontrolador sea reconocido por la PC como un teclado USB HID, y lo usaremos para enviar pulsaciones de teclas a la PC. Esta biblioteca necesita algunos cambios para ser compatible con attiny85
  • la biblioteca tinytuner solo si no va a utilizar un cristal de 16Mhz. Luego deberá calibrar el reloj interno del microcontrolador. Esta biblioteca funciona desde el primer momento.
  • Attiny-IR-library para interactuar con el sensor IR. Esta biblioteca funciona desde el primer momento.

También necesitamos 2 cargadores de arranque:

  • Versión de software para perros, con la interfaz en serie disponible. Este gestor de arranque necesita un pequeño ajuste para funcionar con el attiny85, ya que usa el timer1 para la función millis () y no funcionará con la biblioteca IR. Necesitamos cambiar el temporizador a timer0.
  • Versión Mellis, gestor de arranque estable que usaremos en la etapa final. Esto funciona fuera de la caja.

Paso 5: instalación y configuración de la biblioteca V-usb

Descargue la biblioteca de https://code.google.com/archive/p/vusb-for-arduin … Descomprima el archivo y copie la carpeta bibliotecas / UsbKeyboard en la carpeta de bibliotecas de su cuaderno de bocetos.

Ahora necesita editar un par de archivos para que sean compatibles con el ATtiny85 (está configurado para funcionar con arduino):

A) editar usbconfig.h:

en "Configuración de hardware", cambie:

#define USB_CFG_IOPORTNAME Dpara ## definir USB_CFG_IOPORTNAME B

y

#define USB_CFG_DMINUS_BIT 4para # definir USB_CFG_DMINUS_BIT 0

en "Configuración de hardware opcional", cambie:

#define USB_CFG_PULLUP_IOPORTNAME Dpara ## definir USB_CFG_PULLUP_IOPORTNAME B

Para crear una especificación completa de "HID compatible con el arranque" (de lo contrario, no funcionarán las teclas multimedia), cambie también:

#define USB_CFG_INTERFACE_SUBCLASS 0 // Arrancar para # definir USB_CFG_INTERFACE_SUBCLASS 0x01 // Arrancar

y

#define USB_CFG_INTERFACE_PROTOCOL 0 // Teclado para # definir USB_CFG_INTERFACE_PROTOCOL 0x01 // Teclado

Opcionalmente, también puede cambiar el fabricante y el nombre del dispositivo en las siguientes definiciones:

#define USB_CFG_VENDOR_NAME

#define USB_CFG_DEVICE_NAME

B) editar UsbKeyboard.h:

cambio:

PORTD = 0; // TODO: ¿Solo para pines USB? DDRD | = ~ USBMASK;

para

PORTB = 0; // TODO: ¿Solo para pines USB? DDRB | = ~ USBMASK;

Para permitir que los códigos de teclas superiores a 101 cambien también:

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

y

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

Es posible que deba editar también estos 3 archivos:

usbdrv.husbdrv.cUsbKeyboard.h

y cada vez que vea PROGMEM agregue "const" antes del nombre del tipo de variable (por ejemplo: PROGMEN char usbHidReportDescriptor [35] ==> PROGMEM const char usbHidReportDescriptor [35])

Si esto no está claro, visite

Puede evitar todos estos cambios si simplemente descarga la biblioteca adjunta (hice todos estos cambios yo mismo) y simplemente la extrae dentro de la carpeta de bibliotecas de su cuaderno de bocetos:

UsbKeyboard configurado para attiny85

Editar: recientemente descubrí que Alejandro Leiva (https://github.com/gloob) se ha encargado de esta biblioteca y parece que también funciona bien. También puede probar su versión con los cambios necesarios que hice para que funcione con el attiny, por lo que si desea verificar esto, simplemente extráigalo dentro de la carpeta de bibliotecas de su cuaderno de bocetos.

UsbKeyboard configurado para attiny85 (versión Alejandro Leiva)

Paso 6: Instalación de las bibliotecas Attiny-IR y Tinytuner

A) Biblioteca Attiny-IR:

descárguelo de https://drive.google.com/open?id=0B_w9z88wnDtFNHlq … luego descomprímalo en la carpeta de bibliotecas de su cuaderno de bocetos.

B) Biblioteca Tinytuner:

Esto solo es necesario si no está usando un cristal de 16Mhz, pero créanme, aunque también funciona sin el cristal, es mucho más estable con él y cuestan unos centavos, así que manténgalo simple, use un cristal y omita esta biblioteca.

¿Aún no estás convencido? ok, descargue la biblioteca de https://storage.googleapis.com/google-code-archive … luego descomprímalo en la carpeta de bibliotecas de su cuaderno de bocetos.

Hemos terminado con las bibliotecas, ahora pasamos a instalar los cargadores de arranque.

Paso 7: instalación y configuración de los cargadores de arranque

Vamos a instalar dos bootloaders, el Mellis, según mi experiencia, es más estable y lo usaremos en el boceto final. El otro desarrollado por Rowdy Dog Software es un núcleo increíble, muy pequeño y con una interfaz serial integrada disponible, pero mi control remoto se bloqueó después de un tiempo, así que usaremos este cargador de arranque solo para calibrar el reloj interno attiny85 y decodificar nuestro control remoto. botones.

Sé que hay bibliotecas disponibles para dar las capacidades de serie de attiny85, pero luego necesitará modificar las bibliotecas que usan el objeto de serie … Me gusta más este procedimiento.

Comencemos con la instalación:

A) gestor de arranque Mellis:

simplemente abra las preferencias de Arduino IDE y agregue las URL adicionales del administrador de tableros:

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

Luego abra el administrador de placas Arduino IDE y busque attiny, instale las placas de Mellis. Ahora debería ver la ID de Arduino en las placas ATtiny25 / 45/85 y ATtiny24 / 44/84.

B) Pequeño gestor de arranque del software Rowdy Dog:

descargue el gestor de arranque de

Descomprima el archivo y copie la pequeña carpeta dentro de su cuaderno de bocetos / hardware (cree esta carpeta si aún no existe). luego muévase a la carpeta sketchbook / hardware / tiny / avr / y:

1) copie el archivo Prospective Boards.txt en el archivo boards.txt

2) edite el archivo platform.txt y realice algunos cambios:

Descomente la variable compiler.path y déjela apuntando a la carpeta hardware / tools / avr / bin / dentro de su carpeta de instalación de arduino:

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

cambiar tambiéncompiler. S.flags = -c -g -assembler-with-cpptocompiler. S.flags = -c -g -x ensamblador-con-cpp

Luego cambie las siguientes variables asegurándose de que todo esté en su lugar (esos archivos deben existir, de lo contrario, apunte las variables a las rutas correctas):

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) edite el archivo cores / tiny / core_build_options.hy cambie:

#define TIMER_TO_USE_FOR_MILLIS 1 para # definir TIMER_TO_USE_FOR_MILLIS 0

Esto es muy importante, de lo contrario, el receptor de infrarrojos emitirá ceros para cada botón. Esta declaración configura el timer0 para la función millis () dejando el timer1 disponible para la biblioteca IR. El boceto final deshabilitará el timer0 de todos modos, por lo que no tendrá disponibles las funciones millis () y delay (). En su lugar, puede tener disponible la función delayMicroseconds ().

Este gestor de arranque es mínimo, pero ha incluido soporte para objetos en serie:

Attiny85 PB2 (pin7) es TX y PB0 (pin5) es RX

Puede tener una configuración con el programador ISP (arduino) y el adaptador de serie a usb conectados al mismo tiempo para que no necesite cambiar los cables con demasiada frecuencia:

Ahora que tenemos tanto las bibliotecas como los cargadores de arranque instalados y configurados correctamente, el trabajo más duro está completo y podemos comenzar a probar las cosas.

Paso 8: Grabación de cargadores de arranque y carga de bocetos

Le recomiendo encarecidamente que active la salida detallada en las preferencias del IDE de Arduino para que pueda resolver cualquier problema eventual.

Para grabar un gestor de arranque en el Attiny85, debe cargar el ejemplo de ISP en Arduino y luego seleccionar el programador Arduino como ISP.

Ahora coloque un capacitor de 10uF entre los pines de reinicio y tierra en el arduino (no es necesario para el proceso de grabación, pero es para cargar bocetos en el attiny85).

Ahora el arduino está listo para grabar cargadores de arranque y cargar bocetos. Solo necesita seleccionar la placa adecuada compatible con su attiny y grabarla.

Para cargar un boceto en el Attiny85, cárguelo en el IDE de arduino y haga clic en "Cargar usando el programador".

IMPORTANTE: al subir el boceto hay 3 pasos, compilación, redacción y verificación. Si la compilación y la escritura funcionaron correctamente, pero el proceso de verificación falla, es posible que el boceto funcione de todos modos.

Paso 9: calibre el reloj interno Attiny85 (omita esto si usa un cristal)

En caso de que decida no usar el cristal de 16Mhz, necesita calibrar su reloj attiny85, por lo que necesitaremos un cargador de arranque con una interfaz en serie disponible y usaremos la biblioteca tinytuner para obtener la calibración correcta.

Siga los siguientes pasos

  • seleccione en herramientas el Arduino como programador ISP
  • seleccione la placa "ATtiny85 @ 8MHz (oscilador interno; DBO deshabilitado)"
  • Supongo que tiene la conexión ISP lista como se describe antes de conectarse; de lo contrario, haga las conexiones
  • quemar cargador de arranque
  • este cargador de arranque ha configurado diferentes pines para la interfaz serial, use esta configuración solo para el cargador de arranque actual

- PB4 (pin3 RX) a TX en el FT232RL attiny85 - PB3 (pin2 TX) a RX en el FT232RL attiny85 - GND (pin4) a GND en el FT232RL ya que el attiny85 ya está alimentado por el arduino que no necesita conectar el 5v en el FT232RL, de lo contrario conecte: attiny85 VCC (pin8) a 5V en el FT232RL

  • cargue el ejemplo de tinytuner en attiny85
  • abre el programa de pantalla para monitorear la comunicación serial: screen / dev / ttyUSB0 9600
  • restablezca el attiny85 conectando el pin RESET (pin1) a GND (solo un momento), debería aparecer un mensaje de bienvenida en la ventana de la pantalla
  • Continúe enviando caracteres 'x' únicos (sin retorno de carro, sin avance de línea) hasta que finalice la calibración
  • anote en algún lugar el valor de la calibración (OSCCAL = 0x). Este es el valor que deberá declarar en los bocetos finales.

Paso 10: decodifica los botones del control remoto

Ahora es el momento de decodificar nuestros botones remotos y asignarlos a pulsaciones de teclas específicas en la PC, para ello siga los siguientes pasos:

  • seleccione la placa "ATtiny85 @ 16MHz (PLL interno; 4.3V BOD)" si no usa un cristal, "ATtiny85 @ 16 MHz (cristal externo; 4.3 V BOD" en caso contrario, luego quémelo
  • cargue el boceto:
  • Si no usa un cristal, descomente la fila que contiene la variable OSCCAL y asígnela al valor que encontró cuando hizo la calibración del reloj.
  • Supongo que el sensor está conectado como se describe anteriormente, de lo contrario conéctelo
  • Supongo también que el adaptador FT232RL serial a usb está conectado; de lo contrario, conéctelo
  • reinicie el attiny85 conectando el pin RESET (pin1) a GND (solo un momento)
  • presione repetidamente los botones de su control remoto y verifique la ventana de la pantalla, debe anotar el último número para cada registro, cada botón puede producir 2 números diferentes

Ejemplo:

RECIBIDO D44 3396 RECIBIDO 544 1348

Anote 3396 y 1348 en asociación con el botón que acaba de presionar, luego debe decidir qué desea hacer con ese botón. Por ejemplo, podría querer que ese botón envíe el código de tecla multimedia "Subir volumen", luego necesito encontrar la identificación para ese código de tecla. Para hacer eso, descargue el PDF:

Busque la sección "Teclado / Página del teclado" en la página 53 y use los números en la columna ID de uso (Dec) para vincular los botones del control remoto a los códigos del teclado. En nuestro ejemplo, podemos ver que el código clave para "Subir volumen" es: 128.

Edite el archivo UsbKeyboard.h dentro de la biblioteca UsbKeyboard del paquete v-usb que instalamos antes y agréguelo a las definiciones existentes si aún no está allí:

#define KEY_VOL_UP 128

Cuando hayamos terminado con todos los botones de nuestro control remoto y todas las definiciones en el archivo UsbKeyboard.h estén listas, podemos pasar al último paso.

Paso 11: ¡Carga el boceto final y espera lo mejor

Cargando el boceto final y ¡Esperamos lo mejor!
Cargando el boceto final y ¡Esperamos lo mejor!
Cargando el boceto final y ¡espero lo mejor!
Cargando el boceto final y ¡espero lo mejor!

Ahora tenemos todos los botones del control remoto decodificados, el archivo UsbKeyboard.h está lleno con nuestros códigos clave, por lo que ahora podemos cargar en el IDE de arduino el boceto definitivo de:

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

Este archivo es el archivo exacto que estoy usando para mi receptor, y funciona para 2 controles remotos diferentes, por lo que claramente necesitarás actualizarlo para que funcione con tus controles remotos.

Si no usa un cristal, descomente la fila que contiene la variable OSCCAL y asígnela al valor que encontró cuando hizo la calibración del reloj.

Tenga en cuenta que en la función de bucle hay muchas declaraciones como esta:

if (results.value == 3405 || results.value == 1357) {// flecha hacia arriba

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

}

Debe crear sus propias declaraciones, una por botón en su control remoto. En la condición "if" debes poner en results.value los valores que has encontrado decodificando tu control remoto y como argumento del método UsbKeyboard.sendKeyStroke debes poner uno de los keycodes ya definidos en el archivo UsbKeyboard.h.

La condición "if (lastStroke! = Results.value)" es necesaria porque algunos controles remotos envían el mismo código dos veces por visita, y esto evita la segunda visita. No estoy totalmente seguro y puede depender del protocolo IR que se haya programado en su control remoto (no soy realmente un experto en protocolos IR) pero de acuerdo con mi experiencia con mis propios controles remotos, cada botón puede producir 2 códigos diferentes y mientras presiona y mantiene presionado el botón, envía el mismo código, pero si presiona el botón nuevamente, envía el otro. Entonces parece que los códigos se envían de manera alternativa, supongo que es un modo estándar para saber cuántas veces realmente presionas el botón.

Ok, ya casi terminamos, solo cargue el boceto final, conéctelo a la PC y vea cómo va.

Para este paso, es mejor si desconecta tanto el arduino como el adaptador USB a serie y solo entonces, conecte el USB al puerto de su PC (en caso de que algo salga mal, su circuito será más sencillo de depurar).

Si todo funcionó bien, cuando abres una terminal y envías el comando dmesg, deberías ver algo similar a la primera imagen de este paso. Si hubo problemas, debería tener errores como los que se encuentran en la segunda imagen y debe comenzar a depurar su circuito y / o el software. Una de las fuentes de los errores iniciales que tuve fue un concentrador USB que no funcionaría con mi receptor de infrarrojos (aunque otros funcionaron) … así que es mejor para este paso final conectar el receptor de infrarrojos directamente al puerto de su PC. Los eventuales errores pueden ser difíciles de encontrar, pero al final, como yo, aprenderías mucho y el precio a pagar vale la pena, te lo aseguro.

Eso es todo amigos, avíseme si nota algún error en este instructivo y disfrute de su nuevo receptor USB IR.

Recomendado: