発売日にAmazonで運良く「Pokémon GO Plus」を手に入れることができました。
ポケモンGOプラスの登場により通知がきたらいち早くボタンを押すゲームと化したポケモンGOですが、
物理的にボタンを押すだけなら、簡単に自動化できそうだったのでArduinoで自動化してみました!
ポケモンGOプラスが反応したら検知して、サーボモーターでボタンを押せるようなものを作りました。
材料
Pokémon GO Plus
本体と制御のためのArduino Uno
部品 | 画像 | 値段 |
---|---|---|
Pokémon GO Plus | 3,780 | |
Arduino Uno | 3,240 |
材料はたったこの2つ、Arduinoの初心者セットに良く入っている圧電スピーカー
とマイクロサーボ
です。
部品 | 画像 | 値段 |
---|---|---|
マイクロサーボ SG92G | 500 | |
圧電スピーカー SPT15 | 100 |
また、ジャンパーワイヤ、両面テープ、結束バンドなども使っています。
既にArduinoを持っていれば秋月電子で送料込みで1000円以内で自動化ライフが始められますね。
作り方
圧電スピーカーを分解
今回は手元に圧電スピーカーしかなかったので、圧電スピーカーを分解し圧電素子を取り出します。
圧電素子だけでも売っているので、こっちの方が50円お得
部品 | 画像 | 値段 |
---|---|---|
圧電サウンダ FGT-15T-6.0A1W40 | 50 |
爪で引っかかってるだけで結構簡単に外れるので、裏蓋をパカっと外して圧電素子をとりだします。
圧電素子をセンサーとして使う
電圧を加えると振動して音を出のが圧電スピーカーですが、逆に外部から与えられた振動を電圧に変換することもできます。
今回はこの効果を利用しセンサーとして使います。
圧電素子から伸びるワイヤーをGND
とA1
に繋ぎます。
ArduinoでanalogRead()
で圧電素子の値を読み取ります。
void setup() {
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(1);
Serial.println(sensorValue);
}
このコードをArduinoに書き込み、圧電素子を指で叩いてみると数字が変動しセンサーになっているのが分かります。
ポケモンGOプラスの振動を検知する
ちょうど良くポケモンGOプラスの裏のクリップが付いているので、ここに圧電素子を挟みました。
これでポケモンGOプラスのバイブを検知できます。
コードはこんな感じ、センサーの値が150を超えたらボタンを押すという想定。
void setup() {
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(1);
if (sensorValue > 150) {
Serial.println("push!");
delay(5000);
}
}
閾値は環境によって変動するので調整してみてください。
サーボモーターを動かしてみる
頭には付属でついてくる、片側しかないやつをネジ止めしておきます。このとき0度のときに上から見てサーボモーターからはみ出ないような位置でセッティングしてください。
そしてサーボモーターから伸びるコードとArduinoの5V
とGND
とD8
にそれぞれ接続します。
先程のセンサーと組み合わせて、通知がきたらサーボモーターで15度動かして、すぐに元の位置に戻すという動作をします。
#include <Servo.h>
Servo servo;
int SERVO_PIN = 8;
void setup() {
servo.attach(SERVO_PIN);
servo.write(0);
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(1);
if (sensorValue > 150) {
servo.attach(SERVO_PIN);
servo.write(15);
delay(500);
servo.write(0);
delay(7000);
}
if (servo.attached()) {
servo.detach();
}
delay(5);
}
サーボを動かした後にdelayで7秒間待っていますが、これはdelayを行わないとポケモンを捕まえたときの振動にも反応してしまうためです。
あと使わないときはservo.detach()
しないと待機音が結構うるさい。
ポケモンGOプラスとサーボモーターを固定する
ここからは力技です。
両面テープでサーボモーターでボタンを押せる位置に合わせて、結束バンドで動かないように固定してしまいます。
最初ビニールタイでを使ってたのですが使用しているうちにズレてきてしまったので、結束バンドにしたら良い感じで固定できました。
完成!動かしてみる!
これで24時間ポケモンが現れた瞬間に捕まえてくれています。お台場にまる1日放置してみたいw
あちゃんでいいのとかArduino Nanoとか小さいマイコンに取っ換えれば、多分ポータブル化できる、はず。