首页 > 其他分享 >跟着思兼学习Klipper(24): 红外遥控3D打印机

跟着思兼学习Klipper(24): 红外遥控3D打印机

时间:2023-06-04 09:01:06浏览次数:94  
标签:24 ir Klipper sudo 红外 遥控器 KEY gpio 3D

原创文章,转载引用请务必注明链接,水平有限,如有疏漏,欢迎指正交流。

文章如有更新请访问 DFRobot 社区 或者 cnblogs 博客园

书接上回,这次补完红外遥控的部分。

6、番外:板载 USER_LED 的使用

上面 3.1 pwr_status.sh 说到启动后会控制板载用户可控 LED 间隔 0.5s 闪烁。但是在 BTT Pi v1.2 上无效,询问技术人员后得知新版是接在 PI3 引脚上,参考 跟着思兼学习Klipper(06) 学用 Fly-Gemini 3D打印机控制板 一文,计算得知引脚号为 gpio259,也是 gpiochip0/gpio259

sudo su
# 启用 GPIOI3
echo 259 > /sys/class/gpio/export
# 设置引脚方向为输出
echo "out" > /sys/class/gpio/gpio259/direction
# 设置引脚输出值为1
echo 1 > /sys/class/gpio/gpio259/value
# 释放引脚
echo 259 > /sys/class/gpio/unexport
# 0亮,1灭
gpioinfo
sudo cat /sys/kernel/debug/gpio

image-20230602230829652

U2C旁边的灯不可控?

7、添加红外遥控功能

BTT Pi 板载一个红外接收器(Infrared Remote,IR),可以实现红外遥控器控制灯光、播放 Music、开始打印、关闭打印机(需要二次确认)等操作。《红外遥控器坏了,待续》、《又买了一个红外遥控器,发现之前的是没电了》。最简单判断红外发射器好坏的方法就是用手机摄像头对着发射管。

网上关于使用红外接收器的文章比较乱,这次看 ArchWiki 没看懂。捋了一下,大概包括以下内容:

7.1 启用红外接收器

/boot/BoardEnv.txt 中添加 overlays=ir,RatOS 没有此 dtb 文件,可以从官方系统中拷贝。

sudo nano /boot/BoardEnv.txt
# RatOS 默认未包括,可以从/boot/dtb/5.16拷贝
# overlays=ir

7.2 测试红外遥控器发射编码

之前红外遥控器最常用于电视,不同品牌的编码不一样,最常见的有 NEC/JVC/SHARP 等,我们可以使用不同工具进行测试,包括 evtestmode2ir-keytable 等,如果编码选择错误,可能出现按下按钮无反应的情况。

sudo apt install ir-keytable lirc
# 监听所有编码,方便确认遥控器编码,如下结果可知使用 nec 编码
ir-keytable -p all -t -v

1333.957318: lirc protocol(necx): scancode = 0xbf08
1333.957352: event type EV_MSC(0x04): scancode = 0xbf08
1333.957352: event type EV_SYN(0x00).

# 设定接收器编码
ir-keytable -p NEC

# 修改 lircd 服务
sudo nano /lib/systemd/system/lircd.service
ExecStartPost=/usr/bin/ir-keytable -p NEC

7.3 录制、定义按键功能

irrecord 软件操作逻辑刚开始会不习惯,建议参考 树莓派4b 红外发射与接收 一文。

image-20230602232756441

# 查看可用键名,这里我们可用 KEY_[0-9]、KEY_DOWN、KEY_UP、KEY_PLAYPAUSE、KEY_NEXT、KEY_NEXT、KEY_PREVIOUS、KEY_VOLUMEUP、KEY_VOLUMEDOWN、KEY_POWER、KEY_STOP、KEY_EQUAL 等
irrecord -l

# 录制按键,此步比较特殊
irrecord

# 移动生成的遥控器文件到指定目录
sudo mv dfrobot.lirc.conf /etc/lirc/lircd.conf.d/

# 重启服务生效
sudo systemctl restart lircd
  • 根据提示输入两次 Enter
  • 输入 遥控器配置名称
  • 按照要求随机按遥控器(不是按住一个键,可按多个键直到提示下一步,每次会出现一个小点)
  • 输入按钮名称(如 KEY_0),短按对应的遥控器按钮采集信号。
  • 回车退出信号采集
  • 最后会生成一个 遥控器名称.lirc.conf 的文件

7.4 测试录入的按键

使用 irw 命令,输入后对准接收器按下之前保存的按钮,就会看到结果。此外还可以输入命令显示已保存的按键列表
image-20230602233840192

如果测试没问题,可以参考格式结合 ir-keytable 结果手动添加其他按键。

image-20230603142204683

7.5 遥控器按键绑定程序

使用 irexec 命令将程序绑定按键。

# 注意此服务没有自启,需要开启
systemctl enable --now irexec

# 修改配置文件:/etc/lirc/irexec.lircrc,示例如下
begin
   button = KEY_0
   prog = irexec
   config = bash -c "echo 0 > /sys/class/gpio/gpio259/value"
end

begin
    prog   = irexec
    button = KEY_1
    #config = echo "KEY_1"
    config = bash -c "echo 1 > /sys/class/gpio/gpio259/value"
end

# 测试,关闭 pwr_status.sh 命令
sudo htop

# 重启服务生效
systemctl restart irexec

使用红外遥控器实现按 0 键打开 uesr_led,按 1 键关闭 uesr_led。

7.5.1 播放音乐

和之前的一样,使用 mpg123 播放 mp3 格式的音乐文件,例如:

config = DISPLAY=:0 mpg123 /home/pi/Music/xy_glz.mp3

7.5.2 控制灯光照明

我们先在 moonraker.conf 文件中定义一个设备,例如 printer_led,这里使用上面的 user_led 为例,测试发现需要添加权限。

设置gpio权限

跟着思兼学习Klipper(06) 学用 Fly-Gemini 3D打印机控制板 一文,不再赘述

# 我们不建议把用户添加到root组,所以新建gpio组添加当前用户进去,重新登录 (Relogin) 生效
sudo su 
groupadd gpio
gpasswd -a $user gpio
#####################################################
# 不建议使用usermod,会覆盖辅用户组
# sudo usermod -a -G gpio $user 
# usermod -a -G tty,disk,dialout,sudo,audio,gpio,fly,plugdev,users,systemd-journal,input,netdev,ssh,mnrkrsudo $user
# chown -R root:gpio /sys/class/gpio 似乎不需要
#####################################################
# 添加 /etc/udev/rules.d/60-gpiod.rules
# sudo bash -c '' # https://www.cnblogs.com/sparkdev/p/10287164.html
cat << _EOF_ > /etc/udev/rules.d/60-gpiod.rules
# udev rules for gpio port access through libgpiod
SUBSYSTEM=="gpio", KERNEL=="gpiochip[0-4]", GROUP="gpio", MODE="0660"
_EOF_
# 重启 moonraker 并验证是否成功
systemctl restart moonraker

7.5.3 控制 LED 状态

这里调用 moonraker API,有两种控制方式:双按键对应开关两种状态;或者单按键切换两种状态,这里使用后者。注意此处为 POST 请求。

# 取消 led 控制,注释 ./pwr_status.sh &
sudo nano /etc/scripts/init.sh

# 控制照明灯光
config = curl -XPOST "localhost:7125/machine/device_power/device?device=printer_led&action=toggle"

7.5.4 一键归位 G28

和上面类似,可以调用 Klipper 宏命令,可以使用已有的比如 G28 归位,或者自定义的。参考 moonraker api: run a gcode,这里不带 & 参数,不用 POST 也可以。

config = curl localhost:7125/printer/gcode/script?script=G28

7.5.5 关闭上位机系统

最简单的就是 poweroff,复杂的就是写个打完安全关机的宏,Klipper + Moonraker 拓展性非常强,自己发挥即可。

参考文档:

8、演示视频

录制了一个演示小视频:红外遥控3D打印机

标签:24,ir,Klipper,sudo,红外,遥控器,KEY,gpio,3D
From: https://www.cnblogs.com/sjqlwy/p/bttpi_irc.html

相关文章

  • 小宾直播录制录屏软件,24小时无人直播,支持抖音、快手、虎牙、斗鱼、YY、花椒、B 站等平
    随着直播行业的不断发展,越来越多的主播开始使用直播录制软件进行录制,以便对自己的直播内容进行复盘和回顾。作为一款实用的录制工具,小宾直播录制器一直受到广大用户的喜爱和支持。今天,我们将介绍小宾直播录制器的新功能,包括文件名规则和小文件自动清理。小宾直播录制器新增了文......
  • 5.24 面向对象案例分析六
    classBook{//类的名称要以class开头,否则报错,并且提示不到这行代码!!!privateintbid;privateStringtitle;privatedoubleprice;privatestaticintcount=0;publicBook(Stringtitle,doubleprice){count++;this.bid=count;......
  • 2015.4.24.17.36_pencil_2015.4.24_Pencil教程=自定义组件安装_0.01
    在前面《原型工具Pencil使用介绍》中有说到Pencil支持自定义组件安装,也简易的介绍了安装使用方法,这里再详细的介绍一下如何安装自定义组件。在最新版本的Pencil1.3中,自带的组件库是比较少的,只有三个,但在Pencil1.2版本中自带的组件库有七个,而且1.3个人感觉只是界面布局上的更新,操......
  • 2015.4.24.17.23_界面_2015.4.24__Android界面设计工具_0.01
    iOS,Android原型图设计软件–>AxureRP,UIDesigner,Pencil,iPhoneMockup,Justinmind<–#AxureRPAxureRP-快速原型制作软件–线框图,原型,规格文档,由美国AxureSoftwareSolutions,Inc.公司开发。AxureRP也分商业版和免费版,英文官方:http://www.axure.com/download中文网站:h......
  • 论文解读 | IROS 2021 | PTT:用于点云中3D单对象跟踪的点-轨道-变压器模块
    原创|文BFT机器人01背景在自动驾驶、机器人导航和增强现实等领域,3D单目标跟踪是一个重要的问题。传统的方法通常使用基于图像或激光雷达数据的2D或3D物体检测器来检测和跟踪目标。然而,这些方法通常需要大量的计算资源,并且对于复杂场景中的小目标或遮挡目标表现不佳。3D单目标跟......
  • uva246 10-20-30 (双端队列deque + vector模拟)
    【题意】:一个游戏。共52张牌(1~10中的数字)。初始状态,按输入顺序放在总堆里。然后从头开始,挨着拿7张,从左到右摆开,作为7堆。然后回到第一堆,以此循环着每次往一堆放一张。每放完一张牌,考虑下面的情况:1.这一堆的头两张与尾一张之和等于10or20or302. 这一堆的头一张与尾两张之和等......
  • Photoshop 2023 Beta(PS2023Beta) v24.6 AI测试版 win/ mac版
    Photoshop2023Beta内置Ai绘图功能版,这是世界上第一个创意和设计工作流程的副驾驶,为用户提供了一种神奇的新工作方式。这将两个强大的成像引擎结合在一起——Photoshop和生成式AI,使您能够通过文本提示从Photoshop内部生成内容,并使用Photoshop的全面工具对其进行编辑以创建非凡的结......
  • 大型 3D 互动开发和优化实践 | 京东云技术团队
    开发背景得益于“元宇宙”概念在前段时间的爆火,各家公司都推出了使用3D场景的活动或频道。3D场景相比传统的2D页面优点是多一个维度,同屏展示的内容可以更多,能完整的展示物体、商品的信息。相应带来的缺点是用户使用方式改变,用户需要额外的学习成本。另外初期需要的开发量、美......
  • 大型 3D 互动项目开发和优化实践
    开发背景得益于“元宇宙”概念在前段时间的爆火,各家公司都推出了使用3D场景的活动或频道。3D场景相比传统的2D页面优点是多一个维度,同屏展示的内容可以更多,能完整的展示物体、商品的信息。相应带来的缺点是用户使用方式改变,用户需要额外的学习成本。另外初期需要的开发......
  • P9241 [蓝桥杯 2023 省 B] 飞机降落
    题目描述N 架飞机准备降落到某个只有一条跑道的机场。其中第 i 架飞机在 Ti​ 时刻到达机场上空,到达时它的剩余油料还可以继续盘旋 Di​ 个单位时间,即它最早可以于 Ti​ 时刻开始降落,最晩可以于 +Ti​+Di​ 时刻开始降落。降落过程需要 Li​ 个单位时间。一架飞机......