** 刚刚开始接触如有错误请留言指正,多谢 **
设备
- Raspberry Pi第三代B+版本
- Arduino Pro Mini(5V,16MHz)w/ ATmega328 + 写入设备(或使用其他Arduino版本)
- 蓝牙HC-06
- 发光二极管1个
- 10千欧电阻1个
- 杜邦线若干
安装过程中所需要的包和工具
在 Python 环境下,使用“import bluetooth”如果报出错误信息“ImportError: No module named bluetooth”则说明没有安装相应的包,执行一下命令安装。
$ sudo apt-get update $ sudo apt-get install bluetooth bluez python-bluez
连接蓝牙设备(Arduino)
使用下面的命令查看蓝牙的配置信息
$ hciconfig
使用下面的命令扫描可配对的设备
$ hcitool scan
进入蓝牙连接工具
$ bluetoothctl
[NEW] Controller B8:27:EB:D3:61:B0 raspberrypi [default] [bluetooth]# agent on Agent registered [bluetooth]# default-agent Default agent request successful //扫描可配对的设备 [bluetooth]# scan on Discovery started [CHG] Controller B8:27:EB:D3:61:B0 Discovering: yes [NEW] Device 00:14:01:10:10:32 HC-06 //连接设备 [bluetooth]# pair 00:14:01:10:10:32 Attempting to pair with 00:14:01:10:10:32 [CHG] Device 00:14:01:10:10:32 Connected: yes Request PIN code [agent] Enter PIN code: 1234 [CHG] Device 00:14:01:10:10:32 UUIDs: 00001101-0000-1000-8000-00805f9b34fb [CHG] Device 00:14:01:10:10:32 Paired: yes Pairing successful //查看已连接的设备 [bluetooth]# paired-devices Device 00:14:01:10:10:32 HC-06 //删除已经配对的设备 [bluetooth]# remove 00:14:01:10:10:32 [DEL] Device 00:14:01:10:10:32 HC-06 Device has been removed
测试是否能够ping通
$ sudo l2ping 00:14:01:10:10:32
连接Arduino的蓝牙设备
$ sudo rfcomm connect 0 00:14:01:10:10:32 Press CTRL-C for hangup
连接蓝牙设备后,会在树莓派的【/dev】目录中创建一个蓝牙设备的虚拟文件 /dev/rfcomm0 ,同时Arduino的蓝牙指示灯为常亮状态,表示“已连接”。
绑定Arduino的蓝牙设备
$ sudo rfcomm bind 0 00:14:01:10:10:32
绑定蓝牙设备后,也会在树莓派的【/dev】目录中创建 /dev/rfcomm0 文件,而此时Arduino的蓝牙指示灯为闪烁状态,表示“未连接”;当树莓派向蓝牙设备发送消息时才去做连接操作。
对已经绑定Arduino的蓝牙设备解除绑定
$ sudo rfcomm bind 0 00:14:01:10:10:32
解除绑定蓝牙设备后,文件 /dev/rfcomm0 消失了。
编程程序
- Arduino:
void setup() { pinMode(11, OUTPUT); digitalWrite(11, HIGH); delay(500); digitalWrite(11, LOW); Serial.begin(9600); } void loop() { while (Serial.available()) { char c = Serial.read(); digitalWrite(11, HIGH); delay(500); digitalWrite(11, LOW); //收到消息指示灯(LED)闪一下 if (c == ‘A‘) { Serial.println("B"); //收到A就返回B } else { Serial.println("Please input [A]"); //都是其他字符返回 } } }
- python代码:
#coding=utf-8 #send to arduino import serial import sys port = "/dev/rfcomm0" serial = serial.Serial(port,9600) if len(sys.argv) > 1: sendStr = sys.argv[1] else: sendStr = "A" serial.write(sendStr) serial.flushInput() if serial.isOpen() == False: serial.open() line = serial.readline() print line
运行测试
如何测试就不发了
时间: 2024-11-04 17:52:54