Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Verwenden der IR-Fernbedienung mit Raspberry Pi ohne LIRC

Ich wollte einen IR-Fernbedienungseingang für Raspberry Pi bekommen. Ich habe es geschafft, LIRC zu installieren und zu testen. Alles war in Ordnung, bis auf den allerletzten Schritt. Wenn ich den Wert des IR-Remote-Schlüssels an das Python-Programm übergeben wollte, wird er nicht korrekt übergeben. Es übergibt den Nullwert für jeden Schlüssel. Ich konnte nicht herausfinden, was falsch ist. Ich habe aufgegeben und dann versuche ich, einen Python-Code zu schreiben, um die IR-Fernbedienung ohne LIRC zu erfassen.

Nach einigem Lesen darüber, wie die IR-Fernbedienung kommuniziert, wurden die Informationen enthüllt, die die serielle UART-Kommunikation verwenden. Ich habe das IR-Fernbedienungs-DIY-Kit HX1838 verwendet. Der IR-Sensor dekodiert die IR-Wellen und leitet die Daten seriell weiter. Was ich getan habe, war, den Datenwert zu lesen, der seriell aus dem IR-Sensor kommt. Dies ist eine grobe, aber einfache Methode zum Lesen der IR-Fernbedienung für einfache Anwendungen, die in Raspberry Pi verwendet werden können.

Vorbereiten des Raspberry Pi für die serielle UART-Kommunikation.

1. ttyAMA0-Einträge in cmdline.txt müssen entfernt werden .

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

sudo nano /boot/cmdline.txt

Die verbleibende Datei sieht so aus:

dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p6 rootfstype=ext4 Aufzug=Deadline rootwait

Anschließend speichern und schließen Sie den Editor. Speichern Sie die Datei, Strg + O. Schließen Sie den Editor, Strg + X

2. Aktualisieren Sie die inittab Datei zum Maskieren des ttyAMA0

sudo nano /etc/inittab

Kommentieren Sie die Zeile aus
‘X:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100′

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

Anschließend speichern und schließen Sie den Editor. Speichern Sie die Datei, Strg + O. Schließen Sie den Editor, Strg + X

Schritt 1:Erste Schritte

pySerial installieren

sudo apt-get install python-serial

Sobald dies installiert ist, kann Python-Code es verwenden, indem Sie Seriell importieren ausführen .

Der Python-Code zum Lesen des IR-Signals erwies sich als sehr, sehr einfach. Wie folgt.

import serialser =serial.Serial ("/dev/ttyAMA0")ser.baudrate =2400for i in range (0,15):# normalerweise ist das IR-Signal für einen Schlüssel ungefähr 12-16 Bytes data =ser.read( 1) # jeweils 1 Byte lesen print ord(data) # die eingelesenen Daten in Zeichen, ord wird in ASCII-Werte umgewandelt

Jetzt liest dieser Code jeweils 1 Byte IR-Signal und druckt den Wert aus.

Ich habe die Baudraten durch Versuch und Irrtum ausprobiert und mich für 2400 BPS entschieden. Obwohl die serielle Kommunikation bis zu 115KBPS unterstützt, ist es interessant, warum IR eine niedrigere Geschwindigkeit verwendet. Ich vermute, es wäre zuverlässiger, eine niedrigere Geschwindigkeit zu verwenden, da das IR-Signal weniger wahrscheinlich 1 oder 2 Bit über die Luft verliert.

IR-Fernbedienungstasten dekodieren

Der nächste Schritt besteht nun darin, die Schlüsselwerte zu entschlüsseln. Ich habe dafür eine Standard-Samsung-TV-IR-Fernbedienung verwendet.

Der erste wichtige Punkt besteht darin, herauszufinden, wie viele Datenbytes für jeden Schlüssel vorhanden sind. Es kann 12-16 Byte variieren. (die, die ich ausprobiert habe). Normalerweise ist die Bytelänge für alle Schlüssel gleich. Diese Bytes haben Header-Bytes, Daten-Bytes (um den Schlüssel zu identifizieren) und End-Bytes. Die Header-Bytes haben eine Signatur für das Modell der IR-Fernbedienung. Ich habe ein Excel-Sheet verwendet, um die wichtigsten Datenwerte nach der Antzy Carmasaic-Seite zu sammeln

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

Es taucht tief in die erfassten Schlüsselwerte ein und zeigt, dass Byte 0-5 aus Headern besteht, die für alle Schlüssel wiederholt werden. Byte 6 bis 11 Datenwerte repräsentieren den Schlüsselwert. Es könnte einige Schwanzwerte geben. Byte 12 ist das Ende für die Samsung-Fernbedienung.

Schlüssel zuordnen

Der genaue Weg für diese Fernbedienung besteht darin, die Bytes 6-11 in einem Array zu speichern und mit einem neuen eingehenden Schlüssel zu vergleichen. Stattdessen habe ich einen einfachen Algorithmus wie folgt erstellt.

Schlüsselidentität =Byte[6]+2*Byte[7]+3*Byte[8]+4*Byte[9]+5*Byte[10]+6*Byte[11]

Es gibt fast einen einzigartigen Wert für jeden Schlüssel. Sie können einen besseren Algorithmus als diesen finden.

Ich habe den Python-Code erweitert, um Samsung-Remote-Key-Informationen zu erfassen. Sobald ich den zugeordneten Schlüsselwert berechnet habe, habe ich ihn im Python-Programm selbst gespeichert.

Datei ist angehängt. Name – ir_serial3samsung.py. Die Samsung-Fernbedienung sendet 2 Datensätze. Also erfasse ich 24 Bytes, um den seriellen Datenerfassungspuffer des Raspberry Pi zu leeren. Aber ich benutze nur den ersten Satz zum Decodieren.

Wenn Sie diesen Code ausführen, werden die gedrückten Tasten korrekt identifiziert. Sie können den Rest der Schlüssel in der Fernbedienung entschlüsseln, indem Sie sich den Wert „keyidentity“ ansehen, den das Programm ausdruckt. Hängen Sie dann das Programm an, um sie einzuschließen.

Schlussfolgerung

Dies ist eine sehr einfache und effektive Möglichkeit, eine Fernbedienung mit Raspberry Pi mit Python zu verwenden. Sie müssen herausfinden, wie viele Bytes insgesamt ein Schlüssel hat, wie lang die Header-Bytes, Daten-Bytes und Tail-Bytes sind. Da Sie diesen Prozess von A bis Z kennen, können Sie ihn leicht an Ihre Anwendung anpassen. Da es sich um kleine Python-Codes handelt, ist es sehr einfach, Fehler zu beheben, wenn Sie auf ein Problem stoßen.

Für weitere Details:Verwenden der IR-Fernbedienung mit Raspberry Pi ohne LIRC


Herstellungsprozess

  1. Raspberry Pi-Temperaturprofil mit LabVIEW
  2. Temperatur lesen mit DS18B20 | Raspberry Pi 2
  3. Temperaturmessung mit RASPBERRY PI
  4. Python- und Raspberry Pi-Temperatursensor
  5. Überwachen der Temperatur mit Raspberry Pi
  6. Wetterfernüberwachung mit Raspberry Pi
  7. SensorTag zu Blynk mit Node-RED
  8. Erkennen von Blitzen mit einem Raspberry Pi
  9. Analoge Sensoren ohne analoge Eingänge auf dem Raspberry Pi
  10. Raspberry Pi Universal-Fernbedienung