【问题标题】:Bluetooth communication between Arduino and PyBluezArduino 和 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 内的串行监视器发送/接收数据。

标签: python bluetooth arduino bluez


【解决方案1】:

你的这行:

data = sock.recv(1)

可能没有收到足够的字节,因此请尝试 Tim 发布的以下信息: Only receiving one byte from socket

【讨论】:

    【解决方案2】:

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

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

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

    2. 上传 Arduino 代码,屏蔽分离。

    3. 附加防护罩

    4. 运行 python 模块。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-15
      • 1970-01-01
      • 1970-01-01
      • 2021-10-15
      • 2016-07-29
      • 2022-07-14
      相关资源
      最近更新 更多