Festverdrahteter RGB-LED-Controller anstelle von Infrarot

Ich denke, die meisten von euch kennen diese billigen RGB-Strip-Controller mit IR-Fernbedienung. Ich versuche, es über fest verdrahtetes gpio von raspberry3 zu steuern, indem ich einfach den IR-Empfänger austausche.

aus

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

Zu

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

Ich habe diese Informationen zu der Box gefunden:

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

Pinbelegung auf diesem µ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

RGB-IR-Controller geöffnet

Ist es möglich?!

  • 1. Steuerung über kabelgebundenen GP3 (IR)-Port?

    • Scheint, die Trägerdemodulation (35KHz) befindet sich im IR-Empfänger.
    • Wie muss ich die IR-Daten codieren/recodieren, damit sie vom µc verstanden werden?
    • Ist es ein einfacher Pseudo-Serial-In-Port mit einer ausgeprägten Baudrate?
    • klar sagen "ich möchte den IR-Pfad umgehen"
    • profitieren kurze Befehle und keine Hektik auf Himbeere
    • Nachteil nur in der Lage, µc-gespeicherte Befehle zu verwenden
  • 2. direkt an den NFET anschließen (Q1-Q3 auf dem Bild)?

    • Muss ich 3,3V auf 5V leveln?
    • profitieren alles ist möglich
    • Nachteil muss alles auf Himbeere codiert werden

Antworten (2)

Beides ist möglich.

IR, zuerst benötigen Sie ein IR-Empfänger-Setup. Nehmen Sie das von der Fernbedienung eingehende Signal auf. Dann richten Sie eine einfache IR-LED-Schaltung ein, die von einem Transistor / FET gesteuert wird, der von GPIO gesteuert wird. Senden Sie die gewünschten Befehle. Es ist nicht pseudoseriell, die Codes sind eher NEC (vielleicht RC5, aber NEC ist einfacher und häufiger). Eine beliebige Anzahl von IR-RPi-Fernbedienungsprojekten bei Google hilft dabei.

Den festen Draht entfernen Sie den vorhandenen IC. Verwenden Sie einen Pegelumsetzer, da 3,3 V wahrscheinlich nicht ausreichen werden, um den VGS-Schwellenwert für einen angemessen niedrigen Widerstand von Drain-Source, RDS (on), zu überschreiten. Diese Verschiebung kann ein einfacher npn-Transistor sein, aber Sie müssen Ihre Logik im RPI-Code umkehren.

Aktualisieren:

Ja, Sie könnten den IR-Empfänger umgehen. Es ist, wie Sie erwarten, ein Demodulator, der die 38-kHz-Trägerwelle (oder so) entfernt und die Daten weiterleitet. Ich glaube, es sollte ein aktives hohes Signal durch einen Pull-up sein. Dadurch können Sie die Abschnitte LED-Sender und IR-Empfänger überspringen. Da die Leitung einen 5-V-Pullup haben sollte, benötigen Sie lediglich einen einfachen NPN-Transistor, um den Pegel von 3,3 V auf 5 V zu verschieben. Auch hier wird die Logik invertiert, sodass eine logische 1 am RPI ein logisches Low am MCU-Eingang wäre. Sie müssen sicherstellen, dass nur die Daten unmoduliert gesendet werden.

Da Sie LIRC für das RPI verwenden, müssen Sie es richtig laden :

 sudo modprobe lirc_rpi softcarrier=0

Die Softcarrier- Option ist deaktiviert, um die Trägerwelle zu eliminieren, nur verfügbar auf lirc_rpi afaik, also hast du Glück gehabt.

Dies hängt von den Besonderheiten des verwendeten IR-Empfängers ab. Ein Bild von der Rückseite des Boards würde helfen. Sie sollten die Daten des IR-Empfängers trennen, um Interferenzen zu vermeiden.

hat die Frage aktualisiert. Mein Hauptziel war es, vom Raspberry-GPIO zum GP3 (IR)-Port fest zu verdrahten. aber ich weiß nicht, ob ich modulierte RC5/NEC-Befehle senden muss (weil die Demodulation im IR-Empfänger ist) oder was sonst.
@chmee aktualisiert. Auch ein Bild der anderen Seite würde helfen, ebenso wie der IR-Empfänger
Die Rückseite der Platine ist leer. Der IR-Empfänger wird nur mit den oberen 3 Kabeln verbunden Grün=VOUT Rot=VDD Schwarz=GND. Danke für deinen Einblick. Diesmal konnte ich die Wünsche mit Soft-PWM und Anschluss an den N_FET erfüllen.
@chmee kleiner Fehler. Ich sagte RC5, es ist höchstwahrscheinlich das NEC-Protokoll. Und als Sie versucht haben, die Daten direkt zu senden, haben Sie die Modulation deaktiviert? Welche Bibliothek hast du verwendet?
@chmee fand auch Informationen zum Deaktivieren des Netzbetreibers auf lirc_rpi. Versuchen Sie diese Option erneut.

(1) Ersetzen von IR-Durchgangsdraht

  • Ich hatte kein Glück, es zum Laufen zu bringen. Während Raspberry/Lirc die IR-Signale von der Fernbedienung erkannt hat, passiert nichts, wenn ich diese Daten per Kabel an den GP3 des µc sende. Gute Nachrichten, dieser IR-Empfänger funktioniert auch mit Raspberry/Lirc.

  • Bitte lesen Sie die Antwort von @Passerby.

lircd.conf-Beispiel

# 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) Verbindung zum SOT23 N-FET

  • Klappt wunderbar. Ich habe das gpio vom µc abgeschnitten, 4 Kabel angelötet und an die Himbeere angeschlossen, ohne Levelshift auf 5V. Erste Tests liefen gut.

Lötkabel an billigem IR-LED-Controller

Python-Beispiel:

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()
Gute Arbeit. Vergessen Sie nicht, dass Sie Ihre eigene Antwort akzeptieren können!
3,3 V funktionieren möglicherweise, aber der RDS ist höher und kann dazu führen, dass weniger Strom fließt, sich die Fets aufheizen und der LED-Streifen dunkler wird, je länger er ist (auch bekannt als je größer die Last). Das Datenblatt der Fets würde das bestätigen.