Comment: Récepteur de télécommande USB
Maintenant que nous écoutons des MP3, ainsi que sur Xvids ou X264S, un ordinateur est le centre de jouissance dans au moins un espace de nombreuses maisons. Sauf si vous avez un HTPC spécial, cependant, vous êtes très probablement bloqué à l’aide du clavier pour mettre en pause, modifier le volume, ainsi que rapidement à travers des recâps de myth-mythe gênants. Variété de récepteurs de télécommande PC des conceptions de ports série antiques (qui en a une?) Sur les périphériques USB non pris en charge par un logiciel important. Dans ce mode de fonctionnement, nous organisons un récepteur infrarouge USB qui imite un protocole typique pris en charge par logiciel pour Windows, Linux, ainsi que Mac. Nous avons un guide complet sur le protocole Plus Schématics ainsi qu’une liste de pièces.
Vue d’ensemble de la conception
Les télécommandes transmettent des données sur un faisceau infrarouge modulé. Un récepteur infrarouge IC sépare le faisceau modulé dans un flux propre de 0s ainsi que 1s. Le flux de données est décodé par un microcontrôleur et envoyé à un ordinateur sur une connexion USB. Le logiciel traite les codes ainsi que des actions déclenchées sur l’ordinateur.
Contexte
Récepteurs infrarouges informatiques
Le style récepteur infrarouge de PC le plus ancien utilise un récepteur IC pour basculer une goupille de port série, typiquement DCD. Ce style est probablement créé sur Usenet, ainsi que le plus important sur le Web: Engadget, Instrucables, etc. Ce ne sont pas de vrais périphériques série car ils n’envoient pas de données au PC. Au lieu de cela, un programme d’ordinateur fois pulsé sur le port série et démodule le signal. Il s’agit d’une conception très facile, mais cela dépend de l’accès à une interruption directe d’accès à une précision de synchronisation non proposée dans Windows. Les utilisateurs Linux ou Mac peuvent essayer ce récepteur, si vous avez toujours un port série. Nous n’avons pas pu obtenir ce type de récepteur pour travailler avec le port série d’un PC Windows XP contemporain et ne vous attendez pas à ce que le calendrier précis soit transféré via un convertisseur USB->.
Certains récepteurs infrarouges beaucoup plus avancés sont de véritables périphériques de port série qui déterminent ou décodent des signaux infrarouges avant d’envoyer des données à l’ordinateur. L’UIR / IRMAN ainsi que l’UIRR2 intègrent une image traditionnelle 16f84, cependant ne fournissez pas de micrologiciel et / ou de code source. Ces dispositifs doivent fonctionner sur un ordinateur contemporain, via un convertisseur de série USB-> si nécessaire. Les périphériques USB de l’USBTINY et USBIRBOY sont des appareils USB natifs, mais manquent un large soutien.
Logiciel de récepteur
Quel que soit le type de récepteur, l’ordinateur nécessite un programme pour écouter les commandes distantes entrantes et les convertir en actions sur l’ordinateur. Linux ainsi que les utilisateurs de Mac ont la LIRC, qui prend en charge de nombreux types de récepteurs différents. Les utilisateurs Windows sont un peu moins chanceux. WinLILC est un port Windows abandonné de CIRC pour des récepteurs de ports série faciles à base d’interruptions; WinLIRC a été développé pour la dernière fois en 2003. Girder était à l’origine une utilitaire d’automatisation PC freeware, cependant a fini par être coûteux avec un essai de 30 jours. Heureusement, la dernière version gratuite de Girder (3.2.9b) est toujours proposée au téléchargement.
Travailler avec des protocoles distants infrarouges
Décodage des signaux IR
Commandes à distance Les commandes codent dans l’espacement ou la synchronisation d’une impulsion de fournisseur de 38 kHz, [San Bergmans] a une explication des principaux impliqués. Un récepteur infrarouge divise le flux de données du transporteur. Notre tâche consiste à décoder le flux de données avec un microcontrôleur. Il existe des dizaines de protocoles de contrôle à distance, mais la RC5 de Phillips est généralisée et généralement utilisée par les amateurs.
RC5 est flux de 14 morceaux égaux de longueur de 1,778MS précisément par bits. Une impulsion pendant la toute première moitié du temps de bit représente 0, une impulsion dans la seconde moitié représente 1. Ce plan s’appelle Codage Manchester.
Nous avons utilisé un analyseur logique pour examiner la sortie d’une télécommande WinTV Wondenge, une télécommande RC5 connue. Le diagramme montre deux presses de la touche 1, ainsi que deux presses du bouton 2; Notez que la sortie est inverse ainsi que le codage Manchester est à l’envers de la description ci-dessus.
Les deux premiers derniers temps sont des bits de démarrage, suivis d’un bit à bascule. Le bit bascule inverse chaque fois qu’un bouton est enfoncé pour que le récepteur puisse indiquer la différence entre une maintien ainsi qu’une presse répétée. Les 5 bits suivants sont l’adresse (0B11110 = 0x1e), suivie de la commande (0B000001 = 0x01, 0B000010 = 0x02). Une extension compatible avec RC5 à l’envers utilise le deuxième bit de démarrage sous forme de bit de commande 7.
Représentant des codes à distance à l’ordinateur
En regardant les conceptions précédentes, nous avons vu trois méthodes générales de communication des commandes distantes à un ordinateur:
Protocole Les récepteurs particuliers décodent un protocole, ainsi que des commandes décodées réelles au PC
Un type de récepteur beaucoup plus général évoque le calendrier ainsi que l’espacement de chaque impulsion et envoie la forme d’onde complète au PC pour analyse.
Certains récepteurs produisent un hachage distinct pour un signal, mais n’inclut pas vraiment des données suffisantes pour recréer complètement la forme d’onde.
Bien que notre préférence soit envers la méthode de hachage général, notre seule télécommande utilise RC5 commeBien que c’était beaucoup plus fascinant de développer un décodeur particulier de RC5. Nous expliquons des modifications pour une version générale beaucoup plus dans la section du micrologiciel.
Protocole d’interface informatique
Nous ne voulions pas écrire notre propre logiciel de récepteur ni pilote, nous avons donc recherché un protocole de communication existant et bien reconnu à imiter. Le récepteur de type UIR / IRMAN / IRA / CTIINFRA / Hollywood + est pris en charge par la poutre, ainsi que la CRIRC, tout en utilisant un protocole série facile avec la poignée de main:
Le gadget est initialisé par les DTS ainsi que les goupilles DTR du port série. Nous ne les avons pas aussi bien que vous ne vous souciez pas.
L’ordinateur envoie “IR”, avec un délai facultatif. Le gadget répond “OK”. Nous allons simplement envoyer “OK” sur chaque “r”
Les codes de télécommande sont envoyés comme un hachage distinct de six octets. Nous allons décoder un signal RC5 et envoyer les valeurs réelles, mais un hachage générique pourrait être utilisé à la place.
Ce protocole est destiné à un périphérique de port série, mais notre récepteur USB apparaîtra sous forme de port série virtuel ainsi que le programme ne comprendra pas la différence.
Matériel
Cliquez ici pour une schématisation complète (PNG). Notre récepteur est basé sur un microcontrôleur Picture 18f2455 de USB, la version plus petite et moins chère du 18F2550. Le ménage de 18F est programmable avec les programmeurs de style JDM préférés de Hobbyist si une diode est utilisée pour réduire le VPP à un niveau sans risque. L’image obtient un condensateur de découplage (C1), ainsi qu’une diode (D1) ainsi que la résistance (R1) sur l’en-tête de programmation ICSP. Nous avons exposé le port série sur un en-tête PIN pour débogage ou une version mixte USB / Port série à l’aide d’un émetteur-récepteur Max RS232.
Le périphérique USB nécessite une horloge extérieure de 20 MHz (Q1, C5,6), ainsi qu’un condensateur .220uf. Nous avons simulé le condensateur à l’aide de 2 x .1uf Condensateurs de découplage (C2,3). Un voyant de 3 mm (LED1) ainsi que la résistance de limitation actuelle de 330ohm (R2) indiquent l’état de la connexion USB.
Nous avons utilisé un récepteur infrarouge TSOP-1738 qui appelle un condensateur de découplage 4.7UF (C4). Si vous ne pouvez pas découvrir ce IC spécifique, tout type de récepteur noté ici devrait fonctionner. La sortie TSOP-1738 est l’inverse du signal reçu, il tire à la terre lorsqu’une impulsion est détectée, de sorte qu’une résistance de pull-up (R3) maintient la broche élevée lorsque aucun signal n’est présent. Vérifiez si vous utilisez un récepteur différent, vous pouvez avoir besoin d’utiliser une résistance déroulante et d’inverser la routine de décodage Manchester dans le micrologiciel.
Le circuit dessine la puissance du bus USB. Nous n’avons donc pas besoin d’une alimentation supplémentaire.
Liste des pièces
Cliquez ici pour un diagramme de placement complet (PNG). Le style PCB est 100% à travers le trou traversant ainsi que simple face. Le schéma ainsi que le PCB ont été effectués avec Cadsoft Eagle, des versions gratuites sont proposées pour de nombreuses plateformes. Tous les fichiers sont inclus dans l’archive d’emploi (ZIP).
Partie
La description
Ic1
Pic 18f2455
–
Socket 28 broches .300
C1,2,3
0.1uf condensateur
C4
4.7uf condensateur
C5,6
27pf condensateur (15pf peut être meilleur)
D1
1n4181 diode
Q1
Cristal de 20mHz
R1,3
Résistance de 10k Ohm
R2
330 ohm résistance
Tsop
TSOP1738 (obsolète, essayez TSOP1138)
USB
Prise USB ‘B’, femme
Ser
.1 “Broche en-tête
ICSP
.1 “Broche en-tête
Firmware
Le micrologiciel est écrit en C à l’aide de la présentation gratuite de Microchip Compilateur C18. Le micrologiciel ainsi que la source sont inclus dans l’archive d’emploi (ZIP).
Nous avons utilisé la version 2.3 de la pile USB de Microchip pour produire un port série USB à l’aide des chauffeurs par défaut déjà proposés sur de nombreux systèmes. La pile USB a des fonctions simples d’énumérer le gadget USB ainsi que des données de transfert entre le gadget ainsi que l’hôte. Cela n’a pris que quelques modifications de broches pour obtenir la présentation CDC travaillant sur notre matériel sur mesure.
Notre mise en œuvre du protocole UIR / IRMAN / IRA / CTINFRA / Hollywood + répond simplement à la lettre ‘R’ avec ‘OK’. Cela devrait satisfaire aux exigences de la poignée de main de tout type de mise en œuvre de ce protocole.
Nous avons choisi de décoder spécifiquement RC5 (et RC5X) car il s’agit d’un protocole largement utilisé, ainsi que du seul type de télécommande que nous avons à travailler. Beaucoup de décodage se fait dans le gestionnaire d’interruptions:
La toute première modification de signal déclenche une interruption qui commence une minuterie de 889us (période d’une demi-période).
Sur chaque interruption de la minuterie, la moitié d’un bit codé Manchester est échantillonnée.
Toutes les autres interruptions sont comparées, ainsi que la valeur du bit est calculée pour être 0, 1 ou une erreur. Les erreurs réinitialisent le routage de décodage.
À la fin de chaque transmission, l’adresse ainsi que les octets de commande sont décodées, ainsi que celle envoyée à l’hôte avec 4 octets tampons (0). Nous jetons le morceau de bascule car il confondrait le logiciel PC dans la pensée de chaque autre presse était un code distinct. Nous appendons le deuxième bit de démarrage au bit de commande pour la conformité RC5X; Cela ajoute simplement 0x40 aux codes à distance non RC5X.
Une version beaucoup plus générale peut être faite en supprimant l’étape de codage de Manchester (3), ainsi que d’envoyer 48 bits d’échantillons (tous les 6 octets) à l’ordinateur.
Installation du récepteur infrarouge USB
La plupart des systèmes d’exploitation ont déjà des chauffeurs qui soutiennent unGadget de port série virtuel comme le récepteur. Windows XP dispose des pilotes requis, mais a besoin d’une aide à partir d’une donnée .inf pour les associer de manière appropriée à notre appareil.
Windows affichera la nouvelle boîte de dialogue matérielle la toute première fois que vous branchez dans le récepteur. Sélectionnez Utiliser un automobiliste sur mesure et le pointez sur les données .inf incluses dans l’archive d’emploi (ZIP). Cela relie le gadget à un automobiliste déjà inclus dans Windows, tout en ajoutant le récepteur en tant que port COM. Vous pouvez vérifier le numéro de port COM dans le panneau de commande.
Les utilisateurs de Mac ainsi que des utilisateurs de Linux peuvent utiliser le récepteur avec CERCR, mais les utilisateurs de Windows seront confrontés à l’option de l’ancien, de la poutrelle Freeware, ou de la nouvelle version de Shareware d’essai de 30 jours. Nous avons utilisé la version gratuite de Girder, cependant, espérons que vos hommes peuvent suggérer un alternatif excellent et open source que nous avons négligé.
Quel que soit le logiciel de contrôle côté ordinateur que vous utilisez, configurez-le pour un récepteur UIR / IRMAN / IRA / CTIINFRA / Hollywood + Style, ainsi que dans l’adresse du port COM ou une adresse série qui lui est attribuée. Notre récepteur est également compatible avec tout type d’options de protocole tels que «Fast Uir Init» ainsi que «Skip Uir Init Check», qui raccourcissez ou éloignez-vous de la poignée de main «IR» -> «OK». Maintenant, testez le récepteur et ajoutez une télécommande en fonction de la documentation de votre logiciel.
Interface de terminal manuel ainsi que débogage
Si vous avez un problème avec le récepteur ou si vous êtes juste curieux, essayez de l’interfacer à partir d’un terminal de série. Nous aimons vraiment le terminal de série sur Hercules. Définissez le port COM droit, mais la vitesse ainsi que les paramètres de configuration sont ignorées par le pilote de port série USB.
Un financement ‘R’ sera opportun le destinataire pour répondre «OK». Les codes RC5 sont renvoyés sous forme d’octets bruts. Veillez donc à définir votre terminal pour afficher des valeurs hexagonales plutôt que de le traduire en tant que texte ASCII. Le tout premier octet est l’octet d’adresse RC5 (0x1e), suivi de l’octet de commande (0x41), ainsi que de quatre tampons 0s pour adhérer au protocole UIR / IRMAN. L’image montre la poignée de main, ainsi que la sortie d’une presse courte sur le 1,2, ainsi que 3 boutons.
Un utilitaire complémentaire appelé Portmon Logs Port Activity pour examen. Ceci est utile pour espionnage des protocoles de récepteur existants, ainsi que de déboguer l’interaction de notre matériel sur mesure ainsi que des logiciels fermés / propriétaires. La photo montre la poutre en envoyant la chaîne d’initialisation ‘IR’ (0x49,0x52), ainsi que la réponse du récepteur ‘OK’ (0x4F, 0x4B).
Le prendre plus loin
Notre récepteur conforme RC5X suit un protocole d’interface largement utilisé. Il y a une tonne de possibilités pour des fonctionnalités supplémentaires dans un récepteur infrarouge open source:
Soutenez tous les télécommandés via un générateur de hachage générique, comme le matériel d’origine UIR / IRMAN.
Ajouter des décodeurs de protocole à distance supplémentaires, comme RC6.
Prenez en charge plusieurs protocoles d’interface configurables.
Implémenter les E / S série Serial.
Magasinez les options de configuration dans EEPROM, y compris le protocole, le mode d’interface, les options de synchronisation, le port série, etc.