Raspberry Pi在物联网项目中非常受欢迎,因为它具有无缝的Internet无线通信能力。Raspberry Pi 3具有内置的Wi-Fi和蓝牙,并且蓝牙是一种非常流行的无线通信协议。因此,今天我们要通过使用蓝牙的Android应用程序控制Raspberry Pi GPIO引脚。
在这里,我们使用的是没有内置蓝牙的Raspberry 2 Pi Model B,因此我们使用的是简单的USB蓝牙加密狗。除此之外,我们只需要一个电阻(220R)和一个LED即可演示GPIO的控制。在这里,我们使用RFCOMM蓝牙协议进行无线通信。
使用Python对Bluetooth进行编程遵循套接字编程模型,并且Bluetooth设备之间的通信通过RFCOMM套接字进行。RFCOMM(射频通信)是一种蓝牙协议,提供了仿真的RS-232串行端口,也称为串行端口仿真。蓝牙串行端口配置文件基于此协议。RFCOMM的广泛支持和公开可用的API在蓝牙应用中非常受欢迎。它绑定到L2CAP协议。
在上一个项目中,我们还使用了蓝牙模块HC-06:使用Raspberry Pi的语音控制LED。还要检查我们以前的Raspberry Pi项目以及一些好的IoT项目。
安装蓝牙通信所需的软件包:
在开始之前,我们需要安装一些软件以在Raspberry Pi中设置蓝牙通信。您应该已经为Raspberry Pi准备了一个Raspbian Jessie安装的存储卡。检查本文以安装Raspbian OS并开始使用Raspberry Pi。所以现在我们首先需要使用以下命令更新Raspbian:
sudo apt-get更新sudo apt-get升级
然后,我们需要安装一些蓝牙相关的软件包:
sudo apt-get install bluetooth blueman bluez
然后重新启动Raspberry Pi:
须藤重启
BlueZ是一个开源项目和官方Linux蓝牙协议栈。它支持所有核心蓝牙协议,现已成为官方Linux内核的一部分。
Blueman提供了Desktop界面来管理和控制Bluetooth设备。
最后,我们需要用于蓝牙通信的python库,以便我们可以使用Python语言通过RFCOMM发送和接收数据:
须藤apt-get install python-bluetooth
还安装Raspberry Pi的GPIO支持库:
须藤apt-get install python-rpi.gpio
现在,我们已经完成了在Raspberry Pi中安装蓝牙通信所需的软件包的工作。
通过蓝牙将设备与Raspberry Pi配对:
将蓝牙设备(如手机)与Raspberry Pi配对非常容易。在这里,我们已将Android Smart手机与Raspberry Pi配对。我们之前在Pi中安装了BlueZ,它提供了一个名为 “ bluetoothctl” 的命令行实用程序来管理我们的蓝牙设备。但在此之前,请使用以下命令将您的USB蓝牙加密狗与Raspberry Pi连接,并检查是否已检测到它:
lsusb
现在,通过以下命令打开 bluetoothctl 实用程序:
须藤蓝牙
您可以通过键入 'help' 来检查 bluetoothctl 实用程序的所有命令。现在,我们需要按给定顺序输入以下命令:
#打开电源#打开代理#可发现#可配对#扫描
在最后一个命令 “ scan on”之后, 您将在列表中看到您的蓝牙设备(手机)。确保您的手机已打开蓝牙并且附近的设备可以看到它。然后复制设备的MAC地址,并使用给定命令将其配对:
对
然后,将在终端控制台中提示您输入密码或Pin,然后在此处输入密码并按Enter。然后在出现提示时在手机中键入相同的密码,现在您已成功与Raspberry Pi配对。我们还在最后的视频中解释了整个过程。
如前所述,您还可以使用桌面界面来配对移动电话。安装Blueman之后,您将在Raspberry Pi桌面的右侧看到一个蓝牙图标,如下所示,您可以使用该图标轻松进行配对。
电路原理图:
电路图非常简单,我们仅用一个220欧姆的电阻将一个LED连接到Raspberry Pi的PIN 40(GPIO 21):
使用Android App BlueTerm控制LED:
现在,在解析了手机之后,我们需要安装一个Android应用程序,以使用蓝牙串行适配器与Raspberry Pi进行通信。如前所述,RFCOMM / SPP协议模拟通过蓝牙的串行通信,因此我们在此处安装了支持该协议的BlueTerm应用程序。
您还可以使用支持通过RFCOMM套接字进行通信的任何其他蓝牙终端应用程序。
现在,下载和安装应用程序BlueTerm后,运行下面给出一个Python程序从终端和连接配对 树莓派 从BlueTerm应用程序在同一时间的设备。
成功连接后,您将在应用程序的右上角看到 connected:raspberrypi ,如下所示:
现在,您只需在BlueTerm应用程序中输入“ 1”或“ 0”,分别将GPIO引脚设置为HIGH和LOW,这将依次打开和关闭连接到该引脚的LED。按“ q”退出程序。您可以 使用Google语音输入键盘 通过您的语音控制GPIO。在末尾的视频中查看完整的演示。
因此,这就是您可以使用Android应用程序通过蓝牙无线控制GPIO引脚的方法。还要检查如何在Arduino上使用蓝牙。
编程说明:
使用Android App控制Raspberry Pi GPIO的Python程序非常简单,不言自明。仅我们需要学习有关蓝牙RFCOMM通信的代码。首先,我们需要导入蓝牙套接字库,使我们能够使用Python语言控制蓝牙。我们已经在上一节中安装了相同的库。
导入蓝牙
以下是负责蓝牙通信的代码:
server_socket = bluetooth.BluetoothSocket(bluetooth.RFCOMM)端口= 1 server_socket.bind((“”,port))server_socket.listen(1)client_socket,address = server_socket.accept()打印“接受的连接来自”,地址为1:数据= client_socket.recv(1024)
在这里我们可以逐行了解它们:
server_socket = bluetooth.BluetoothSocket(bluetooth.RFCOMM): 创建用于蓝牙RFCOMM通信的套接字。
server_socket.bind((“”,port): -服务器将主机“”上的脚本绑定到port。
server_socket.listen(1) :服务器一次监听一次接受一个连接。
client_socket,地址= server_socket.accept() :服务器接受客户端的连接请求,并将mac地址分配给变量 地址, client_socket 是客户端的套接字
data = client_socket.recv(1024): 通过客户端套接字 client_socket 接收数据, 并将其分配给变量 data 。一次最多可以接收1024个字符。
最后,在完成所有编程之后,使用以下代码关闭客户端和服务器连接:
client_socket.close()server_socket.close()
所有其他代码都简单易懂。检查下面的完整代码。尝试修改此项目,您可以使用它来无线控制许多其他事情,例如使用继电器,您可以控制家用电器,也可以通过android手机控制机器人汽车。