ArduinoとBluetoothモジュールでワイヤレス通信する方法――配線から技適まで一気に理解する

プログラミング・電子工作






ArduinoとBluetoothモジュールでワイヤレス通信する方法――配線から技適まで一気に理解する。|YOFUKASI AI




Arduino / 電子工作

ArduinoとBluetoothモジュールでワイヤレス通信する方法――配線から技適まで一気に理解する。

そのBluetoothモジュール、日本国内で使っても大丈夫ですか。HC-05・HC-06の配線とSoftwareSerialの使い方から、見落としやすい法律上の注意点までを解説します。

YOFUKASI AI編集部 | 更新日:2026年8月18日 | 読了目安:約13分

Chapter 01 — Introduction

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の使い方、そして見落とされがちな技適の注意点までを、初心者から中級者を対象に体系的に解説する。なお、素材画像の提供がなかったため、配線は図ではなく手順化されたテキストで示す。



Chapter 02 — Background

02Arduinoにおけるbluetoothモジュールの基礎知識

HC-05HC-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のコードの書き方の基礎はこちらの記事で詳しく解説している

Chapter 03 — Mechanism

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を組み合わせたリハビリ応用の実例はこちらの記事で紹介している。シリアル通信で取得した値を外部アプリケーションに送る構成の考え方の参考になる。



Chapter 04 — Comparison

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モジュールへの切り替えを検討するとよい。

Chapter 05 — Practice

05実践:スマートフォンとBluetoothでシリアル通信する5ステップ

ここでは「HC-06をArduinoに接続し、スマートフォンのBluetoothターミナルアプリと文字列をやり取りする」という編集部想定シナリオを題材に、配線からペアリング確認までの具体的な手順を示す。技適マークの確認は前提として済んでいるものとする。

  1. STEP1. Bluetoothモジュールを配線する

    VCC・GND・TX・RXの4本を、SoftwareSerialで使うピンに合わせて接続する。

    配線手順(テキスト版)

    1. HC-06のVCCピンを、Arduinoの5Vピンに接続する
    2. HC-06のGNDピンを、ArduinoのGNDピンに接続する
    3. HC-06のTXピンを、Arduinoのデジタルピン2番(RX)に接続する
    4. HC-06のRXピンを、Arduinoのデジタルピン3番(TX)に接続する
    実例:D0/D1ではなく2番・3番ピンを使用し、スケッチ書き込み時に配線を外す手間を回避した。
  2. STEP2. SoftwareSerialをインクルードし、オブジェクトを作成する

    スケッチの冒頭で#include <SoftwareSerial.h>とし、使用するピン番号を指定してオブジェクトを作成する。

    実例:SoftwareSerial BTSerial(2, 3);を追加した。
  3. STEP3. setup()でボーレートを一致させる

    Serial.begin()BTSerial.begin()の両方を呼び出す。HC-06のデフォルトボーレートは多くの場合9600である。

    実例:Serial.begin(9600); BTSerial.begin(9600);を記述した。
  4. STEP4. スマートフォンとペアリングする

    スマートフォンのBluetooth設定からモジュールを検索し、初期PINコード(多くの場合1234または0000)でペアリングする。

    実例:スマートフォンの設定画面でHC-06を検出し、PINコード「1234」でペアリングを完了した。
  5. STEP5. Bluetoothターミナルアプリで送受信を確認する

    スマートフォンのBluetoothターミナルアプリを起動し、モジュールに接続した状態で文字を送信・受信できるか確認する。

    実例:アプリから「1」を送信すると、Arduino側で受信を検知し「HELLO」という文字列を返す処理を実装した。初回はモジュールのTX/RXを配線通りに接続したつもりが逆になっており通信できなかったが、接続を入れ替えたところ正常に動作した(編集部想定シナリオ)。

タッチセンサーなど、他の入力デバイスと組み合わせたインタラクティブなプロジェクトの実例は、以下の記事も参考になる。

ArduinoとPythonで実現するインタラクティブ花火演出システムの実例はこちらの記事で紹介している

Chapter 06 — Pitfalls

06注意点・よくある誤解

!誤解1. 海外通販で買えるBluetoothモジュールは日本でも自由に使える

安価に入手できるHC-05・HC-06の多くは、日本の電波法が定める技術基準適合証明(技適マーク)を取得していない。技適未取得の無線機器を国内で電波を発する状態で使用することは電波法上の問題になり得るため、購入前に技適マークの有無を確認する、あるいは電波が外部に漏れない環境で使うといった配慮が必要になる。

!誤解2. モジュールをD0(RX)・D1(TX)に繋いでも特に問題ない

Arduino UNOのD0・D1は、USB経由のスケッチ書き込みにも使われるハードウェアシリアルである。この端子にBluetoothモジュールを繋いだままにすると、スケッチを書き込むたびに配線を外す必要があり、開発効率が落ちる。SoftwareSerialで別のピンを使うのが実務的な回避策になる。

!誤解3. 電圧レベルの違いは気にしなくても動くから問題ない

動作確認レベルでは問題が出にくいが、多くのモジュールは3.3Vロジックであり、Arduinoの5V出力を直接受け続けることは本来推奨されない。恒久的な運用や複数モジュールを扱う場合は、抵抗分圧などの電圧変換回路を追加しておくことが望ましい。



Chapter 07 — FAQ

07FAQ

Q.HC-05とHC-06の違いは何ですか。
A.HC-06はスレーブ(子機)としてのみ動作し、スマートフォンやPCなどのマスター側から接続を受ける用途に使います。HC-05はマスター(親機)とスレーブの両方の動作に対応しており、2台のArduino同士をBluetoothで無線接続するような用途にも使えます。

Q.ArduinoでBluetoothモジュールを使う際、なぜSoftwareSerialを使うのですか。
A.Arduino UNOのデジタルピン0番・1番(RX/TX)はUSB経由のスケッチ書き込みにも使われるハードウェアシリアルです。このピンにBluetoothモジュールを繋いだままだと、スケッチを書き込むたびに配線を外す必要があります。SoftwareSerialライブラリを使えば、別のデジタルピンをソフトウェア的にシリアルポートとして扱えるため、この競合を避けられます。

Q.BluetoothモジュールのRXピンをArduinoのTXピンに直接接続しても問題ありませんか。
A.多くのHC-05/HC-06モジュールはロジック電圧が3.3Vです。ArduinoのTXピンは5V出力のため、モジュールのRXピンに直接繋ぐと、モジュールの許容電圧を超えるおそれがあります。安全のためには、Arduino側のTXとモジュールのRXの間に抵抗分圧などの電圧変換回路を挟むことが推奨されます。

Q.HC-05やHC-06を日本国内で使っても法律上問題ありませんか。
A.海外の通販サイトなどで安価に販売されているHC-05・HC-06モジュールの多くは、日本の電波法が定める技術基準適合証明(技適マーク)を取得していません。技適未取得の無線機器を日本国内で電波を発する状態で使用することは、電波法上の問題になり得るため、購入前に技適マークの有無を確認するか、国内向けに認証された製品を選ぶことが推奨されます。

Q.スマートフォンとBluetoothモジュールをペアリングする際のPINコードは何を入力すればよいですか。
A.多くのHC-05・HC-06モジュールは、工場出荷時のペアリングコードとして「1234」または「0000」が設定されています。ATコマンドで独自のPINコードに変更することも可能です。

Q.Bluetooth Classic(HC-05/HC-06)とBLEモジュールはどう使い分ければよいですか。
A.HC-05・HC-06はBluetooth Classicと呼ばれる方式で、シリアル通信をそのまま無線化する用途に向いています。一方、BLE(Bluetooth Low Energy)対応のモジュールは低消費電力が特徴で、スマートフォンアプリとの連携やバッテリー駆動のプロジェクトに向いています。単純なシリアル通信のワイヤレス化が目的であればHC-05・HC-06、省電力・スマホアプリ連携が重要ならBLEモジュールを検討するのが実務的な判断基準です(編集部見解)。

参考文献

関連記事(内部リンク)


関連記事

特集記事

コメント

この記事へのコメントはありません。

TOP
CLOSE