Bluetoothのインターフェイス – Arduinoのマイコンを使い始めたとき、多くの人は拡張モジュールやシールドが利用できることに気がつきません。Arduino Unoは世界で最も人気のあるマイクロコントローラの1つですが、Bluetooth接続機能を備えていません。
確かに、Arduino BTやRaspberry Pi 4のように、Bluetooth機能を内蔵したボードを購入することは可能です。しかし、これらのボードはより高価で、よりかさばり、プロジェクトに使うにはあまり楽しくないかもしれません。では、Bluetoothを搭載していないマイコンに、Bluetooth接続機能を追加したい場合はどうすればよいのでしょうか。
最良の選択肢は、Bluetoothモジュールとインタフェースすることです。 そこで、このガイドでは、マイコンとBluetoothモジュールのインターフェースの方法を紹介します。これにより、スマートフォンやパソコンなどのBluetooth対応機器にマイコンをワイヤレスで接続することができます。
Bluetoothインターフェイスとは
Bluetoothセンサー、ブレッドボード、Arduino Uno
現在、Bluetoothは世界で最もユビキタスな無線接続規格の1つです。私たちは、デバイス間でデータを転送し、交換するためにそれを使用しています。Bluetoothインターフェイスは、Bluetoothデバイスを使用または有効にすることを説明します。長距離の接続にはWi-Fiなどの規格を使用しますが、短距離の接続やデータ転送にはBluetoothを使用します。しかし、最新のBluetooth規格(5.2)では、2Mbpsのデータレートで最大400mまでの距離を到達することができます。
将来のバージョンでは、より高い閾値とスループットでより長い距離の接続を実現することが期待できます。とはいえ、携帯電話を使ってデータを転送したり、他の機器に接続したりするたびに、それは本質的にBluetoothのインターフェイスになっています。繰り返しになりますが、多くのマイコンはBluetooth機能を内蔵していません。したがって、それらでBluetoothインタフェースを実現したい場合は、拡張するか、別の基板を追加する必要があります。
次に、Bluetoothモジュールを使って、マイコンにBluetoothインタフェースを追加する方法を紹介します。
Bluetoothモジュールとその仕組み
マイコンの
Bluetoothモジュール
Bluetoothモジュールを使用すると、マイコンやシングルボードコンピュータと外部機器とのインターフェースをとることができます。また、Bluetoothセンサーと呼ぶこともあります。とはいえ、これらのデバイスが必要なのは、ボードにBluetooth機能が内蔵されていない場合だけです。Bluetoothモジュールは、HC-05とHC-06が一般的です。
Bluetoothモジュールを購入すると、青いブレイクアウトボードの四角い部分に緑色の長方形として表示されます。ブレークアウトボードは、ブレッドボードに簡単に差し込むことができるように、Bluetoothモジュールにピンを提供します。
単純なアプリケーションでは、HC-05とHC-06はスレーブモードで同じように動作します。しかし、HC-05はスレーブモードとマスターモードを切り替えることができるので、そちらを使うことをお勧めします。一方、HC-06はスレーブとしてしか動作させることができません。したがって、2つのArduinoプロジェクトを接続する場合は、Bluetooth接続を開始し、設定できるHC-05 Bluetoothモジュールが必要になります。
Bluetoothモジュールの構造
Bluetoothモジュールの裏面を見ると、ピン配列のラベルがあります。ほとんどの場合、気にする必要があるのは、電源のピンアウトだけです。主にVCCとグランド(GND)です。しかし、これらのピンのほかに、データ・ピンであるRXDとTXDがあります。
RXDはデータを受信し、TXDはデータを送信します。HC-05を使用している場合、HC-06にはない2つのピンがあることに気づきます。これらのピンをイネーブル(EN)、ステート出力ピン(STATE)と呼びます。また、イネーブルピンをキーピンと呼ぶこともあります。
Bluetoothモジュールを使用する場合、電源電圧に十分な注意を払う必要があります。3.6ボルトから6ボルトの間であれば安全です。データピンは、3.3ボルトのデジタル信号が必要です。
BluetoothモジュールとArduinoプロジェクトや携帯電話のインターフェース方法
Bluetoothセンサー
ここでは、Bluetoothモジュールを使ってArduinoプロジェクトと携帯電話を接続する方法について説明します。
必要な部品
BluetoothモジュールHC-05またはBluetoothモジュールHC-06
ブレッドボード
Arduino Uno
2.2kΩ抵抗
5.7KΩ抵抗
ソリッドコアワイヤー
Arduino IDEソフトウェア
使用方法
ハードウェアのセットアップ
Arduino Unoの5VとGNDのピンをブレッドボードの電源レールに接続し、Bluetoothモジュールに送り込み、VCCとGNDのピンを接続します。
Arduino Unoの送信ピンをブレッドボードに接続し、抵抗を使ってGRANDと直列に分圧した電圧を作ります。中央がタップオフしてRXCピンに接続されるはずです。これは、Bluetoothモジュールが低い送信電圧レベルを必要とするためです。
Arduino Unoの受信ピンからブレッドボードを経由して、HC-05のTXDピンに電線を供給します。
上記の配線手順に正しく従えば、プロジェクトは次のようになります。
HC-05に接続されたArduino Uno
出典ウィキメディア・コモンズ
ソフトウェアのセットアップ
このプロジェクトが正しく機能するためには、Bluetoothソースからデータをリッスンして受信するコードを書く必要があります。そして、シリアルポートを使ってコンピュータに結果をプリントアウトします。
つまり、このプロジェクトは本質的にコンピュータのBluetoothレシーバーとして使用することになります。そのため、Bluetooth端末用のスケッチを書く必要があります。
Bluetooth 端末のスケッチ 1
ステップ1
Software Serialライブラリからいくつかの関数とクラスを使用する必要があります。それらは、ArduinoがBluetoothで通信できるようにします。したがって、スケッチに含める必要があります。
ステップ2
ライブラリをインポートしたら、データの送受信に使用するシリアルピンを指定する必要があります。上の例では、9番ピンを受信ピン(rxPin)に、8番ピンを送信ピン(txPin)に使用しています。
ステップ3
前のステップで定義した値を引数として、ソフトウェアシリアル(SoftwareSerial)オブジェクトのインスタンスを作成します。上記の例では、ソフトウェアシリアルオブジェクトをBTSerialと名付けました。
ステップ 4
次に、setupと呼ばれる新しい関数を定義します。これは、どのピンが入力と出力のためのものかを定義します。デフォルトでは、HC-05 Bluetoothモジュールは9600ボーでArduinoと通信しますが、これを変更することもできます。しかし、この例では、より正確なボーレートに近いので、そのままにしています。
ステップ5
次に、メッセージに使うString変数を2つ定義します。最後に、Arduinoのループ関数をwhileループで作成します。このループは、ArduinoとBluetoothデバイス間の通信をリッスンするために使用します。
Arduinoが何かデータを受信したら、セミコロンを行の終端として、それをプリントアウトします。
Bluetooth端末のスケッチ2
スケッチを書いたら、それをArduinoにアップロードする必要があります。次に、携帯電話とArduinoのプロジェクトをペアリングする必要があります。これにより、携帯電話がBluetoothモジュールと通信できるようになります。
Bluetoothデバイスと通信する
ボタンスイッチでArduinoの電源を入れると、Bluetoothモジュールから赤いランプが点滅しているのがわかると思います。これはペアリングモードであることを示唆しています。 携帯電話のBluetooth設定に入り、近くにあるデバイスをスキャンする必要があります。
利用可能なデバイスの下に、お使いのモジュールに関連するエントリーが表示されるはずです。エントリーを選択し、携帯電話とペアリングします。ペアリングコードを要求されます。ペアリングコードは通常「1234」です。これでデバイスのペアリングが完了し、通信を開始することができます。ただし、そのためには携帯電話のアプリケーションが必要です。
携帯電話のアプリストアに移動し、シリアルBluetooth Terminalアプリをダウンロードします。このアプリケーションには、メッセージを入力し、それをプロジェクトに送信できるターミナルが必要です。さらに、デバイスから受け取った通知を見ることもできるようにする必要があります。
使用するアプリがクラシックBluetooth(Bluetooth Classic)と互換性があることを確認してください。
アプリをダウンロードしたら、コンピュータに戻ってArduino IDEを開き、Bluetoothスケッチのシリアルモニタを開いてください。シリアルモニタが9600ボーまたは以前指定したボー数を使っていることを確認します。
スマホのBluetooth端末アプリに戻り、デバイスとしてArduinoのBluetoothプロジェクトを選択します。接続されたら、ターミナルアプリにメッセージを入力します。メッセージの最後にセミコロン(;)をつけて、メッセージの終わりを示すことを確認してください。
まとめ
上記の手順を正しく行えば、Arduinoプロジェクトがメッセージを受信したことを知らせる出力が表示されるはずです。また、Arduino IDEのシリアルターミナルを通して、パソコンの画面にもメッセージが表示されるはずです。繰り返しになりますが、これは初心者や初級者向きのシンプルなプロジェクトです。基本を理解したら、より複雑なプロジェクトを追求することができます。例えば、押しボタンやオンボードLED、DCモーターを追加することができます。メールで投稿を送信するために使うこともできます。とはいえ、このガイドがお役に立てれば幸いです。いつもながら、お読みいただきありがとうございました。