Arduino Bluetooth通信をマスター: HC-05モジュールでスマホ/PC制御
このArduino Bluetoothチュートリアルでは、HC-05モジュールを使用してBluetooth通信でArduinoを制御する方法を学びます。スマートフォンによる制御と、ラップトップ/PCによる制御の2つの例を扱います。HC-05の設定変更や、2つのArduino間をマスター/スレーブで通信させる方法は次回のチュートリアルで解説します。詳細については、以下のビデオまたは文章チュートリアルをご覧ください。 HC-06がスレーブ専用であるのに対し、HC-05はマスターにも設定可能で、2つのArduinoボード間通信が可能です。いくつかバージョンがありますが、ブレークアウトボード版が接続しやすくお勧めです。HC-05はBluetooth SPP(シリアルポートプロトコル)モジュールで、Arduinoとはシリアル通信でやり取りします。 このモジュールはブレークアウトボードにレギュレータを搭載し、3.6〜6Vで動作可能。しかしロジックレベルは3.3Vです。Arduino TX(5V出力)→Bluetooth RX(3.3V入力)は分圧抵抗を介して接続し、モジュール破損を防ぎます。逆にBluetooth TX(3.3V)→Arduino RXは3.3VがArduinoでHighと認識されるため直接接続可能です。 スマホからLEDをON/OFF制御するシンプルな例です。 重要: コードアップロード時はTX/RX線を外す必要があります(Arduinoのハードウェアシリアルピン0,1を使用するため)。これを避けるには別のピンで 関連: HC-05をマスター/スレーブでペアリングする方法 | ATコマンド スマホのBluetoothをオンにしてHC-05を検出、ペアリング(デフォルトパスワード: 1234)。制御用アプリが必要ですが、Play Storeに多数あります。このチュートリアルではMIT App Inventorで自作したカスタムアプリを使用します(次回チュートリアルで作り方を詳細解説)。 アプリの「Connect」ボタンでBluetooth接続、ステータステキストで接続状態確認。「Turn ON」「Turn OFF」ボタンでLED制御。ボタン上部のテキストはArduinoから返信される「LED: ON/OFF」です。 ラップトップのBluetooth設定からHC-05を検出・ペアリング(パスワード1234)。デバイスマネージャの「ポート(COMとLPT)」に「Standard Serial over Bluetooth link」が2つ出現し、COMポート番号がわかります。 Arduinoコードはスマホ例と同じものを使用。PC側はProcessing IDEで制御プログラムを作成します。 実行ボタンを押すと自動的にBluetooth通信が確立し、HC-05が2秒ごとに点滅して接続成功を示します。これでラップトップからLED制御が可能です。 次回チュートリアルでは、HC-05の設定変更と2つのArduino間マスター/スレーブ通信を解説します。ご質問はコメント欄でどうぞ。Arduinoプロジェクトコレクションもぜひご覧ください。概要

HC-05 Bluetoothモジュール
必要なコンポーネント
回路図

Arduino Bluetooth通信例: ソースコード
#define ledPin 7
int state = 0;
void setup() {
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
Serial.begin(38400); // HC-05デフォルトボーレート
}
void loop() {
if (Serial.available() > 0) {
state = Serial.read();
}
if (state == '0') {
digitalWrite(ledPin, LOW);
Serial.println("LED: OFF");
state = 0;
} else if (state == '1') {
digitalWrite(ledPin, HIGH);
Serial.println("LED: ON");
state = 0;
}
}コード説明
setup()でLEDピンを出力に設定、Lowで初期化、シリアル通信を38400bpsで開始loop()でSerial.available()チェック、データがあればSerial.read()でstateに格納stateは整数型なので、受信文字『0』はASCII 48、『1』は49として格納される。比較時はキャラクター『0』/『1』で行うSerial.println()で返信。state=0で一度だけ実行SoftwareSerialライブラリを使用します。スマートフォンをHC-05とArduinoに接続


自作アプリ ダウンロード
Arduino Bluetooth Tutorial Example Android App (1.38 MB)ラップトップ/PCからBluetoothでArduino制御


Processing IDE ソースコード
import processing.serial.*;
Serial myPort;
String ledStatus = "LED: OFF";
void setup() {
size(450, 500);
myPort = new Serial(this, "COM5", 38400); // デバイスマネージャで確認したCOMポート
myPort.bufferUntil('\n'); // 改行までバッファリング
}
void serialEvent(Serial myPort) {
ledStatus = myPort.readStringUntil('\n'); // Arduinoからの文字列読み取り
}
void draw() {
background(237, 240, 241);
fill(20, 160, 133); // 緑
stroke(33);
strokeWeight(1);
rect(50, 100, 150, 50, 10); // Turn ONボタン
rect(250, 100, 150, 50, 10); // Turn OFFボタン
fill(255);
textSize(32);
text("Turn ON", 60, 135);
text("Turn OFF", 255, 135);
textSize(24);
fill(33);
text("Status:", 180, 200);
textSize(30);
textSize(16);
text("Program made by Dejan Nedelkovski,\n www.HowToMechatronics.com", 80, 320);
text(ledStatus, 155, 240); // Arduinoからのステータス表示
// Turn ONボタン押下判定
if (mousePressed && mouseX > 50 && mouseX < 200 && mouseY > 100 && mouseY < 150) {
myPort.write('1');
stroke(255, 0, 0); strokeWeight(2); noFill();
rect(50, 100, 150, 50, 10); // 赤枠でハイライト
}
// Turn OFFボタン押下判定
if (mousePressed && mouseX > 250 && mouseX < 400 && mouseY > 100 && mouseY < 150) {
myPort.write('0');
stroke(255, 0, 0); strokeWeight(2); noFill();
rect(250, 100, 150, 50, 10);
}
}Processingコード説明
processing.serial.*ライブラリでシリアル通信setup()でウィンドウサイズ設定、シリアル通信開始(COMポート番号は環境に合わせて変更)bufferUntil('\n')で改行までバッファリング(Arduinoのprintln()が改行を送るため)serialEvent()で着信チェック、readStringUntil('\n')でArduinoからの文字列取得draw()で常時描画:背景、ボタン、テキスト、ステータス表示
製造プロセス
- Arduinoで作るセキュアなRFIDロック – ステップバイステップガイド
- JX Wave Generator – Arduino互換DDS発振器(OLEDディスプレイ搭載)
- u-blox LEA-6H 02 GPSモジュール: Arduino & Python 統合ガイド
- Arduino + Windows IoT + Azure クラウドによる高度な転倒検知システム
- Arduino UnoとBluetoothでラジコンカーを遠隔操作:ステップバイステップガイド
- Arduino Nanoと指紋センサーで作るバイオメトリクス認証システム – 完全チュートリアル
- ArduRadio:Arduino自作FMラジオ付き目覚まし時計
- Arduino Nanoで作るBluetooth対応スマートコーヒーメーカー 〜温度グラフ表示と自動開始機能付き〜
- Raspberry Pi 3とArduinoで作る自作ノートPC:ステップバイステップガイド
- Arduino Due望遠鏡制御キット「rDUINOScope」 - GPS、RTC、Bluetooth、ジョイスティック搭載のスタンドアロンGOTOシステム
- Bluetooth対応スマートサーモスタット & 照明制御システム