robo8080のブログ

ロボット製作や電子工作など。

『BASIC!』でAndroid端末とmbedをBluetooth SPPで接続する実験(その1)

2013年01月01日 | BASIC!

BASIC!』というAndroid端末上で動くBASICで、Android端末とmbedをBluetooth SPPで接続する実験をしましたので、その手順をまとめてみました。

ちなみに、Android端末で使える『BASIC!』の機能はこんな感じ。


Graphics (with Multi-touch),
Build User Interfaces with HTML and JavaScript,
SQL,
GPS,
Device Sensors,
Music Play,
Text to Speech,
Voice Recognition,
Sound Pools,
Audio Recording,
Tone Generation,
Camera,
Data Structures such as:Array/List/Stack/Bundle
Internet Browsing,
Text and Byte file I/O,
Encryption,
User defined functions,
FTP Client,
TCP/IP Client and Server Sockets,
Bluetooth,
Send and Receive SMS Messages,
Send Emails,
Make a phone call,
Superuser access


 この記事は、ある程度Androidやmbedの経験がある方を対象にしていますので、ツール類の操作方法の細かい説明は省略しています。

1.必要なもの

 ・mbed側

(1)mbed NXP LPC1768

  

(2)「StarBoard Orange」 または、「USBコネクタ(Aタイプ メス )」 または 「うおーるぼっと

 StarBoard Orangeではなく、USBコネクタ(Aタイプ メス )だけでも良いです。こちらで詳細に解説されていますので参考にしてください。

   

    

  

  

(3)BTstack 

 mbedでBluetoothを使えるようにするライブラリです。

 詳細はこちら

(4)Windows serial port driver

 mbed側の動作確認をするのに便利です。

(5)USB Bluetoothドングル

 私が動作確認したのはこれです。

  iBUFFALO Bluetooth4.0+EDR/LE対応 USBアダプタ ブラック BSHSBD08BK

 ・Android端末側

(1)Android端末

 私が動作確認したのは以下の二つです。

  ・Google Nexus 7

  ・acer ICONIA TAB A500

(2)『BASIC!

  Android端末上で動くBASICです。

  ここに解説記事があります。

 

2.mbed側の準備

(1)”Windows serial port driver”をインストールし、シリアル端末が使えるようにしておきます。

  mbedが出力するログが見れるので、あると便利です。

(2)BTstackのインポート

 BTstackをコンパイラにインポートします。

(3)コンパイル&ダウンロード

 コンパイルしてmbedにダウンロードしておきます。

 

3.Android端末側の準備

  『BASIC!』を端末にインストールしておきます。

 数多くの「アクセス許可」を求めてきますので、自己責任でどうぞ。

 

4.接続実験

ペアリング、SPP接続する前に、Android端末のBluetoothをONし、”検出可能”にしておきます。

 ・Nexus 7のとき

 

 ・ICONIA TAB A500のとき

 

 

(1)まずAndroid端末とmbedをペアリングします。

 Bluetoothの設定で”デバイスの検索”を選択し、検出されたmbedを選択します。

 パスキーを聞かれてきたときは”0000”です。

(2)つぎに『BASIC!』を起動します。

 

(3)メニューボタンを押して”LOAD”を選択します。

 

(4)"Sample_Programs(d)"ディレクトリの中の、”f35_bluetooth.bas”を選択します。

 

(5)メニューから”RUN”を選択します。

(6)mbedをリセットし、少し待ちます。

(7)画面上の”Connect to listener”を選択すると、接続先を聞いてくるので、先ほどペアリングした”mbed”を指定します。

 

(8)パスキーを聞いてくるので”0000”を入力します。

 

(9)mbedとの接続がうまくいけば”Connected”という表示が出ます。

 

(10)続けて画面にタッチすると、この画面が表示されるので”Send”を選択します。

 

(11)キー入力のダイアログが出るので、何か入力してOKを選択します。

 

(12)接続がうまく行っていれば、送信したものがmbedからエコーバックされてきます。

 

5.応用例

mbedのプログラムBTstackの"spp_demo.cpp"に手を加えて色々動かしてみました。

改造したのは、"packet_handler"関数の最後の方、このloopbackしている部分。

---------------------------------------------------------------------

        case RFCOMM_DATA_PACKET:
            // loopback
            if (rfcomm_channel_id) {
                err = rfcomm_send_internal(rfcomm_channel_id, packet, size);
                if (err) {
                    log_info("rfcomm_send_internal -> error %d", err);
                }
            }
            led3 = !led3;
            break;

---------------------------------------------------------------------

BASICの方は、”f35_bluetooth.bas”を改造。

 

(1)『BASIC!』で、mbed + RCサーボモータを動かしてみた。

動画はこちら。

BASIC! for Androidで、Android端末とmbedをBluetoothSPPで接続してみた

 

(2)『BASIC!』で、mbed + うおーるぼっと を動かしてみた。

動画はこちら。

BASIC! for Androidで、うおーるぼっとをBluetoothSPP接続で操縦

  

その2)へ、つづく


関連する記事

『BASIC!』でAndroid端末とmbedをBluetooth SPPで接続する実験(その2)

Android端末とmbedをBluetooth SPPで接続する実験(BTstack編)

Android端末とmbedをBluetooth SPPで接続する実験(myBlueUSB編)

アンドロイド端末用BASIC『BASIC!』の実験メモ

参考リンク

昔懐かしいBASICプログラミングがアンドロイドで!

BASIC! + SQLを使ってみる

BASIC! for Android (マニュアルはここからダウンロードできる)

 


最新の画像もっと見る

2 コメント

コメント日が  古い順  |   新しい順
質問です (ちはらんぼ)
2013-01-06 23:25:43
いつも参考にさせていただいています

spp_demo.cppをいじると色々動かせるとのことですが
具体的にどのようにいじるとモータを動かしたりできるのでしょうか

Androidからのコマンドをもとにモータを動かせるようにしたいと思い色々試しているのですがうまくいきません

ご教示いただけたらと思います
よろしくお願いします
返信する
re:質問です (robo8080)
2013-01-07 16:16:21
ブログ見ていただいてありがとうございます。
記事、(その2)を追加しましたので、そちらをご覧ください。
返信する

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。