Bluetooth シールドを Android から制御する


20150408_bt_system

前回作成した Bluetooth シールド を Android から制御します。

機能
(1) デジタル出力
Android のボタンを押すと、Arduino の LED が点灯します。
(2) PWM出力
Android のスライドバーを移動すると、Arduino の LED の明るさが変わります。
(3) デジタル入力
Arduino のボタンを押すと、Android で状態を表示します。
(4) アナログ入力
Arduino の可変抵抗を回すと、Android で可変抵抗の値をグラフに表示します。

ソースコード
Arduino 側
Android から Arduino を制御する で作成したスケッチを使用します。

Android 側
Android から Arduino を制御する で作成したアプリをベースにします。
通信部分を USBシリアルから Bluetooth シリアルに変更します。
UI は以前のものを流用します。
20150408_bt_android

github で公開しています。
Arduino_SerialControl
Android_Bluetooth


Bluetooth シールドの基板を作る


概要
Eagle と Sevenmini を使って、Arduino の Bluetooth シールドの基板を作ります。
Bluetooth は、JY-MCU BT BOARD を使用します。
動作確認のために、LEDやスイッチや半固定抵抗も搭載します。
基板作成の手順は、Eagle と Sevenmini を使って電子基板を作る を参照してください。

データは GitHub で公開しています。

Eagle 側の作業
(1) 回路図 (sch) とボード図 (brd) を作成します。
20150408_bt_sch 20150408_bt_brd

(2) Mirror にして、ガーバーデータを出力します。
20150408_bt_gerber

FLASH 側の作業
(1) ガーバーデータを読み込みます。
ハンダ面データ (sol) を「フォト表」に、
ドリルデータ (drd) を「穴」に、
外形データ (out) を「外形表」にします。
(2) 輪郭線抽出を行います。
20150408_bt_flash

Sevenmini 側の作業
(1) 配線の加工
基板を両面テープで固定します。
ミリング用のエンドミルを取り付けます。
CAM-Circuit2 アプリから加工を指示します。
(2) 穴の加工
ドリル用のエンドミル 0.6mm に交換します。
CAM-Circuit2 アプリから加工を指示します。
(3) 外形の加工
今回は基板をそのまま使い、加工せず。
20150408_bt_sevenmini 20150408_bt_pcb

ハンダ付け
(1) 表面の配線を行います。
(2) 部品をつけて、裏面をハンダ付けします。
20150408_bt_front 20150408_bt_rear

動作確認
(1) Arduino にエコーバックのスケッチを書きます。
(2) 通信相手は Android の BT terminal を使用します。
(3) Androidで入力した文字がエコーバックすれば、OKです。

課題
(1) タクトスイッチが USBコネクタ の上にあり接触しそう。
(2) BT BOARD のピンソケットの足が長くなり、機械強度が心配。
こういう実装になったのは、BT BOARD がL型ピンヘッダを使っているため。


JY-MCU BT BOARD の動作確認 – 安定性


JY-MCU BT BOARD の動作確認 – Arduino にて、基本的な確認はできたので、
細かいところも確認します。

20150313_bt_arduino_stability

安定性
Android 端末から連続してデータを送信します。
Arduino に、BT BOARD から受信したデータをエコーバックするスケッチを書きます。
Android 端末で正しく受信したかを確認します。

電気的な接続
BT BOARD は 3.3V信号で、Arduino は 5V信号です。
直結でも動作しますが、レベル変換を行います。
5V -> 3.3V 方向は、過電圧が気になるので、抵抗分割を入れました。
3.3V -> 5V 方向は、スレッシュホールドが気になりますが、レベル変換を行わず、直結しました。

ボーレート
BT BOARD は、デフォルトは 9600 bps です。
ATコマンドでボーレートの変更ができます。
例:115200 bps を設定する

AT+BAUD8

Arduino のハードシリアルの最高速度である 115200 bps を試してみましたが、安定して動作しました。

ソフトシリアル
Arduino のソフトシリアルやAltSoftSerialを使用して、BT BOARD と接続して、安定して動作するか確認しました。
ソフトシリアルは、文字化けが多く、実用に耐えません。
AltSoftSerialは、9600bps では安定して動作しましたが、115200bps では文字化けが発生しました。

9600 115200
ハードシリアル
ソフトシリアル × ×
AltSoftSerial ×

参考
3.3V系-5V系デジタル回路の簡易レベルシフト回路
BluetoothChat の問題と対策
Arduino ソフトシリアルの検証
Arduino AtlSoftSerial の検証


JY-MCU BT BOARD の動作確認 – Arduino


JY-MCU BT BOARD
BT BOARD は、Bluetooth SPP をシリアル通信 (調歩同期) に変換するモジュールです。
端子は、VCC(3.6~6V)、GND、TXD(送信)、RXD(受信) の4本です。
詳細は Bluetoothシリアル変換モジュール(スレーブ) を参照ください。

全体構成
Arduino + BT BOARD と Android 端末で動作確認をします。
JY-MCU BT BOARD の動作確認 – MAC での USB Serial アダプタを、Arduino に置き換えています。
Arduino のハードシリアル端子 (TX, RX) を USB 経由で MAC に接続します。
Arduino のIO端子 (D8, D9) を BT BOARD に接続し、ソフトシリアルを使用します。
BT BOARD は 3.3V信号で、Arduino は 5V信号ですが、短時間の確認なので、直結しています。
なお、ソフトシリアルは負荷が高いと 取りこぼし が発生します。
今回は、簡易的な疎通確認なので、使用しています。
20150304_bt_arduino

動作確認
(1) Arduino側
ハードシリアルとソフトシリアルを使用して、TX – D8, RX – D9 のように通信します。
スケッチは Bluetoothシリアル変換モジュール(スレーブ) を参照ください。

(2) Android 端末
(3) 相互通信
JY-MCU BT BOARD の動作確認 – MAC と同じです。


JY-MCU BT BOARD の動作確認 – MAC


20150304_bt_front

JY-MCU BT BOARD
BT BOARD は、Bluetooth SPP をシリアル通信 (調歩同期) に変換するモジュールです。
端子は、VCC(3.6~6V)、GND、TXD(送信)、RXD(受信) の4本です。
詳細は Bluetoothシリアル変換モジュール(スレーブ) を参照ください。

全体構成
MAC + BT BOARD と Android 端末で動作確認をします。
MAC と BT BOARD は FTDI USB Serial アダプタ を介して接続します。
BT BOARD の TXD、RXD は 3.3V信号で、USB Serial アダプタは 5V信号ですが、短時間の確認なので、直結しています。
20150304_bt_mac

動作確認
(1) MAC側
MAC と BT BOARD を USB Serial アダプタ を介して接続します。
(2) Android 端末
Android 端末に Bluetooth Terminal アプリ を入れる。
(3) 相互通信
Android と BT BOARD を Bluetooth ペアリングする。
キーは「1234」です。
Android から文字を送信して、MAC で受信する。
MAC から文字を送信して、Android で受信する。
相互に通信できることを、確認する。