後ろ向き太郎の後ろ向き日記

ほしいものリスト作ってみました。https://www.amazon.jp/hz/wishlist/ls/1YO6Z5POOS44Y

Arduinoでスマホを自動タップする連打装置を自作する

最近スマホゲームをはじめて、画面タップ連打の操作がでてきました。

スマホゲームはぜんぜんやらないので知らなかったんですが、他のゲームでも連打が必要なやつがけっこうあるんですね。

こういうのって勝手にしてくれる機械ってけっこうありそうだなーと調べてみるとけっこういいお値段するんですね。

M6 スマホ連打機 自動連続タップ チート装置

M6 スマホ連打機 自動連続タップ チート装置

  • メディア: エレクトロニクス
 
SMATCH スマッチ スマホ連打ツール ZASRD-02

SMATCH スマッチ スマホ連打ツール ZASRD-02

  • 発売日: 2019/05/17
  • メディア: Personal Computers
 

 3000~6000円くらいで、お手軽にポチーとは行かないお値段ですね。連打の代償に課金とかするのに比べたら安いもんなのかもしれませんが…

調べてみるとスマホ連打装置を自作する作例がけっこう出てきたので、私も作ってみることにしました。

材料はこんな感じです。

まじはスイッチサイエンスさんから発売されているリレータッチボードです。

2020年5月現在662円、送料200円です。

 

リレー、ドライバが乗っておりEN端子をHighにすることでリレータッチボードの導体が接触しているスマートフォンやタブレットのタッチパネルをタッチした状態にでき、EN端子をLowにすると離した状態にできます。

スイッチサイエンスさんではドライバ無し版も売られていますので注意してください。ドライバ無し版だとArduinoで作動させるためにはドライバが必要になります。

回路図はこちらにありますが、ENがHighになるとボード裏面の導体がGNDと導通するようになっていますね。

次に、こちらのエントリで紹介しているArduino Nanoです。

High→Lowを繰り返せばいいだけなのでマイコンは大げさだとは思うんですが、発振回路を組むのも大変ですしこいつは500円と安くてお手軽なので…

電子工作は最終的に動けば何をどう使ってもいいんですよね。

 私はリレータッチボードはリード線なしを購入したのでArduino Nano→リレータッチボードの接続用にジャンパーワイヤを用意します。

 実際のリレータッチボードがこちらです。思ったより小さいですね!

f:id:ushirotaro:20200502221121j:plain

ジャンパーワイヤを切断して、片方を先バラにします。

f:id:ushirotaro:20200502221150j:plain

リレータッチボードが思った以上に小さくてはんだ付けが汚くなってしまいました。5VとGNDが接触しないか心配です…

f:id:ushirotaro:20200502221242j:plain

細かいのが嫌なひとはリレータッチボードのリード線つきを購入したほうがいいかもしれませんね。リード線つきを購入し、ジャンパーワイヤのメス側にリード線を差し込むようにすれば1度もはんだ付けなしで制作できると思います。

さて、ジャンパーワイヤのメス→リレータッチボードの配線ができたら、Arduino Nanoに接続します。

リレータッチボードの5V、GNDはそれぞれ5VとGND、ENはA5に接続しています。

f:id:ushirotaro:20200502221649j:plain

接続が終わってこんな感じになりました。

f:id:ushirotaro:20200503104826j:plain

接続が済んだところで試しに動かしてみます。

スケッチは以下の通りです。

void setup() {
pinMode(A5, OUTPUT); //A5ピンを出力として使う
}

void loop() {
digitalWrite(A5, HIGH); //A5ピンをHighにする
delay(1000); //1000ms=1秒待つ
digitalWrite(A5, LOW); //A5ピンをLowにする
delay(1000); //1000ms=1秒待つ
}

このスケッチで動かしてみたところ、リレーはカチカチするんですがなかなかタップを検知しませんでした。

電子工作と治具ツールの備忘録さんというブログでは、リレータッチボードのGNDをスマホ本体のGNDと共通にしないと動作が不安定、という記述がありました。

オーディオ端子からGNDを取り出すのは面倒だったので、USBハブからArduino Nanoの電源を取り、同じハブにスマートフォンを接続して充電してみると、iPhoneの場合は安定して動作しました。

しかし、この方法でもiPhoneではタップを認識させることができましたがAndroidではだめでした。

そこで、リレータッチボードの固定方法を上の動画のようにセロハンテープで固定するのではなく、リレータッチボードの導体部分に薄手の両面テープを貼って固定する方法に変えたところうまく反応するようになりました。導電テープではなく、ダイソーで買った普通の両面テープです。

f:id:ushirotaro:20200503103934j:plain

うまく動作するようになったのでdelayを少なくして連打速度をあげてみたものがこちらです。

void setup() {
pinMode(A5, OUTPUT); //A5ピンを出力として使う
}

void loop() {
digitalWrite(A5, HIGH); //A5ピンをHighにする
delay(100); //100ms=0.1秒待つ
digitalWrite(A5, LOW); //A5ピンをLowにする
delay(100); //100ms=0.1秒待つ
}

連打速度は早いほうがいい、という方も多いと思いますがリレーを使用しているのでdelayを短くしてもリレーの動作、復帰速度以上には早く動作しないと思います。

リレータッチボードに搭載されているリレーはオムロンのG6L-1F DC5で、こちらからデータシートが見られます

データシートによると動作時間は5ms以下、復帰時間も5ms以下となっています。

いろいろ試してみましたがdelayは20~30ms以下にしてもスマートフォン側が反応してくれませんでした。あまりに早い変化は1タップやノイズと認識するようになっているんでしょうね。このあたりも端末ごとに違うと思います。

また、これだけリレーをカチカチ動かすと、リレーの寿命が気になってきます。

データシートによると機械的耐久回数は500万回以上、電気的耐久回数は10万回以上となっています。

リレーの機械的耐久回数と電気的耐久回数の違いは、その名の通り機械的にリレーが故障してON、OFFしなくなるまでの回数と、定格通りの電気的特性を保ったまま動作しなくなるまでの回数の違いです。

今回の使用方法だとリレーの接点は無負荷なうえ、電気的特性が悪くなってもさして影響ないと思われますので、機械的耐久回数をあてにしていいと思います。

機械的耐久回数は500万回以上となっているので、毎秒5回動作させる設定にすると毎時18000回動作します。1日30分使用すると18ヶ月です。十分すぎる耐久性がありますね。