Arduino 和 PyBluez 之间的蓝牙通信
Posted
技术标签:
【中文标题】Arduino 和 PyBluez 之间的蓝牙通信【英文标题】:Bluetooth communication between Arduino and PyBluez 【发布时间】:2013-03-07 08:45:15 【问题描述】:我正在尝试使用 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 IDE 中的串行监视器向/从 Arduino 板发送和接收数据吗? 似乎对我有用。我在我的 Arduino Uno 上上传了你的脚本。并执行了python脚本。结果如下:user@ubuntu:~/$ python w.py Connected Sent data received [2]
。您确定您的 Arduino 和蓝牙设备连接正常吗?
你使用的是哪个 Bth 盾牌:是this one?
不,RS232
@ton1c 是的,我可以通过 Arduino IDE 内的串行监视器发送/接收数据。
【参考方案1】:
你的这行:
data = sock.recv(1)
可能没有收到足够的字节,因此请尝试 Tim 发布的以下信息: Only receiving one byte from socket
【讨论】:
【参考方案2】:使用 Itade Studio 蓝牙屏蔽,您必须在没有附加屏蔽的情况下上传代码,然后附加屏蔽。我很好奇其他蓝牙设备是否也是如此。
为了完成,在您的笔记本电脑和 Arduino Uno w/BT shield 之间建立通信:
将您的笔记本电脑与蓝牙防护罩配对
上传 Arduino 代码,屏蔽分离。
附加防护罩
运行 python 模块。
在 itade shield 上,当 D1 LED 变为绿色常亮时,您知道何时建立连接,而不是闪烁绿色。
【讨论】:
以上是关于Arduino 和 PyBluez 之间的蓝牙通信的主要内容,如果未能解决你的问题,请参考以下文章
Python 连接蓝牙 python3.8 安装 pybluez