今回はWindowsとArduinoを
Bluetoothモジュールを通して
通信させる方法をご紹介します。
以外とすぐに出来るので、
是非試してみて下さい!
今回は使用するBluetoothモジュールは
HC-05というものを用意しました。
このHC-05はBluetooth Classicのver2.0で、
セキュリティ耐性が貧弱なので、
趣味の電子工作向けのものです。
それゆえに値段も格安の部類で、
アマゾンで¥1,000円もしなかったです。
https://www.amazon.co.jp/dp/B01G9KSAF6/ref=cm_sw_em_r_mt_dp_U_qUqwEbVFESDWB
似たものにHC-06というものもあります。
HC-06はスレーブのみ対応、
HC-05はマスター/スレーブ両方対応
という違いのみです。
未確認ですが今回の内容は、
HC-06でも代用可能です。
WindowsからBluetoothを介して、
Arduinoに接続された赤色LEDの
ON/OFF を遠隔操作しました。
パソコン側のBluletoothにON / OFFの情報を
Arduino側のBluetoothモジュールに送ります。
そして、その情報に応じてArudinoは
自身につながっているLEDを制御しています。
それでは作成していきましょう!
Arduinoにコードを書き込む
今回はデジタルピンの 10 と 11 を
シリアル通信用のピンとして使います。
LEDはデジタル6番ピンに接続しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#include<SoftwareSerial.h> SoftwareSerial Bluetooth(10,11); //RX | TX const int ledPin = 6; void setup() { Bluetooth.begin(9600); //opens serial port, sets data rate to 9600 bps Serial.begin(9600); //opens serial port, sets data rate to 9600 bps Serial.println("Connect your device with 1234 as Paring Key\n"); pinMode(ledPin, OUTPUT); } void loop() { if(Bluetooth.available()){ int input = Bluetooth.read(); if(input == 0){ //テキストデータとして送信するなら0を0x30に変える digitalWrite(ledPin, LOW); } else if(input == 1){ //テキストデータとして送信するなら1を0x31に変える digitalWrite(ledPin, HIGH); } } } |
シリアル通信用ピンをBluetoothと
名付けていますが、長いですね。
あくまで分かりやすくするためです。
bt と略して書いても良いでしょう。
Serial.begin()は不要ですが、
デバッグ用などとしてシリアルモニタに
値を出力した場合は、入れてください。
Bluetooth.available()は、
Bluetoothモジュールが接続済みかどうか
を判定します。したがってモジュールと
windowsがつながっていたらif文は進みます。
パソコン側(windows)からデータを送るので、
ArduinoはBluetoothモジュールと
通信するためのシリアルピン(10番ピン)から、
データを受け取ります。(Bluetooth.read)
パソコン側(windows)から
0が送られてきたらLEDをOFFにし、
1が送られてきたらLEDをONにします。
コードが書けたら次は、Arduinoと
Bluetoothモジュールを配線しましょう。
ArduinoとBluetoothモジュール(HC-05)の配線法
HC-05の端子は次のようになっています。
ちなみに実際に配線をするのは、
STATEとENを除いた4ピンのみです。
STATE:相手と接続されているかどうか RXD:受信用ピン TXD:送信用ピン GND:グランド Vcc:電源ピン EN:モード |
STATEは、相手のBluetoothモジュールと
接続されているかの状態をしめします。
されている→オンボードLEDがON
されていない→オンボードLEDがOFF
ENは、モードを設定します。
普通はデフォルトのモードを使います。
デフォルトのモードはENピンがLowの状態で、
ペアリングモードと呼ばれています。
それとは別にENピンをHighにすることで
ATコマンドモードに入れます。
ATコマンドは、モジュールの設定を
確認・変更するためのデータを送る際に使用します。
Arduino、Bluetoothモジュール
そしてLEDを次のように接続します。

HC-05 | Arduino |
---|---|
Vcc | 5V |
GND | GND |
TXD | デジタル10番ピン |
RXD | デジタル11番ピン。1kΩと2.2kΩを挟む |
LEDはカソード極をデジタル6番ピンに、
アノード極を100Ωを介してGNDにつなげます。
抵抗値は多少違っても大丈夫です。
配線が完了したら、
BluetoothモジュールとPC(Windows)を
ペアリング(お互い登録させること)します。
設定 > デバイス > Bluetoothまたはその他のデバイスを追加する

そしたら次の画面になります。
一番上にあるBluetoothをクリックします。

初めてペアリングする場合は、おそらく
「不明なデバイス」として検知されます。
不明なデバイスとして検知されても、
それをクリックしてPINを打ちます。
1 2 3 4 もしくは 0 0 0 0 の
どちらかです。私は1234でした。
ここまで出来たらあと少しです!
あとはPC側からデータを送るための
コンソールを用意します。
Bluetoothインタフェースに情報を
好き勝手送るために必要なものです。
デフォルトではWindowsに
搭載されていないのでインストールします。
Bluetooth Serial Terminal
https://www.microsoft.com/en-us/p/bluetooth-serial-terminal/9wzdncrdfst8?activetab=pivot:regionofsystemrequirementstab

動作環境が、Windows8.1となっていますが、
Windows10でも普通に動きました。
これをインストールまで出来たら準備完了です。
それでは実際にやってみましょう!
WindowsからArduinoにつながったLEDを制御する
まずはBluetooth Serial Terminalを
起動させて、Bluetoothモジュールと
Windowsを接続させます。

Bluetoothモジュールを選んで、
connectを押します。
するとすぐに接続します。
Bluetoothモジュール(ex. HC-05)が
他のデバイスとつながると、
そのモジュールに搭載している
LEDの点滅周期が変わります。
最後にTransmit FormatをHEXに変えて
0もしくは1を入力して送信するだけです。
ちなみに送信されるデータは
フォーマットよってバイナリが異なります。
フォーマットがStringであれば、
テキストデータを意味するので、
1と送信しても、それはAsciiコードに
置き換えられて、0x31が送信されます。
フォーマットがHEXであれば、
バイナリデータを意味するので、
1は0x01のままです。
実際に動かしたのが、
冒頭にある動画になっております。
次回:記事
HC-05のATコマンドモードを利用して、
ArduinoとM5StackをBluetooth接続させる!
以上です。
最後まで読んでいただきありがとうございました。
補足:
HC-05 / HC-06ともに技適が取れていないので、
電波暗室等などで実験を行う必要があります。
私は研究室の電波暗室で行いました。