IRK! Infraröd radiostyrd USB-tangentbord utan nycklar (6 / 7 steg)
Steg 6: Hur det fungerar
Översikt
Grundtanken är att det finns en 1: 1-mappning mellan att trycka på en knapp på din fjärrkontroll och en tangentkombination som skickas till din PC. IRK! helt enkelt lär din inlärning remote en kod som representerar en viss tangentkombination. När du har programmerat att koden på en av din remote-knappar sänder att trycka på knappen koden tillbaka till IRK! som kommer, naturligtvis, känner igen det sedan skicka det till PC som en USB-tangenttryckning.
Eftersom IRK! genererade IR koden, det kan inte eventuellt inte igen det - så IRK! behöver inte stödja en zillioner olika IR fjärrkontroll modeller!
USB-tangenttryckningar
USB-tangenttryckningar skickas till datorn med hjälp av koder definieras i specifikationen för USB-Human Interface Device (HID) användning tabeller . Att specifikationen definierar, till exempel, att koden 0x04 betyder bokstaven "a". För en tangentbordet, som IRK!, ytterligare "modifier" koder kan skickas till datorn som anger om GUI (aka Fönstren nyckel, nyckel-Apple, Super nyckel), kontroll, Alt och SKIFT-tangenterna också "trycks". Till exempel att skicka ett versalt "a", IRK! skickar 0x02 (menande skifta är pressat) och 0x04 (som betyder "en" är nedtryckt). Datorn tolkar den sekvensen som menande versalt "A". Omedelbart efter det att den sekvensen, IRK! skickar en "null" sekvens av 0x00 och 0x00 att ange att ingen nyckel eller nyckel modifierare för närvarande är pressas. Detta krävs av USB-protokollet annars datorn tror att du håller ned SKIFT och "A" tills den får den nästa USB nyckel koden.
Så du kan se att IRK! har bara för att kunna "lära" en lärande fjärrkontroll en sekvens av 0x02 följt av 0x04 att representera bokstaven "A". När användaren trycker på knappen på fjärrkontrollen, IRK! få den med dess IR-mottagare och sedan skicka 0x02 0x04 sekvensen till PC som kommer att tolkas som användaren att trycka på Skift + A på ett USB-tangentbord.
IR-kommandot Format
IRK! endast erkänner IR signaler som är adresserade till en viss IRK! enhet. Detta är en adress byte också skickas/tas emot på IR sökvägen. Varje IR kommando är en sekvens av sex (6) byte enligt följande:
AA, AA', UX, UX', ÅÅ, YY'
Var:
AA är adress byte från 0x00 till 0xFF
AA "är inverterade adress byten (alla de konverteras till nollor och vice versa)
UX är sidan användning (U = 0x0 till 0xF) och, för tangentbord användning, modifierare nybble X (kontroll, Alt, skift)
UX' är den inverterade UX byten
YY är kommandobyte (för tangentbord användning, den USB nyckel koden)
YY' är den inverterade kommandobyte
Anledningen för att överföra en inverterad kopia av varje byte är att minska risken för att störningar har orsakat ett ogiltigt kommando tas emot. Till exempel, skulle inte du din begäran att "spela denna inspelning" tolkas som "ta bort denna inspelning" bara för att en fluga avbröt IR signalvägen på det ögonblick!
Om du vill verifiera varje kommando är det emot, IRK! kontrollerar att AA (inverterad) är lika med AA', och att UX (inverterad) är lika med UX', och att YY (inverterad) är lika med YY', och att antingen AA är lika med denna IRK! " s-enhetsadress eller AA motsvarar 0xFF (broadcast-adressen). Om allt det ovanstående är sant, då IRK! kan vara ganska säker på att det är ett giltigt kommando och kommer att agera på den.
Teknik för infraröd överföring
IRK! använder Pulse bredd Modulation (PWM) för att koda serien 1 och 0 som utgör varje kommando. Du kan programmera mikrokontroller för att använda en annan teknik som Manchester Encoding men PWM fungerar alldeles utmärkt. Till exempel USB '1' nyckel kodad med PWM ser ut som bilden ovan.
När signalen är "låg", överförs en IR explosion av pulser på 38 kHz. Omvänt, när signalen är "hög" representerar en period av tystnad.
Det finns en ledande sprack för 1000 μs sedan tystnad för 600 μs (versioner av IRK! innan 2,04, det var 9400 μs och 4500 μs respektive). Denna ledande brast var krävs av äldre IR-mottagare moduler att "utbilda" sina Automatic Gain Control (AGC) kretsar så att de kunde avgöra vad en normal signalnivå var. Dagens IR-mottagare behöver oftast inte detta krav, men din inlärning remote kan vara gammal så IRK! fortfarande stöder det.
Därefter en '1' kodas som en kort burst följt av en lång tystnad, och en '0' kodas som en kort burst följt av en kort tystnad.
Broadcast-adress
En adress byte av 0xFF är erkänd av alla IRK! enheter som du kan ha byggt. Så är det möjligt för en enda fjärrkontroll att skicka ett kommando till alla IRK! enheter samtidigt.
Systemkommandon kontroll
IRK! också stöder USB-definierade "System Control" kommandon kallas "Sover", "Vakna" och "Power Off". Vissa USB-tangentbord har nycklar för dessa funktioner, men de är inte inneboende tangentbord funktioner. Någon passande programmerade USB-enhet, till exempel IRK!, kan skicka kommandon för styrning av USB-System till din dator för att begära att få gå in i "viloläge", till exempel. Följande är en sammanfattning av resultaten av systemet Kontrollkommandon på min PC (din antall Maj variera):
Power Off = CPU bort, bricka av, Monitor off, USB av
Sova = CPU på, av, Monitor off, USB-Disk på
Vakna = gör inte fungerar!
Power Switch tryckte = CPU bort, bricka av, Monitor off, USB på
Konsument enhet kommandon
IRK! stöder USB-definierade "konsumenten Device" kommandon som "Mute", "Vol +", "Vol-", "Miniräknare", "Browser hem", dessa kommandon kan du styra din mediaspelare (spela upp/paus, stopp, hoppa tillbaka, hoppa framåt etc) eller starta program (kalkylator, webbläsare, Media Player etc).
För en komplett lista av konsumentprodukt kommandon som du kan använda, bara ladda ner USB-Human Interface enheten användning tabeller dokumentet. Att låter komplicerat, men specifikationen är inte så svårt att läsa. Specifikt, se tabell 17 "Konsumenternas användning sida". Det spelar ingen roll att IRK! visar inte namnen på alla dessa kommandon som du bläddrar genom dem, kan du fortfarande begära IRK! för att skicka dem till din USB-bör värd (Linux, Windows, MythTV etc)- och USB-värd utföra motsvarande funktion.
Strömbrytaren och Reset Switch kommandon (experimentell)
Skarpsinniga läsare har säkert märkt att det finns ett problem med att försöka få IRK! "Power on" datorn - eftersom inte alla datorer leverera ström till USB-enheter hela tiden när systemet är off och IRK! beror på kraften som tillhandahålls av USB-gränssnittet för system den är ansluten till.
En väg runt detta är att driva IRK! kretsar från "Standby" spänningen (Vsb) från PC power supply. VSB på äldre datorer leveranser + 5V på runt 10 mA även om du har avstängd datorn. Nyare ATX nätaggregat kan leverera Vsb på 2A. Detta innebär att, om de drivs från Vsb, IRK! kan hålla mig vaken lyssnar för IR-kommandon så länge datorn är ansluten till vägguttaget och väggen. IRK! krets tillgodoser att trycka på strömbrytaren och Reset-knappen på din PC, men du måste på något sätt utnyttja Vsb utdata från din dator strömförsörjning till få den till verk. Jag vet inte om alla moderkort som har en lättillgänglig header pin för Vsb. Detta innebär att om du vill ha denna funktion, då du kan behöva fysiskt bryta Vsb kabeln från PC strömförsörjningen. Vsb kabeln bör vara lila tråd.
Observera att driva IRK! från Vsb har inte testats för tillfället, men bör fungera i princip. Strömbrytaren och Reset Switch funktioner fungerar så länge som IRK! drivs från USB men.