3

Python PyBluezを使用して、Arduino Unoボード(Bluetoothシールド付き)とLinuxOSの間でBluetooth通信を確立しようとしています。

ラップトップと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を使用しており、ラップトップはUbuntu11.10を実行しています。

4

2 に答える 2

0

あなたのこの行:

data = sock.recv(1)

十分なバイトを受信して​​いない可能性があるため、Tim が投稿したこの情報を試してください: ソケットから 1 バイトしか受信していません

于 2017-08-26T14:40:12.390 に答える
-1

Itade Studio Bluetooth Shield を使用すると、シールドを取り付けていないコードをアップロードしてから、シールドを取り付ける必要があります。これが他のBluetoothユニットでもそうであるかどうか、私は興味があります。

完了するために、ラップトップと BT シールド付きの Arduino Uno 間の通信を確立するには、次のようにします。

  1. ラップトップを Bluetooth シールドとペアリングする

  2. シールドを外した状態で Arduino コードをアップロードします。

  3. シールドを取り付ける

  4. Python モジュールを実行します。

itade シールドでは、D1 LED が緑の点滅ではなく、緑に点灯したときに接続が確立されたことがわかります。

于 2013-03-27T21:52:35.293 に答える