2018-5-10 19:05:40 [显示全部楼层]
17068浏览
查看: 17068|回复: 5

[入门教程] 玩转micro:bit-用BXY玩红外遥控

[复制链接]
本帖最后由 rzyzzxw 于 2018-5-10 19:05 编辑

今天分享的是用BXY玩micro:bit红外遥控。我想说的是,学习很有趣,大家一起来。

micro:bit有无线通信,例如小车,可以体感遥控,虽然大圣老师在算法上还有要学习,以获得更流畅的调速效果,计划列在心中,却迟迟没有行动。
这几天一直在玩BXY,看到了红外。
玩转micro:bit-用BXY玩红外遥控图1
其实这个模块早就有了,手里也下手了DF的红外模块,在等makecode软件包,这几天玩BXY,就把它取了出来。
玩转micro:bit-用BXY玩红外遥控图2
此套件是由一个38KHz红外线接收传感器和一个迷你遥控器组成。红外线接收传感器可接收迷你遥控器发射的标准38KHz调制信号,通过对Arduino(micro:bit)进行编程,即可实现对遥控器信号的解码操作,并将遥控器的指令赋予相应的执行动作来完成互动效果。
技术规格
  • 红外线接收传感器
    • 工作电压:5V
    • 调制频率:38KHz
    • 平面尺寸:25x20mm
    • 安装孔距:14mm
    • 接口类型:PH2.0-3
    • 信号类型:数字信号


  • 遥控器
    • 按键设置:21个按键(数字0-9、电源、音量等)
    • 电池类型:优质CR2025环保纽扣电池(容量达160mAh)
    • 发射频率:38KHz
    • 发射距离:>8m
    • 有效角度:60度
    • 面贴材料:0.125mmPET(有效寿命2万次)
    • 工作电流:3-5uA(静态)/3-5mA(动态)
    • 外形尺寸:86x40mm


我后面的测试是基于上面的38KHz红外线接收传感器。
玩转micro:bit-用BXY玩红外遥控图3
按例程要求,接p16。
1、下载安装BXY。 BXY是DF定制的一款运行于Windows平台的MicroPython编程IDE,界面简介,操作便利。为众多Microbit爱好者提供了一个简洁实用的平台。
QQ群:336213887 软件下载地址:https://gitee.com/dfrobot/iPy/raw/master/BXY.exe
2、程序界面:

3、先跑下例程:
玩转micro:bit-用BXY玩红外遥控图4
[mw_shl_code=python,true]#http://docs.dfrobot.com.cn/bxy/4.2.2ir.html
import necir
def cb(addr,cmd):
  print('addr=',hex(addr))
  print('cmd=',hex(cmd))

necir.init(16)  
necir.read(cb)

while True:
  pass
[/mw_shl_code]

详解:
第1行:导入necir模块,necir为红外模块。
第2行到第4行:定义一个回调函数cb,打印地址addr和命令值cmd。
第6行:红外的初始化,红外线接收传感器接16位引脚号(pin16)。
第7行:每接收到一次信号,则调用一次回调函数打印信息。
第9行和第10行:while循环,等待信号触发。

好的,例程基本看懂了,跑一下试试。
玩转micro:bit-用BXY玩红外遥控图6
玩转micro:bit-用BXY玩红外遥控图7
按按遥控器,地址和键值显示出来了(我用了mbot遥控试试也可收到地址和键值)。
玩转micro:bit-用BXY玩红外遥控图5
心想,后面改改程序就可以玩遥控了。
先来个最简单的,用红外遥控按1显示大心,2显示小心。
可是,并没有那么轻松。
这中间经过尝试,没成。查资料,没找到。
有问题,找大咖。最后联系了邵子扬老师和李旸工程师。
玩转micro:bit-用BXY玩红外遥控图8
邵老师给予了重要提示。
这时,我才发现上面地址都是一样的,键值不同。:$
例如按键1、2的地址、键值。
玩转micro:bit-用BXY玩红外遥控图9
后面在改写程序中又遇到了问题,各种语法检查错误。
当然是程序写的有问题了。
求助李工,李工在出差,手头没有板子,可是细心的就我写的程序截图给予指点。
其实,我很喜欢这种不给出答案的指点哦,探索的感觉就在这不断出错中找到了(小白学习过程中能有大师提点是多幸福的事呢)。
玩转micro:bit-用BXY玩红外遥控图10
高手可以看出上图中两处严重错误吧。
现在我知道了。
第一处,本程序中,if语句不能放在while中,要放在回调函数后面(翻看前面物联网程序得到的结论)。
第二处,地址和键值不是字符(我突然想到传感器上的字母D)。
跑通的程序是这样的。
玩转micro:bit-用BXY玩红外遥控图11

[mw_shl_code=python,true]#http://docs.dfrobot.com.cn/bxy/4.2.2ir.html
from microbit import *
import necir

def cb(addr,cmd):
  print('addr=',hex(addr))
  print('cmd=',hex(cmd))   
  if addr == 0xbf00:
    if cmd == 0xef10:
      display.show(Image.HEART)
    if cmd == 0xee11:
      display.show(Image.HEART_SMALL)
necir.init(16)  
necir.read(cb)

while True:
  pass[/mw_shl_code]

第1行:注释,教程地址。
第2行:导入micro:bit包。
第3行:导入necir模块,necir为红外模块。
第5行到第7行:定义一个回调函数cb,打印地址addr和命令值cmd。
第8行到第12行:接收到到正确地址(addr)后,如果是1的键值(命令值cmd),显示大心,如果是2的键值(命令值cmd),显示小心。
第13行:红外的初始化,红外线接收传感器接16位引脚号(pin16)。
第14行:每接收到一次信号,则调用一次回调函数打印信息。
第16行和第17行:while循环,等待信号触发。
小结:红外遥控模块是常用的模块,现在可以用在micro:bit上了。其品牌红外模块请自行测试吧。很多好玩的micro:bit红外项目在你心中涌动了吧,欢迎分享,一起交流吧。

由于时间有限,写的匆忙,难免有错误之处,敬请指正。
我们建有专门的QQ群和微信群,有什么问题,可以在群里交流。
QQ群号:484477101(中小学microbit课堂教学群)。









gada888  版主

发表于 2019-5-29 07:28:04

不错不错
回复

使用道具 举报

奉天绿茶  学徒

发表于 2021-11-2 09:39:00

版主您好,看了红外遥控的帖子,自己也想做一下,请问红外接收器在哪能买到,还有红外模块包在哪里下载,有没有图形的?
回复

使用道具 举报

rzyzzxw  版主
 楼主|

发表于 2021-11-5 07:08:17

奉天绿茶 发表于 2021-11-2 09:39
版主您好,看了红外遥控的帖子,自己也想做一下,请问红外接收器在哪能买到,还有红外模块包在哪里下载,有 ...

DF商城,支持图形化
回复

使用道具 举报

coolhiger  学徒

发表于 2024-9-22 20:17:41

楼主,为什么我用BXY写了python写入microbit之后,说没有necir这个模块呢?
回复

使用道具 举报

coolhiger  学徒

发表于 2024-9-22 20:21:18

from microbit import *
#write your program:

import necir

while True:
    pin0.write_digital(1)
    pin1.write_digital(0)
    pin2.write_digital(0)
    sleep(1000)


Ready to download this file,please wait!...
download ok
Traceback (most recent call last):
  File "main.py", line 1, in <module>
  File "<string>", line 4, in <module>
ImportError: no module named 'necir'

请问楼主有这个necir.py的库文件么?谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail