虎の穴開発室ブログ

虎の穴ラボ株式会社所属のエンジニアが書く技術ブログです

MENU

Arduinoで作る、スマホ連打装置

f:id:toranoana-lab:20191206182551p:plain

こんにちは、虎の穴ラボのT.Yです。
この記事を読まれている方は、スマートフォン(以降、「スマホ」と記述します)のゲームなどはプレイされているでしょうか。 私がスマホでプレイしているゲームでは、一部のイベントなどでタップの連打が必要になる時があります。 今回はその作業を自動化したいと考え、スマホのタップ連打装置をArduinoを利用して製作してみましたので、その製作手順をご紹介します。

ご注意:全てのスマホで使用できるものではありません。スマホの液晶には種類があり、今回の装置では正常に動作しないものも存在します。また、この装置を使用することによりスマホが故障する可能性もあります。お試しする際は、ご注意下さい。

用意したもの

開発環境となる MacBook には、予めJavaの開発実行環境であるJDKをインストールしておく必要があります。

Arduinoとは

Arduinoとは、小さな基板上にマイコンと入出力ポートを備えた、安価なデジタル制御装置です。
オープンソースハードウェアに類するもので、設計なども公開されているため、互換機も多数存在します。

開発手順

  1. Arduino IDEのインストール
  2. Arduino IDEの設定
  3. Arduinoの動作確認
  4. タップ連打スケッチの作成とアップロード
  5. リレータッチボードの接続

1.Arduino IDEのインストール

まずはArduino上で動作させるプログラムを開発する為の、開発環境をインストールします。

1-1.
公式サイトにアクセスし、画面上部の「SOFTWARE」にカーソルを合わせた後、ドロップダウンメニューに表示される「DOWNLOADS」をクリックします。

f:id:toranoana-lab:20191201170903p:plain

1-2.
ダウンロードページに移動するので、少し下にスクロールさせ、「Download the Arduino IDE」の中の「Mac OS X」をクリックします。

f:id:toranoana-lab:20191201170952p:plain

1-3
Arduinoソフトウェアに対する貢献をお願いするページに移動するので、貢献をする場合は「CONTRIBUTE & DOWNLOAD」をクリックし、そのままダウンロードをする場合は「JUST DOWNLOAD」をクリックして zipファイルをダウンロードします。 (今回は arduino-1.8.10-macosx.zip というファイル名でした。)

f:id:toranoana-lab:20191201171030p:plain

1-4.
ダウンロード後、zipファイルを解凍すると Arduino.app というファイルが作成されます。これをMacのアプリケーションディレクトリにコピーすると Launchpad などから起動できるようになるので、クリックして起動します。 (初回起動時は、「"Arduino.app"はインターネットからダウンロードされたアプリケーションです。開いてもよろしいですか?」という注意が表示されます。そのまま「開く」を選択するとインストールが実行されます。)

f:id:toranoana-lab:20191201171144p:plain:w100

1-5.
ローンチスクリーンが表示された後、Arduino IDEが起動します。

f:id:toranoana-lab:20191201171210p:plain:w300

2.Arduino IDEの設定

次に、Arduinoとの接続設定を行います。

2-1.
Arduino IDEが起動したら、USBケーブルでMacBookとArduinoを接続します。

2-2.
Arduino IDEのメニューより「ツール」を選択し、ボードに「Arduino/Genuino Uno」が選択されているのを確認します。選択されていない場合は、表示されたメニューから選択をします。

f:id:toranoana-lab:20191201183510p:plain
Arduino_IDE_Setting_01

2-3.
Arduino IDEのメニューより「ツール」を選択し、シリアルポートにカーソルをあて、表示されたメニューから「Arduino/Genuino Uno」または「Arduino Uno」と書かれた(または含まれた)項目を選択して切り替えます。 (USBケーブルが上手く接続できていない場合は設定に表示されません。この場合は接続を確認してから再度試します。)

f:id:toranoana-lab:20191201184111p:plain
Arduino_IDE_Setting_02

2-4.
最後にArduino IDEのメニューより「ツール」を選択し、「ボード情報を取得」をクリックして、ボード情報ウィンドウが表示されるのを確認します。
もしボード情報ウィンドウが表示されない場合は、正常に接続がされていません。 シリアルポートの設定を他のものに変更し、再度「ボード情報を取得」を試して、ボード情報ウィンドウが表示される設定を探します。

f:id:toranoana-lab:20191201171352p:plain:w300

確認後は「OK」ボタンを押してボード情報ウィンドウを閉じておきます。

3.Arduinoの動作確認

ボード情報ウィンドウが表示される状態になれば、Arduinoとの接続は完了です。 次にArduinoの動作確認を行います。 Arduinoには別途パーツを用意しなくても、動作確認に利用できる発光ダイオード(LED)が基板上に実装されています。 まずは、これを点滅させてみましょう。

Arduinoの基板を見ると、基板上に「DIGITAL」と書かれ基板上に14本のIOピンが並んだ側と、「POWER」「ANALOG IN」と書かれ13本のIOピンが並んだ側があります。ここで点滅させるLEDは「DIGITAL」と書かれた側の13と書かれたピンの少し内側にある、横に「L」と書かれたLEDになるので確認しておきます。

f:id:toranoana-lab:20191201171419p:plain

Arduinoではプログラムの事を「スケッチ」と言います。スケッチはArduinoに何をすべきかを伝えるものです。
まずは、先ほど確認したLEDを点滅させる為のスケッチをArduino IDEに入力します。

3-1.
Arduino IDEのメニューより「ファイル」を選択し「新規ファイル」をクリックして新しいスケッチを開き、以下のスケッチを入力します。

void setup() {
  pinMode(LED_BUILTIN, OUTPUT); // LED_BUILTINを出力として初期化します。
}

// ループ関数内は何度も実行されます
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // 電圧レベルをHIGHにしてLEDをオンにします
  delay(3000);                       // 3秒間待ちます
  digitalWrite(LED_BUILTIN, LOW);    // 電圧レベルをLOWにしてLEDをオフにします
  delay(3000);                       // 3秒間待ちます
}

このLED点滅確認用のスケッチは Arduino IDE にサンプルとして実装されていて、メニューより「ファイル」→「スケッチ例」→「01.Basics」→「Blink」をクリックしてスケッチを開くと、同様のスケッチが表示されます。

3-2.
スケッチの「検証」ボタンをクリックし、スケッチの検証とコンパイルを行います。 (初回実行時はスケッチファイルの保存を求められる場合があります。その時は「Save」ボタンをクリックして保存します。)

f:id:toranoana-lab:20191201171504p:plain

3-3.
スケッチの検証とコンパイルが完了したら、「アップロード」ボタンをクリックし、Arduinoにスケッチをアップロードします。

f:id:toranoana-lab:20191201171519p:plain

3-4.
アップロードが完了すると、基板上のLEDが3秒間隔で点滅を繰り返すようになります。
これで動作確認は完了です。

LED_BUILTIN は、基板上に設置されているオンボードLEDが接続されているピンの番号を指しているのですが、ほとんどの場合、このLEDはデジタルピンの13番PINに接続されています。その為、次のようなコードでも同様の動作をします。 詳しく知りたい方はArduino Referenceをご参照下さい。

int led = 13;

void setup() {
  pinMode(led, OUTPUT);     // デジタルピンを出力として初期化します。
}

// ループ関数内は何度も実行されます
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // 電圧レベルをHIGHにしてLEDをオンにします
  delay(3000);                       // 3秒間待ちます
  digitalWrite(LED_BUILTIN, LOW);    // 電圧レベルをLOWにしてLEDをオフにします
  delay(3000);                       // 3秒間待ちます
}

4. タップ連打スケッチの作成とアップロード

Arduinoの動作確認ができたら、次はタップ連打の為のスケッチのアップロードです。

4-1.
先程と同様に、Arduino IDEのメニューより「ファイル」を選択し「新規ファイル」をクリックして新しいスケッチを開き、今度は次のようなスケッチを入力します。

#define EN A0  // リレータッチボードのENから伸びているコードを接続する端子を指定します
 
void setup() {
  pinMode(EN, OUTPUT);    // ENに定義されたアナログピン(ここではA0)を出力として初期化します。
}
 
void loop() {
  // 0.025秒毎にON/OFFします
  digitalWrite(EN, HIGH);
  delay(25);
  digitalWrite(EN, LOW);
  delay(25);
}

4-2.
入力後はスケッチの「検証」ボタンをクリックしてコードの検証とコンパイルを行い、 次に「アップロード」ボタンをクリックしてArduinoにスケッチをアップロードしておきます。

5. リレータッチボードの接続

スケッチのアップロードが完了したら、次はいよいよリレータッチボードの接続です。

5-1.
リレータッチボードからは3本の電線が伸びています。 電線の先の被覆をカッターなどで1cm程はがし、より線を軽くねじってまとめておきます。

f:id:toranoana-lab:20191201173735p:plain

5-2.
リレータッチボードの基板を確認し、3本の電線がそれぞれ「5V」「GND」「EN」と記載されている箇所から伸びているのを確認します。

f:id:toranoana-lab:20191201172329p:plain

5-3.
確認ができたら、あとは電線をArduinoに接続していきます。
まずリレータッチボードの「5V」、「GND」から伸びている線を、Arduinoの「5V」、「GND」と書かれたピンに接続します。
次に「EN」から伸びているコードを「A0」(これは先ほどのスケッチで指定したピンです)と書かれたピンに接続します。
3本の電線を全て接続すると、リレータッチボードがカタカタとなりだします。これで完成です。

f:id:toranoana-lab:20191201172350p:plain

5-4.
あとはリレータッチボードの裏面の銀色の部分を、スマホの画面に少し押しつけて密着させるように接触させると、その部分を連打し始めます。

終わりに

今回はなるべく早く、また安価に作成しようと考えていた為、最小限の機器のみを用意して製作してみました。
その為、Arduinoもオフィシャルのものではなく、安価な互換機で試しています。
動作中はリレータッチボードが振動を続ける為、長時間押しつけていると指が疲れてしまい、途中からは裁縫道具の指ぬきを指に着けて押しつけていたりしました。
実際に作ってみると、「ON/OFFできるスイッチが欲しい」とか「もう少し連打を早くしてみたい」「コードを伸ばしたい」とかの要望も出てきて、さぁこれからどうしようかと楽しくなってきています。
(何より、 箱開け が楽になりました。)

どの機種にでも必ず使えるというものでは無いのですが、もし本記事により興味を持って頂けたなら幸いです。

告知

年内最後の採用説明会を12/17(火)に秋葉原で実施します。
Webエンジニアだけでなく、通販サイトのWebディレクター枠もありますので、ご興味のある方はご参加ください。

yumenosora.connpass.com

予定が合わないと方向けにカジュアル面談も実施しています。

news.toranoana.jp