Controlador rgb-led-hardwire en lugar de infrarrojos

Creo que la mayoría de ustedes conocen estos controladores de tira rgb baratos con control remoto IR. Intento controlarlo a través de gpio cableado desde raspberry3, simplemente reemplazando el receptor de infrarrojos.

de

|ir remote|.......>...|IR-LED GP3 µc|

a

|rpi GPIO out|----->----|in GP3 µc|

Encontré esta información sobre la caja:

12 V In 
SMD5050 RGB Strip 4Wire
SOT23 NFET, max 3A
IR Sensor CHQB, 3Wire 
8bit 8pin µc with 5V TTL Logic
at least 3x PWM
maybe PIC12F617

Asignación de pines en este µc:

        GND - XX - 5V
        GP5 - XX - GP0 - B Out
        GP4 - XX - GP1 - R Out
IR IN - GP3 - XX - GP2 - G Out

http://ww1.microchip.com/downloads/en/DeviceDoc/41388A.pdf

controlador rgb-ir abierto

¡¿Es posible?!

  • 1. ¿controlar a través del puerto GP3 (IR) con cable?

    • Parece que la demodulación de la portadora (35 KHz) está dentro del receptor de infrarrojos.
    • ¿Cómo tengo que codificar/recodificar los datos ir para que los entienda el µc?
    • ¿Es un pseudo-serie en puerto simple con una velocidad de transmisión distintiva?
    • diciendo claramente "quiero pasar por alto el camino ir"
    • Benefíciese de los comandos cortos y sin prisas en raspberry.
    • desventaja solo capaz de usar comandos guardados en µc
  • 2. ¿Conectándose directamente al NFET (Q1-Q3 en la imagen)?

    • ¿Tengo que cambiar de nivel de 3,3V a 5V?
    • beneficio todo es posible
    • desventaja necesidad de codificar todo en frambuesa

Respuestas (2)

Ambos son posibles.

IR, primero necesita una configuración de receptor IR. Grabe la señal entrante desde el control remoto. Luego configure un circuito LED IR simple controlado por un transistor/FET controlado por GPIO. Envía los comandos que quieras. No es pseudo serial, los códigos suelen ser NEC (Quizás RC5, pero NEC es más simple y más común). Cualquier cantidad de proyectos de control remoto IR RPi en Google ayudará.

El cable duro, retire el IC existente. Utilice un cambiador de nivel, ya que es probable que 3,3 V no sean suficientes para superar el umbral de VGS para obtener una resistencia de drenaje-fuente baja adecuada, RDS (encendido). Este cambio puede ser un simple transistor npn, pero requiere que invierta su lógica en el código RPI.

Actualizar:

Sí, puede pasar por alto el receptor IR. Es como esperaba, un demodulador que elimina la onda portadora de 38 khz (más o menos) y pasa los datos. Creo que debería ser una señal alta activa a través de un pull-up. Esto le permite omitir las secciones del transmisor LED y el receptor IR. Dado que la línea debe tener un aumento de 5 V, todo lo que necesita es un transistor NPN simple para cambiar el nivel de 3,3 V a 5 V. Una vez más, la lógica se invierte, por lo que un 1 lógico en el RPI sería un lógico bajo en la entrada de la MCU. Debe asegurarse de que solo se envíen los datos, sin modular .

Como está utilizando LIRC para el RPI, debe cargarlo correctamente :

 sudo modprobe lirc_rpi softcarrier=0

La opción Softcarrier deshabilitada para eliminar la onda portadora, solo está disponible en lirc_rpi afaik, así que tuviste suerte.

Esto depende de las especificaciones del receptor IR utilizado. Una foto del reverso del tablero ayudaría. Le conviene desconectar los datos de los receptores de infrarrojos para evitar interferencias.

actualicé la pregunta. mi objetivo principal era cablear desde Raspberry-GPIO al puerto GP3 (IR). pero no sé si tengo que enviar comandos RC5/NEC modulados (porque la demodulación está dentro del receptor de infrarrojos) o qué más.
@chmee actualizado. También ayudaría una imagen del otro lado, al igual que el receptor de infrarrojos.
La parte trasera de la PCB está vacía. El receptor IR solo se conecta con los 3 cables superiores Verde=VOUT Rojo=VDD Negro=GND. Gracias por tu perspicacia. Esta vez pude cumplir los deseos con soft-PWM y conectándome al N_FET.
@chmee pequeño error. Dije RC5, lo más probable es que sea el protocolo NEC. Y cuando intentó enviar los datos directamente, ¿desactivó la modulación? ¿Qué biblioteca usaste?
@chmee también encontró información sobre cómo deshabilitar el operador en lirc_rpi. Intente esa opción de nuevo.

(1) reemplazo de IR a través del cable

  • No tuve suerte para que funcionara. Si bien raspberry/lirc reconoció las señales de infrarrojos del control remoto, no sucede nada cuando envío estos datos por cable a la GP3 de la µc. Buenas noticias, este receptor IR también funciona con Raspberry/Lirc.

  • Lea la respuesta de @Passerby.

ejemplo lircd.conf

# brand:         /home/pi/lircd.conf
#  
# -- it seems, this controller was built with many
# -- different commands. i ve got 5 at home and only two
# -- remotes/controllers are working with these commands
#
# usage  irsend SEND_ONCE LED LED_ON

begin remote

  name  /home/pi/lircd.conf
  name LED
  bits           16
  flags SPACE_ENC|CONST_LENGTH
  eps            30
  aeps          100

  header       9029  4479
  one           594  1651
  zero          594   530
  ptrail        592
  repeat       9029  2239
  pre_data_bits   16
  pre_data       0xF7
  gap          107958
  toggle_bit_mask 0x0

      begin codes
          LED_ON                   0xC03F
          LED_OFF                  0x40BF
          LED_BRIGHT               0x00FF
          LED_DARK                 0x807F
          LED_R                    0x20DF
          LED_G                    0xA05F
          LED_B                    0x609F
          LED_W                    0xE01F
          LED_FLASH                0xD02F
          LED_STROBE               0xF00F
          LED_FADE                 0xC837
          LED_SMOOTH               0xE817
          LED_RB                   0x48B7
          LED_RG                   0x28D7
          LED_BG                   0xA857
      end codes

end remote  

(2) Conexión al SOT23 N-FET

  • Funciona de maravilla. Corté el gpio de la µc, soldé 4 Cables y los conecté a la raspberry, sin un levelshift a 5V. Las primeras pruebas salieron bien.

cables de soldadura en controlador led ir barato

ejemplo de pitón:

import time
import RPi.GPIO as GPIO

pinR = 27
pinG = 17
pinB = 22
pwmFreq = 200

GPIO.setmode(GPIO.BCM)
GPIO.setup(pinR, GPIO.OUT)
GPIO.setup(pinG, GPIO.OUT)
GPIO.setup(pinB, GPIO.OUT)

pr = GPIO.PWM(pinR, pwmFreq)  # GPIO 27 frequency=200Hz
pg = GPIO.PWM(pinG, pwmFreq)
pb = GPIO.PWM(pinB, pwmFreq)
pr.start(0)
pb.start(0)
pg.start(0)

try:
    while 1:
        for dc in range(0, 101, 1):
            pr.ChangeDutyCycle(dc)
            pb.ChangeDutyCycle(dc)
            pg.ChangeDutyCycle(dc)
            time.sleep(0.02)
        for dc in range(100, -1, -1):
            pr.ChangeDutyCycle(dc)
            pb.ChangeDutyCycle(dc)
            pg.ChangeDutyCycle(dc)
            time.sleep(0.02)
except KeyboardInterrupt:
    pass
pr.stop()
pb.stop()
pg.stop()
GPIO.cleanup()
Buen trabajo. ¡No olvides que puedes aceptar tu propia respuesta!
3.3V puede funcionar, pero el RDS será más alto y puede conducir a que pase menos corriente, los pies se calienten y la tira de LED se atenúe cuanto más larga sea (es decir, cuanto mayor sea la carga). La hoja de datos de los pies lo confirmaría.