2015-03-01

Arduino:Bluetooth Shield(SLD63030P)をSlaveモードで動かす


前記事にてBluetooth4.0BLEが接続できないという問題に遭遇したので、それなら古い Bluetoothで、、、ということで、旧式のBluetooth Shield(SLD63030P)を入手して接続に成功しました。成功しましたといっても、それまでにいろいろ四苦八苦しており、とりあえず現状できていることは
  • ノートPC側から接続(シリアルポートとして)
  • ArduinoからデータをBluetooth経由でノートPCに送信
  • プログラム側は前記事のようにシリアルとして認識
という感じです。で、正直、Bluetoothのことが全くわかっておらず、電源入れたらすぐに繋がるんだろう、、とか思ってたのがそもそもの間違いでした。Arudino側のスケッチの書き方次第で接続が失敗したりするようで、接続できなかった場合の問題の切り分けに注意が必要ですね。もしかするとBluetooth4.0が繋がらないのもそういう問題かもしれません。
下記は、Arduino側のスケッチです。公式のサンプルの一部を抜粋してますが、アナログポートの出力をそのまま送ってます。

void setupBlueToothConnection(){
blueToothSerial.begin(38400); //Set BluetoothBee BaudRate to default baud rate 38400
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.print("The slave bluetooth is inquirable!");
delay(2000); // This delay is required.
blueToothSerial.flush();
}
void loop() {
int sensorValue = analogRead(A0);
blueToothSerial.print(sensorValue);
blueToothSerial.print("\n");
}


0 件のコメント:

コメントを投稿