Bluetoothでサーボモーターを制御 – Arduino Uno & HC-05
部品と材料
| Arduino UNO | 1 | |
| SG90 マイクロサーボモーター | 1 | |
| HC-05 Bluetoothモジュール | 1 | |
| ブレッドボード | 1 | |
| ジャンパーワイヤー | 1 |
アプリとオンラインサービス
- Arduino IDE
このプロジェクトについて
スマートフォンアプリからBluetooth経由でサーボモーターを制御する方法を紹介します。HC-05 BluetoothモジュールとArduino Unoを使い、9gサーボ(SG90)を動かします。
プロジェクトの仕組み
このプロジェクトは2つの部分で構成されます:
- Androidアプリケーション - HC-05に各種データパケットを送信します(アプリのダウンロードリンクは元記事参照)。※このアプリは筆者作成ではありません。
- ハードウェア - HC-05、Arduino Uno、サーボモーターで構成。
動作フロー
AndroidアプリがデータパケットをBluetoothモジュールに送信 → Bluetoothモジュールがシリアル通信でArduinoに転送 → Arduinoが受信値に基づきサーボ制御信号を生成。以下のフローチャートで全体像を把握できます。

始め方
- Androidアプリをダウンロード
- Arduino Unoにコードをアップロード
- 配線を行う
重要: HC-05モジュールは3.3Vで動作します。5VのVCCに接続すると破損する恐れがあります。
- Bluetoothモジュールとアプリをペアリング - ハードウェアに電源を入れるとHC-05が検出可能になります。アプリで「近くのデバイスを検索」を押し、HC-05を選択。「接続済み」になれば準備完了!
アプリのスライダーや手動入力でサーボの角度を制御できます。
コード
Bluetooth controlled servo (C/C++)
Arduino Unoにアップロードするコードです。
#include <SoftwareSerial.h>
#include <Servo.h>
Servo x;
int bttx = 9; // Bluetooth TX → Arduinoピン9
int btrx = 10; // Bluetooth RX → Arduinoピン10
SoftwareSerial bluetooth(bttx, btrx);
void setup() {
x.attach(11); // サーボ → ピン11
Serial.begin(9600);
bluetooth.begin(9600);
}
void loop() {
if (bluetooth.available() > 0) { // Bluetoothからデータ受信時
int pos = bluetooth.read(); // 受信値を角度として格納
Serial.println(pos);
x.write(pos); // サーボを指定角度に移動
}
}
回路図
以下のとおり配線してください。

製造プロセス
- Bluetooth 制御 Raspberry Pi ロボットに音声フィードバックを追加して構築
- Arduinoで作るモニター用Ambilightシステム:没入感アップの自作ガイド
- Arduino UNOとOLEDディスプレイでクラシックPongゲームを自作:ステップバイステップチュートリアル
- 古いラジコンカーをXboxコントローラーで操作可能に - ArduinoとUSBホストシールドで実現
- Arduinoオーディオ周波数検出器 – 高感度サウンドモジュールで最大音量ピークの周波数を測定
- ArduinoでBluetooth経由でLEDを制御 – シンプルDIYガイド
- Arduinoで作る自作デジタルペット「Tamaguino」─ 3Dプリンター製ケース付き完全ガイド
- Arduino三目並べ:MAX7219 LEDマトリクスと段ボールケースで自作
- Arduino Nanoで音声制御ロボットを自作
- SparkFun 7セグメントディスプレイで作る信頼性の高いArduinoカウントダウンタイマー
- 音声で家電を操作:GoogleアシスタントとBluetoothでArduino家電制御