【Raspberry Pi 対応情報】
このページでは Rsapberry Pi のBluttooth からREX-BT60へ接続して使用するための情報を提供しています。
-
概要
-
Raspberry Pi では、Bluetooth を制御するためのモジュールとして Bluez が提供されています。
Raspberry Pi 3 からは、Bluetoothが標準でボード上に搭載されているため、
Rasbian OSインストール時に標準でインストールされ実行できるように設定されます。
※Raspberry Pi 2以前を使用している場合は、Bluetoothアダプタの追加とBluezのインストールが必要です。
そして、REX-BT60とRaspberry Piをbluetoothで接続しシリアル通信を行うには、ドライバ「rfcomm」を利用します。
このドライバは、Rasbian OSインストール時に標準でインストールされていますので、
ここで説明する簡単な設定だけでRspberry Pi Bluetooth経由でRS-232C機器を制御することが可能になります。
-
設定手順
-
REX-BT60の検索
REX-BT60にACアダプタを接続し電源を供給します。
そして、LEDの点滅が始まることを確認します。
次に [hcitool]コマンドでBluetooth機器を検索します。
~ $ hcitool scan
Scanning ...
....
00:06:66:84:85:6B RNBT-856B
....
名前が[RNBT-xxxx]または[RN42-xxxx]と表示されているものがREX-BT60です。
左側は、デバイス固有のユニークなBluetoothアドレスです。
REX-BT60と rfcomm で接続
検出した REX-BT60 とシリアル通信するためにrfcommで接続します。
割り当てるデバイス名 [/dev/rfcomm0] と検出した REX-BT60のアドレス [00:06:66:84:85:6B]を指定して
[rfcomm]コマンドを以下のように実行します。
~ $ sudo rfcomm connect /dev/rfcomm0 00:06:66:84:85:6B &
connected /dev/rfcomm0 to 00:06:66:84:85:6B on channel 1
Press CTRL-C for hangup
接続されると [connected ...]と表示されます。
これで、割り当てたrfcommのデバイス名 [/dev/rfcomm0]を使って通常のシリアル接続と
同じ操作が可能になります。
接続を解除する場合は、以下を入力します。
~ $ sudo rfcomm release /dev/rfcomm0
Disconnected
-
通信の確認
-
ここでは、Windows PCにUSBシリアル(REX-USB60F)+REX-BT60を接続し、Raspberry PiとBluetooth経由のシリアル通信で
相互にデータを送る簡単な通信確認を行います。

REX-USB60FとREX-BT60はクロスケーブルで接続します。
すべての接続ができたら、Raspberry Pi側とWindows PC側でそれぞれターミナルソフトを起動しデータ通信を行います
Raspberry Pi側のターミナルソフトは cutecom を使用します。
cutecomm がインストールされていない場合は、 cutecom を以下のコマンドで
インストールします。
~ $ apt-get install cutecom
cutecom を起動します。
~ $ cutecom &
最初に通信パラメタを変更します。
Device: 欄の [/dev/ttyS0] を rfcommのデバイス名 [/dev/rfcomm0] に変更します。
[Baud rate][Stop bits][Parity]を設定します。
以上で準備はできたので、実際にデータを送信・受信して確認します。
送信テストは、CutecomのInput欄にテスト用の送信文字列を入力し、リターンキーを押します。
そして、送信文字列と同じ内容が Windows PC側で表示されることを確認します。
受信テストは、Windows PC側から送信したデータが cutecomの画面上側の欄に表示されることを確認します。
-
Pythonでの使用
-
ここでは、PythonスクリプトでREX-BT60を使用する方法を説明します。
PythonでBluetooth-RS-232C変換を使用する場合、通常のRS-232C接続と同様にpyserialモジュールが利用できます。
デバイス名にREX-BT60に接続中のRFCOMMのデバイスを指定するだけで、その他制御は通常のRS-232Cで接続している場合と変わりません。
以下のスクリプトは、現在の日時を取得し文字列に変換して送信します。
1秒おきの送信を10回繰り返して終了します。
import sys
import serial ←--------------------------------------------[1]
import time
import datetime
def main():
ser=serial.Serial('/dev/rfcomm0',9600,timeout=10) ←----[2]
title="Serial port send test : "+ser.portstr
testmsg="a quick brown fox jumps over the lazy dog."
print(title)
i=0
while i < 10;
d= datetime.datetime.today()
str1=d.strftime("%Y-%n-%d %H:%M:%S: ")+testmsg+'\n'
outdata=str1.encode('utf-8') ←----------------------[3]
ser.write(outdata)
print(outdata)
i=i+1
time.sleep(1)
ser.close()
print("End of send test")
if __name__ = '__main__'
main()
[1] モジュールのインポート
[import serial] で pyserialモジュールをインポートします。
[2] 通信ポートのオープン
serial.Serial('/dev/rfcomm0', ...) でrfcommのデバイス名を使ってポートをオープンします。
[3] データの送信
シリアルデータの送信は、write() 関数で行いますが、送信データはバイト型データで送る必要があります。
一方、変数 str1 は文字型変数なので str1.encode('utf-8') を使って
文字型データからバイト型データに変換を行った後に ser.write(outdata) でデータを送信しています。
データの受信
以下のスクリプトは、データを改行コード(LF)まで受信したら、現在の日時を先頭に付けて画面に表示します。
10回受信したら終了します。
import sys
import serial
import time
import datetime
def main():
ser=serial.Serial('/dev/rfcomm0',9600,timeout=10)
title="Serial port read test : "+ser.portstr
print(title)
i=0
while i < 10;
d= datetime.datetime.today()
str1=d.strftime("%Y-%n-%d %H:%M:%S")+'\n'
indata=ser.readline() ←----------------------[1]
str2=indata.decode('utf-8')
print(str1 +str2)
i=i+1
ser.close()
print("End of read test")
if __name__ = '__main__'
main()
[1] データの受信
シリアルデータの受信は、readline()関数で行います。
受信データは、バイト型データで取得されるため、文字列として扱うために
str2.indata.decode('utf-8') を使ってバイト型データから文字型データに変換してから画面に表示します。
このページで紹介した情報に加えて、Raspberry Pi上でREX-BT60の通信パラメタを設定する方法を説明した資料
「REX-BT60のRaspberry Piでの使用について」というドキュメントを用意しており、こちらからダウンロードできます。
(ここで紹介されている内容は、2016年12月16日時点での情報に基づいています。)
● ペアリングと簡単な通信設定ですぐに使える
● REX-BT60の駆動電源を選択可能
● 通信状態がよくわかる通信モニターLED
● DIP-SWについて
● 通信パラメーター / PINコード / デバイス名を設定するサンプルプログラムを
ダウンロード提供
● WindowsPCとの電波強度を測定するツールを公開
● Androidでは 通信・設定ユーティリティをダウンロード提供
● Raspberry Piでは /dev/rfcommx デバイスとして認識
● 有害6物質不使用
また、コネクターには、EIA/TIA-574 仕様のD-Sub 9Pin を採用しており、RS-232C機器とBluetooth接続で通信が可能。
これまでのRS-232C機器の資産を活かしつつ、シリアルインターフェイスを持たないBluetooth搭載PC・Android端末なども接続することができ、医療現場など強い電波の使用が制限される環境においても使用できることなどが特徴です。
また、RS-232CポートをもたないAndroid端末でもRS-232C機器が使用可能。バーコードスキャナー、磁気カードリーダー、RF-IDタグリーダーなどを接続できます。
※TA・モデムには対応していません
※RS-232Cポートに接続して使用するシリアルマウスはサポートしていません
REX-BT60には付属のACアダプターより駆動電源を供給する必要があります。
その駆動電源を接続デバイス側に供給することが可能です。
また、接続デバイスから駆動電源を受け取ることも可能です。
(DIP-SWより設定可能)
点灯:RS-232Cのデータ送受信時
(COM/デバイス未オープン)
電源アダプターを接続し、ONにした場合はD-sub9番ピン
から5V出力する。
各アプリケーションから通信パラメーター / PINコード / デバイス名を設定可能です。
◆ BtSerialUtility画面例 ◆
メイン画面
通信パラメーター設定画面
本製品とWindowsPC間のBluetooth電波強度を測定することで、 運用環境での電波状況を把握することができます。
本ツールでは、測定間隔と回数を指定することができ、 測定したデータと時刻をCSVファイルに保存することができます。
このアプリはBluetooth経由での以下の機能があります。
- REX-BT60デバイスの設定
- RS-232Cポートの通信パラメータの設定
- データ送信および受信の簡単な確認
>>ダウンロードはこちら⇒[BtSerialUtilityアプリダウンロード]
◆ BtSerialUtility画面例 ◆
メイン画面
通信パラメーター設定画面
また、このアプリのソースおよび解説マニュアルをe2eStoreサイトでダウンロードできます。(要会員登録)
>>ダウンロードはこちら⇒[BtSerialUtilityソースダウンロード]
また、PythonではPySerialモジュールによって簡単に制御できます。
詳しくは[ラズパイ対応情報]をご覧ください。
『当社では有害6物質(鉛、水銀、カドミウム、六価クロム、PBB(ポリ臭化ビフェニール)、PBDE(ポリ臭化ジフェニルエーテル))の使用を制限した部品と設備の選定を進め、環境に配慮した製品を提供していきます。
「使用を制限」とは、欧州RoHS指令に規定された閾値を超えて含有されない、或いは適用除外用途のみの使用に限定することを示します。(カドミウムは0.01wt%、それ以外は0.1wt%)』