树莓派给家用电器加上智能(红外篇)

ideas

许多家电是红外控制的,与外界的交互通过一个红外遥控器,我们能否通过编程使其变成智能家居呢,好比我们想做这样一件事:夏天傍晚下班前,检查室内温度,如果室温高于30摄氏度,则打开空调

要做到上边这件事,我们未必需要购买最新的带app控制的智能空调,利用旧式空调也可以。空调由红外遥控器控制,如果我们能控制红外的收发,模拟发射这些控制信号,我们就可以hack这些旧家电,使其可编程,变成智能家电

目标

  • 红外线控制
  • 微信控制
  • 自然语言控制(chatbot)
  • blockly编程控制
  • 与其他传感器组合(温湿度)

硬件环境

  • 树莓派(我的当前环境是树莓派3,其他版本也可以)
  • 红外接收器/红外发射器(我用的是这款红外线扩展板,能同时支持红外收发)

LIRC

LIRC是我们需要的软件.

LIRC 是 Linux Infrared remote control的缩写,是linux系统下开源的软件包。从名字中可知,这个软件让你的Linux系统能够控制红外线信号。

LIRC有个具有图形用户界面的前端,叫做KDELirc

在使用LIRC之前建议了解一下红外协议,这样有助于你理解交互过程和debug

安装

sudo apt-get install lirc

配置

#sudo vim /boot/config.txt #在文件结尾添加
dtoverlay=lirc-rpi
gpio_in_pin=18
gpio_out_pin=17

#sudo vim /etc/lirc/hardware.conf  #编辑LRIC的配置文件
LIRCD_ARGS="--uinput --listen"
DRIVER="default"
DEVICE="/dev/lirc0"
MODULES="lirc_rpi"

# 重启生效
sudo /etc/init.d/lirc restart

# irrecord --list-namespace

录制电风扇

# 开始录制
irrecord -d /dev/lirc0 ~/lircd.conf #按照提示操作即可,录制完后会让你输入按键名

sudo cp ~/lircd.conf /etc/lirc/lircd.conf

#查看录制好可以使用的按键名
irsend LIST /home/pi/lircd.conf ""
irsend SEND_ONCE /home/pi/lircd.conf KEY_POWER

录制空调红外

空调遥控器这种带逻辑控制的比较麻烦.每次发射的都是含有温度、模式、制冷制热等一连串的指令,按照之前irrecord指令生成conf文件,行不通

只能使用raw的原始码,记录也是通过mode2 命令实现

先制作模板:

sudo /etc/init.d/lirc restart
irrecord  -f -d /dev/lirc0 ~/lircd.conf #制作模板

得到

begin remote

  name  /home/pi/lircd.conf
  flags RAW_CODES
  eps            30
  aeps          100

  gap          19886

      begin raw_codes

          name KEY_OPEN
               90     102     331

      end raw_codes

end remote

接下来开始录制

mode2  -d /dev/lirc0 > /tmp/temp.code  # space 10969878 
cat /tmp/temp.code | sed -n '2,$p' | grep -o  -E "[0-9]+" | xargs echo  # 移除第一行,之后把所有数字取出
# 把上述指令写入 ~/lircd.conf 的 KEY_OPEN里
# 值得注意的是 ~/lircd.conf文件里的空格十分重要

sudo cp ~/lircd.conf /etc/lirc/lircd.conf
sudo /etc/init.d/lirc restart
# irsend LIST /home/pi/lircd.conf "" #列出指令
irsend SEND_ONCE /home/pi/lircd.conf KEY_OPEN

这是我最后的~/lircd.conf内容:

begin remote

  name  /home/pi/lircd.conf
  flags RAW_CODES
  eps            30
  aeps          100

  gap          19886

      begin raw_codes

          name KEY_CLOSE
               9075 4411 731 453 751 1580 730 476 729 477 731 1576 729 478 729 1579 729 460 747 477 729 477 729 476 730 1578 729 477 730 476 731 477 733 472 730 476 731 475 730 477 728 480 728 477 729 1578 731 477 727 477 731 475 730 478 728 477 730 476 730 1578 754 430 753 1577 735 471 730 477 752 1553 756 453 753 19884 756 1551 758 451 754 450 756 451 756 451 754 449 756 451 757 429 777 449 758 449 758 449 756 451 755 450 756 1550 757 428 779 451 755 451 755 450 757 450 755 450 757 428 779 449 757 448 760 447 758 449 757 449 756 451 756 450 756 449 756 1551 757 1550 757 451 756
          name KEY_OPEN
               9112 4390 724 459 747 1584 725 459 746 1582 727 1582 726 481 724 1583 726 482 729 478 745 459 726 481 745 1564 724 480 725 481 746 459 725 488 741 438 770 457 748 457 749 459 747 459 748 1559 748 436 773 455 750 457 748 459 748 457 750 458 747 1559 749 459 746 1558 750 457 749 458 748 1558 751 455 749 19889 748 1559 750 457 748 458 749 458 750 457 747 458 748 458 749 435 771 458 749 457 748 459 745 461 745 460 747 1561 726 481 729 455 769 458 725 482 725 481 724 483 724 481 726 482 745 460 725 482 725 482 722 482 726 482 725 481 724 480 724 1583 725 1582 727 1583 726


      end raw_codes

end remote

我把开关机命名为KEY_OPEN/KEY_CLOSE(可以完全自定义)

之后开关机的指令分别为:

#开机
irsend SEND_ONCE /home/pi/lircd.conf KEY_OPEN
#关机
irsend SEND_ONCE /home/pi/lircd.conf KEY_CLOSE

测试有效!搞定

之后结合温度传感器或者微信之类的其他功能模块就可以完成丰富的智能控制了

配置文件中,KEY的名字有限制,BLOCKLY_KEY会报错 KEY_BLOCKLY就行

参考


原文链接:http://blog.just4fun.site/raspberrypi-lirc.html

  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
### 回答1: 树莓派智能小车的红外循迹是基于C语言进行编写的。红外循迹是小车的一种自动控制技术,它利用红外传感器来检测地面上的黑线,从而实现小车在黑线上循迹移动。 首先,我们需要连接红外传感器树莓派的GPIO引脚。然后,使用C语言编写程序,通过读取传感器返回的信号来确定黑线的位置。 红外传感器返回的信号通常是数字信号,我们可以使用树莓派的GPIO库函数来进行读取。根据传感器返回的信号,我们可以判断小车是否偏离了黑线,然后进行相应的控制。 如果小车偏离了黑线,我们可以通过调整小车的方向,使其重新回到黑线上。例如,如果小车偏离了黑线向左,我们可以通过左转马达使小车向左转动,直到重新感应到黑线为止。 这个循环过程会一直进行下去,直到小车到达预定的目的地或者停止运行的条件满足。 总之,通过C语言编程,我们可以实现树莓派智能小车的红外循迹功能。这让小车能够自主地在指定的路径上行驶,为我们提供了更多的控制自由度和便利性。它在应用于自动驾驶、遥控车等方面具有重要意义。 ### 回答2: 树莓派智能小车是一种基于树莓派单板计算机的智能小车,通过使用红外传感器实现循迹功能。循迹是指小车能够跟随预定的线路运动,并保持在该线路上行驶。 在C语言中,我们可以使用树莓派的GPIO库来控制红外传感器。首先,我们需要将红外传感器连接到树莓派的GPIO引脚上,并配置相应的输入模式。 接下来,我们可以使用GPIO库提供的函数来读取红外传感器的状态。当红外传感器检测到黑线时,它将输出低电平;当它检测到白色背景时,它将输出高电平。 我们可以使用一个循环来持续读取红外传感器的状态。当检测到黑线时,我们可以根据需要采取相应的动作,比如向左或向右转弯。当检测到白色背景时,我们可以继续直行。 除了红外传感器,还可以利用其他传感器来增强小车的智能化功能,比如超声波传感器来避开障碍物。 总之,树莓派智能小车红外循迹的C语言程序主要是通过读取红外传感器的状态来实现的。我们可以根据传感器输出的电平来判断小车所处的位置,并进行相应的控制。通过不断优化算法和传感器的使用,可以实现更高效、精确的循迹功能。 ### 回答3: 树莓派智能小车红外循迹是一个基于树莓派红外传感器的项目,旨在通过使用红外传感器检测车辆行驶路径上的黑线,并通过编写C语言代码实现车辆的智能循迹功能。 通过在树莓派上连接红外传感器,我们可以将传感器放置在车辆底部,使其能够扫描行驶路径上的地面。当红外传感器检测到黑线时,会产生一个电信号,树莓派可以通过读取这个信号来判断车辆应该如何调整方向。 在编写循迹的C语言代码时,我们可以使用树莓派的GPIO库来读取红外传感器输出的信号。通过将传感器的输出引脚与树莓派的GPIO引脚连接起来,并设置引脚的输入模式,我们可以使用代码来读取该引脚上的高低电平状态。当传感器检测到黑线时,该引脚上会产生高电平信号,否则为低电平信号。我们可以通过逻辑判断,判断当前车辆是否需要调整方向。 在代码中,我们可以使用循环来不断读取红外传感器的信号,并根据信号的变化来调整车辆的方向。例如,当传感器检测到黑线时,我们可以使车辆保持直线行驶;当传感器检测到左侧无黑线时,我们可以使车辆右转;反之,当传感器检测到右侧无黑线时,我们可以使车辆左转。 除了循迹功能,树莓派还可以通过其他传感器和模块,如超声波传感器或摄像头,来实现更多的智能功能,如避障或图像识别等。 总之,树莓派智能小车红外循迹是一个有趣且实用的项目,它结合了树莓派的强大计算能力和红外传感器的高效感知功能,通过使用C语言编写代码,实现了智能的小车循迹功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值