TV Fernbedienung mit einer Taste

Für eine Person mit Schwerstbehinderung möchte ich eine Fernbedienung bauen. Zum Anfang wäre es wohl nur Programmwechsel.
Meine Idee ist es den code für "Programm vor / zurück" auszulesen und dann zu verwerten.
Taste kurz gedrückt "Programm vor", Taste länge gedrückt "Programm zurück".
Ich muss jetzt erstmal weg, würde mich aber freuen wenn ich nachher ein paar Vorschläge bekäme. Irgendwo hatte ich schon mal einen sketch zum code auslesen, muss ich nur finden.
Andere Sache: funktioniert die Arduino IDE auch auf smartphone (Android)? Ich muss die Fernbedienung im KH auslesen und einpflegen.
Danke für Eure Unterstützung.

Es gibt paar APPS im Store nur was die taugen weiß nicht.

Nein.

Deinen Plan hast Du geschildert. Es ist nur nicht klar, was Du für Vorschläge brauchst.
Vielleicht solltest Du zu dem Projekt konkretere Fragen stellen.

Schau dir mal das TV-B-Gone Projekt an.

Es gibt mehrere Protokolle für IR Fernsteuerungen, wie die übertragenen Daten codiert werden.
Welcher Hersteller ist die Fernsteuerung / TV.

Bist Du sicher daß Dein bekannter motorisch die TAste sicher lange bzw kurz drücken kann?
Aber es ist kein Problem 2 Tasten statt 1 einzulesen.

Die IR Bibliothek kann auch mit einem Arduino mit Empfänger zB TSOP1836 Signale einlesen und erkennen welcher Code verwendet wird.

Grüße Uwe

So, bin wieder zurück,
@Kai-R. Vorschläge in Richtung Hardware, aber ich wurstel mich mal durch TV-B gone durch.
Hersteller des TV muss ich erfragen. Ob er die Taste sicher lange drucken kann muss ich testen. Viel Motorik und Kraft hat er nicht. Ehemaliger Top sportler nach einem Radunfall, so ähnlich wie der junge Mann von Gottschalk.
Danke erstmal.

Auch wenn es hardware- und softwaremäßig in eine andere Richtung geht: Ein ESP8266 mit IR-LED und IR-Fototransistor (als eine Einheit bei Aliexpress für 5€ zu bekommen) und ESPhome darauf lässt sich sowohl zum lesen der FB-Signale als auch zum Senden benutzen. Du müsstest nur noch einen Taster hinzufügen.

Zwei (oder mehr: Ein/Aus, P+ , P- ) große, kapazitiv wirkende Tastflächen könnten die Lösung sein.
Welche Codes die Original-Fernbedienung sendet, bzw. worauf der Fernseher reagiert, ist eine ganze andere, aber auch lösbare Aufgabe.

z.B. solche kapaztitive Touchsensoren benötigen überhaupt keine Kraft zum Betätigen.

Gruß Tommy

Und was ist mit drehen (Encoder) ?

Gerade beim schrauben kam mir die Idee mit reedkontakten.
Es ist zum heulen, die Pfleger haben einen Holzstock mit so einem touchpad kopf gebastelt, den bekommt er in seine verkrümmerte Hand. Es scheint eine enorme Anstrengung zu sein eine mail oder so zu senden.
Wir können so froh zu sein.
Nebenan liegt ein junger Mann Anfang 20. Da liegt der Kopf auf Watte, so wie er sagte.

Es gibt auch Touch Taster die man gar nicht drücken muß sondern nur e Nähe der oberfläche kommen muß.
Grüße Uwe

[Ups] Zu spät. [/ups]
Es gibt aber auch Arcade joysticks.

Reedkonatkte sind böse.
Da mußt Du einen Magenten in der richtigen Lage in die Nähe bringen.
Teilweise kann man das Verhalten mittels eines zweiten fix montierten Magenten total verändern.

Zum Schließen muß der N und S Pol zu den beiden Drahtanschlüssen paralell ausgerichtet sein. Ein Zusatzmagnet kann aus einem schließer einen Öffner machen.

Ich sehe keine Möglichkeit mit einem handgeführten Magneten einen Reedkontakt 100% sicher auszulösen.

Grüße Uwe

Schaumgummi zwischen Magnet und Reedkontakt wäre eine Möglichket, wobei Hall-IC mechanisch weniger empfindlich wären.

Wenn es auf einfache Bedienung ohne Kraft ankommt, sind in meinen Augen die kapazitiven Touch-Sensoren hinter einer dünnen Abdeckung die beste Wahl und da können es auch besser mehrere sein.

Gruß Tommy

Überzeugt, ich schaue mal nach einem kapazitiven Sensor.
Meine Überlegung geht dahin, den code der Fernbedienung auszulesen und diesen dann in einem programm zu verwenden. Hand kurz vor ein Programm vor, Hand länger vor Programm zurück.
Mal schauen was ich da hinbekomme. Ich melde mich dann mit weitern Überlegungen. Jetzt muss ich erstmal die hardware kaufen und die IDE auf ein altes laptop packen.
Danke

1 Like

Geht leider nicht, die Finger können nicht bewegt werden.

Dann würde ich es mal mit einem Joystick versuchen.

Wenn ich das Beispiel ReceiveDump.ino der Arduino-Bibliothek IRremote verwende, bekomme ich beim Drücken von "P+" und danach "P-" im seriellen Monitor folgende

Ausgabe
START C:\Users\Andreas\AppData\Local\Temp\arduino_modified_sketch_44484\ReceiveDump.ino from Oct 21 2024
Using library version 4.4.1
Ready to receive IR signals of protocols: NEC/NEC2/Onkyo/Apple, Panasonic/Kaseikyo, Denon/Sharp, Sony, RC5, RC6, LG, JVC, Samsung, FAST, Whynter, Lego Power Functions, Bosewave, MagiQuest, Universal Pulse Distance Width, Hash at pin 2
8000 us is the (minimum) gap, after which the start of a new IR packet is assumed
20
Because of the verbose output (>200 ms at 115200 baud), repeats are not dumped correctly!

If you receive protocol NEC, Samsung or LG, run also ReceiveDemo to check if your actual protocol is eventually NEC2 or SamsungLG, which is determined by the repeats



Protocol=Samsung Address=0x7 Command=0x12 Raw-Data=0xED120707 32 bits LSB first

Send with: IrSender.sendSamsung(0x7, 0x12, <numberOfRepeats>);

Raw result in internal ticks (50 us) - with leading gap
rawData[68]: 
 -65535
 +90,-88
 +12,-33 +12,-32 +12,-33 +12,-10
 +12,-10 +12,-10 +13,-10 +12,-10
 +12,-32 +13,-32 +12,-32 +13,-10
 +12,-10 +12,-10 +13,-10 +12,-10
 +12,-10 +13,-32 +12,-10 +12,-10
 +13,-32 +12,-10 +13,- 9 +13,-10
 +12,-32 +13,-10 +12,-32 +12,-33
 +12,-10 +12,-32 +13,-32 +12,-32
 +13
Sum: 1215
Raw result in microseconds - with leading gap
rawData[68]: 
 -3276750
 +4500,-4400
 + 600,-1650 + 600,-1600 + 600,-1650 + 600,- 500
 + 600,- 500 + 600,- 500 + 650,- 500 + 600,- 500
 + 600,-1600 + 650,-1600 + 600,-1600 + 650,- 500
 + 600,- 500 + 600,- 500 + 650,- 500 + 600,- 500
 + 600,- 500 + 650,-1600 + 600,- 500 + 600,- 500
 + 650,-1600 + 600,- 500 + 650,- 450 + 650,- 500
 + 600,-1600 + 650,- 500 + 600,-1600 + 600,-1650
 + 600,- 500 + 600,-1600 + 650,-1600 + 600,-1600
 + 650
Sum: 60750

Result as internal 8bit ticks (50 us) array - compensated with MARK_EXCESS_MICROS=20
uint8_t rawTicks[67] = {90,88, 12,33, 12,32, 12,33, 12,10, 12,10, 12,10, 13,10, 12,10, 12,32, 13,32, 12,32, 13,10, 12,10, 12,10, 13,10, 12,10, 12,10, 13,32, 12,10, 12,10, 13,32, 12,10, 13,9, 13,10, 12,32, 13,10, 12,32, 12,33, 12,10, 12,32, 13,32, 12,32, 13};  // Protocol=Samsung Address=0x7 Command=0x12 Raw-Data=0xED120707 32 bits LSB first

Result as microseconds array - compensated with MARK_EXCESS_MICROS=20
uint16_t rawData[67] = {4480,4420, 580,1670, 580,1620, 580,1670, 580,520, 580,520, 580,520, 630,520, 580,520, 580,1620, 630,1620, 580,1620, 630,520, 580,520, 580,520, 630,520, 580,520, 580,520, 630,1620, 580,520, 580,520, 630,1620, 580,520, 630,470, 630,520, 580,1620, 630,520, 580,1620, 580,1670, 580,520, 580,1620, 630,1620, 580,1620, 630};  // Protocol=Samsung Address=0x7 Command=0x12 Raw-Data=0xED120707 32 bits LSB first

uint16_t address = 0x7;
uint16_t command = 0x12;
uint32_t rawData = 0xED120707;


Pronto Hex as string
char prontoData[] = "0000 006D 0022 0000 00AE 00A8 0018 003F 0018 003D 0018 003F 0018 0012 0018 0012 0018 0012 001A 0012 0018 0012 0018 003D 001A 003D 0018 003D 001A 0012 0018 0012 0018 0012 001A 0012 0018 0012 0018 0012 001A 003D 0018 0012 0018 0012 001A 003D 0018 0012 001A 0011 001A 0012 0018 003D 001A 0012 0018 003D 0018 003F 0018 0012 0018 003D 001A 003D 0018 003D 001A 06C3 ";


Protocol=Samsung Address=0x7 Command=0x10 Raw-Data=0xEF100707 32 bits LSB first

Send with: IrSender.sendSamsung(0x7, 0x10, <numberOfRepeats>);

Raw result in internal ticks (50 us) - with leading gap
rawData[68]: 
 -65535
 +90,-88
 +13,-31 +13,-32 +12,-32 +13,- 9
 +13,-10 +12,-10 +13,- 9 +13,- 9
 +13,-32 +13,-31 +13,-32 +13,- 9
 +13,- 9 +13,-10 +13,- 9 +13,- 9
 +13,-10 +13,- 9 +12,-10 +13,-10
 +13,-31 +13,- 9 +13,-10 +12,-10
 +13,-31 +13,-32 +12,-32 +13,-32
 +13,- 9 +13,-32 +13,-31 +13,-31
 +13
Sum: 1214
Raw result in microseconds - with leading gap
rawData[68]: 
 -3276750
 +4500,-4400
 + 650,-1550 + 650,-1600 + 600,-1600 + 650,- 450
 + 650,- 500 + 600,- 500 + 650,- 450 + 650,- 450
 + 650,-1600 + 650,-1550 + 650,-1600 + 650,- 450
 + 650,- 450 + 650,- 500 + 650,- 450 + 650,- 450
 + 650,- 500 + 650,- 450 + 600,- 500 + 650,- 500
 + 650,-1550 + 650,- 450 + 650,- 500 + 600,- 500
 + 650,-1550 + 650,-1600 + 600,-1600 + 650,-1600
 + 650,- 450 + 650,-1600 + 650,-1550 + 650,-1550
 + 650
Sum: 60700

Result as internal 8bit ticks (50 us) array - compensated with MARK_EXCESS_MICROS=20
uint8_t rawTicks[67] = {90,88, 13,31, 13,32, 12,32, 13,9, 13,10, 12,10, 13,9, 13,9, 13,32, 13,31, 13,32, 13,9, 13,9, 13,10, 13,9, 13,9, 13,10, 13,9, 12,10, 13,10, 13,31, 13,9, 13,10, 12,10, 13,31, 13,32, 12,32, 13,32, 13,9, 13,32, 13,31, 13,31, 13};  // Protocol=Samsung Address=0x7 Command=0x10 Raw-Data=0xEF100707 32 bits LSB first

Result as microseconds array - compensated with MARK_EXCESS_MICROS=20
uint16_t rawData[67] = {4480,4420, 630,1570, 630,1620, 580,1620, 630,470, 630,520, 580,520, 630,470, 630,470, 630,1620, 630,1570, 630,1620, 630,470, 630,470, 630,520, 630,470, 630,470, 630,520, 630,470, 580,520, 630,520, 630,1570, 630,470, 630,520, 580,520, 630,1570, 630,1620, 580,1620, 630,1620, 630,470, 630,1620, 630,1570, 630,1570, 630};  // Protocol=Samsung Address=0x7 Command=0x10 Raw-Data=0xEF100707 32 bits LSB first

uint16_t address = 0x7;
uint16_t command = 0x10;
uint32_t rawData = 0xEF100707;


Pronto Hex as string
char prontoData[] = "0000 006D 0022 0000 00AE 00A8 001A 003B 001A 003D 0018 003D 001A 0011 001A 0012 0018 0012 001A 0011 001A 0011 001A 003D 001A 003B 001A 003D 001A 0011 001A 0011 001A 0012 001A 0011 001A 0011 001A 0012 001A 0011 0018 0012 001A 0012 001A 003B 001A 0011 001A 0012 0018 0012 001A 003B 001A 003D 0018 003D 001A 003D 001A 0011 001A 003D 001A 003B 001A 003B 001A 06C3 ";

Wichtig sind diese Informationen:

Protocol=Samsung Address=0x7 Command=0x12 Raw-Data=0xED120707 32 bits LSB first

Die Bibliothek kann die Fernbedienung, hier Samsung, erkennen.

Send with: IrSender.sendSamsung(0x7, 0x12, );

Informationen zum Senden der "P+" Taste.

Send with: IrSender.sendSamsung(0x7, 0x10, );

Informationen zum Senden der "P-" Taste.

Wenn das funktioniert, kannst Du Dich an das Senden machen.

Tipp: Das Signal benutzt eine Trägerfrequenz (siehe Infrarot-Empfänger: Funktion und Anwendung), die bei Fernbedienung, IR-Empfänger und Fernseher übereinstimmen muß. Stimmt die Frequenz nicht, wird die Fern- zur Nahbedienung. Ich verwende beispielsweise TSOP4838 mit 38 kHz.

1 Like

Auch das wird nicht funktionieren, es geht nur eine grobmotorische Funktion eines Unterarmes. Zum Beispiel mit dem Handrücken an der Nase reiben.

@Miq1 ; die Ein / Ausgänge sind dann die 18 Lötstellen auf der Unterseite? Und mit der Arduino IDE bekomme ich den nicht programmiert?
Mich in ein weiteres Programmiersystem einzufuchsen wird mich sehr viel Zeit kosten, selbst das hier ist mehr "Versuch mach Kluch".