Hoi,
Ik heb een axa raamuitzetter liggen met infrarood afstandsbediening. Deze wil ik gaan toevoegen aan mijn domotica systeem, bij voorkeur met behoud van de afstandsbediening. Vandaar dat ik het ding een beetje aan het uitpluizen ben. Aangezien jullie altijd graag alles willen weten hierbij eerst hetgeen wat ik tot nu toe heb ontdekt.
De unit zelf word aangestuurd door middel van een PIC, de 12F683, uiteraard beveiligd. De PIC heeft 6 IO's. 1 voor motor open, 1 voor motor dicht, 1 voor motor overbelast, 1 voor LED, 1 voor 'raam-zit-echt-dicht'-beveiligings tactile en 1 voor de infrarood ontvanger. Bij bediening van de afstandsbediening gaat de motor draaien. Als de motor aan het einde van open of dicht zit word de motor "overbelast", gaat de betreffende pin hoog en draait de motor even de de andere kant op. Als het raam open staat word dit ontdekt door de tactile en gaat de led knipperen. De afstand bediening bevat eenzelfde PIC, uiteraard ook beveiligd. Als ik een toets indruk word er een 56 kHz infrarood pulstrein verzonden welke de infrarood ontvanger weer vertaald in een logische pulstrein. Dit omzetten werkt heel simpel: 56 kHz aanwezig -> Ontvanger geeft 0. Geen 56 kHz aanwezig - > Ontvanger geeft 1. Een complete bit(!) word doorgegeven in tijdsbestek van 1 miliseconde. Een 0 is 200 microseconde laag en 800 microseconde hoog. Een 1 is 800 microseconde laag en 200 microseconde hoog.(Was dit niet een Manchester code ?)
Op deze manier word een pulstrein van 14 bytes verzonden, startbit niet meegeteld. En deze pulstrein probeer ik te ontcijferen. Ik had namelijk verwacht dat de afstandbediening constant hetzelfde zou verzenden. Dit blijkt echter niet zo te zijn. Als voorbeeld twee pulstreinen van twee toetsindrukken achter elkaar.
S0 10010111 00000111 00110011 11001011 00000110 10110101 00111000 01000011
{0000000 00000000 000000010} [01101101] 11001101 0111111 (1)
S0 11000100 11101110 00100001 10101101 10111010 10010111 10001111 11001101 {0000000 00000000 000000010} [01101110] 10011101 1000101 (0)
Als ik iets beter kijk, zijn mij een paar dingen al duidelijk: S0 is startbit. Gedeelte {} is constant hetzelfde. Gedeelte [] is een teller welke bij elke nieuwe drukknop actie een verhoogd en () is even pariteits bit. Verder ben ik het verhaal een beetje kwijt. (Op verzoek kan ik vanavond meer codes posten.)
Nu kan ik zelf een nieuw programma schrijven en in beide PIC's schieten, maar ik vind het leuker om te ontdekken hoe dit protocol werkt.
Dus: Kan iemand mij een schop in de goede richting geven ?? Hetzij door het protocol te kennen en een tipje van de sluier te lichten of door toch een verband te zien ?? Zoveel ervaring heb ik niet met het ontcijferen van protocollen....