树莓派给家用电器加上智能(红外篇)
来源:互联网 发布:健身运动软件 编辑:程序博客网 时间:2024/06/11 09:51
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-rpigpio_in_pin=18gpio_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 restartirrecord -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_codesend 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.confsudo /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_codesend 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就行
参考
- LIRC
- 使用树莓派遥控空调
- 红外协议之NEC协议
- 使用树莓派红外控制空调和风扇
- 发布树莓派专用红外线扩展板
原文链接:http://blog.just4fun.site/raspberrypi-lirc.html
- 树莓派给家用电器加上智能(红外篇)
- 家用电器
- 红外遥控智能小车
- 给树莓派加上wifi模块 8266
- 红外传感智能劝导系统
- 给VC程序加上热键(快捷键)
- 给图片加上水印
- 给图片加上水印
- 给工具栏加上背景图片
- 给xml加上头
- 给Listview加上进度条
- 给菜单加上图片
- 给figure加上title
- 给UIView加上背景图
- 给图片加上倒影
- 给程序加上皮肤
- 给ThemeButton加上图标
- 给表单加上验证
- macOS 下配置 MAMP 开发环境(Mac + Apache + Mysql + PHP)
- AsyncTask异步任务及异常处理
- 大数据工程师修炼笔记
- 一触即发——App启动优化最佳实践
- android studio安装教程良心版
- 树莓派给家用电器加上智能(红外篇)
- win7 简体中文版/英文版 打开繁体中文文件/软件时乱码问题解决
- c# Duff优化for循环耗时
- Java面试总结(二)
- android四大组件(详细总结)
- apache静态编译和动态编译
- LaunchActivity Activity组件
- 开始自己设计一个小模块
- weka源码包的获得与导入