Arduino

ArduinoでBluetoothを使ってハマったこと(解決)

More than 3 years have passed since last update.

ArduinoとAndroid端末の通信を行う前段階として、ArduinoとPCにて通信を行おうとしたところ、うまくいかない。

まだ解決していないがメモ。うまく行ったら記事更新します。

6/26追記:無事通信できたのでまとめなおしました。


環境


  • Arduino Uno

  • IDE 1.0.5

  • Bluetoothモジュール RN41

  • Mac OS 10.9.3


手順

基本的にhttp://thinkit.co.jp/story/2013/03/06/3995を参考とした。


RN41とArduinoを接続


  • RX1(受信器)⇒TX(送信機)

  • TX⇒RX

  • vcc⇒vin※1

  • GND⇒GND

残り2本のピンは使わない


Arduinoにプログラムの書き込み


  • プログラムを書き込む際にはTXとRXは外しておく(書き込めない)。

  • プログラムは通常のシリアル通信と同様。Bluetoothのバンドがデフォルトで115200になっているので、シリアル通信のバンド115200にセットするだけでよい。

    //original http://thinkit.co.jp/story/2013/03/06/3995/page/0/1
    //n押すとArduino付属の13番のLEDが光り,fを押すと消える
    void setup() {
    Serial.begin(115200);
    pinMode(13, OUTPUT);
    }
    void loop() {
    if (Serial.available() > 0) {
    char c = Serial.read();
    if (c == 'n') {
    digitalWrite(13, HIGH);
    } else if(c == 'f') {
    digitalWrite(13, LOW);}
    }
    }



PCにてBluetoothをペアリング


  • 環境設定からbluetoothを開く

  • 対象の端末を選択(自分はRNKS-CN-39)

  • ペアリングのパスワードは初期設定1234

  • MacOs10.9.3では参考サイトのBluetoothの「シリアル通信の編集」ができなかったが、できなくても問題なく接続できた

  • 後述するが非常に不安定であり、一度「未接続」になると以下手順が必要だった(めんどくさかった)


    • いったんRNKS-CN-39を削除

    • bluetoothを切る

    • 再ペアリング(パスワード入力)




通信


  • ターミナルにてscreen/ dev/tty.RNKS-CN-39と入力(RNKS-CN-39は自分のやつにあわせてください)

  • nを入力


ハマったところ


  • 文字の送信ができない


    • プログラムは正常に書き込まれている(通常のUSBを通じたシリアル通信では動作)

    • Bluetoothの接続はできている

    • n入力後could not find PTYとエラーが出る

    • Ztermでも試してみたがだめ




原因/解決法

単純に接続が不安定すぎて、未接続の状態になっていたようだ。

Mac側の問題であり、再起動・PRAMクリア※2を行うことで解決できた。


※1 vinは外部電源(USBポートではなく)を使う場合に使うポートのようだ。今回はUSBから給電しているためvinを使う必要はないと思われるが、今後のこと(bluetooth使うんだから動かせる電源につなぐっしょ?)を考えてvinにしている。

- http://www.senio.co.jp/bbs/viewtopic.php?f=7&t=85

※2PRAMクリアについて

- http://apple-relationship.com/mac/mac%EF%BC%9Aiphone%E3%81%A8%E3%81%AEbluetooth%E6%8E%A5%E7%B6%9A%E3%81%8C%E9%A0%BB%E7%B9%81%E3%81%AB%E5%88%87%E3%82%8C%E3%82%8B%E6%99%82%E3%81%AE%E5%AF%BE%E5%87%A6%E6%B3%95/