MochiuWiki : SUSE, EC, PCB
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
Arduinoの基礎 - Bluetoothのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
Arduinoの基礎 - Bluetooth
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == <br><br> == Bluetoothモジュール HC-06 == このセクションでは、Bluetoothの使用前に実施するBluetoothモジュールHC-06の設定方法について記載する。<br> <br> HC-06は、Arduinoとシリアルインターフェイスで接続する。<br> ホストPCとHC-06の接続にはFT232RLを使用して、ATコマンドを送信することにより、デバイス名やボーレート等の設定ができる。<br> WindowsでHC-06の設定を行う場合は、RealTermを使用する。<br> LinuxでHC-06の設定を行う場合は、GNOME Bluetooth、Bluedevil(KDE)、Blueberry、Bluemanを使用する。<br> <br> まず、HC-06のジャンパを3.3[V]にする。<br> <br> COMポートの設定は、RealTermの[Port]タブ -[Port]プルダウンから、<code><数字> = \VCP0</code>を選択する。(Linuxの場合、/dev/ttyUSB0等)<br> ボーレートの設定は、RealTermの[Port]タブ -[Baud]プルダウンから選択する。<br> ここでは、ボーレートを38400[bps]に設定しているが、既定の設定では9600[bps]である。<br> <br> 下図左のように、<code>AT</code>という文字を送信した後、HC-06から<code>OK</code>を受信すれば正常に接続されている。<br> 下図右のように、HC-06のバージョンを確認する場合は、<code>AT+VERSION</code>を送信する。<br> このように、<code>AT+<コマンド></code>という形式のデータを送信することで、モジュールの設定を行うことができる。<br> <br> まず、デバイス名をMYBTに設定するため、以下のコマンドを送信する。<br> HC-06からOKsetnameを受信すれば正常に設定されている。<br> AT+NAMEMYBT <br> 次に、ボーレートを38400[bps]に変更するため、以下のコマンドを送信する。(6は38400を表す)<br> AT+BAUD6 <br> これらの設定は、HC-06の再起動後に有効になる。<br> <u>また、Bluetoothの既定の接続PINは1234である。</u><br> <br><br> == Bluetoothモジュール HC-06と温度センサ == このセクションでは、Arduino、BluetoothモジュールHC-06、温度センサTMP36を使用して、温度データをBluetoothで送信する。<br> <br> TMP36は、アナログ出力温度測定ICである。<br> 詳細は、Arduinoの基礎 - 温度センサを参照すること。<br> <br> ここでは、HC-06のデバイス名をMYBT、ボーレートを38400[bps]に設定している。<br> HC-06の設定については、上記のセクションを参照すること。<br> <br> 下図に、回路図および配線図を示す。<br> 下図右では、ArduinoからのTXを分圧している抵抗器が接続されている。<br> <br> 以下に、Arduinoのサンプルコードを記述する。<br> HC-06がGET:TEMPという文字を受信した時、温度データを送信している。<br> ここでは簡易的な通信のみを行っているが、クライアント側とサーバ側でデータフォーマットの取り決めをする方がよい。<br> <br> このままでは、データを受信するクライアントが無いため、<br> 次のセクションでは、スマートフォンとHC-06を接続して、遠隔通信で温度データを受信する。<br> <syntaxhighlight lang="c++"> #include <SoftwareSerial.h> const int PIN_TMP36 = 1; SoftwareSerial bt = SoftwareSerial(2,3); boolean bt_found = false; void setup() { Serial.begin(9600); bt.begin(38400); delay(3000); String s = bt_sendCommand("AT"); Serial.println("AT --> " + s); if( s == "OK" ) { bt_found = true; } else { return; } } void loop() { if(!bt_found) { return; } if(bt.available() == 0) { return; } String r = ""; while(bt.available() > 0) { char ch = bt.read(); r += ch; } Serial.println("App Command Received: " + r); process_command( r ); } float get_temperature() { int i = analogRead( PIN_TMP36 ); float f = i * 5.0 / 1023.0; // TMP36 // C = 100V - 50 return 100 * f - 50; } void process_command(String r) { if( r == "GET:TEMP" ) { float temp = get_temperature(); String s = String(temp, 1); bt.print(s); bt.flush(); } else { Serial.println("Unknown command."); } } String bt_sendCommand(String cmd) { bt.print(cmd); bt.flush(); Serial.println("Waiting [" + cmd + "]"); while(bt.available() == 0) { delay(300); } Serial.println("OK [" + cmd + "]"); String r = ""; while(bt.available() > 0) { char ch = bt.read(); r += ch; } Serial.println("Response [" + r + "]"); return r; } </syntaxhighlight> <br><br> == HC-06とクライアント == 上記のセクションに記載したArduinoで温度データを送信するデバイス・ソフトウェアにおいて、<br> Bluetoothを使用してPCまたはスマートフォンと接続して、温度データを受信するPCまたはスマートフォンのソフトウェアの作成手順を記載する。<br> <br> スマートフォン(Android)のソフトウェア<br> クライアントからサーバに接続する時、RFCOMMチャネルを作成してBluetoothSocketを作成する必要があるが、<br> この時に指定するUUIDは、SPP(シリアルポートプロファイル)のUUIDである"00001101-0000-1000-8000-00805f9b34fb"を指定する。<br> また、デバイス名はMYBTとしているため、BondedリストからBluetoothDeviceを探す際の名前も変更する。<br> <syntaxhighlight lang="java"> package com.keicode.android.testapps.bttest1c; import java.util.UUID; public interface Constants { public static final String BT_DEVICE = "MYBT"; public static final UUID BT_UUID = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb"); public static final String STATE_TEMP = "STATE_TEMP"; public static final int MESSAGE_BT = 0; public static final int MESSAGE_TEMP = 2; } </syntaxhighlight> <br> 次に、環境設定を行う。<br> ここでは、デバイス名はMYBTとしているが、これをあらかじめペアリングする。<br> 以上の変更を行い、Arduinoとスマートフォンの両方を起動することで自動的にBluetooth接続して、スマートフォンの画面に温度が表示される。<br> <br><br> __FORCETOC__ [[カテゴリ:Arduino]]
Arduinoの基礎 - Bluetooth
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse