Bluetooth communication between Arduino and PyBluez
Question: I am trying to establish bluetooth communication between an Arduino Uno board
(with a bluetooth shield) and my Linux OS, using Python PyBluez.

I've successfully paired my laptop to the Uno. I'm able to connect to the
board, however the board is not reading the data being sent nor is it able to
send data.

Here is the Arduino Sketch

    
    
    #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');
    }
    

And my Python Module:

    
    
    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()
    

I have Arduino IDE 1.0.4, my laptop is running Ubuntu 11.10


Answer: Using the Itade Studio Bluetooth Shield, you have to upload the code without
the shield attached, and then attach the shield. I'm curious if this is so
with other bluetooth units.

For the sake of completion, to establish communication between your laptop and
Arduino Uno w/BT shield:

  1. Pair your laptop with the bluetooth shield

  2. Upload Arduino code with shield detached. 

  3. Attach the shield

  4. Run python module.

On the itade shield, you know when connection is established when the D1 led
turns solid green, as oppose to flickering green.

