Intel EdisonのBluetooth LEでGATTを使用する

Intel Edisonは、IoT軍のあらゆるデバイスの頭脳になることができます。 脳は情報を処理できますが、それを受け取るためには感覚器官が必要です。 たとえば、エジソンは現在、部屋が暑いか寒いかをどうやって知ることができますか? 答えは簡単です-温度センサーを使用します。

この記事では、Bluetooth Low Energyを使用してIntel EdisonをTexas Instruments SensorTagに接続するときに、Generic Attribute Profile(GATT)を使用する方法を学習します。

始める前に


このマニュアルを実際に使用するには、組み立て済みのIntel Edisonボードが必要です。このボードのファームウェアは最新バージョンに更新されています。 ボードとコンピューターの間で、シリアルポート経由の接続をエミュレートする接続を確立する必要があります。さらに、デバイスはWi-Fi経由でインターネットにアクセスできる必要があります。 マザーボードの準備にサポートが必要な場合は、 Intel Edison入門ガイドを参照してください。

Gatttoolをインストールする


Texas Instruments SensorTagは、他の多くのBluetoothデバイスと同様に、コンピューター、スマートフォン、タブレットとの通信用にGATTをサポートしています。 Gatttoolは、BlueZに付属するソフトウェアツールの標準セットです。 ただし、Intel Edisonにはデフォルトではインストールされません。 これを修正するには、ターミナルエミュレータを介してIntel Edisonに接続し、次のコマンドを使用してBlueZをダウンロードしてコンパイルする必要があります。

root@edison: cd ~ root@edison: wget https://www.kernel.org/pub/linux/bluetooth/bluez-5.24.tar.xz –no-check-certificate root@edison: tar -xf bluez-5.24.tar.xz root@edison: cd bluez-5.24 root@edison: ./configure --disable-systemd –disable-udev root@edison: make root@edison: make install 

gatttoolをどこからでも実行できるようにするには、PATH変数を変更します。

 root@edison: export PATH=$PATH:~/bluez-5.24/attrib/ 

bluetoothctlを使用してエーテルをスキャンし、BLEデバイスを検出する


1. Intel EdisonでBluetoothをオンにします。

 root@edison: rfkill unblock bluetooth 

2. bluetoothctlを起動します

 root@edison: bluetoothctl 

3.エージェントを登録し、デフォルト状態に設定します。

 [bluetooth]# agent KeyboardDisplay [bluetooth]# default-agent [bluetooth]# scan on 

4. SensorTagが見つからない場合、他のデバイスとペアリングボタンを押します。 SensorTagのMACアドレスを確認できたら、スキャンモードをオフにしてbluetoothctlからログアウトできます。

 [bluetooth]# scan off [bluetooth]# quit 


Bluetoothデバイスの検索中に見つかった専用のSensorTag MACアドレス。

gatttoolを使用してセンサー測定値を読み取る


これで、gatttoolを使用して、SensorTagからセンサーの読み取り値を読み取ることができます。

1.前の手順で見つかったMACアドレスを使用して、gatttoolをインタラクティブに実行します。

 root@edison: gatttool -b 34:B1:F7:D5:15:38 –I 

2.デバイスに接続し、設定ハンドル(設定ハンドル)0x29に01を書き込んで温度センサーをオンにします。 その後、識別子0x25から温度の読み取り値を読み取ります。

 [34:B1:F7:D5:15:38][LE]> connect [34:B1:F7:D5:15:38][LE]> char-write-cmd 0x29 01 [34:B1:F7:D5:15:38][LE]> char-read-hnd 0x25 

温度センサーにアクセスするために必要な識別子コードは、 SensorTag属性テーブルから取得されました。


SensorTagからの温度センサーの読み取り値

温度センサーの読み取り値は、2つの16ビット符号なし数値のように見えます。 このデータを使い慣れた形式に変換するには、SensorTagナレッジベースで説明されいる変換アルゴリズムを実装するスクリプトを使用して処理する必要があります。

Pythonを使用してセンサーの測定値を解釈する


1.センサーの測定値を解釈するには、Pythonプログラミング言語で記述されたスクリプトを使用し、pexpectモジュールを使用します。 このスクリプトを例に取りそれを使用してSensorTagから温度の読み取り値を読み取りましょう。

 root@edison: wget https://github.com/msaunby/ble-sensor- pi/archive/master.zip -–no-check-certificate root@edison: unzip master.zip root@edison: cd /ble-sensor-pi-master/sensortag 

2. viでsensortag_test.pyスクリプトを開きます。

 root@edison: vi ./sensortag_test.py 

3. 62行目に変更を加えます。つまり、次のコード:

 tool.expect('\[CON\].*>') 

これに置き換えます:

 tool.expect('Connection successful') 

4.変更を行ったら、Escapeキーを押して次のコマンドを入力し、変更を保存して終了します。

 :wq 

pipおよび必要なPythonモジュールをインストールします


pexpectを使用してPythonスクリプトを実行するには、後者をインストールする必要があります。 これを行う最も簡単な方法は、Pipを使用することです。 PipはデフォルトでIntel Edisonにインストールされていません。公式のopkgリポジトリにはありません。 ただし、Pipは、Michael Hirschによって作成された非公式のIntel Edisonリポジトリにあります。 以下の手順は、非公式リポジトリの使用に関する彼のガイドに基づいています。

1. viでbase-feeds.confファイルを編集します。

 root@edison: vi /etc/opkg/base-feeds.conf 

2.以下を紹介します。

 src/gz all http://repo.opkg.net/edison/repo/all src/gz edison http://repo.opkg.net/edison/repo/edison src/gz core2-32 http://repo.opkg.net/edison/repo/core2-32<source> 3.  Escape  : <source>:wq 

4. opkgを更新してPythonをインストールします。

 root@edison: opkg update root@edison: opkg install python-pip 

セットアップツールPipをインストールします。

 root@edison: wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py -–no-check-certificate -O - | python> 

Pythonスクリプトの実行と温度測定値の読み取り


これで、温度センサーを読み取るスクリプトを実行する準備がすべて整いました。 これを行うには、/ ble-sensor-pi-master / sensortagディレクトリに移動し、次のコマンドを実行します。

 root@edison: ./sensortag_test.py 34:B1:F7:D5:15:38 


Pythonスクリプトを使用して温度センサーを読み取る

まとめ


これで、Intel EdisonがBluetooth LEを介して接続された外部センサーから温度データを受信および処理する方法がわかりました。 同様の原理を使用して、最初に他のBluetoothデバイスをEdisonに接続し、次に、他のTI SensorTagセンサーの測定値を収集できます。 良い実験をしてください!

Source: https://habr.com/ru/post/J267763/


All Articles