Reverse engineering Air Conditioner IR Remote control protocol (2 / 4 stap)

Stap 2: Dataverzameling

Off gaan we.
Note1: opname van de opdracht is een repetitieve en enigszins saai proces, maar noodzakelijk.
Note2: Ik heb zelf een oscilloscoop dus de enige manier voor mijn om de opgenomen waarden te tekenen is het gebruik van een plotten programma (gnuplot) op onbewerkte gegevens. Dit kan nuttig zijn om een visuele idee van wat er gebeurt, maar het vereist enige aanpassing in onbewerkte gegevens en is naar mijn mening niet noodzakelijk at all. Om die reden heb ik niet elk diagram opgenomen.

Ik gebruikte de instructies op deze pagina: http://alexba.in/blog/2013/01/06/setting-up-lirc-... sluit de ontvanger op de Pi en voorbereiden van lirc.
Ik heb vervolgens opdrachten opgenomen met de raw optie - en uitvoer omgeleid naar een bestand. Het doel is om een record van elke waarde voor ON en off van de cursus, maar ook voor elke modus (AUTO, COOL, warmte, droge), voor elke waarde swing en ventilator en, zeg, voor min en max temperatuur (16 tot 30 ° C in mijn geval). Het belangrijkste deel hier is om een referentie-record te maken en een opname voor elke wijziging van de optie, waardoor slechts één optie wijzigen om ongetrouwd tijdte maken. Zodra een record wordt gedaan, druk op CTRL + C om de opdracht te beëindigen en weer doen met het volgende commando/bestand

 $ mode2 -d /dev/lirc0 -m > auto_21C_swing0_fan0 

Het kan nodig zijn te krijgen super bevoegdheden voor het uitvoeren van deze opdracht ("sudo mode2...") en de lirc daemon kan het bestand blokkeren zodat kan het nodig zijn om het te doden eerst zijn:

 $ sudo /etc/init.d/lirc stop $ sudo mode2 -d /dev/lirc0 -m > filename $ [...] $ sudo /etc/init.d/lirc start 

Bij het lezen van de gegenereerde bestanden, wat we zien is op alle getallen, georganiseerd in 6 kolommen. Deze aantallen wijzen op duur in microseconden. De kolommen werken in paar, zo

 740 1495 920 1345 735 1335 

betekent: "De IR LED was ON voor 740us, vervolgens uit voor 1495us, dan 920us ON, dan OFF voor 1345us, enz."

Voorbeeld:

 3523 1766 414 451 418 1312 423 448 419 452 418 452 428 443 417 453 418 457 418 452 418 452 416 454 419 452 417 453 417 1316 418 452 418 466 410 451 419 453 414 457 416 452 418 453 417 1316 418 1315 418 1320 426 443 419 451 419 1314 419 452 418 452 418 452 418 452 418 457 419 450 420 451 419 452 421 451 417 452 418 452 418 452 419 457 418 452 418 449 422 451 418 452 419 451 420 451 426 444 418 457 418 452 417 452 419 452 416 454 420 450 418 452 419 452 419 456 418 452 418 1323 411 1313 421 451 419 451 418 452 418 452 418 454 419 9997 3521 1764 417 452 419 1315 418 449 421 452 418 453 417 453 418 451 427 448 419 453 417 453 417 452 419 452 417 453 417 1317 417 451 419 456 419 451 420 458 411 452 418 452 416 455 418 1315 418 1315 418 1321 417 452 419 452 416 1318 418 452 418 451 419 451 419 452 418 457 418 452 418 452 420 448 422 451 419 457 412 452 417 452 419 457 418 1315 417 453 419 449 421 452 418 452 418 452 418 453 424 450 418 453 419 1314 418 452 418 452 418 1316 418 1315 417 453 418 465 410 452 419 452 416 453 418 452 418 452 418 452 418 453 417 1338 418 1316 415 1318 418 1315 419 1314 418 452 418 1315 419 449 421 1328 410 452 418 453 417 452 418 452 420 450 419 451 417 455 416 457 419 451 418 452 419 452 419 453 417 453 417 453 418 451 419 456 418 453 418 1315 418 1315 418 452 419 459 411 451 419 451 416 460 418 452 419 451 418 453 417 453 418 451 418 1315 419 1313 420 458 425 445 413 460 418 445 422 452 418 452 418 452 418 452 419 455 421 450 420 463 407 452 417 452 418 453 418 452 418 452 418 457 418 450 421 452 418 452 417 453 419 451 424 445 419 451 419 1321 417 453 417 454 416 452 418 452 419 452 418 452 418 452 418 468 408 452 417 1313 422 1314 418 452 420 451 418 452 418 452 419 456 418 453 416 454 418 1315 417 452 418 1315 418 452 418 1316 418 451 422 

OK, dat lijkt gek :)
Merk op dat het bestand met een lijn met een enkele waarde beginnen zal: het is de tijd die is verstreken tussen het begin van de opname en de komst van de eerste IR signaal. Deze regel moet worden genegeerd.

Alle tijden zijn natuurlijk, aangezien deze maatregelen, met een tijdschaal zo klein als de microseconde, anders, waardoor de detectie van kleine verschillen tussen 2 commando's niet onmogelijk.
Het kan worden geconstateerd dat waarden altijd dicht bij 400 of 1300us, met uitzondering van 3 (dichter bij 4400, 9900 en 1700). Dus wat we zullen doen zodat de cijfers vergelijkbaar "" de getallen afronden op de dichtstbijzijnde is van deze 2 "verwijst naar" waarden (een werkblad is handig eerst).
Wat deze manipulatie toont aan dat met uitzondering van de 3 enkelvoud waarden het over tijd altijd 400us is, wat verandert er nu alleen OFF.

Laten we de hypothese dat de uit-tijd is codering 0 en 1, en laten we aannemen dat 400us is voor 0 en 1300us voor 1. Met deze veronderstelling is het mogelijk om elk paar van kolommen op een enkele bit.
Laten we ook een opmerking maken: het deel tussen de 3 "enkelvoud tijdsinstellingen" is altijd hetzelfde, in alle opnamen. Worden kan verondersteld dat:
-het deel is een inleiding, misschien het identificeren van de afstandsbediening of de Air Conditioner, en het zal nooit veranderen
-de verschillende tijdsinstellingen zijn sloten en scheidingstekens tussen de introductie en de werkelijke lading

Daarom is het aanvaardbaar dat deel van het bericht als een invariant te nemen en niet te bestuderen.

Voor het gemak van de exploitatie van de gegevens die ik schreef een klein c programma naar de waarden afrondt en transformeren naar binaire cijfers. Slaat het intro deel voor het gemak van het lezen van de code. Indien u wenst te gebruiken deze code de timing waarden zijn gedefinieerd in het begin van het programma, zal u waarschijnlijk nodig aan te passen.

Na compilatie (gcc -o decoderen decode.c) kunt u op elk gegevensbestand:

 $ ./decode auto_21C_swing0_Fan0 auto_21C_swing0_Fan0.decoded 

Voorbeeld met de modus auto doel temperatuur 25 ° C:

 $ more auto_25.decode 01000000 00000100 00000111 00100000 00000000 10000000 01001100 00000001 11110101 00000000 00000000 01100000 00000110 00000000 00000000 00000001 00000000 01100000 00101010 

Gerelateerde Artikelen

Reverse-Engineering: RGB LED-lamp met IR afstandsbediening

Reverse-Engineering: RGB LED-lamp met IR afstandsbediening

We 20 van deze RGB LED-lampen gekocht voor een feestje op het werk, maar ik was een beetje teleurgesteld met de kleur vervagen functies die zij verstrekt. Dus besloten heb ik om een apart, omgekeerde ingenieur het IR-protocol, en zien of het had meer
USB hack door Reverse Engineering

USB hack door Reverse Engineering

USB is een zeer complex protocol, veel ingewikkelder dan de seriële of parallelle, SPI en zelfs I2C. USB gebruikt slechts twee draden, maar ze worden niet gebruikt als 'ontvangen' en '' als serie verzenden. Integendeel, gegevens bidirectionele en dif
Reverse-engineering toepassen RF afstandsbediening Controller voor IoT!

Reverse-engineering toepassen RF afstandsbediening Controller voor IoT!

In dit instructable, leert u hoe om te keren ingenieur radiofrequentie (RF) afstandsbedieningen en implementeren in een zeer goedkope WiFi toegelaten computer, het knooppunt MCU. Met deze techniek kunt u IoT inschakelen oudere toestellen en doelappar
Remote Controlled Confetti kanon

Remote Controlled Confetti kanon

Confetti kanonnen zijn een heleboel plezier. Een explosie van confetti kan een feest beter maken. Maar het is niet altijd handig zijn als iemand naast het kanon te verrekenen. Dus vandaag ga ik u tonen hoe te maken van een externe gecontroleerde conf
DIY Arduino Remote Control en Lego RC voertuig!

DIY Arduino Remote Control en Lego RC voertuig!

UPDATE (8/29/13): dank u lezers voor uw enthousiasme en soort opmerkingen met betrekking tot dit project! Het is een geweldige reis sinds ik begon dit project terug in maart, maar ik ben erg blij met het resulterende product en de opwinding waarmee h
Batterij aangedreven Peltier Portable Air Conditioner

Batterij aangedreven Peltier Portable Air Conditioner

Gewoon een inleidingHallo daar, wanneer u lees dit instructable, u zoekt iets zelf om af te koelen recht?Zoals ik nieuw op instructable ben, 'm I gonna post wat ik deze jaren hebben uitgevonden. Hoop dat ze zijn niet uit gedateerd wanneer ik ze hier
Een werkende sleutel van schroot maken door reverse-engineering van een sluis

Een werkende sleutel van schroot maken door reverse-engineering van een sluis

heb je verloren alle sleutels voor uw lock en moeten maken van een nieuwe sleutel van kras?  Heeft de slotenmaker gebrek een lege sleutel die van uw slot Spiebaan passen zal? Pak een metalen bestand, sommige blad schroot, en lees verder voor een ruwe
Reverse-Engineering = Uzzors2k = uitgesproken Android App. Amarino spul ook.

Reverse-Engineering = Uzzors2k = uitgesproken Android App. Amarino spul ook.

Dit instructable meestal mensen die proberen te rijden/james bond (morgen nooit sterft natuurlijk) rc auto's zal helpen.  Als je gewoon proberen te zetten lichten, of controle van uw garage met bluetooth van een android telefoon, er zijn vele andere,
Met behulp van 433 MHz Remote Controlled schakelaars op Arduino

Met behulp van 433 MHz Remote Controlled schakelaars op Arduino

Ik denk dat iedereen weet die extern gecontroleerde schakelaars die in hun meest eenvoudige vorm komen in een aantal (meestal 3) voor switcheable apparaten aansluiten op het lichtnet stopcontact en die ontvangt een stekker van een lamp of iets en dat
Met behulp van RC auto onderdelen als remote control

Met behulp van RC auto onderdelen als remote control

ik afkomstig van een heleboel micro RC auto's op ebay voor DIY projecten te gebruiken.De auto's zijn van Enertec. De oproep van het product "MICRO FLASH CHARGER, Formule 1". De doos van het product bevat batterijen voor de zender en het opladen
Reverse-engineering toepassen hulpmiddel van de Schoonmaakbeurt voor optimale computerprestaties

Reverse-engineering toepassen hulpmiddel van de Schoonmaakbeurt voor optimale computerprestaties

Als u om het even wat als me bent, zou u willen hebben en het nemen van controle over alles op uw computer. U ust kunnen bepalen hoeveel opslag wordt gebruikt voor programma's blah blah blah.Hoewel toepassingen mogelijk nuttig om dingen gedaan te kri
Reverse-Engineering

Reverse-Engineering

veel van de leden hier op Instructables vragen over gegevensbladen of pin-outs van een apparaat of de weergave in de antwoorden, helaas u cant altijd krijgen een gegevensblad en schema's, in deze gevallen heb je slechts één keuze hierop reverse-engin
Reverse-Engineering Live

Reverse-Engineering Live

Ik begon in elektronica vóór de komst van het internet en meest solide staat onderdelen, dus krijgen gegevensbladen en schema's niet makkelijk voor mij was. Vandaag met fabrikanten maken van aangepaste ICs en LCD-schermen voor alles van telefoons tot
Remote controlled webcam met behulp van de Arduino, SensorMonkey, jQuery en Justin.tv

Remote controlled webcam met behulp van de Arduino, SensorMonkey, jQuery en Justin.tv

Web in te schakelen voor uw interactieve sensoren over desktop, smartphone en tablet apparaten.Deze tutorial beschrijft in detail hoe met de gratis SensorMonkey -service op afstand besturen van een pan en tilt webcam aangesloten op een Arduino met ni