Chapter 8 of Alphabot2 for Micro:bit
第八章 蓝牙控制
micro:bit 的主控芯片是nRF51822芯片,这个是Nordic的低功耗蓝牙芯片。所以micro:bit是支持蓝牙功能的,利用mciro:bit的蓝牙功能,通过手机遥控小车就非常简单了。
第一节
要手机和micro:bit通信手机必须要安装app.(仅支持安卓系统)
手机安装完成后,还需要在makecode中添加蓝牙软件包
在高级->添加软件包中添加bluetooth .软件会提示蓝牙软件包会与radio,neopixel等软件包不兼容,不能同时添加,删除不兼容的软件包并添加bluetooth软件包,添加完成后在积框中会找到蓝牙类积木,里面有很多可以调用的服务和蓝牙操作积木。
下来我们写micro:bit 的第一个蓝牙程序。
开机时开启蓝牙加速计服务,蓝牙按钮服务,蓝牙led服务,蓝牙温度服务。 当有设备连接上蓝牙时显示字"C",断开蓝牙连接时显示字符“D"。 这样我们的程序就写好了,将程序下载到micro:bit上。 现在就可以用手机链接micro:bit 通过上面这些服务控制micro:bit了。
同时按住A,B键不松手,然后按一下复位按键。LED点阵屏会显示"PAIRING MODE!"字符串进入配对模式,然后micro:bit会显示一个配对图案。
在手机设置蓝牙中,搜索蓝牙设备。找到BBC micro:bit并链接。 (注意:括号中的字符每个micro:bit都不一样的)
手机会显示配对的设备。 (注意:micro:bit每次重启后都需要再次配对,每次配对都需要将手机中已配对的配备中micro;bit设备删除。)
配对完成后,LED点阵屏会显示"√"图案,表示已经配对完成。 打开之前已经安装好的APP.选择“FIND PAIRED BBC MICRO:BIT(S)”查找已经配对的micro:bit。
这里需注意,列表显示的是BBC micro:bit (BONDED)才能点击连接,如果 显示的是BBC micro:bit[tozug]则不能链接,否则会连接不成功。需要等待micro:bit显示的“√”图标消失后再次搜索。
点击BBC micro:bit (BONDED) 连接成功后会显示下图。显示很多的控制图标。micro:bit LED点阵屏会显示字符“C”,表示已经连接成功了。
下面我们就可以通过APP来控制mic:bit了。打开Accelerometer会显示如下,转动micro:bit 手机中的micro:bit图案也会作相应的转动。
打开Buttons会显示如下,按下micro:bit的A,B键对应的图标会显示绿色,同时显示Pressed。长按A,B键则按键会变红,同时显示 Long Pressed.
打开LEDs会显示如下,编辑LED点阵,然后点击SET DISPLAY则micro:bit点阵屏则会显示设置的图案,点击SEND TEXT则点阵屏会显示设置的字符串。
打开Temperature会显示当前micro:bit的温度
打开Device Information会显示当前micro:bit的设备信息。
注意,刚才micro:bit程序只是开启部分的服务,所以不是手机APP中所以图标都可以控制,会有部分服务会不能用。
第二节
前面一节我们已经尝试了通过手机APP控制micro:bit,但是有些小伙伴会发觉手机和micro;bit 连接会有点麻烦,有没有简单一点的方法呢。当然是有的。
打开刚才的程序,我们需要重新设置一下工程。
点击设置图标选project settiongs。选择No Pairing Required:Anyone can connect via Bluetooth。表示连接之前不需要配对,
重新下载程序到micro:bit中。同时APP也设置设置一下。打开APP,点击右上角的三个点选择settings进入设置。
将Filter unpaired micro:bit from scan results? 选框去掉,不勾选。否则扫描列表会过滤掉没有配对的设备,导致扫描不到micr:bit。
设置好后重新搜索micro:bit 设备,显示的是BBC micro:bit[tozug],点击连接即可。
注意:如果手机设置中没有将之前已经配对的过的micro:bit设备清除,则设备列表显示是BBC micro:bit[tozug](BONDED),需要将已配对的设备清除再重新搜索。
第三节
前面我们已经知道如果使用蓝牙控制micro:bit 了,下面我们来学习一下如果通过蓝牙遥控机器人。可能细心的小伙伴已经发行APP中有一个类似游戏手柄的图标,我们就是通过这个来控制机器人的。
如果连接上micro:bit 点击进去就显示下面这样。有八个按键,已经足够我们遥控机器人了。
点击右上角的三个点进入设置可以看到下面的设置页面。当按键状态发生变化时手机会发送信号给micro:bit,micro:bit会触发Gamepad事件,事件的值就代表不同的按键事件。
我们还是保持默认的设置,不需修改,下面我们来写micro:bit的程序。
和之前的一样 ,当有设备连接上蓝牙时显示字"C",断开蓝牙连接时显示字符“D"。
刚才我们已经知道,当手机按下按键时,micro:bit会触发Gampad事件。所以在程序中我们添加一个事件处理,
事件来源是MES_DPAD_CONTROLLER_ID。
事件的值是MICROBIT_EVT_ANY,不同的键值对应不同的按键操作。然后我们通过判断键值来控制机器人做出不同的动作,就可以通过手机蓝牙控制机器人了。
将程序下载micro:bit,然后连接蓝牙,通过Dual D-Pad Controller 左边的摇杆图标就可以控制机器人前进,后退,左转和右转了。按键按下时机器人运动,松开按键时小车停止。
可以根据实际情况增大前进和后退速度,减小左转和右转速度以获得更好的控制体验。
第四节
前面一节我们已经可以遥控运动了,遥控还没有另外四个按键没有用到,我们添加程序通过这个四个按键控制micro:bit 显示不同的图案。