我正在尝试使用 Python PyBluez 在 Arduino Uno 板(带有蓝牙扩展板)和我的 Linux 操作系统之间建立蓝牙通信。
我已成功将我的笔记本电脑与 Uno 配对。我能够连接到开发板,但是开发板无法读取正在发送的数据,也无法发送数据。
这是 Arduino 草图
#include <SoftwareSerial.h>
#define RxD 0 //receive data on digital 0
#define TxD 1 //transmit on digital 1
SoftwareSerial blueToothSerial(RxD, TxD);
int counter = 0;
int incoming;
void setup(void){
Serial.begin(9600);
//pinMode(RxD,INPUT);
//pinMode(TxD,OUTPUT);
setupBlueToothConnection();
}
void setupBlueToothConnection(){
blueToothSerial.begin(19200);
blueToothSerial.print("\r\n+STWMOD=0\r\n"); //set the bluetooth work in slave mode
blueToothSerial.print("\r\n+STNA=SeeedBTSlave\r\n"); //set the bluetooth name as "SeeedBTSlave"
blueToothSerial.print("\r\n+STOAUT=1\r\n"); // Permit Paired device to connect me
//blueToothSerial.print("\r\n+STAUTO=0\r\n"); // Auto-connection should be forbidden here
delay(2000); // This delay is required.
blueToothSerial.print("\r\n+INQ=1\r\n"); //make the slave bluetooth inquirable
Serial.println("The slave bluetooth is inquirable!");
delay(2000); // This delay is required.
blueToothSerial.flush();
}
void loop(){
if(blueToothSerial.available())
Serial.println(blueToothSerial.read());
blueToothSerial.write('x');
}
和我的 Python 模块:
import bluetooth
import sys
bd_addr = "00:12:10:23:10:18" #itade address
port = 1
sock=bluetooth.BluetoothSocket( bluetooth.RFCOMM )
sock.connect((bd_addr, port))
print 'Connected'
sock.settimeout(1.0)
sock.send("x")
print 'Sent data'
data = sock.recv(1)
print 'received [%s]'%data
sock.close()
我有 Arduino IDE 1.0.4,我的笔记本电脑运行的是 Ubuntu 11.10
以下是 Arduino 和 PyBluez 之间通过蓝牙进行通信的故障排除指南:
1. 验证 Arduino 设置
- 蓝牙模块连接: 确保的蓝牙模块已正确连接到 Arduino Uno。检查模块和 Arduino 上的电压是否匹配(通常为 3.3V 或 5V)。
- 软件串口: Arduino 代码使用软件串口(引脚 0 和 1)。确保这些引脚没有被其他用途占用(如串口监视器)。如果需要,更改代码以使用其他引脚。
- 波特率: Arduino 代码将蓝牙串口波特率设置为 19200。确保的蓝牙模块和 Python 代码使用相同的波特率。
- 蓝牙模块 AT 命令: 代码使用 AT 命令配置蓝牙模块。确保这些命令与的特定模块兼容。可以在模块的数据表中找到正确的命令。
2. 测试蓝牙模块
- 使用串口监视器: 在尝试与 Python 连接之前,请使用 Arduino IDE 中的串口监视器测试蓝牙模块。将监视器波特率设置为 9600,然后将 AT 命令直接发送到模块。应该会看到模块的响应。
- 配对其他设备: 尝试将的蓝牙模块与的手机或其他设备配对,以确保其正常工作。
3. 检查 Python 代码
-
蓝牙地址:
确保的 Python 代码中的蓝牙地址正确无误。可以使用
hcitool scan
命令在终端中找到它。 - RFCOMM 通道: 代码使用通道 1 连接到蓝牙模块。某些模块可能使用不同的默认通道。检查模块文档并相应地更新代码。
- 错误处理: 添加错误处理以捕获连接或数据传输过程中可能发生的任何问题。这将帮助识别问题。
4. 其他提示
- 电源: 确保的 Arduino 和蓝牙模块有足够的电源。
- 距离: 将的笔记本电脑和 Arduino 靠近,以获得最佳的蓝牙信号。
- 干扰: 避免其他可能干扰蓝牙信号的电子设备。
- 重启: 尝试重启 Arduino、蓝牙模块和笔记本电脑。
调试步骤:
-
使用串口监视器:
在 Arduino 代码中添加
Serial.print
语句,以在每个步骤输出信息,例如蓝牙连接状态和接收到的任何数据。 -
打印 Python 代码中的数据:
使用
print
语句在 Python 代码中显示发送和接收的数据。 - 使用蓝牙嗅探器: 使用蓝牙嗅探器工具分析 Arduino 和 Python 代码之间发送和接收的实际数据包。这可以帮助识别通信中的任何问题。
如果在完成这些步骤后仍然遇到问题,请提供有关的蓝牙模块、Arduino 代码输出和 Python 代码错误消息的更多信息,以便我进一步帮助。
标签:python,bluetooth,arduino,bluez From: 15486570