Saltar al contenido

Ingeniería inversa: bombilla LED RGB con control remoto IR

julio 10, 2021
F2OHH73HM8D51VF

Compramos 20 de estas bombillas LED RGB para una fiesta en el trabajo, pero me decepcionaron un poco las funciones de atenuación del color que proporcionaban. Así que decidí desarmar uno, aplicar ingeniería inversa al protocolo IR y ver si tenía más funciones que las disponibles en el control remoto IR.

Otros instructables relacionados con la ingeniería inversa:
Si encuentra interesante este instructivo, debería echarle un vistazo. También profundiza en las herramientas utilizadas en este instructivo.

https://www.instructables.com/id/USB-controlled-home-automation-hack/

Paso 1: los objetivos del producto y del proyecto

El producto y los objetivos del proyectoEl producto y los objetivos del proyecto

Esta es una bombilla LED RGB realmente barata que cabe en un casquillo de bombilla E27 normal. Tiene un control remoto por infrarrojos que te permite elegir entre diferentes modos y colores.

Quiero usarlos en el modo de desvanecimiento de color, pero el desvanecimiento de color en estas bombillas apesta. Por alguna razón, atenúan los LED a un color casi blanco, lo que no se ve tan bien.

Espero encontrar algunos modos ocultos o formas alternativas de controlar esto sin demasiado trabajo.

Paso 2: olfatear el control remoto

Olfatear el control remotoOlfatear el control remotoOlfatear el control remoto

La primera cosa obvia que debe hacer aquí es oler el LED de infrarrojos del control remoto.

Soldé algunos cables al LED y volví a poner la tapa para poder acceder fácilmente a la señal mientras presionaba los botones.

Paso 3: frecuencia portadora de infrarrojos

Frecuencia portadora de infrarrojosFrecuencia portadora de infrarrojosFrecuencia portadora de infrarrojos

Ahora tengo acceso a los datos enviados por el control remoto por infrarrojos, genial. Sin embargo, los mandos a distancia por infrarrojos utilizan una frecuencia portadora para transmitir sus datos binarios. Esto crea una gran cantidad de datos basura en el analizador lógico. Vea la captura de pantalla.

Una cosa importante que puedo obtener del control remoto por infrarrojos es la frecuencia portadora. Usé la medición de frecuencia en mi osciloscopio para medir esto.

Paso 4: Apagar la bombilla LED de la red eléctrica

Apagar la bombilla LED de la red eléctricaApagar la bombilla LED de la red eléctricaApagar la bombilla LED de la red eléctrica

Quiero hurgar en la bombilla LED para oler la señal del receptor de infrarrojos, sin embargo, no quiero sondear este producto de porcelana barata mientras está conectado a una red eléctrica de 230 voltios.

Medí el voltaje en GND y VCC, 5 voltios.

Conecté algunos cables a GND y VCC. También desconecté el VCC de la fuente de alimentación de las bombillas.
Ahora estoy listo para sondear alrededor de la bombilla sin exponerme ni a mí ni a mi equipo al potencial de la red.

Paso 5: olfatear la bombilla

Oler la bombillaOler la bombillaOler la bombilla

Ahora que la bombilla no estaba funcionando con la red eléctrica, sino con una fuente de alimentación aislada, pude hurgar y encontrar el pin de datos en el receptor de infrarrojos.

Le soldé un cable, metí mis cables de depuración a través del disipador de calor y volví a poner la tapa en la bombilla LED.

El pequeño LED en el interior era demasiado brillante para trabajar en él sin la tapa … afortunadamente, el disipador de calor tenía pequeñas ranuras para que pasaran los cables.

Como era de esperar, el receptor de infrarrojos de la bombilla LED elimina la frecuencia portadora de 38 KHz, dejándome con una señal mucho más limpia para sondear.

En la captura de pantalla del analizador lógico, puede ver ambas señales, una con y otra sin la frecuencia portadora de 38 KHz.

La señal del receptor de infrarrojos es inversa, por lo que GND es alta y VCC es baja.

Ahora finalmente estoy listo para entrar en el tema interesante; averiguar cómo se comunica esta cosa.

Paso 6: el camino equivocado

La forma incorrectaLa forma incorrecta

Compartiré con ustedes un enfoque incorrecto que probé antes de entrar en la interpretación correcta de los datos.

Si observa la segunda imagen, verá un paquete capturado con el analizador lógico.

Comienza con un pulso de 9ms, luego una pausa de 4.5ms, luego vienen los bits de datos.

En los vacíos donde no hay bits de datos, hay espacio para exactamente un bit de datos. Esto me llevó a creer que este control remoto simplemente golpeó los bits de forma regular en serie. Esperaba que tal vez usara algún tipo de pulsos de longitud variable para codificar cada bit, pero no vi ninguna longitud variable, así que asumí (incorrectamente) que un pulso era un 1 lógico y un vacío era un 0 lógico.

Al hacer este tipo de cosas, me gusta capturar cada tipo de paquete y colocarlos en Gimp (photoshop de código abierto, un poco).

Después de pasar un tiempo analizando los datos, realmente no tenía ningún sentido, así que pensé que los estaba decodificando incorrectamente … lo cual resultó ser el caso.

Paso 7: el camino correcto

La direccion correctaLa direccion correctaLa direccion correctaLa direccion correcta

Busqué en Google protocolos remotos por infrarrojos y encontré este documento: http://www.vishay.com/docs/80071/dataform.pdf

Inmediatamente reconocí el formato NEC con su pulso de inicialización de 9 ms y una pausa de 4,5 ms seguida de datos.

El control remoto usó algún tipo de codificación de longitud de pulso después de todo.
Se envía un 0 lógico como un pulso de 560 microsegundos, seguido de una pausa de 560 microsegundos. (valores de temporización ca)
Se envía un 1 lógico como un pulso de 560 microsegundos, seguido de una pausa de 1650 microsegundos.

El paquete de infrarrojos consta de un pulso de 9 ms, una pausa de 4,5 ms, luego un byte de dirección y un byte de datos y, finalmente, un solo bit de parada.
Cada byte se transmite dos veces. Una vez normal y una vez con los bits invertidos. Entonces 0b11110000 se transmitiría como 0b11110000 y 0b00001111.

Como puede ver en las imágenes, el byte de dirección siempre es 0x00. No pasa nada interesante allí.

Volví al gimp y pinté los 0 lógicos con un punto rojo y los 1 con una línea verde. Luego escribí los bits en una hoja de cálculo. Los datos se parecían mucho a un recuento binario, solo que en orden aleatorio. Así que clasifiqué los datos por las columnas de bits que comienzan con MSB.

Como puede ver, solo se usan los 5 bits más significativos, y también no se usan algunos valores en los 5 bits superiores, lo que me deja con una pequeña esperanza de que estos bits puedan activar algunas características ocultas.

No es exactamente tan fácil de piratear como esperaba, pero aún así lo intentaré.

Paso 8: Introducción de nuevos comandos de infrarrojos

Presentación de nuevos comandos de infrarrojos

Quería ver si la bombilla LED aceptaba otros comandos además de los 24 comandos correspondientes a los 24 botones del control remoto.

Escribí un programa arduino para enviar comandos IR. Usé un temporizador para generar la frecuencia portadora de 38 KHz y algunas funciones para encender y apagar el temporizador.

El programa recorre los 256 bytes de comando posibles (0x00 a 0xFF) y los envía como paquetes remotos IR.

Resulta que NINGUNO de los bytes de comando además de los del control remoto hace nada 🙁
Gorrón.

En el lado positivo, pude controlar la bombilla LED del arduino sin ningún problema, pero eso no era exactamente lo que quería hacer: p

Además, el byte de dirección tampoco hace nada. La bombilla simplemente lo ignora. Cualquier dirección que probé parecía funcionar.

Si desea controlar una de estas bombillas led o cualquier otro dispositivo que utilice el protocolo NEC IR, puede modificar mi código para hacerlo. El código arduino se adjunta aquí.

Archivos adjuntos

Paso 9: Conclusión

Conclusión

Este producto era muy pirateable en el sentido de que podía entrar fácilmente y aplicar ingeniería inversa.

Si lo que quisiera hacer fuera reemplazar el control remoto IR que viene con el producto por un Arduino, lo llamaría un gran éxito. Sin embargo, quería que la bombilla LED hiciera algo más o algo diferente.

Si desea que una de estas bombillas sea controlada por computadora, puede modificar fácilmente mi código arduino para que eso suceda.

Sé el primero en compartir

    48 comentarios

    0
    LaurentV23
    LaurentV23

    Hace 2 años en Paso 7

    con mi control remoto (el mismo que el tuyo):
    1er byte: dirección
    2 bits siguientes: columna de botón remoto (00xx-> 1, 10xx-> 2, 01xx-> 3, 11xx-> 4)
    2 bits siguientes: fila de botones remotos (xx00-> 1, xx10-> 2, xx01-> 3, xx11-> 4)
    4 bits siguientes: columna / fila si hay más de 4 botones por columna / fila (00-> 1 a 4, 10-> 5 a 8, 01-> 9 a 12, …)
    siguiente byte: igual que el anterior, pero invertido

    0
    Jaap85
    Jaap85

    hace 3 años

    Compré un par de estas lámparas y todas funcionaron bien. Pero de repente, presioné un botón equivocado o algo así, la mitad de las lámparas están atascadas en un color. Ya no puedo hacer que funcionen usando el control remoto. Intenté desconectarlos de la corriente, pero las lámparas no se reiniciaban. Las otras lámparas funcionan bien con el control remoto, por lo que el control remoto no es el problema.

    Así que pensé: si pudiera restablecer la memoria de las lámparas a la configuración de fábrica, sería perfecto. El único problema es: ¿cómo?

    ¿Alguno de ustedes tiene alguna idea de cómo puedo restablecer la memoria de las lámparas?

    0
    PetDie
    PetDie

    Hace 4 años

    Entonces, no soy beta. Asombrado por lo que aprendiste con el control remoto y la bombilla. Pero: mirando en el mismo bastidor de la tienda donde se vende la bombilla RGB, (a 6,50 euros el robo), me llamó la atención: Una tira de luz RGB, (14,50 euros) misma fuente, otro mando. ¡Con botones personalizados! Incluso podría comprar esto solo para averiguar si también funcionará en la bombilla.

    0
    warbringer24
    warbringer24

    Responder hace 4 años

    ¿Terminaste comprando esto? Si es así, ¿cómo funcionó?

    0
    sfahey
    sfahey

    Hace 4 años

    ¡Hola a todos!

    Tengo una pregunta relacionada con este tipo de circuitos de control LED multicolores. Compré 20 de Crayola Multi-Colored Party Bulbs, que son básicamente lo mismo que se muestra aquí. Mi problema es que la mitad de las luces cuando se apagan mantendrán su última configuración de modo, pero la otra mitad se restablece cada vez a la configuración predeterminada. Abro uno de cada uno para mirar el circuito e incluso traté de dibujarlo para encontrar la diferencia, pero no encontré nada. Las luces LED que se reinician al apagar se compraron en un paquete de 2, en comparación con el paquete individual que guarda su configuración.

    ¿Alguien sabe cómo podría modificar el circuito para que los que se reinicien mantengan su última configuración? Adjunto foto de los dos circuitos. Los circuitos VERDES son el problema. Intenté buscar respuestas en Internet, pero fue en vano.

    Cualquier ayuda sería apreciada.

    Sean

    0
    diy_bloke
    diy_bloke

    Hace 4 años

    Aquí también hay un artículo bastante interesante sobre este tema.

    http: //blog.allgaiershops.com/2012/05/10/reversing …

    El problema que tengo con mi control remoto es que envía un código diferente cada vez que presiono un botón determinado, aunque parece que tengo el mismo control remoto que usted (lo que significa que las carcasas tienen el mismo aspecto).
    Incluso si, por ejemplo, el transmisor está destinado a enviar una serie de códigos para diferentes aparatos, uno esperaría algún patrón

    0
    Ingenerare
    Ingenerare

    Hace 5 años en Introducción

    Agradable intructible. Quiero controlar mi tira RGB con mi arduino también pero no tengo antecedentes eléctricos. Así que intenté hacerlo pero fracasé por razones desconocidas.

    ¿Puede decirme qué tipo de resistencia utiliza para su LED de infrarrojos? (No puedo verlo en tu foto) Ahora uso una resistencia de 1K (ver imagen) y un LED IR de un viejo contoler.

    0
    Ingenerare
    Ingenerare

    Responder hace 5 años el Introducción

    Ahora probé 100 ohmios. todavía no hay progreso

    0
    diy_bloke
    diy_bloke

    Responder hace 4 años

    Sé que ha pasado un año pero me llevó a agregar mis 2 centavos:

    un led IR tiene un …

    close