Étape 6: Comment ça marche
Vue d’ensemble
L’idée de base est qu’il existe une bijection entre la pression sur un bouton de votre télécommande et une combinaison de touches envoyées à votre PC. IRK ! tout simplement enseigne votre apprentissage à distance un code qui représente une combinaison de touches particulière. Une fois que vous avez programmé ce code sur l’un de vos boutons de la télécommande, appuyer sur ce bouton transmettra le code retour à IRK ! qui sera, bien entendu, le reconnaître puis l’envoie le PC comme un raccourci de clavier USB.
Parce qu’IRC ! généré le code IR, il ne peut éventuellement pas le reconnaître - IRK donc ! n’a pas besoin d’appuyer un zillion différents modèles de télécommande IR !
Frappes au clavier USB
Frappes USB sont envoyés vers le PC à l’aide de codes définis dans la spécification USB Human Interface Device (HID) utilisation de tableaux . Que la spécification définit, par exemple, que le code 0 x 04 désigne la lettre « a ». Pour un dispositif de clavier, comme IRK!, codes supplémentaires « modificateur » peuvent être envoyées à l’ordinateur pour indiquer si GUI (aka touche Windows, touche Apple enfoncée, touche Super), contrôle, Alt et Maj enfoncées sont également « enfoncé ». Par exemple, pour envoyer une majuscule « a », IRK ! envoie 0 x 02 (sens Maj est enfoncée) et 0 x 04 (signifiant « a » est enfoncé). L’ordinateur interprète cette séquence dans le sens « A » majuscule. Immédiatement après l’envoi de cette séquence, IRK ! enverra une séquence « nulle » de 0 x 00 et 0 x 00 pour indiquer qu’aucune touche ou les touches de contrôle ne sont actuellement étant enfoncés. Cela est requis par le protocole USB sinon le PC vont penser que vous êtes maintenant enfoncée le touches Shift et « A » jusqu'à ce qu’il reçoive le prochain code de clé USB.
Ainsi, vous pouvez voir que IRK ! ne doit être en mesure de « enseigner » une télécommande suivie d’une séquence de 0 x 02 0 x 04 pour représenter la lettre « A ». Lorsque l’utilisateur appuie sur ce bouton sur la télécommande, IRK ! recevra à l’aide de son récepteur infrarouge et ensuite envoyer la séquence de 0x02 0x04 au PC qui sera interprétée comme l’utilisateur en appuyant sur Maj + A un clavier USB.
Format de commande infrarouge
IRK ! ne reconnaît que les signaux infrarouges qui sont adressées à un particulier IRK ! unité. Pour ce faire, un octet de l’adresse est également envoyé/reçu sur la voie infrarouge. Chaque commande infrarouge est une séquence de six 6 octets comme suit :
AA, AA', UX, UX', YY, YY'
Où :
AA est l’octet de l’adresse de 0 x 00 à 0xFF
AA' est l’octet de l’adresse inversée (tous ceux convertis à zéros et vice versa)
UX est la page d’utilisation (U = 0 x 0 à 0xF) et, pour l’utilisation du clavier, le modificateur nybble X (contrôle, Alt, Shift)
UX' est l’octet UX inversé
AA est l’octet de commande (pour l’utilisation du clavier, le code de clé USB)
AA ' est l’octet de commande inversé
La raison pour la transmission d’une copie inversée de chaque octet est de réduire la chance qu’interférence a causé une commande invalide à recevoir. Par exemple, vous ne voudriez pas votre demande de « jouer cet enregistrement » être interprété comme « supprimer cet enregistrement » simplement parce qu’une mouche a interrompu le trajet du signal infrarouge en cet instant !
Afin de valider chaque commande comme il est reçu, IRK ! vérifie que les AA (inversé) est égale à AA', et que UX (inversé) est égal à UX', et que YY (inversé) est égal à YY', et que soit AA est égale à cette IRK!' adresse de périphérique s ou AA équivaut à 0xFF (l’adresse de diffusion). Si tout cela est vrai, alors IRK ! peut être assez sûr que c’est une commande valide et qu’il va agir en conséquence.
Technique de Transmission infrarouge
IRK ! utilise Pulse Width Modulation (PWM) pour coder la série de 1 et 0 qui constituent chaque commande. Vous pourriez reprogrammer le microcontrôleur pour utiliser une technique différente, par exemple le Codage Manchester mais PWM fonctionne très bien. Par exemple, « 1 » USB key lors codé à l’aide de PWM ressemble à l’image ci-dessus.
Chaque fois que le signal est « faible », une rafale d’IR d’impulsions à 38 kHz est transmis. À l’inverse, lorsque le signal est « élevé », elle représente une période de silence.
Il y a un sursaut de premier plan pour 1000 μs puis le silence pour 600 μs (dans les versions de IRK! avant 2.04, il atteignait 9400 μs et 4500 μs respectivement). Cette explosion leader obligeait anciens modules récepteur infrarouge à « former » leurs circuits de contrôle automatique de Gain (AGC) pour qu’ils pouvaient déterminer quel un niveau de signal normal a été. Récepteurs IR d’aujourd'hui n’ont généralement pas cette exigence, mais votre apprentissage à distance peut être vieux donc contrarier ! supporte encore.
Par la suite, un « 1 » est codée sous forme d’une courte rafale suivie d’un long silence, et un « 0 » est codé par une courte rafale suivie d’un court silence.
Adresse de diffusion
Un octet de l’adresse de 0xFF est reconnu par tous les IRK ! dispositifs que vous mai ont construit. Il est donc possible pour une seule télécommande envoyer une commande de contrarier tous ! appareils simultanément.
Commandes de contrôle de système
IRK ! soutient également le « System Control » définie par l’USB commandes appelées « Sleep », « Wake » et « Power Off ». Certains claviers USB sont clés pour ces fonctions, mais ils ne sont pas intrinsèquement des fonctions du clavier. N’importe quel périphérique USB opportunément programmée, comme IRK!, peuvent envoyer des commandes de contrôle système USB à votre PC à la demande pour passer en mode "Sleep", par exemple. Ce qui suit est un résumé des résultats des commandes système contrôle sur mon PC (votre kilométrage peut varier) :
Power Off = CPU éteint, disque éteint, écran large, USB off
Dormir = CPU sur, disque éteint, écran large, USB sur
Se réveiller = ne fonctionne pas !
Alimenter l’interrupteur enfoncé = CPU éteint, disque éteint, écran large, USB sur
Commandes de périphériques consommateurs
IRK ! prend en charge le définie par l’USB « Consumer Device » commandes telles que "Mute", "Vol +", "Vol-", "Calculatrice", "Navigateur Home", vous pouvez utiliser ces commandes pour contrôler votre lecteur multimédia (lecture/pause, stop, reculer, sauter en avant etc) ou démarrer des applications (calculatrice, navigateur, Media Player, etc.).
Pour une liste complète des commandes appareil consommateur que vous pouvez utiliser, il suffit de télécharger le document USB Human Interface Device Usage Tables . Que les sons compliqué, mais la spécification n'est pas si difficile à lire. Plus précisément, Regardez le tableau 17 « Page utilisation des consommateurs ». Il n’importe pas que IRK ! n’affiche pas les noms de toutes ces commandes comme vous faites défiler à travers eux, vous pouvez toujours demander à IRK ! pour nous les transmettre à votre port USB hôte (Linux, Windows, MythTV etc.) - et la prise USB doivent exécuter la fonction correspondante.
Interrupteur d’alimentation et interrupteur Reset commandes (expérimental)
Les lecteurs astucieux auront remarqué qu’il y a un problème avec essayant d’obtenir IRK ! « Power on » votre PC - parce que pas tous les PC sous tension les périphériques USB tout le temps lorsque l’alimentation du système est désactivé et IRK ! dépend de la puissance fournie par l’interface USB du il est raccordé à un système.
Un moyen de contourner cela est d’alimenter l’IRK ! fournir des circuits de la tension « Standby » (Vsb) de la puissance du PC. VSB sur les anciens ordinateurs fournit + 5V vers 10 mA même si vous avez éteint votre PC. Blocs d’alimentation ATX plus récents peuvent fournir Vsb à 2 a. Cela signifie que, si hors de Vsb, IRK ! peut rester éveillé à l’écoute pour les commandes IR tant que le PC est branché sur la prise de courant murale. L’IRK ! circuit s’adresse pour presser les boutons Power et Reset sur votre PC, mais vous devrez percer en quelque sorte la sortie Vsb de faire fonctionner l’alimentation électrique de votre PC. Je ne sais pas du tout cartes mères disposant d’une broche d’en-tête facilement accessible pour Vsb. Cela signifie que si vous souhaitez que cette fonction, puis vous devrez briser physiquement le fil Vsb provenant de l’alimentation du PC. Le fil de Vsb doit être le fil violet .
Notez qu’alimenter IRK ! de Vsb, n’a pas été testé pour le moment, mais devrait fonctionner en principe. Les fonctions de l’interrupteur d’alimentation et interrupteur de réinitialisation fonctionnent tant que IRK ! est alimenté par USB, cependant.