6

RedBearLab BLE シールドを Arduino UNO R3 に接続しています。Rasp-Pi (付属の CSR4.0 ドングル) から gatttool を使用して接続できます。Arduinoのアナログピンに接続されたセンサー(FSR)とデジタルピンに接続されたLEDがあります。私の目標は、BLE を介して Arduino に接続されているものに読み書きすることです。

サンプルとして、このリンクを調べていました。読み取り/書き込みには、センサーのハンドル、構成レジスタ番号などを知る必要があるようですが、シールドに取り付けられているセンサーに関連するハンドル/uuid を見つける方法がわかりません。

たとえば、以下を参照してください。

[xx:xx:xx:xx:xx:xx][LE]> char-desc
handle: 0x0001, uuid: 2800
handle: 0x0002, uuid: 2803
handle: 0x0003, uuid: 2a00
handle: 0x0004, uuid: 2803
handle: 0x0005, uuid: 2a01
handle: 0x0006, uuid: 2803
handle: 0x0007, uuid: 2a04
handle: 0x0008, uuid: 2800
handle: 0x0009, uuid: 2800
handle: 0x000a, uuid: 2803
handle: 0x000b, uuid: 713d0003-503e-4c75-ba94-3148f18d941e
handle: 0x000c, uuid: 2803
handle: 0x000d, uuid: 713d0002-503e-4c75-ba94-3148f18d941e
handle: 0x000e, uuid: 2902
handle: 0x000f, uuid: 2800
handle: 0x0010, uuid: 2803
handle: 0x0011, uuid: 2a27    
Discover descriptors finished: No attribute found within the given range
[xx:xx:xx:xx:xx:xx][LE]> char-read-hnd 0x0001
Characteristic value/descriptor: 00 18
[xx:xx:xx:xx:xx:xx][LE]> char-read-hnd 0x000b
Error: Characteristic value/descriptor read failed: Attribute can't be read

それらのどれがシールドに取り付けた FSR であるかを知るにはどうすればよいですか?

アップデート

私は RedBearLab の例を使用しています - simplecontrol

したがって、Arduino と iOS/Android コードの両方が存在します。私の目標は、gatttool の観点から理解して、Raspberry Pi で実行されている Java で (iOS/Android の) 同様のものを開発できるようにすることです。

コードから、どのアドレスを書き込むべきかがわかります。たとえば、デジタル出力ピンに接続された LED をオンにするには、以下のように動作します。

char-write-cmd 0x000b 010100

同様に、センサー読み取り機能をオンにするには、以下に記述する必要があります

char-write-cmd 0x000b A00100

私はこれが機能することを知っています。Arduino シリアル モニタに期待どおりの出力が表示されます。センサーを読み取っていると確信していますが、RaspPiプロンプトでそれを見ることができません。RaspPi側でブロードキャスト読み取り機能を有効にする必要があると思います。

なにか提案を?

4

1 に答える 1

6

BLE を使い始めるには、GATT 全体がどのように機能しているかを理解する必要があります。基本的には、arduino にいくつかのコードが必要です。このコードは、シールドの nRF8001 コンポーネントにプロファイルを設定します。このコードは、無線によって公開される (および を使用して見られるgatttool) 特性と、そこからの関数との間のリンクである「パイプ」を定義します。データを読み取ったり、データを送信したりできます。

プロファイルを変更して作業し、gattプロファイルを定義するには、Nordic から配布されているツールpipesを使用する必要があります。nrfgoこれはWindowsのみですが、OSXまたはLinuxでwineを使用すると完全に正常に動作します(私は毎日行っています).

そこで、プロファイルを読み込んで変更したり、新しいプロファイルを作成したりできます。それはあなた次第です。また、nrf8001 + Arduino のプロファイルをセットアップする方法について、devzoneにある北欧の例を参照することをお勧めします。これらの例は非常に明確です。

次に、すべての特性を作成したら、処理している特性のみを読み書きできます。特性を利用できるからといって、読み書きできるわけではありません。サブスクライブする必要があるか、常にエラーを返す可能性があります。リストする特性のほとんどは、gatt システム全体を機能させるために gatt によって使用される特性であり、通常、BLE のものを抽象化するライブラリによって隠されていることに注意してください。

于 2014-01-25T19:57:53.170 に答える