ポケモンgo その5

ネット上では最近iPHONE(iOS11.2.1)のポケモンgoのアプリのVersionUp(0.87.5)によって、直結配線したgo_PLUSが使えなくなったと騒がしい。確かに自分の直結+SWのGo_PLUSも自動にすると使えない。が、手動側にすると普通に使える。ただ、iOS10やAndroidの場合には直結go_PLUSでも普通に使えるのだが・・・。iOS10の時はgo_PLUSタスクがMulti-Taskであるような動きをしていたが、iOS11はSingleTaskのようになったように思う。これはAndroidと同等になったようだ。おそらくNianticの開発者がiOS優位になっているのを、Androidと同等にした結果だと思われる。あるいは単純なバグかもしれないが・・。

バグだった場合は待ってれば治るかもしれないが、今までのNianticの対処の仕方から推測すると、半年は治らない。

そこで前回は数秒間隔のパルスで解決したが、より捕獲率を上げるため、PIC12F1822で真面目に作ってみた。

プログラムの概要は

省電力を目指してクロック31KHz、外部割込み&SLEEPで作ってみた。

  1. 振動モーターONでRA0 (信号はモーター端子の―側がLOW)でその信号を割り込み信号とする。
  2. 直後割り込みをクリア
  3. RA1端子をHigh→DelayX秒→RA1端子をLow→DelayY秒→RA1端子をHigh→  DelayZ秒
  4. mainループで割り込み許可
  5. SLEEP、NOP でループ

問題は上記Delay_ms()のX,Y,Zだが、これはかなりCUT&TRYが必要だった。実際にフィールドに出ないとテストできないので、非常に大変だった。フィールドでDebugできる環境があればいいなあ!小型ノートPCとロジアナを持ち出せば可能か?

割り込みではなくSwitch、LEDのプログラムでも可能だが、通常でも200μAくらいで、割り込みSLEEPだとSLEEP時は40μA~50μA。もっと小さくなると思ったが、テスターの測定限界なので、本当はもっと少ないかもしれない。ポケモンgo_PLUSとこのPICの回路を単4の電池2本で使い、おそらく、2,3か月は電池交換無しに使えるのではと推測する。計算では2か月で一日最大8時間×60=480時間 単4アルカリ電池は20mAでおおよそ58時間なの、50μAでは計算上は持つと思える。

やっと完成しました。ポケモンgoのアプリやiOSのVersionUpでまた、使えなくなる危険性はあるが、今のところは非常に快適。

実際に2週間以上フィールドでテストした結果、非常に効率よくポケモンやアイテムの収集ができた。ポケストップが林立したりポケモンが多く集まっている場所でも、ほとんど問題なく収集できた。一応基板を起こしなおした。

ダイソーの5個100円のケースに組み込み
内部1

 

結線

 

 

自動化基板up

goプラのスイッチ側配線

スイッチとはポリウレタン線でつないで、念のためショート防止のテープを基板側に貼っています。モーターは取り外しています。モータの―側とジュンフロン線でつないでいます。

goプラの表面パネルを使い、もとのYねじを使う場合は、0.6㎜厚のスペーサを入れると、ねじで基板がしっかり固定されます。スペーサを入れないと基板が浮いてしまいます。

 

P_GO+信号 半田端子

 

 

iOS11からOS内で可能になった画面キャプチャ―Videoです。これ中々良いです。Androidだとmobizenがデフォですが・・。

途中ポケモンが一杯になったりアイテムが一杯になったりしていますが、ちゃんとエラーなく取れています。

ポケモンGoその2 

ポケモンgoプラスの自動化を検討してみた。ポケモンを見つけたときLEDが光ったり振動モータが回ったりするので、その信号をPICで拾って、スイッチのPush信号をだせばいいことは、少し考えればすぐわかる。ただ、中を開けて改造をする必要があるので、ゲームのチート行為になるのではと少し躊躇。多分公開すると任天堂からクレームが入るのではと思う。誰もが考えるが実行した情報がネットにないのはそのせいかな?
全く本体はいじらず、Arduinoで本体の振動をピエゾで電気信号に変え、スイッチをサーボで押すという何ともユーモラスなものがあった。こんな大きなものを持って実際に外でできるのか?ちょと疑問。ここ。たしかに面白いが・・・。これくらいだったら、Arduinoはちょっと大きいので、8PINのPICかAVRのマイコンでできるかも。ただ、ピエゾはともかく、サーボモータは大きすぎるし消費電力も多い。超小型のサーボがあるのか?10円玉くらいの大きさのはあるが、縦横奥行きが大きすぎ。やっぱり本体改造しか小型化は無理かも。

ポケモンが現れたときの検出をせず、ボタンを押しっぱなしにする方法がネットによく出ている。ボタンに5円玉をゴムで押し付けたり、タイラップできつめに縛ったりいろんな方法がある。ただしこの方法はいiPHONEのみ有効で、どういうわけかandroidではBluetoothがリセットされてしまうので不可能なのだ。どうもAndroidのBlutoothのDriverの出来がいまいちのような気がする。iPHONEに比べ反応が遅すぎる。

そこで、Androidでもなんとか自動化できないものか実験してみた。ボタンを押しっぱなしではなく数秒間隔で押す方法を試したら、なんとうまくいった。これだ! これならPICのLチカでスイッチを押してやれば自動化できそう。

goプラのボタン押しっぱなしを5円玉ではなく、中身の回路を直接結線してしまう方法がネットに出てるので、そこにPICをかますだけだから、まあいいかとやってみた。

LチカPICでFETスイッチをドライブしスイッチに結線しただけの簡単なもの。このままスマホと一緒に外に持っていき実験したら、androidでもうまくいった。ブレッドボードのままだとあれなので、小型化しダイソーの5個100円のケースに入れてみた。なぜかモータが回らない。

電池もなんかの装置に入っていて、使い道のなかったLiポリマー電池に同じくダイソーのモバイルバッテリーから外した充電回路を組み込んだ。このダイソーの充電回路は充電完了すると5VがMicroUSBの入力側にも出てくるので、危ないと指摘しているWebがあったが、これはまずい。goプラスに5Vがかかってしまう。今のところ不具合はなさそうだが(ひょっとして振動モータが回らないのは、ドライバーが焼けてしまったか?)早急に変更する予定。

基板を起こしてみた。

PICは何でもいいが自分は12F1822が安くて使いやすい。充電回路とLi電池があれば完成する。プログラミング済みのPICと全部の部品をはんだ付けしたもの(写真と同じもの)を安く販売します。コメントください。メールします。

この方法でAndroidでもうまくは行くが、先に述べたように、AndroidはBlutooth Driverの出来がいまいちで、反応が遅いので、この方法でも自転車や歩きながらだと全部捕えられない。取りこぼすのだ。これはオリジナルを手動でスイッチをポチポチしても同じ。iPHONEの場合は自転車のスピードでも取りこぼしはない。

androidはGoogleの開発したOSで、しかもポケモンgoを開発したNIANTICはGoogleから派生した会社なのに、Appleのほうが優位っていうのは??? googleはOSのAndroidを開発しただけで、スマフォのハードウェアやそのドライバ部分まで見ているのはNexusだけで、その他のスマフォは各メーカがそれぞれのハードに合わせてるだけか。(Nexus5x、6pだったらGOプラスもキビキビ動くのかな?あれ?nexusってcpuがIntelでだめだったけ?)
Apple(iOS)はiPHONEだけなので全部責任をもって開発してるから出来がいいということか。