Forum: Mikrocontroller und Digitale Elektronik IR-Empfänger an Arduino per USB anbinden


von L. B. (texlon)


Lesenswert?

Hallo zusammen,

Bin neu hier bei euch.

Und nachdem ich gefühlt das gesamte Internet durchsucht habe, bin ich 
der Hoffnung ihr könnt mir vielleicht weiterhelfen.

Ich nutze einen Arduino UNO bzw. einen Trinket 5V (Adafruit) als 
Steuerung für einen NeoPixel LED Streifen. Da ich allerdings nicht nur 
simples EIN/AUS steuere, sonden auch Farbverläufe und 
Helligkeitswechseln (breathing) ist der Arduino rellativ gut beschäftig 
mit den Berechnungen.
Zur Zeit nutze ich Buttons und einen Poti zu Auswahl der Modi.

Nun möchte ich aber meine alte Apple Remote Fernbedienung nutzen um 
zwischen den verschiedenen Modi auch aus der Ferne umschalten zu können.

Ich hab herausgefunden, dass eine Library existiert mit welcher ich 
einen IR-Empfänger (z.B. Vishay TSOP4838) auswerten könnte.
Allerdings habe ich die Befüchtung, dass die ganzen Interrupts den 
Ablauf stören würden. Also das durch das polling und parsen die 
Berechnungen gestört werden. Klärt mich ruhig auf wenn ich mich hier 
irre.

Also bin ich auf die Suche gegangen und habe aus meinem alten Macbook 
den IR-Empfänger ausgebaut und habe erstaunt festgestellt, dass dort 
noch eine Platine mit µC dranhängt und 4 Kabel von der Platine aufs MoBo 
vom Mac gingen -> USB? Hab also mal nen USB Kabel geopfert, die Litzen 
verbunden und an den PC... Tja was soll ich sagen ist scheinbar ein 
fertiger IR-Decoder (Am Mac funktioniert es sogar sofort wie gewohnt).

Hab mir dann den Datenstrom mal angeschaut:
1
Bulk or Interrupt Transfer:
2
Pipe Handle: 0x10855af8 (Endpoint Adress: 0x82)
3
4
Get 0x5 bytes from the Device
5
6
25 87 EE 5E 05 -- > Play/Pause
7
25 87 EE 5E 06 -- > Fwd
8
25 87 EE 5E 09 -- > Back
9
25 87 EE 5E 0A -- > +
10
25 87 EE 5E 0C -- > -
11
25 87 EE 5E 03 -- > Menu

Es ändert sich also doch eigentlich nur das erste Byte.
Abgesehen davon, dass sich komischerweise das lezte Byte (die 25) hier 
und da in eine 26 wandelt, aber ich denke das kann man getrost 
ignorieren.
Die Verbindung ist inaktiv bis ein Button gedrückt wird. Dann wird 
gesendet, allerdings nur einmal bzw. wiederholt sich beim 
gedrückthalten.

Nur wie bekomm ich die Codes jetzt an den Arduino??? Ist dies überhaupt 
direkt möglich? Ich weiß hier einfach nicht weiter, vlt. denke ich zu 
kompliziert.

Am liebsten wäre mir halt nen TTL signal welches ich dann auswerte um 
den Arduino nicht an seine Grenze zu bewegen, aber das funktioniert halt 
so nicht denke ich.

Kann ich über die Serielle Schnittstelle irgendwie den Datenstrom vom 
Decoder kommen?

Ich hoffe ihr könnt mir hier weiterhelfen :)

Vielen Dank,

L

von W.A. (Gast)


Lesenswert?

L. B. schrieb:
> Allerdings habe ich die Befüchtung, dass die ganzen Interrupts den
> Ablauf stören würden. Also das durch das polling und parsen die
> Berechnungen gestört werden.

Dann nimm einen sparaten Arduino, der sich darum kümmert. Das kostet 
dich weniger als 2€. Die beiden Arduinos kannst du dann übre SPI 
kommunizieren lassen.

Oder willst du auf dem Arduino einen USB-Host hochziehen?

von PittyJ (Gast)


Lesenswert?

Ich habe einen TSOP an ein Arduino angeschlossen, um damit normale 
Fernbedienungen zu dekodieren. Ich habe eine schon existierende 
Bibliothek benutzt, die natürlich Rechenzeit und Programmspeicher 
bedarf. Abgefragt wird das dann über die serielle Schnittstelle.
Die Bibliothek nennt sich irremote, und benutzt Timer Interrupts.

Wenn das mit deinem Programm nicht mehr zusammen passt, dann würde ich 
auch 2 Arduinos empfehlen, die dann über I2C oder Uart kommunizieren.

von Mick (Gast)


Lesenswert?

Ein USB Gerät kannst du nicht einfach so an den Arduino hängen.
Ich würde wie schon erwähnt einen TSOP verwenden. Diesen kannst du ohne 
weitere Bauteile anschliessen. Hier ein Projekt, das deine 
Voraussetzungen erfüllt: 
https://learn.adafruit.com/using-an-infrared-library/controlling-neopixels-with-ir-1

von Mick (Gast)


Lesenswert?

Noch eine Frage am Range: Mit welchem Tool hast du deinen USB Datenstrom 
ausgelesen?

von L. B. (texlon)


Lesenswert?

Hi Leute,

vielen Dank erstmal, bin auch schon auf den Trichter gekommen mit dem 
zweiten Arduino, oder ich Steige um auf einen leistungsfähigeren 
(All-In-One-Lösung).

Hätte halt gerne den bestehenden Decoder benutzt, aber der Umweg
IR-Empf. -> Decoder -> Serial to USB -> USB to Serial -> Arduino is halt 
irgendwie schwachsinnig ;).

Ich bestell mir einfach mal son TSOP und teste... vlt. ist ja alles ganz 
easy und meine Angst ist unbegründet.

Mick schrieb:
> Noch eine Frage am Range: Mit welchem Tool hast du deinen USB Datenstrom
> ausgelesen?

Ach hab mir mal testweise das Tool installiert:
http://freeusbanalyzer.com/
Ich ganz praktisch gewesen, aber ich haue es wieder von der Platte...

von Helen R. (elenrey)


Lesenswert?

Ein weiteres Dienstprogramm für die Überwachung von USB-Daten - USB Data 
Logger (http://www.eltima.com/products/usb-data-logger/)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.