PR

センサーの入力を検知してキーボード・マウス操作する(Arduinoならできる!)

touchsensoreyecatch

センサー類で何かを検知してLEDを光らせることや、

センサー類で検知してモーターを動かすなどはArduino(マイコン)であれば比較的簡単にできます。

ただし、キーボード操作やマウス操作などはちょっとクセがありますので、

今回ご紹介していきます。

ちなみに今回ご紹介するのは、

タッチセンサー触れたらキーボードで文字を入力する。」というものです。

この記事を読むことでわかること

自己紹介

東証一部上場企業でサラリーマンしてます。

主に工場(生産現場)で使用する検査装置のアプリケーション開発してます。

ヒトの作業を自動化して簡略化するアプリケーションを日々開発中。

2022年5月に転職。現役バリバリの技術者です。
現在は超大手企業の新規事業分野で装置の研究・開発をしています。

Youtubeチャンネルにさまざまな動画を上げています

↓↓↓こちらからYoutubeチャンネルにアクセス!! ↓↓↓

Arduino完結型だとどんなイメージ?

Arduino完結型は、パソコンを必要としないシステムで動作が完結するイメージです。

例えば、以前記事にしたタクトスイッチを使った実験などです。

この実験は、”タクトスイッチ”と”Arduino”と”LED”、最後に”5V電源”だけあれば動作します。

もちろんArduinoにスケッチと呼ばれるプログラミングコードを書き込むときは

パソコンが必要になりますが、一度書き込んでしまえば、内容はArduino本体に保持されて、

5V電源を投入するだけで勝手に動作します。マイコンの基本動作ですね。

今回やりたいことは、センサーからパソコンを操作することなので

ちょっと今までの内容とは異なります。

今回のテーマだとどんなイメージ?

今回は、パソコンの制御になるのですが、

イメージとしては「Arduinoを仮想キーボードと仮想マウスにする。」という感じです。

もちろんパソコンへの通信が必要になるので、基本はケーブルで「パソコンとArduinoは

つなぎっぱなし」になります。

自分で自作キーボードなんか作る人もいるくらいなので、

Arduinoはすでに情報がたくさんありますし、

なんなら標準で搭載されているライブラリにキーボードやマウス操作もありますので、

割と簡単に制御が可能です。

今回必要になるもの

  • Arduino Leonardまたはpro Micro
  • タッチセンサー
  • ブレッドボード(配線周り)

Arduino LeonardまたはArduino pro Micro

ここはすごく重要です。

Arduinoならなんでもキーボードやマウス操作ができるわけではありません。

具体的な例を出すと、ArduinoUNOやArduino pro miniなどは

通常使用できません。(やりようはあるみたいですが、お手軽にはできないらしい。)

ですから、ちょっと遊んでみたい人はArduino Leonardか、Arduino pro Microを

購入してください。

↓Leonard(現在のamazonの価格をチェック!)

↓pro Micro(現在のamazonの価格をチェック!)

ちなみに、Arduino pro miniとArduino pro Microで見た目はほぼいっしょで、

Arduino pro miniだけキーボードやマウス操作できないのか?

というと、プロセッサの違いにあります。

この画像をよく見てください。

ProMicroのプロセッサ拡大図

プロセッサのところに、小さく名前が書いてあります。

このpro Microに書かれている32U4が肝です。

逆を言ってしまえば、32U4が搭載されているArduinoであれば

キーボードやマウス操作可能になります。

タッチセンサー

Arduinoが準備できたところで、センサーの紹介です。

センサーのセットか何かで手元にあったタッチセンサーです。

もちろんこのセンサーは、タクトスイッチでもいいですし、

トグルスイッチでも構いません

とりあえずArduino側にON/OFFを入力させられるものであればなんでもOK。

最悪5VをとりあえずdigitalPinにさしてもまあ何とかなります…

ブレッドボード(配線周り)

配線方法とArduinoに書き込むプログラムを紹介していきます。

センサーの配線周りは、きちんとご自分の持っているセンサーに合わせてくださいね。

Arduinoとセンサーの配線方法

わたしの手元にあったタッチセンサーは、

タッチ面を手前にし、ブレッドボードにさした状態で

左から順に、GND,VCC,SIGとなっていました。

その通り配線したのがこのような感じの配線図です。

センサーの信号線はpin5につなげています。

これでタッチセンサーが反応したら、Pin5がHighになる仕組みです。

タッチセンサーとArduinoの配線

Arduinoに書き込むスケッチ(プログラム)

それではArduinoでキーボード操作するためのスケッチ(プログラム)を紹介します。

先ほど配線のところでもお伝えしましたが、

わたしの場合はセンサーが接続されているのが5番pinなので5番pinを監視しています。

(※もちろん変更していただいても配線ごと変更すれば動きます。)

#include <Keyboard.h>;
const int sensorPin=5;
int counter=0;
void setup() { 
  Keyboard.begin();
  pinMode(sensorPin,INPUT_PULLUP);
}
void loop() {
  if(digitalRead(sensorPin)==LOW){
    counter=0;
    } 
  else{
   if(counter==0){
    counter++;
    Keyboard.println("auchi!!");
    Keyboard.write('\n');
    delay(100);       
   }
  }
}

しょっぱなに記述したKeyboard.hですが、

こちらは標準のライブラリなので、書けばとおります。

ここで通らない場合は、ライブラリを更新するか、もしくはArduinoが対応しているか

つまり、32U4のプロセッサを搭載しているか確認してください。

繰り返しになりますが、Arduino UNOなどはプロセッサが異なるのでそのまま使用できません。

書き込み時にエラーになります。

次に、定義しているcounterですが、

こちらはセンサー入力があった時に1回だけ検知するために使用します。

センサーに長い入力があった場合でも1回とするためですね。

人によってタッチする長さは異なるでしょうが、回数としては1回なので。

loopの中でのif文ですが、

こちらはタッチされた瞬間にキーボードで文字入力をし、

直後に改行動作をしています。

counterを1上げているのは、連続でキー操作されるのを防ぐためです。

また、センサーに出力がない場合は、counterを0にして初期化しています。

初期化することにより、センサーへの入力があった時に1回だけif文のTrueに入ります。

まとめ

今回はArduino pro microを使用して、キーボード操作をしてみました。

Arduino UNOではできない。というところが引っかかるポイントかと思いますが、

それ以外は意外とすんなりという感じですよね。

センサーで検知したタイミングでパソコン側に認識させる。というのは

なかなか需要がありそうですので今回記事にしてみました。

コメント

タイトルとURLをコピーしました