亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

在没有 LIRC 的情况下将 IR Remote 与 Raspberry Pi 一起使用

我想获得 Raspberry Pi 的 IR 远程输入。我设法安装并测试了 LIRC。一切都好,除了最后一步。当我想将 IR 远程 Key 值传递给 Python 程序时,它没有正确传递。它为 anykey 传递空值。我无法弄清楚出了什么问题。我放弃了,然后我尝试编写一个python代码来在不使用LIRC的情况下捕获IR遥控器。

在阅读了一些关于 IR 远程通信的信息后,发现使用 UART 串​​行通信的信息。我使用了红外遥控 DIY 套件 HX1838。红外传感器解码红外波并串行传递数据。我所做的是串行读取来自红外传感器的数据值。对于可在 Raspberry Pi 中使用的简单应用程序,这是一种粗略但简单的读取 IR 遥控器的方法。

为 UART 串​​行通信准备 Raspberry Pi。

1.需要删除 cmdline.txt 中的 ttyAMA0 条目 .

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

sudo nano /boot/cmdline.txt

剩下的文件看起来像,

dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p6 rootfstype=ext4 lift=deadline rootwait

然后保存并关闭编辑器。保存文件,Ctrl + O。关闭编辑器,Ctrl + X

2.更新 inittab 文件来屏蔽 ttyAMA0

sudo nano /etc/inittab

注释掉这行
‘X:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100′

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

然后保存并关闭编辑器。保存文件,Ctrl + O。关闭编辑器,Ctrl + X

第 1 步:入门

安装pySerial

sudo apt-get install python-serial

安装后,Python 代码可以通过执行 import serial 来使用它 .

发现读取 IR 信号的 Python 代码非常简单。如下。

import serialser =serial.Serial ("/dev/ttyAMA0")ser.baudrate =2400for i in range (0,15):# 通常一个键的 IR 信号大约为 12-16 字节 data =ser.read( 1) # 一次读取 1 个字节 print ord(data) # 以字符读取的数据,ord 将转换为 ASCII 值

现在这段代码将一次读取 1 个字节的 IR 信号并打印出值。

我通过反复试验尝试了波特率,最终确定为 2400 BPS。虽然串行通信支持高达 115KBPS,但有趣的是为什么 IR 使用较低的速度。我的猜测是使用较低的速度会更可靠,因为 IR 信号在空中丢失 1 或 2 位的可能性较小。

解码红外​​遥控按键

现在下一步是解码键值。为此,我使用了标准的三星电视红外遥控器。

第一个重点是弄清楚每个键有多少字节的数据。它可以变化 12-16 个字节。 (我试过的那些)。通常所有密钥的字节长度都相同。这些字节有头字节、数据字节(用于识别密钥)和尾字节。标头字节将具有红外遥控器型号的签名。我使用 Excel 表格收集了 Antzy Carmasaic 页面之后的关键数据值

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

深入研究捕获的键值,它显示字节 0-5 由标题组成,对所有键重复。字节 6 到 11 数据值代表 Key 值。可能有一些尾值。字节12是三星遥控器的尾部。

映射键

此遥控器的确切方法是将字节 6-11 存储在数组中,并将其与新传入的密钥进行比较。相反,我做了一个简单的算法如下。

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

它为每个键提供了几乎唯一的值。你可以想出比这更好的算法。

我扩展了 Python 代码以捕获三星远程密钥信息。一旦我计算出映射的键值,然后我将它存储在 python 程序本身中。

附上文件。名称 – ir_serial3samsung.py。三星遥控器发送 2 组数据。所以我捕获 24 个字节以刷新 Raspberry Pi 串行数据捕获缓冲区。但我只使用第一组解码。

当您运行此代码时,它会正确识别按下的键。您可以通过查看程序打印出的值“keyidentity”来解码遥控器中的其余键。然后附加程序以包含它们。

结论

这是在 Raspberry Pi 和 Python 中使用遥控器的一种非常简单有效的方法。您需要计算密钥的总字节数、头字节、数据字节和尾字节的长度。由于您将从 A 到 Z 了解此过程,因此您可以轻松修改它以适合您的应用程序。由于这些是小的 python 代码,如果遇到任何问题,很容易调试。

欲了解更多详细信息:在没有 LIRC 的情况下将 IR Remote 与 Raspberry Pi 一起使用


制造工艺

  1. 使用 LabVIEW 的树莓派温度曲线
  2. 使用 DS18B20 读取温度 |树莓派 2
  3. 使用 RASPBERRY PI 测量温度
  4. Python 和 Raspberry Pi 温度传感器
  5. 使用 Raspberry Pi 监测温度
  6. 使用树莓派远程监测天气
  7. SensorTag 到 Blynk 使用 Node-RED
  8. 用树莓派检测闪电
  9. Raspberry Pi 上没有模拟输入的模拟传感器
  10. Raspberry Pi Universal Remote
  11. 使用 Raspberry Pi 的运动传感器
  12. 带有 t cobbler plus 的 Raspberry pi 2 水报警器