Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Utilisation de la télécommande infrarouge avec Raspberry Pi sans LIRC

Je voulais obtenir une entrée à distance IR pour Raspberry Pi. J'ai réussi à faire installer et tester LIRC. Tout s'est bien passé, sauf la toute dernière étape. Lorsque je voulais transmettre la valeur de la clé distante IR au programme Python, il ne la transmet pas correctement. Il passe une valeur nulle pour anykey. Je ne pouvais pas comprendre ce qui ne va pas. J'ai abandonné et j'ai essayé d'écrire un code python pour capturer la télécommande IR sans utiliser LIRC.

Après quelques lectures sur la façon dont la télécommande IR communique, les informations révélées utilisent la communication série UART. J'ai utilisé le kit de bricolage à distance IR HX1838. Le capteur IR décode les ondes IR et transmet les données en série. Ce que j'ai fait, c'est lire la valeur des données sortant du capteur IR en série. Il s'agit d'un moyen grossier mais simple de lire la télécommande IR pour des applications simples pouvant être utilisées dans Raspberry Pi.

Préparation du Raspberry Pi pour la communication série UART.

1. Besoin de supprimer les entrées ttyAMA0 dans cmdline.txt .

sudo cp /boot/cmdline.txt /boot/cmdline_bp.txt

sudo nano /boot/cmdline.txt

Le fichier restant ressemble à,

dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p6 rootfstype=ext4 lift=délai rootwait

Ensuite, enregistrez et fermez l'éditeur. Enregistrez le fichier, Ctrl + O. Fermez l'éditeur, Ctrl + X

2. Mettez à jour inittab fichier pour masquer le ttyAMA0

sudo nano /etc/inittab

Commentez la ligne
'X:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100′

#X:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

Ensuite, enregistrez et fermez l'éditeur. Enregistrez le fichier, Ctrl + O. Fermez l'éditeur, Ctrl + X

Étape 1 :Premiers pas

Installation de pySerial

sudo apt-get install python-serial

Une fois celui-ci installé, le code Python peut l'utiliser en faisant importer en série .

Le code Python pour lire le signal IR s'est avéré très simple. Comme suit.

import serialser =serial.Serial ("/dev/ttyAMA0")ser.baudrate =2400for i in range (0,15):# généralement le signal IR pour une clé est d'environ 12-16 octets data =ser.read( 1) # lire 1 octet à la fois imprimer ord(data) # les données lues en caractère, ord sera converti en valeur ASCII

Maintenant, ce code lira le signal IR 1 octet à la fois et affichera la valeur.

J'ai essayé les débits en bauds par essais et erreurs et je me suis installé à 2400 BPS. Bien que la communication série prenne en charge jusqu'à 115 Kbps, il est intéressant de savoir pourquoi l'IR utilise une vitesse inférieure. Je suppose qu'il serait plus fiable d'utiliser une vitesse inférieure, car il y a moins de chances que le signal IR perde 1 ou 2 bits sur les ondes.

Décoder les télécommandes IR

L'étape suivante consiste maintenant à décoder les valeurs clés. J'ai utilisé une télécommande infrarouge Samsung TV standard pour cet effort.

Le premier point important est de déterminer le nombre d'octets de données pour chaque clé. Il peut varier de 12 à 16 octets. (ceux que j'ai essayé). La longueur d'octet est généralement la même pour toutes les clés. Ces octets ont des octets d'en-tête, des octets de données (pour identifier la clé) et des octets de queue. Les octets d'en-tête auront une signature pour le modèle de la télécommande IR. J'ai utilisé une feuille Excel pour collecter les valeurs de données clés suivant la page Antzy Carmasaic

http://www.instructables.com/id/How-To-Useemulate-…

En plongeant profondément dans les valeurs de clé capturées, il montre que l'octet 0 à 5 se compose d'un en-tête, répété pour toutes les clés. Les valeurs de données des octets 6 à 11 représentent la valeur de la clé. Il pourrait y avoir des valeurs de queue. L'octet 12 correspond à la queue de la télécommande Samsung.

Clés de mappage

La manière exacte pour cette télécommande est de stocker les octets 6 à 11 dans un tableau et de les comparer avec une nouvelle clé entrante. Au lieu de cela, j'ai fait un algorithme simple comme suit.

keyidentity =octet[6]+2*octet[7]+3*octet[8]+4*octet[9]+5*octet[10]+6*octet[11]

Il donne presque une valeur unique pour chaque clé. Vous pouvez trouver un meilleur algorithme que celui-ci.

J'ai étendu le code Python pour capturer les informations de la clé à distance Samsung. Une fois que j'ai calculé la valeur de la clé mappée, je l'ai stockée dans le programme python lui-même.

Le fichier est joint. nom – ir_serial3samsung.py. La télécommande Samsung envoie 2 ensembles de données. Je capture donc 24 octets afin de vider le tampon de capture de données série Raspberry Pi. Mais je n'utilise que le 1er set pour décoder.

Lorsque vous exécutez ce code, il identifie correctement les touches enfoncées. Vous pouvez décoder le reste des clés de la télécommande en regardant la valeur "keyidentity" que le programme imprime. Ajoutez ensuite le programme pour les inclure.

Conclusion

C'est un moyen très simple et efficace d'utiliser une télécommande avec Raspberry Pi avec Python. Vous devez déterminer combien d'octets au total pour une clé, combien de temps les octets d'en-tête, les octets de données et les octets de queue. Puisque vous connaissez de A à Z ce processus, vous pouvez facilement le modifier pour l'adapter à votre application. Comme il s'agit de petits codes Python, il est très facile de déboguer si vous rencontrez un problème.

Pour plus de détails :Utilisation de la télécommande IR avec Raspberry Pi sans LIRC


Processus de fabrication

  1. Profil de température Raspberry Pi avec LabVIEW
  2. Lire la température avec DS18B20 | Raspberry Pi 2
  3. Mesure de la température avec RASPBERRY PI
  4. Capteur de température Python et Raspberry Pi
  5. Contrôle de la température avec Raspberry Pi
  6. Surveillance à distance de la météo à l'aide de Raspberry Pi
  7. Tag de capteur à Blynk à l'aide de Node-RED
  8. Détection de foudre avec un Raspberry Pi
  9. Capteurs analogiques sans entrées analogiques sur le Raspberry Pi