3

我正在尝试使用 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

4

2 回答 2

0

你的这一行:

data = sock.recv(1)

可能没有收到足够的字节,所以试试 Tim 发布的这个信息: 只从套接字接收一个字节

于 2017-08-26T14:40:12.390 回答
-1

使用 Itade Studio 蓝牙屏蔽,您必须在没有附加屏蔽的情况下上传代码,然后附加屏蔽。我很好奇其他蓝牙设备是否也是如此。

为了完成,在您的笔记本电脑和 Arduino Uno w/BT shield 之间建立通信:

  1. 将您的笔记本电脑与蓝牙防护罩配对

  2. 上传带屏蔽层的 Arduino 代码。

  3. 装上防护罩

  4. 运行python模块。

在 itade shield 上,当 D1 LED 变为绿色常亮时,您知道何时建立连接,而不是闪烁的绿色。

于 2013-03-27T21:52:35.293 回答