IR data transmissie

Dag,

Wie kan me hier bij helpen?
Bezig met IR transmissie aan te leren en heb het tot nu toe aldus begrepen:
Er bestaan heel wat protocollen om de ir data te verzenden, ik heb me hier even gefocust tot de SIRCS protocol van mijn Sony TV (remote controller RM ED022)
Via IRremote.h en mijn Arduino Uno heb ik de HEX waarde van iedere toets genoteerd.

vb Power toets op afstandsbediening geeft HEX A90 dit geeft binair 1101010010000

Ik heb gelezen dat die binaire code (burst)één start bit dan een 5 tot 13 bit lange adrescode (zegt welk toestel de code kan ontvangen) en een 7 bit lange toets code bevat (het eigenlijke commando), maar hoe moet men deze onderscheiden in die binaire code wat is wat?
Alvast bedankt

Arco

Special Member

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Na de link gelezen te hebben interpreteer ik het aldus:
Ik ga er nog altijd vanuit dat ik de POWER toets op mijn afstandsbediening Sony indruk.
Deze laat me een HEX waarde A90 zien omgezet binair 1/0101001/0000
Opgesplitst:

1/ startbit
0101001/ command
0000 device

Ik heb wel lijstjes gevonden met de SIRCS code voor device en SIRCS code voor command maar deze zijn decimaal weergegeven en zelfs als men een omzetting doet van binair naar decimaal lijkt het me onwaarschijnlijk.

Sircs code device bin of dec altijd 0 die verwijst niet naar een apparaat
Sircs code command 0101001 naar decimaal geeft 41 dit verwijst naar Surround on/off en niet naar Power

Wat zie ik over het hoofd?

Device code is 5 bits lang, LSB eerst. Dus 10000 is 1.

Snap ik niet,

Binair 10000= 1 decimaal
Zelf met device 5 bits lang dan is de command bin code 010100 = decimaal 20 =mute

Jouw startbit is niet het startbit maar het LSB van het command.
Jouw code 1/0101001/0000 opsplitsen geeft

/1010100/10000
command 1010100
device 10000

LSB bit staat nog als eerste dus bits verwisselen zodat MSB links komt en LSB rechts:
command wordt 0010101 dat is decimaal 21
device wordt 00001 dat is decimaal 1

Zoek ik morgen op Bitsignificatie kende ik niet.
Alreeds bedankt, is dit iets waar men in alle IR protocollen rekening moet mee houden.

Na wat zoekwerk op het net is me veel duidelijk geworden.
De LSB van de device code is 1 dus ook decimaal 1

Indien de device code 10010 zou zijn (waarin het 2de getal van rechts de LSB is) dan is het decimaal 18
denk ik.

In de command code 1010100 staat de LSB op de 3de plaats rechts, we lezen dan 10101 dat is decimaal
21

Indien de command code 1101110 zou zijn dan is dit decimaal 110

Indien de command code 0100110 zou zijn dan is dit decimaal 38

Zit ik op het juiste spoor?

Foutje denk ik , command 1101110 is decimaal 55
100110 is decimaal 19

Ik merk nu dat de theorie opgaat voor sommige toetsen op mijn remote (RM-ED022) maar niet voor allemaal.
bv de "GUIDE" knop op mijn remote geeft HEX 6D25 ---> Binair 110110100100101. (15 BITS)

Voor Device hier denk ik splitst men er 8 af. ------> 00100101. -----> decimaal 37 ??

Voor Command -----> 1101101. ------> decimaal 109. vind ik zelf niet in de lijst daar is GUIDE 096

Is dit alles toch gebonden aan het model Remote Control

De IRremote bibliotheek die ik gebruikt heb om de HEX waarde van iedere toets van de Remote op te zoeken ondersteund volgende protocollen: Denon,JVC,LG,NEC,Samsung, Sony,Sharp en nog enige andere.

Niet vergeten om het word eerst te 'flippen'.

Device 00100101 wordt 10100100
Command 1101101 wordt 1011011

Zelfs "geflipt" kom ik voor de device code nog niet uit op 1 (TV) maar op 41

en voor de command code op 91 (GUIDE= 96 in mijn lijstje)

Ik denk dat ik het hier maar bij moet laten, ik ben niet onderlegd genoeg in de materie om dit te begrijpen en ook al een beetje te oud (81+ ongeflipt)

Gelden er andere regels om een code te lezen van een 15 bits of 20 bits tov van een 12 bits thread of burst
of hoe men het ook noemt.

Met de 12 bits kan ik device en command aflezen en na flippen en omzetten klopt dit perfect met de respectievelijke code lijsten.

Kan het niet laten !!!

https://www.oocities.org/sila1999/sircs.htm
Volgens deze lijst is

Device 10100100 (=dec 164) is TV digital effects
Command 1011011 (=dec 91) is Picture-in-picture ON

Met zo een consumenten product als een afstandbediening weet je niks zeker. Elk model TV heeft wel een eigen AB met weer andere knopjes en elke fabrikant maakt zijn eigen varianten, ook in de code.

Als je dan generieke specs vind op het internet dan kan die best wel een beetje matchen met een specifieke AB, maar die zal zelden of nooit 100% matchen.

Dus dan is het de kunst om eerst te achterhalen hoe de bits verstuurd worden, en vervolgens om te testen welke code's jouw model daadwerkelijk verstuurt.

Je kunt alleen echt op de specs vertrouwen als het je lukt om de specs te vinden van specifiek jouw model. Maar dat is mij nog nooit gelukt.

Er is geen 'goed' of 'fout' in deze materie. Je moet gewoon opslitsen op de manier zie voor jou handig is, bijvoorbeeld doordat het matcht met de documentatie.

A90 dit geeft binair 1101010010000

De string uit je startpost kun je zien als hex A90, voorafgegaan door een startbit. Dan kun je splitsen als 1/1010/1001/0000

Maar je kunt ook zeggen dat het een start-bit is, een 5-bit device code en een 7-bit commando. Dan kun je splitsen in 1/10101/001000

Uiteindelijk zijn het dezelfde bits.

In het algemeen bestaan er in de wereld allerlei bitstromen, die allemaal verschillend worden geinterpreteerd. Binnen een byte kun je met LSB of met MSB beginnen. Binnen een word kunnen de bytes in verschillende volgorde worden verstuurd, soms heb je getallen van 8 bit, van 32 bit, maar je ziet ook allerlei andere varianten. Verzin een willekeurige variant en het wordt wel ergens toegepast.

Quelle misere , hoe meer ik er van leer hoe minder dat ik er van ga snappen.

12 bits Sony code sava

Ik kan uit de BIT code van het IR signaal van mijn Sony afstandsbediening (SIRCS) afleiden voor welk toestel het signaal bestemd is en welk het commando is.

Zoals in de bijlage te zien is word hier een signaal verstuurd dat bedoeld is voor een CD speler en het commando is volume verhogen, allemaal af te leiden uit het signaal te zien op een oscilloscoop.

Het kan omdat ik lijstjes heb van het internet die me een omzetting geven van de specifieke stukjes code naar een bepaald adres of commando.

Zie de link in bijlage waar ook weergave is van andere protocols op de oscilloscoop, maar bestaan er ook referenties om die te ontcijferen naar device en command?

https://www.techdesign.be/projects/011/011_waves.htm