ArduinoとBluetoothモジュールでワイヤレス通信する方法――配線から技適まで一気に理解する。
そのBluetoothモジュール、日本国内で使っても大丈夫ですか。HC-05・HC-06の配線とSoftwareSerialの使い方から、見落としやすい法律上の注意点までを解説します。
目次
01Bluetooth無線化はコードより先に確認すべきことがある
結論から言えば、ArduinoにHC-05やHC-06といったBluetoothモジュールを繋ぎ、SoftwareSerialでシリアル通信を無線化するコード自体は難しくない。しかし、配線やコードよりも先に確認しておくべきことがある。それは、購入したモジュールが日本国内で電波を発する状態で使ってよいものかどうかという点である。
実例として、HC-05・HC-06のようなBluetoothモジュールを使ったArduinoの無線通信化について解説した記事がある。Arduinoを簡単にBluetooth無線化するHC-05/HC-06(Cafe Cappuccino)では、HC-05やHC-06は安価で手軽だが、現在購入できるものの多くには技適マークが無いため日本国内ではそのままでは使用できないと指摘されている。通信距離は10m程度で通常は問題になりにくいとしつつも、国内で使う場合は自分で技適を取得するか、電波が外部に漏れない環境で使う必要があると説明されている。
編集部見解:海外通販で安価に手に入るBluetoothモジュールは、電子工作の入門として魅力的だが、電波を発する機器である以上、日本の電波法の対象になる。コードの書き方以前に、この技適の確認を最初のステップに組み込んでおくことが望ましいと考えられる。
― YOFUKASI AI編集部
本記事では、HC-05・HC-06のようなBluetoothモジュールの基礎知識から、配線とSoftwareSerialの使い方、そして見落とされがちな技適の注意点までを、初心者から中級者を対象に体系的に解説する。なお、素材画像の提供がなかったため、配線は図ではなく手順化されたテキストで示す。
02Arduinoにおけるbluetoothモジュールの基礎知識
HC-05とHC-06は、Arduinoの電子工作で定番のBluetoothモジュールである。どちらもシリアル通信をそのまま無線化する用途に使われ、スマートフォンのBluetoothターミナルアプリなどと接続して、テキストデータをやり取りできる。両者の主な違いは、動作モードにある。HC-05 Arduino Bluetooth Tutorial (HC-06) — LED & Relay Control(omartronics)では、HC-05はBluetoothのマスターとスレーブの両方として動作できる一方、HC-06はスレーブとしてのみ動作するため、スマートフォンやPCからの接続のみを受け付けると説明されている。
用語の整理
- マスター(親機):自ら接続を開始できる側。HC-05のみ対応。
- スレーブ(子機):接続を受け付ける側。HC-05・HC-06どちらも対応。
- SoftwareSerial:Arduinoの標準ライブラリの一種で、任意のデジタルピンをソフトウェア的にシリアルポートとして使えるようにする。
SoftwareSerialについては、公式ドキュメントでも解説されている。Arduino公式「SoftwareSerial Library」では、このライブラリがArduinoボードの他のデジタルピンでシリアル通信を可能にするものであり、ソフトウェアによってその機能を再現することからSoftwareSerialと呼ばれると説明されている。複数のソフトウェアシリアルポートを持てるが、同時に受信できるのは1つのポートのみという制約も定義されている。
Bluetoothモジュールを扱う前に、Arduinoの基礎文法やシリアル通信の基本をまだ体系的に学んでいない場合は、先に基礎を押さえておくとこの先の理解がスムーズになる。Arduinoのコードの書き方の基礎はこちらの記事で詳しく解説している。
03配線と通信の仕組み・技術的背景
HC-05・HC-06をArduinoに接続する際は、モジュールのTXをArduinoのRXに、モジュールのRXをArduinoのTXに接続する「交差接続」が基本になる。ただし、Arduino UNOのデジタルピン0番(RX)・1番(TX)はUSB経由のスケッチ書き込みにも使われるハードウェアシリアルであるため、ここに直結すると書き込みのたびに配線を外す必要が生じる。
この問題を実際に経験した記録がある。Bluetooth部品(HC-06)で接続する方法(RoboZak奮戦記)では、Arduino UNOで接続する端子はD0(RX)とD1(TX)を回避するべきであり、これらの端子はスケッチを書き込む端子と共有しているため、書き込み時には外す必要があると説明されている。この手間を避けるため、多くの解説記事ではSoftwareSerialを使って別のデジタルピン(例:2番・3番、または10番・11番)をシリアルポートとして使う方法が紹介されている。
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(2, 3); // RX, TX
void setup() {
Serial.begin(9600);
BTSerial.begin(9600); // モジュールのデフォルトボーレートに合わせる
}
void loop() {
if (BTSerial.available()) {
Serial.write(BTSerial.read()); // Bluetooth→PCへ転送
}
if (Serial.available()) {
BTSerial.write(Serial.read()); // PC→Bluetoothへ転送
}
}
電圧レベルの違いに注意する
多くのHC-05・HC-06モジュールはロジック電圧が3.3Vである一方、Arduino UNOのデジタル出力は5Vである。Arduino Bluetooth Control: HC-05 & HC-06 Setup Guide(Zbotic)では、モジュールのRXピンは通常ArduinoのTXからの5Vを許容できることが多いが、確実性を高めるためには1kΩと2kΩの抵抗を使った電圧分圧回路をArduinoのTXからモジュールのRXへの経路に追加することが標準的な方法として紹介されている。
動作確認レベルでは電圧分圧なしでも問題なく通信できることが多いが、長期間の運用や複数のモジュールを扱うプロジェクトでは、電圧のミスマッチがモジュールの劣化や不安定な動作につながる可能性がある。恒久的な作品に組み込む場合は、抵抗分圧を追加しておくと安心である。
スマートフォンアプリと連携してセンサー値を送受信する構成の実例は、以下の記事も参考になる。
ArduinoとPythonを組み合わせたリハビリ応用の実例はこちらの記事で紹介している。シリアル通信で取得した値を外部アプリケーションに送る構成の考え方の参考になる。
04HC-05・HC-06・BLEモジュールの比較
Bluetoothでワイヤレス通信をする方法は、HC-05・HC-06以外にも選択肢がある。以下に3つを整理する。
| 項目 | A. HC-06 | B. HC-05 | C. BLEモジュール(HM-10等) |
|---|---|---|---|
| 動作モード | スレーブ専用 | マスター/スレーブ両対応 | 製品による(多くはペリフェラル専用) |
| 向いている用途 | スマホ・PCからの一方向的な接続 | Arduino同士のペアリングなど | バッテリー駆動・スマホアプリ連携 |
| 消費電力 | 比較的大きい | 比較的大きい | 低消費電力 |
| 通信方式 | Bluetooth Classic | Bluetooth Classic | Bluetooth Low Energy(BLE) |
※各モジュールの特性の目安は編集部見解を含む。SoftwareSerialの仕様はArduino公式「SoftwareSerial Library」を参照。
単純にスマートフォンとシリアル通信をしたいだけであればHC-06で十分なことが多い。Arduino同士を無線接続したい場合はHC-05、バッテリー駆動やスマホアプリとの連携を重視する場合はBLEモジュールへの切り替えを検討するとよい。
05実践:スマートフォンとBluetoothでシリアル通信する5ステップ
ここでは「HC-06をArduinoに接続し、スマートフォンのBluetoothターミナルアプリと文字列をやり取りする」という編集部想定シナリオを題材に、配線からペアリング確認までの具体的な手順を示す。技適マークの確認は前提として済んでいるものとする。
-
STEP1. Bluetoothモジュールを配線する
VCC・GND・TX・RXの4本を、SoftwareSerialで使うピンに合わせて接続する。
配線手順(テキスト版)- HC-06のVCCピンを、Arduinoの5Vピンに接続する
- HC-06のGNDピンを、ArduinoのGNDピンに接続する
- HC-06のTXピンを、Arduinoのデジタルピン2番(RX)に接続する
- HC-06のRXピンを、Arduinoのデジタルピン3番(TX)に接続する
実例:D0/D1ではなく2番・3番ピンを使用し、スケッチ書き込み時に配線を外す手間を回避した。 -
STEP2. SoftwareSerialをインクルードし、オブジェクトを作成する
スケッチの冒頭で
#include <SoftwareSerial.h>とし、使用するピン番号を指定してオブジェクトを作成する。実例:SoftwareSerial BTSerial(2, 3);を追加した。 -
STEP3. setup()でボーレートを一致させる
Serial.begin()とBTSerial.begin()の両方を呼び出す。HC-06のデフォルトボーレートは多くの場合9600である。実例:Serial.begin(9600); BTSerial.begin(9600);を記述した。 -
STEP4. スマートフォンとペアリングする
スマートフォンのBluetooth設定からモジュールを検索し、初期PINコード(多くの場合1234または0000)でペアリングする。
実例:スマートフォンの設定画面でHC-06を検出し、PINコード「1234」でペアリングを完了した。 -
STEP5. Bluetoothターミナルアプリで送受信を確認する
スマートフォンのBluetoothターミナルアプリを起動し、モジュールに接続した状態で文字を送信・受信できるか確認する。
実例:アプリから「1」を送信すると、Arduino側で受信を検知し「HELLO」という文字列を返す処理を実装した。初回はモジュールのTX/RXを配線通りに接続したつもりが逆になっており通信できなかったが、接続を入れ替えたところ正常に動作した(編集部想定シナリオ)。
タッチセンサーなど、他の入力デバイスと組み合わせたインタラクティブなプロジェクトの実例は、以下の記事も参考になる。
06注意点・よくある誤解
安価に入手できるHC-05・HC-06の多くは、日本の電波法が定める技術基準適合証明(技適マーク)を取得していない。技適未取得の無線機器を国内で電波を発する状態で使用することは電波法上の問題になり得るため、購入前に技適マークの有無を確認する、あるいは電波が外部に漏れない環境で使うといった配慮が必要になる。
Arduino UNOのD0・D1は、USB経由のスケッチ書き込みにも使われるハードウェアシリアルである。この端子にBluetoothモジュールを繋いだままにすると、スケッチを書き込むたびに配線を外す必要があり、開発効率が落ちる。SoftwareSerialで別のピンを使うのが実務的な回避策になる。
動作確認レベルでは問題が出にくいが、多くのモジュールは3.3Vロジックであり、Arduinoの5V出力を直接受け続けることは本来推奨されない。恒久的な運用や複数モジュールを扱う場合は、抵抗分圧などの電圧変換回路を追加しておくことが望ましい。
07FAQ
参考文献
- Arduino公式ドキュメント編集チーム「SoftwareSerial Library」Arduino Documentation, 2026年改訂. https://docs.arduino.cc/learn/built-in-libraries/software-serial
- Cafe Cappuccino「Arduinoを簡単にBluetooth無線化するHC-05/HC-06」Cafe Cappuccino, 2015年公開. https://nefastudio.net/2015/02/20/3850.html
- RoboZak「Bluetooth部品(HC-06)で接続する方法」RoboZak奮戦記. https://robozak.jugem.jp/?eid=1053969
- omartronics「HC-05 Arduino Bluetooth Tutorial (HC-06) — LED & Relay Control」omartronics, 2026年. https://omartronics.com/arduino-and-hc-05-hc-06-bluetooth-module-complete-tutorial/
- Zbotic「Arduino Bluetooth Control: HC-05 & HC-06 Setup Guide」Zbotic, 2026年. https://zbotic.in/arduino-bluetooth-control-hc-05-hc-06-setup-guide/
- 本文中の具体的な原因特定エピソードは、断りのない限り編集部想定シナリオに基づく想定であり、実測データではありません。技適に関する記述は一般的な注意喚起であり、法律の解釈や個別の適法性についてはご自身で確認、または専門家にご相談ください。
関連記事(内部リンク)
- Arduinoのコードの書き方|基礎から応用まで全てがわかる初心者の手引き ― https://yofukasi-lab-wp.com/2025/03/07/arduino-cord/
- ArduinoとPythonとセンサーを用いたリハビリテーションへの応用 ― https://yofukasi-lab-wp.com/2025/03/08/rehabilitation/
- ArduinoとPythonで実現するインタラクティブ花火演出システム:タッチセンサー活用の詳細手順&コード解説 ― https://yofukasi-lab-wp.com/2025/03/09/hanabi/
コメント