Arduino Bluetooth 連携完全ガイド:HC-05/06 でスマホと無線通信
Arduino Uno には Bluetooth 機能がありません。でも **HC-05 / HC-06 モジュール(数百円)** を接続するだけで、スマホ/PC と無線シリアル通信が可能になります。ロボット制御、センサーデータ転送、IoT 入門に最適。配線・電圧レベル変換・ペアリング・スケッチ・ターミナルアプリ操作まで、失敗しない手順で解説します。
Bluetooth インターフェースとは
Bluetooth は近距離無線通信規格(最新 5.2 で 400m/2Mbps)。Arduino 等マイコンに Bluetooth 機能を**後付け**するのが「Bluetooth インターフェース」です。Wi-Fi は長距離・大容量、Bluetooth は短距離・低消費電力・簡易ペアリングで使い分け。
Bluetooth モジュールの選び方と構造
| 項目 | HC-05 | HC-06 |
|---|---|---|
| モード | マスター/スレーブ 切替可 | スレーブのみ |
| Arduino間通信 | 可能(片方マスター設定) | 不可(両方スレーブ) |
| ATコマンド | 対応(ボーレート/名前/役割変更) | 対応(限定的) |
| 追加ピン | EN(KEY), STATE | なし |
| 推奨度 | ★★★★★(汎用性高) | ★★★(スレーブ専用なら安価) |
ピンアサイン(共通重要ピン)
- VCC: 3.6〜6V 入力(基板上レギュレータで 3.3V 生成)
- GND: グランド
- TXD: モジュール→Arduino 送信(3.3V レベル)
- RXD: Arduino→モジュール 受信(**3.3V レベル必須、5V直結厳禁**)
- EN/KEY (HC-05のみ): HIGH で AT コマンドモード入り
- STATE (HC-05のみ): 接続状態出力(HIGH=接続中)
Arduino Uno + HC-05 接続手順(ハードウェア)
部品
- Arduino Uno、ブレッドボード、ジャンパー線
- HC-05 モジュール(ブレークアウト基板付き)
- 抵抗: **2.2kΩ、5.7kΩ (または 3.3kΩ+6.8kΩ 等、分圧比 1:2.6 ≈ 3.3V/5V)**
配線(電圧レベル変換必須!)
- Arduino 5V → ブレッドボード +レール → HC-05 VCC
- Arduino GND → -レール → HC-05 GND
- **Arduino D9(TX) → 2.2kΩ → 分圧点 → 5.7kΩ → GND**
分圧点 → **HC-05 RXD** (5V→3.3V 変換) - **HC-05 TXD → Arduino D8(RX)** (3.3V→5V は Arduino 入力閾値で直接認識 OK)
ソフトウェア: シリアルBluetoothターミナル構築
ライブラリとピン定義
#include
const int rxPin = 8; // Arduino受信 = HC-05 TXD
const int txPin = 9; // Arduino送信 = HC-05 RXD(分圧後)
SoftwareSerial BTSerial(rxPin, txPin); // RX, TX
セットアップ
void setup() {
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
Serial.begin(9600); // PC シリアルモニタ用
BTSerial.begin(9600); // HC-05 デフォルトボーレート
}
メインループ(受信→PC表示、PC送信→BT転送)
String msgFromBT = "";
String msgToBT = "";
void loop() {
// BT → PC
while (BTSerial.available()) {
char c = BTSerial.read();
if (c == ';') { // セミコロンをメッセージ終端とする
Serial.print("BT Received: ");
Serial.println(msgFromBT);
msgFromBT = "";
} else {
msgFromBT += c;
}
}
// PC → BT
while (Serial.available()) {
char c = Serial.read();
BTSerial.write(c);
}
}
ペアリングと通信テスト
- Arduino 電源 ON → HC-05 赤LED 高速点滅(ペアリングモード)
- スマホ「設定→Bluetooth」でスキャン → 「HC-05」選択 → ペアリングコード **「1234」** 入力
- スマホに **「Serial Bluetooth Terminal」アプリ** インストール(クラシックBluetooth対応必須。BLE専用アプリ不可)
- アプリでデバイス「HC-05」選択 → 接続 → 赤LED 低速点滅(接続確立)
- PC側: Arduino IDE シリアルモニタ開く(9600bps、改行コード「Both NL & CR」推奨)
- スマホアプリでメッセージ送信(末尾に **;** 付加) → PC シリアルモニタに表示されるか確認
- PC シリアルモニタから送信 → スマホアプリ受信欄に表示確認
よくある失敗と対策
| 症状 | 原因・対策 |
|---|---|
| 全く通信できない | RXD/TXD 逆接続、分圧抵抗未接続/値間違い、ボーレート不一致(ATコマンドで確認/変更)、ペアリング未完了 |
| 文字化け/欠落 | ボーレート不一致、SoftwareSerial 限界(9600/38400推奨)、電源不安定 |
| ATコマンド応答なし | ENピン HIGH(3.3V) にしてから電源投入、ボーレート 38400/9600 両方試す、改行コード設定 |
| すぐ切断される | 電源容量不足(Arduino USB給電限界)、モジュール不良、距離/障害物 |
発展プロジェクト例
- プッシュボタン押下 → スマホ通知(IFTTT/Line Notify)
- オンボードLED(D13) をスマホから ON/OFF
- DCモータードライバ(L298N等)接続でラジコン化
- 温湿度センサー(DHT11/BME280)データを定期送信・グラフ化
- ESP32 なら Wi-Fi+Bluetooth 両搭載でゲートウェイ構築も
まとめ
HC-05/06 は「5V Arduino と 3.3V Bluetooth の電圧レベル変換(分圧)」さえ正しければ、初心者でも確実に無線化できる魔法のモジュールです。まずは本記事の手順で **双方向シリアル通信** を確立し、そこからセンサー・アクチュエータ・アプリ連携へ展開してください。より高度な BLE(Bluetooth Low Energy)なら ESP32 や nRF52 等へのステップアップを。ご質問・詰まりポイントはお気軽に。
産業技術
- Arduino MegaとNEO-6M GPSモジュールの接続:ステップバイステップガイド
- nRF24L01をマスター:無線通信、Arduino連携、回路図・コード完全ガイド
- PIRモーションセンサー: 動作原理とArduino連携ガイド
- データ分析プロジェクトのよくある落とし穴を回避する——実践ガイド
- CAE E3.seriesで電気回路図を素早く作成:ステップバイステップガイド
- E3.seriesでパネルルーティングをマスター:ステップバイステップガイド
- 過剰在庫を削減してフルフィルメント効率を高める
- Bluetooth Mesh設計の選択:モジュールかディスクリートデバイスか
- Python モジュール: 作成・インポート・高度な活用
- Pythonモジュール:コードを整理して明確性と再利用性を高める
- Java インターフェース完全解説:定義・実装・実践例