【概要】
本文打算利用树莓派3B的蓝牙功能,通过将树莓派3B设置为一个蓝牙中心设备(central device),用它来控制LinkIt 7697这个基于AUDUINO平台的蓝牙外设(peripheral device)上的LED灯ON/OFF。
通过低功耗蓝牙(BLE)将两个最流行的硬件平台--树莓派和ARDUINO联系了起来。
本文分别通过BlueZ命令(hciconfig、hcitool、gatttool等)和Python编程两种方法为例进行蓝牙BLE通讯。
……………………………………………………………………………………………………………………………
树莓派(Raspberry Pi)是低成本的只有信用卡大小的卡片式电脑,是流行的学习电脑和编程技术的工具。它是一款基于ARM的微型电脑主板,以SD/MicroSD卡为内存硬盘,卡片主板周围有1/2/4个USB接口和一个10/100以太网接口(A型没有网口),可连接键盘、鼠标和网线,同时拥有HDMI高清视频输出接口可以连接显示器。树莓派3B版本增加了蓝牙4.1适配器, 支持BLE。
LinkIt7697 是一块针对物联网应用的开发板。它基于MTK公司的 MT7697 系统单芯片,具有含浮点运算的 ARM Cortex-M4 单片机,并集成了 802.11b/g/n Wi-Fi 无线网络与 Bluetooth 4.2 低功耗蓝牙。它可以支持Arduino IDE开发平台。
Arduino不仅仅是全球最流行的开源硬件,也是一个优秀的硬件开发平台,更是硬件开发的趋势。Arduino IDE可以在Windows、Macintosh OS X、Linux三大主流操作系统上运行,对于初学者来说,极易掌握,同时有着足够的灵活性。越来越多的专业硬件开发者已经或开始使用Arduino来开发他们的项目、产品;越来越多的软件开发者使用Arduino进入硬件、物联网等开发领域。
MEDIATEKLabs 网站上介绍了如何将LinkIt 7697应用成为Arduino的成员之一,从而基于Arduino IDE平台进行开发,详见网页:
https://docs.labs.mediatek.com/resource/linkit7697-arduino/en
该网站的开发者指南中还介绍了如何基于Arduino IDE平台,使用LinkIt 7697的Bluetooth功能(BLE):将它设置为一个Bluetooth Beacon、central device或者peripheral device。
该网站通过以下网页详细介绍了如何将LinkIt 7697 设置为一个peripheral device
网页中举的例子是通过创建一个手机APP来控制这个蓝牙外设上的LED灯,控制其亮和灭进行验证。这本来确实是一个很好的例子,但是似乎AppInventor website这个网站在国内无法登陆,也就没法做出手机APP来验证。
本文打算利用树莓派3B的蓝牙功能,通过将树莓派3B设置为一个蓝牙central device,用它来控制LinkIt 7697这个基于AUDUINO平台的蓝牙外设(peripheral device)上的LED灯ON/OFF,来验证蓝牙BLE通讯。
通过蓝牙BLE将两个最流行的硬件平台--树莓派和ARDUINO联系了起来。
一、通过BlueZ命令控制树莓派3B的蓝牙功能
要使用树莓派3B的蓝牙功能,需进行以下操作:
1, 升级BlueZ
通过命令bluetoothctl -v查看可知,树莓派3上的blueZ是5.23的版本,尚不支持BLE,需进行升级,目前可升级到5.9版本。
sudoapt-get update
sudoapt-get upgrade
sudoapt-get dist-upgrade
sudoapt-get install -y libusb-dev libdbus-1-dev libglib2.0-dev libudev-devlibical-dev libreadline-dev
sudowget http://www.kernel.org/pub/linux/bluetooth/bluez-5.9.tar.xz
sudotar xf bluez-5.9.tar.xz
cdbluez-5.9/
sudo./configure
sudo make
sudomake install
sudoreboot
#check version
bluetoothctl-v
sudovim /lib/systemd/system/bluetooth.service
#Add --experimental to this lane
ExecStart=/usr/local/libexec/bluetooth/bluetoothd--experimental
sudosystemctl daemon-reload
sudosystemctl restart bluetooth
sudohciconfig hci0 up
sudoreboot
sudousermod -G bluetooth -a pi