Arduinoでbluetooth通信するには?
Arduinoでキーボードを作ってみようと考えてまして、USB接続だとケーブルが邪魔になるのでBluetooth接続できると良いなぁと。
そこで、まずは手持ちのArduinoとBluetoothモジュールを使ったPCとのBluetooth接続を試したので記録としてブログを書いておきます。
用意したもの
- Arduino MEGA2560 (Arduino Unoとかでも大丈夫なはず)
- HC-05 (Bluetoothモジュール)
- ブレッドボード用のケーブル4本
動作環境
- Arduino IDE 1.8.15
- macOS Big Sur 11.5.2
Arduinoのスケッチ
上記のようにArduinoとHC-05を接続したら、ArduinoのUSBポートとPCを接続してArduino IDEを起動します。
今回使ったスケッチは下記です。
int data = 0;
int led = 13; // Arduino本体のLEDを光らせるので13番にしています
void setup() {
pinMode(led, OUTPUT);
Serial.begin(9600);
Serial.println("Connect your device with 1234 as Paring Key\n");
}
void loop() {
if (Serial.available() > 0) {
data = Serial.read();
if (data == '1') {//1が送られてきたらLEDをON
digitalWrite(led, HIGH); // LED点灯
Serial.println("ON");
} else if (data == '0') {//0が送られてきたらLEDをOFF
digitalWrite(led, LOW);
Serial.println("OFF"); // LED消灯
}
delay(10);
}
}
スケッチを書いたらArduino本体に書き込みます。
新しいスケッチでArduinoが無事に起動するとBluetoothモジュールのLEDが点滅するはずです。
MacとBluetoothモジュールをペアリングする
Macのシステム環境設定
からBluetooth
を選択してBluetoothモジュールとペアリングします。私の場合、デバイス名は
HC-05
と表示されました。
接続
をクリックすると一度失敗するので、オプションをクリックしてください。
コードが0000
の場合は1234
に変更して接続
をクリックしてください。
接続が成功するとBluetoothモジュールの点滅が無くなると思います。
ターミナルからBluetoothのシリアル通信に接続
ここまでで、Bluetoothモジュールを経由してArduinoとPCが接続されている状態になります。実際に接続できているか試してみましょう。
Terminal
やiTerm2
などのターミナルソフトを起動し、下記のようなコマンドを試してみてください。
$ls /dev/tty.*
/dev/tty.Bluetooth-Incoming-Port /dev/tty.HC-05-DevB /dev/tty.usbmodem101
$screen /dev/tty.HC-05-DevB
新しい画面に切り替わり、Connect your device with 1234 as Paring Key
というメッセージが表示されたらキーボードから 0
や 1
を入力してください。そうすると、下記のように0を入力したときは OFF
が、1を入力したときはON
が標示されるはずです。