Arduino UNO R4 MinimaのHID機能を使って、PCのマウスとキーボードをエミュレートする
こんにちは、せでぃあ(@cediablog)です。
Arduino UNO R3の後継機種であるArduino UNO R4 Minimaが発売され、本ブログではその新機能を紹介しています。
今回、新機能紹介記事の第三弾として、「HID(ヒューマンインターフェースデバイス)」という機能を紹介します。
Arduinoのタクトスイッチ(押しボタン)を押すことで、パソコン画面上のマウスカーソルが移動し、スプレッドシートのセルに自動で文字入力をさせる動作を行ってみました。
この記事を読んだら、一度は試してみたくなる機能だと思いますよ!
- HID(ヒューマンインタフェースデバイス)機能の使い方
- Arduinoからパソコンのキーボードとマウス操作をさせる方法
- Arduino IDEでのプログラミング例
せでぃあはこんな人物です
✅プライム企業に勤める電気・機械設計エンジニア
✅親子の絆を深めるため、夏休みに子供と一緒に電子工作を製作
✅Arduinoプログラミングを用いて作ったプログラミング電子工作「信GO機」が市の発明くふう展で「優秀賞」を受賞
✅本ブログにてArduinoスクラッチプログラミングLESSON記事投稿中
✅YouTubeチャンネル「せでぃあブログちゃんねる」運営中
HID(ヒューマンインターフェースデバイス)機能について
Arduino UNO R4 Minimaの新機能「HID(Human Interface Device)」は、パソコンのマウスやキーボードなど人間がPCに対して情報を与える機能をArduino本体側に持たせることができる機能です。
これはArduino Leonardo(レオナルド)という、Arduinoシリーズの基板が持っていた機能です。
Arduino UNOシリーズでもUNO R4 Minimaに進化することで、この機能が使えるようになりました。
HID機能でできることの例
・マウスカーソル動かす。
・マウスのクリック動作をさせる。
・文字列を入力する。
Arduinoがマウスやキーボードの代わりに、PC上で動作させることが可能になるということです。
HID機能を使った動作の説明
今回は、ブレッドボード上のタクトスイッチ(押しボタン)を押してHID機能を実行する回路を作りました。
- タクトスイッチを押す。
- パソコン上のマウスカーソルが画面右下方向に移動する。
- マウスカーソル移動後の位置で、クリック動作を行う。
- 文字列「Hello!」を入力する。
このような、タクトスイッチを押すたびに実行される動作を作っていきます。
あらかじめ、スプレッドシートを開いてマウスカーソルをセル上に配置した状態で動作確認します。
HID機能を使った、マウスとキーボードのエミュレート回路で使うもの
- パソコン
- Arduino本体
- USBケーブル(typeC)
- ブレッドボード
- タクトスイッチ
- 抵抗(1kΩ)
- ジャンパー線(オスーオス)×4本
今回はELEGOO社のスーパースターターキットに含まれる部品を使っています。
コスパ最強のArduinoキットに含まれる、すべてのパーツを紹介しています。
パソコン
プログラムを作成するために必要です。
プログラム制御の演算はArduino側で行うため、パソコンのSPECは一般的なモデルで十分対応可能です。
パソコンのOSはWindows、Macどちらでも対応可能です。
Arduino UNO R4 Minima本体
今回は、Arduino純正品の「Arduino UNO R4 Minima」を使用します。
私は秋月電子通商にて購入しましたが、スイッチサイエンスやAmazonでも購入が可能です。
R4 Minimaが買える国内サイト
Arduino UNO R4 Minimaの始め方は、こちらを参考にしてみてください。
ピン配置などの基本的な仕様は、UNO R3と同じです!
USBケーブル(TypeC)
UNO R3は本体に接続する側の端子形状が(TypeB)でしたが、R4 MinimaではTypeC形状になります。
パソコンとArduinoを接続してプログラムデータのやり取りをするために必要です。
USBケーブルは別売りなので、買い忘れに注意してください。
ブレッドボード【キット】
たくさんの穴が開いていて、部品の端子を穴に差し込むだけで電気的に接続が可能な板です。
説明図は30列のショート版ですが、スーパースターターキットに含まれる63列タイプでも機能は同じです
ブレッドボードだけの購入も可能です。
タクトスイッチ【キット】
今回の回路では、タクトスイッチ(押しボタンスイッチ)を使用します。
押しボタンは押されている間のみ、上記写真での2点が内部でつながります。
このようなボタンをモーメンタリボタンといいます。
今回は扱いませんが、ボタンから手を離してもONしたままになるボタンをオルタネイトボタンといいます。
モーメンタリ・オルタネイトボタンについては以下記事にて詳しく説明しています。
抵抗(1kΩ)【キット】
1kΩの抵抗を1本使用し、押しボタンスイッチに接続します。
抵抗を接続するのは、押しボタンがOFFのときにArduino本体がノイズによる誤検出することを避けるためです。
この記事では詳しく説明しませんが、ボタンを押していないのに押されたと誤認識されることを避ける目的であるということだけ覚えておいてください。
抵抗カラーコードの見分け方については、こちらの記事で詳しく説明しています。
ジャンパー線(オスーオス)【キット】
ジャンパー線を4本使用します。
Arduino本体とブレッドボードの接続や、ブレッドボードの共通電源ライン(GNDまたは5V)からブレッドボード内の配線系統穴に差し込んで接続するのに使います。
HID動作確認回路の配線図
今回はタクトスイッチを押すことで、
これは、押しボタンを押すことでメロディー演奏を開始させるために使用します。
1kΩ抵抗もタクトスイッチに接続していますが、スイッチOFF状態では確実に電位が0Vになるようにしています。
HID機能を使ったマウスとキーボードのエミュレートプログラム
配線が完了したところで、HID機能確認プログラムを作っていきます。
マウスとキーボードのエミュレート方法
Arduino本体からPCに対して、マウスとキーボードの動作を行うためには、以下のオブジェクトを使います。
使用するオブジェクト
・Keyboardオブジェクト
・Mouseオブジェクト
それぞれのメソッドについて、詳しく説明していきます。
Keyboardオブジェクト
Keyboardオブジェクトはキーボードの役割をArduinoから実行する機能です。
メソッド | 機能 |
---|---|
begin() | キーボードエミュレートを開始 |
end() | キーボードエミュレートを終了 |
press() | キーの押し下げキープ |
print() | 文字列を入力 |
println() | 文字列を入力して改行する |
release() | キーの押し下げ解除 |
releaseAll() | 全キーの押し下げ解除 |
write() | 1つのキーストロークを送信 |
使用例など詳しく知りたい方は、こちらを参照してください。
Mouseオブジェクト
Mouseオブジェクトはマウスの役割をArduinoから実行する機能です。
メソッド | 機能 |
---|---|
begin() | マウスエミュレートを開始 |
click() | クリック動作をさせる |
end() | マウスエミュレートを終了 |
move() | マウスカーソルを移動 |
press() | マウスボタンを押し下げキープ |
inPressed() | マウスボタン押し下げ状態確認 |
release() | マウスボタン押し下げ解除 |
マウスカーソルの移動はmove()を使って、現在位置からの相対距離を指定して実行します。
Mouse.move(X移動量、Y移動量、ホイール移動量);
クリックボタンのデフォルトは「左クリック」になります。
使用例など詳しく知りたい方は、こちらを参照してください。
Arduino IDEを開く
Arduinoの開発環境ソフトウェアである、Arduino IDEを開きます。
今回Arduino IDE2.2を使ってプログラムを作成しました。
プログラムを作成していきます。
USBケーブルで、Arduino UNO R4 Minimaと接続した状態で開くと、プルダウンから機種選択が可能です。
機種選択は、プログラム作成後でも問題ありません。
Arduino IDE2.2のインストール方法については、こちらの記事で紹介しています。
動作プログラム
/* 作品名:UNO R4 Minima HID */
/* 作成者:せでぃあ https://cediablog.com */
/* HID機能を使ったキーボード・マウスエミュレート */
#include <Mouse.h> // マウスHID制御用ライブラリの読み出し
#include <Keyboard.h> // キーボードHID制御用ライブラリの読み出し
void setup() {
pinMode(2, INPUT); //2番ソケットを入力ピンとして使用
Mouse.begin(); //マウスエミュレートを開始
Keyboard.begin(); //キーボードエミュレートを開始
}
void loop() {
//タクトスイッチが押されたときの動作プログラム
if (digitalRead(2) == HIGH) {
Mouse.move(50, 15, 0); //マウスカーソルをXY方向に移動
delay(300); //0.3秒ウェイト
Mouse.click(); //マウスクリック動作を実行
Keyboard.print("Hello!"); //文字列"HELLO!"を出力
delay(500); //0.5秒ウェイト
}
delay(100); //0.1秒ウェイト
}
タクトスイッチ(押しボタン)を押すと、マウスが移動してクリック⇒文字列入力を実行します。
マウスの移動量や文字列をアレンジして、遊んでみてくださいね!
動作確認
プログラムをArduino本体に転送したら、動作確認します。
スプレッドシート画面上にマウスカーソルを配置されたら、タクトスイッチを押して動作確認してみてください。
ArduinoからPCを操作できるなんて、楽しいですよね!
PCを制御できるとArduinoの世界が広がる!【まとめ】
Arduino UNO R4 Minimaになって、HID機能を使ったマウス、キーボードのエミュレートが出来るようになりました。
この機能を使うことで、スプレッドシートへの文字入力など作業の自動化も可能となります。
人の手によって操作されてきたことが、自動化できることで何かの作業をArduinoにお任せしたりできたらと思うと、一気にArduinoが活躍できる世界が広がった気がしてワクワクしますね!
以上で、Arduino UNO R4 MinimaのHID機能の紹介を終わります。
HID機能は、Arduinoの活躍場面が広がったと感じられる機能でした!
最後まで読んでいただき、ありがとうございました。
Arduino R3互換品キットなら、本体と30以上の電子パーツが入って5,000円程度と高コスパです。
ELEGOOのArduino互換キットは本ブログのLESSONシリーズでも活用しています。
Arduino UNO R4 Minimaの新機能を紹介しています。
コメント