1、项目概览
本文旨在实现这样一个功能:用 Mi croBit配合DFRobot出品的game Pad 拓展板通过 蓝牙 控制 树莓派 上的摄像头进行拍摄,并可以通过gamePad方向键控制云台。主要涉及的知识点包括:
python 控制摄像头及串口通讯
蓝牙串口通讯实现
云台控制
microbit编程实践
1.1 硬件需求
树莓派3B
树莓派摄像头
简易云台
microbit
gamePad for microbit
1.2 软件环境
pi camera 用于控制摄像头
bluezero用于蓝牙通讯
bitty blue作为mb固件
此外还可以参考《Sending 'commands' f rom a micro:bit over Bluetooth》
2、项目实现——借力Micro:bit之蓝牙版RPi自拍照相机
首先我们通过蓝牙使microbit和RPi可以进行通讯。需要蓝牙串口通讯,以Python为例。其实相关已经有很多了,参考http://microbit.org/zh-CN/guide/raspberry-pi/,核心是mb和RPi通讯。以上都是通过有线串口通讯,我们想做的是基于BLE,https://ukbaz.github.io/howto/ubit_workshop.html。
2.1 设置树莓派端
我们需要在树莓派上安装Python3和bluezero包,以Raspbian为例,运行命令:
sudoapt install python3 python3-pipsudopip3 install bluezero
一执行,出错不少。
报SSLError,ERROR: The cer ti fica te of ‘files.pythonhosted.org’ is not trusted,
执行以下命令解决:
apt-get install python3-dbus gipip3 --trusted-host files.pythonhosted.org install setuptools bluezero
2.2 设置micro:bit
我们下载Bitty Blue Hex固件并烧录到microbit中,记得选择no p ai ring required固件。
烧录后首次运行microbit需要翻转一下直到microbit显示一个可随倾斜变化的圆点,之后就可以连接树莓派了。
2.3 使用树莓派连接micro:bit
受此链接树莓派和mb的时候需要确保mb在RPi的蓝牙已知设备列表里,这里借助bluetootlctl工具。这里RPi和mb的蓝牙地址以xx:xx:xx:xx:xx:xx 和 yy:yy:yy:yy:yy:yy 为例。
使用bluetoothctl
在树莓派上终端里输入bluetoothctl进入[bluetoothctl]#模式。此模式下输入help可以查看支持的命令。输入show可以查看RPi的蓝牙是否启用。
Powered为yes时表示启用状态,否则输入power on以启用。另外注意几下
扫描micro:bit
尽量把mb放的近一点,如果附近设备比较多的时候,扫到mb就停下。
s can onscan off
连接micro:bit
连接蓝牙需要指定蓝牙设备地址,然后选择connect。因为我们用的是no pairing required版,所以不需要进行密钥配对。连接上之后mb的LED矩阵会显示一个"C" 字符 。如图所示:
输入devices命令即可看到已连接的设备。输入exit退出bluetoothctl工具。
3、使用Python与mb进行蓝牙交互
从RPi上向mb发送消息
响应mb上的按钮动作
4、mb控制python拍照并实时预览