Bluetoothテキストテレポーター:Arduino + Androidプロジェクト
部品と用品
| Arduino Micro | ATMega 32u4搭載のArduino互換ボードなら何でも可(Leonardo/Pro Microなど) | 1 |
| HC-05 Bluetoothモジュール | 1 | |
| ブレッドボード(汎用) | 1 | |
| ジャンパーワイヤー(汎用) | 1 | |
| USB-A - Micro-USBケーブル | 1 | |
| Androidデバイス | 1 |
アプリとオンラインサービス
| Arduino IDE | Arduino Web Editor + Arduino Create Agentでも可 | |
| Arduino Bluetooth Controller | Google Play StoreまたはApp Storeからダウンロード可能 |
このプロジェクトについて
これはHacksterでの初プロジェクトで、あるデバイスからテキストをコピーして別のデバイスにペーストする手間を省くものです。これまでメールやメッセージで自分宛てに送信し、メールやFacebookを開いてコピーしていました。GoogleはChromeとGoogleアカウントがあればデスクトップにペーストできるサービスを提供していますが、あらゆるデバイスで動作する総合的なソリューションを作りたかったのです(そして何より、Arduinoでいじくり回してシンプルかつ便利なプロジェクトを作りたかった)。
このプロジェクトはかなり簡単で、Arduino未経験者でも作れます。同じ悩みを持つ方は、ぜひ挑戦してみてください。必要なことをすべて説明しています。
ステップ1:必要な部品




このプロジェクトでは Arduino Micro を使用しますが、メインプロセッサに ATmega32u4 を搭載したArduino互換ボードなら何でも使えます。これはHuman Interface Device (HID) として動作できるためで、今回はキーボードとして機能させます。MicrochipのSAMD21やSAMD51での動作は未検証です。
他にブレッドボード、ジャンパーワイヤー、HC-05 Bluetoothモジュール、プログラミング用micro USB Type-Bケーブルが必要です。もちろんテスト用にノートPCとスマートフォンも必要です。
ステップ2:回路図

Arduino MicroとHC-05モジュールをシリアル通信で接続します。Arduinoには2つの通信ポートがあり、Serial はPCとの通信(シリアルモニター)用に予約されているため、Serial1 をHC-05との通信に使用します。接続はシンプル:
- HC-05のRX → Arduino MicroのTX
- HC-05のTX → Arduino MicroのRX
- HC-05のGND → Arduino MicroのGND
- HC-05のVCC → Arduino Microの+5V
Key ピンと State ピンは使用しません。

ステップ3:コードの理解
/* Project Name : Text Teleporter
* Bluetooth経由でテキストを受信し、別デバイスにキーボード入力として貼り付け
* 対象: Arduino Micro/Leonardo/Due/Pro Micro (ATMega 32U4)
* Author : Advik Singhania
* Created On : 2020年10月11日 11:23 AM IST
*/
#include "Keyboard.h"
void setup() {
Serial1.begin(9600); // Bluetooth用シリアルポートを開く
Keyboard.begin(); // キーボード制御を初期化
}
void loop() {
if (Serial1.available() > 0) {
String a = Serial1.readString(); // 受信テキストを読み取り
Keyboard.print(a); // キーボードとして入力
}
delay(10);
}
まず Keyboard.h ヘッダーファイルをインクルードし、Arduino Microで利用可能なHID機能を使用できるようにします。コンパイラがこのヘッダーをリンクしてボードに書き込みます。
setup() で、Bluetooth接続用のシリアルポートを開きます。9600 はHC-05のデフォルトボーレート(データ伝送速度)です。次にキーボードを初期化。このブロックは一度だけ実行され、Arduinoのリセットボタンで再実行されます。
loop() は繰り返し実行されるため、何度でも任意の量のテキストを送信・ペーストできます。Serial1インターフェースで接続とデータ送信の準備が検知されると、String 型の変数 a に受信テキストを格納し、Keyboard.print() でキーボードを制御して文字列 a をタイプアウトします(コピーしたテキストのペースト)。if 条件は else ブロックなしで動作し、条件が偽の場合は何もしないため問題ありません。
このコードは GitHubリポジトリ でも公開しています。ご自由に改変してください。コード作成後、ツールメニューから正しい ボード と ポート を選択し、アップロードしてください(アップロード前にHC-05のRX/TX線は外してください)。
ステップ4:すべての設定
アップロード後、RX/TX線を再接続。スマホのBluetooth設定で HC-05 をスキャンし、タップしてペアリング。デフォルトパスワードは 1234 です。
接続成功後、ターミナルモード対応のBluetoothクライアントアプリをインストール:



アプリ起動時にBluetoothオンの許可を求められたら「はい/許可」。デバイスに接続 と 利用可能なデバイス の2リストが表示され、HC-05は前者にあるはずです。タップして ターミナルモード で接続。成功すればテキスト入力ボックスが表示され、コピーしたテキストをペーストできます。
NEXT PROTOTYPES 製のBluetooth Serial Controllerアプリも使用可能。右上のCONNECTボタンでHC-05を選択。デフォルトは横画面でボタン多数、小さなターミナルボックスでテキスト入力。送信後、左下の × ボタンを押さないと次の入力ができません。
重要: ペースト先のメモ帳やカーソル位置を事前に開いてからEnterを押してください。Arduinoがキーボードを制御するため、作業中は他の入力ができなくなります。
ステップ5:完成。次は?
永続化したい場合は、BluetoothモジュールとともにPCBにはんだ付けし、自作デバイスとして活用できます。ただし、CMDにコマンドを打ち込む等の悪用も可能なため注意してください。OTGケーブルがあればArduinoのUSBケーブルをスマホに繋いで同じように使えます。お時間を割いて製作いただきありがとうございました。フィードバックや質問はコメント欄へどうぞ。できる限りお答えします。
コード
/* Project Name : Text Teleporter
* Receives some text in String format via bluetooth from one device and types (pastes) it into another device.
* For : Arduino Micro/Leonardo/Due/Pro Micro (ATMega 32U4)
* Author : Advik Singhania
* Created On : 11th October, 2020; 11:23 AM IST
*/
#include "Keyboard.h"
void setup() {
Serial1.begin(9600);
Keyboard.begin();
}
void loop() {
if (Serial1.available() > 0) {
String a = Serial1.readString();
Keyboard.print(a);
}
delay(10);
}
回路図
製造プロセス
- Bluetooth操作のArduinoスパイボットを自作する
- FlickMote:ジェスチャー操作のIRリモコンでスマートホームを制御
- 自作Arduino TV-B-Gone:全テレビ対応の万能リモコン
- 12メートル先から見える大型LEDマスタークロック(アラーム機能付き)を自作しよう
- ArduinoとBluetoothで作るスマート紛失防止タグ「Find Me」
- Arduinoプロジェクトのための最適化電源ソリューション
- Arduino三目並べ:MAX7219 LEDマトリクスと段ボールケースで自作
- スマートArduino四足歩行ロボットの製作:ステップバイステップガイド
- Bluetoothテキストテレポーター:Arduino + Androidプロジェクト
- ゲーム用カスタムArduinoジョイスティックハンドルの製作
- Arduino Nano R3で本格的なCNCマシンを自作する