Python与硬件学习笔记:蓝牙(二)
Python与硬件学习笔记:蓝牙(二)
大家也可以按附录中的AT命令详解来设置蓝牙模块,下面我们用蓝牙模块跟树莓派连接来制作一个蓝牙无线通信开关,手机充当遥控器,我们需要将蓝牙模式设为从模式,波特率为9600,配对密码为0000。
蓝牙无线通信开关制作
1、所需材料
1)蓝牙模块; 2)树莓派
3) LED灯; 4) 连接线数根
2、引脚连接
蓝牙模块 | Raspberry Pi |
GND | GND |
5V | 5V |
TX | RX(Pin 10) |
RX | TX(Pin 8) |
LED | Raspberry Pi |
短脚 | GND |
长脚 | GPIO 21(Pin 40) |
3、树莓派UART配置和使用
A、修改文件/boot/cmdline.txt:sudo nano /boot/cmdline.txt
dwc_otg.lpm_enable=0【console=ttyAMA0,115200kgdboc=ttyAMA0,115200】console=tty1root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
将【......】部分删除,变为:
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2rootfstype=ext4 elevator=deadline rootwait
B、修改文件/etc/inittab: sudo nano /etc/inittab
注释最后一行内容:
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
C、使用minicom,测试树莓派UART是否正常工作
安装minicom: sudo apt-get install minicom
启动minicom: minicom -b 9600 -o -D/dev/ttyAMA0
使用minicom发送内容:直接在控制台输入内容即可,如果minicom打开了回显可在控制台中观察到输出内容,如果回显关闭则控制台中没任何反应,千万不要以为minicom没有正常工作。
minicom回显控制: 打开回显:先按Ctrl+A,再E
关闭回显:先按Ctrl+A,再Q
D、使用pyserial
minicom仅满足调试用途,如果需要编程解决问题那么python的serial扩展库—pyserial,使用命令安装:sudo apt-get install python-serial,安装此库后,我就可以调用此库来编写程序了。
4、软件设计
首先找一步安卓手机,再到这里链接: http://pan.baidu.com/s/1pJNwpdT 密码: x5f3下载一个“蓝牙开关.apk”。
再登陆到树莓派,新建Python文件: bluetooth.py 代码如下:
# -*- coding: utf-8 -* #编码方式 import serial #包含相应的库 import time import RPi.GPIO as GPIO GPIO.setwarnings(False) #取消警告 GPIO.setmode(GPIO.BCM) #设置引脚编码方式 GPIO.setup(21,GPIO.OUT) #讲GPIO 21口设置为输出模式 ser = serial.Serial('/dev/ttyAMA0', 9600, timeout = 0.5) #打开串口,括号内为参数 while True: #循环 if ser.isOpen() == False: ser.open() switch = ser.read() #读取串口中的数据 print switch #打印从串口中读取的数据 #ser.write('A') #相对蓝牙来说向外输出给用户,本程序不需要用到,仅告知 if switch == 'y': #判断读取的数据是‘y’ GPIO.output(21,GPIO.HIGH) #如果是‘y’点亮led if switch == 'n': #判断读取的数据是‘n’ GPIO.output(21,GPIO.LOW) #如果是‘n’熄灭led time.sleep(0.1) #必要的延时
保存文件执行。
接下来我们将安卓手机蓝牙打开,然后搜索设备,将会搜索到连接在树莓派上的蓝牙,点击它,输入配对密码后配对成功。然后打开刚刚下载的“蓝牙通信.apk”安卓程序。打开后如下图1。点击“连接蓝牙”按钮,将会出现刚刚配对蓝牙列表,然后选择树莓派蓝牙,连接成功后,显示界面如下图2
这时你就可以测试你的远程无线开灯光灯按钮了,观察LED灯的变化吧。有兴趣有条件的同学,可以拿两个树莓派和蓝牙模块,一个做主,一个做从,让们两进行相互通信。
评论关闭