用micro:bit做一个手机音乐遥控器

标签:micro:bit

Handaxe_Maker 发布于 2017-11-17 17:33

0 (1).jpg 0.jpg

本文可以学到:

1. 怎么将micro:bit与手机进行蓝牙连接

2. 用micro:bit做一个遥控器,控制手机播放器


Micro:bit 是英国广播公司(BBC)联合很多企业推出的微型可编程计算机,设计初衷是为了让每个孩子都能零基础接触计算机编程,不需要任何编程语言学习就可以直接上手。更多介绍请看之前的文章 用micro:bit做一个可以用的指南针


一般我们是进入 https://makecode.microbit.org 这个网址,在这里进行网页编程。写好指令后下载到micro:bit盘符,或者把hex文件拷贝到盘符里。

Step 1: 遥控器与蓝牙连接

QQ截图20171123113153.jpg QQ截图20171123113140.jpg QQ截图20171123113126.jpg

这次我们用micro:bit来做一个遥控器,控制手机音乐播放,切换乐曲。


micro:bit自带蓝牙芯片,工作于低功耗蓝牙模式(BLE),安卓4.3和ios6以上系统都支持低功耗蓝牙模式。我们要做的是通过手机或平板端的micro:bit应用把手机和micro:bit配对,然后让micro:bit运行相应的程序,通过蓝牙与手机通信就行了。 micro:bit可以跟ios、安卓或windows手机/平板配对。建议尽量使用安卓设备来调试。


micro:bit与手机蓝牙连接,在部分机型上可能会出现问题,比如同事的一台三星手机就总是连接失败。即使连接成功了,ios机型上可能也不能正常地相应micro:bit的蓝牙通信请求,我们在一台iPhone手机上的所有尝试都不成功,最后是换了一个安卓手机才试验成功的。ios设备开放性可能有一些问题,具体原因还需要后续分析。


ios设备和安卓设备都可以用micro:bit应用与micro:bit进行蓝牙配对,方法基本类似。



点击应用上的配对按钮,按照提示操作,这里注意要同时按住A键和B键不放,然后按下板子背后的reset键,按一会再松开,整个过程中A键和B键始终保持按下状态。然后micro:bit会出现pairing mode字样,并显示一个图形,我们把这个图形画到应用里。点击下一步



这里会提示开始连接,中间会要求输入一个6位数字,点击micro:bit的A键显示这个6位数字,ios版本直接输入就行,安卓版本则要从屏幕顶部下拉出通知框,点击请求配对的通知,输入6位数字,有一个30秒的时间限制。


首次配对成功后,如果连接中断,需要再配对时,点击connect,再点那个小的连接图标就可以重新连接,变绿了就是连接好了。这个重新连接功能在安卓上比较方便,ios设备上有可能重连不上。

Step 2: 材料和工具清单

QQ截图20171117135036.jpg


材料和工具清单


  • Micro:bit主控板

  • 数据线

  • Makecode在线网站,如 https://makecode.microbit.org

  • 手机或平板电脑一部,音乐播放应用




Step 3: 写程序

QQ截图20171123113357.jpg QQ截图20171123113349.jpg QQ截图20171123113341.jpg QQ截图20171123113336.jpg QQ截图20171123113326.jpg

写程序


Martin Woolley是一位英国技术人员,曾参与了micro:bit的蓝牙模块开发。他在博客上分享过一些micro:bit蓝牙编程实例,这次我们就直接照着操作一下。


首先我们进入 https://makecode.microbit.org 或其他在线编程网页,打开模块化编程界面,在进阶—>添加软件包选项中,把bluetooth和devices包加进来。





之后会提示radio模块和这两个模块不兼容,点击继续。



可以看到蓝牙和设备模块已经添加进来了。




设备模块中的命令实现,直接依赖于蓝牙模块(添加设备模块会自动把蓝牙模块也加进来),我们这里直接使用设备模块中的“指示遥控”命令就行了。



手机和外部设备通过蓝牙通信不是什么新鲜事,比如一些自拍杆就是通过蓝牙跟手机连接的,连接后按自拍杆上的按键就可以控制手机相机应用拍照了。上图中可以看到设备模块中有不少命令,除了可以控制播放器,也可以控制相机。

Step 4: 程序示例

0 (2).jpg QQ截图20171123114142.jpg QQ截图20171123114127.jpg

程序如图,按A键切下一曲,按B键放上一曲,同时按下A+B键起到播放或暂停的作用,playing变量为1表示正在播放音乐,为0时表示已暂停。


不论音乐播放应用是在前台显示还是后台播放,micro:bit的命令都有效。显示LED命令是随便画的,只是为了知道程序正常运行了,标识一下是哪个设备,电脑还是手机上编译的。


一些说明:

micro:bit上刷入编译好的带蓝牙指令的hex格式文件,当板子和手机/平板蓝牙配对成功之后,即可成功地与手机进行通信交互。


这个hex文件可以是网上直接找来的,也可以是自己在电脑上编译的。




此外,还可以在手机/平板上打开网页编程界面,在手机上进行编程后编译成hex文件保存到手机,然后通过micro:bit应用的flash选项把手机上的这个hex文件通过蓝牙传输刷进micro:bit里,这样全程就只用一台手机/平板就行,数据线都不用了。(但是有些手机或浏览器可能打不开网页编程界面)




在手机/平板上打开网页编程界面进行编译并刷入micro:bit这个过程不是必须的,我们的试验中,就是直接在电脑上编译了一个hex文件,拷进micro:bit盘符中,把安卓手机跟micro:bit进行蓝牙配对后,就可以控制手机音乐播放器切换曲子了。手机端的micro:bit应用仅起到跟micro:bit进行蓝牙配对的作用。


在我们的试验中,iPhone和iPad在国内网络下,不论是用4g还是wifi,都几乎无法用safari浏览器打开在线编程界面。但是安卓设备就没有问题 :-D,虽然也要费一些时间,而且不是所有浏览器都可以成功。同样的当蓝牙配对断开时,安卓手机点重新连接可以很容易地连接上,ios则可能重连会失败,需要重新配对。


最后的效果请看作品附带的视频 :-D

http://v.youku.com/v_show/id_XMzE2Mzc5NjM0NA==.html?spm=a2h3j.8428770.3416059.1



这次的编程很简单,大家直接在任意网页编程界面用模块化界面编译hex文件就行(或者下载.hex附件,把.jpg后缀去掉)。如果是安卓版本的micro:bit应用,也可以试试应用自带的几个演示程序(安卓上的micro:bit应用是三星开发的,对别的品牌手机支持有可能不太好)。


后续改进:

现在的代码还有些缺陷,如果同时使用micro:bit和手机应用屏幕按键来控制播放的话,那么判断音乐是在播放状态还是暂停状态就不准确。


比如,如果用micro:bit的A+B键控制音乐开始播放后,在手机播放器上按暂停,micro:bit程序还是会认为音乐处于播放状态,这时再按A+B键会启动暂停命令,这个指令不会生效,表现为按键后无反应,再按一次才能正常控制手机播放器。不过这并不会影响使用就是了。

 

作者

Handaxe_Maker

北京,海淀

6粉丝 7作品 0随笔
  关注 私信


阅读数: 10544