2016年9月30日金曜日

気になった電子パーツ新製品のメモ

・FTDI USBシリアル変換アダプター Rev.2(スイッチサイエンス)
・FT-232RQ USBシリアル変換モジュール(秋月電子)

DIPスイッチよりジャンパの方が使いやすくはある
後出しでより良いものを出してくるいつもの秋月商法

USB-シリアル変換モジュール2種
価格帯、ピン配置ともにほぼ同じ
(※マイコン書き込み等で用いる場合はRTSとDTRはほぼ同義)

5.0V→3.3V切り替え時にVCCの挙動が異なることに注意
(スイッチサイエンスのは3.3V50mA出力、秋月のは5.0Vから変化しない)

従来品よりも安くなっており、RTS(DTR)ピンも省略されていないのでおススメ
基板の幅がより小さいので秋月の方がおススメ
(ブレッドボードで使う際に干渉しない)


・4.3インチ TFTカラー液晶モニター NTSCビデオ信号入力(秋月電子)
一度検品されるだけで大分安心できる
Amazonでよく売られている小型のオンダッシュモニタ
IchigoJamなど低解像度コンポジット出力のあるマイコン用か
ノーブランド品に比べると高いが不良品を掴まされるよりはずっといい


相変わらずのネーミングセンス
ArduinoUnoのIOポートを2分岐させるだけのミニ基板
小さなプロダクトではブレッドボードが不要になるかも
外側タイプの翼と内側タイプの翼がある



2016年9月24日土曜日

電子工作的アプローチによるポケモンGoBOTの作成

まえがき:

スマホ用アプリはリエンジニアリングが容易であるため、BOTはシミュレータを使用するかアプリを改造するのが定石である
ここでは実用度から目を背けつつ、実機を外部から操作する方法でポケモンGo用BOTの作成を行う

GoPlusが入手できないのが一番のハードルか
注意点:

作成コストが高く低性能なので期待しないこと
BAN回避の施策もない
BOTに使用するポケモンGoPlusの仕様上一時間以上の連続稼働が不可能(一時間おきに再接続が必要)


作成ルールと方針:

・正規のポケモンGoアプリをそのまま用いる
・root化しない
・外部アプリを用いない
・電波法を遵守(無線機器の分解、改造は行わない)


システム概要:

システムは以下3つのユニットとクライアント(iPodTouch)から構成される

・位置偽装ユニット
 複数のESP-WROOM-02と制御用Arduinoから構成されるユニット
 任意地点の無線アクセスポイント(以下、APと表記)の再現(偽装)を行う
 (※作例ではArduinoの代わりにノートPC/USBシリアル変換を使用)

・GoPlus連打ユニット
 ポケモンGoPlusとサーボモータ、制御用Arduinoから構成されるユニット
 GoPlusのボタンを定期的に押すだけ

 2016/10/02追記:iOSではボタン押し下げ固定でもOKの模様

・iPod昇降ユニット
 サーボモータと制御用Arduinoから構成されるユニット
 台の上に置かれたiPodTouchを上下に揺らすだけ(揺らす意味は後述)

・クライアント(iPodTouch)
 実際にポケモンGoアプリが動作するクライアント
 GPSが搭載されていると偽装に都合が悪いのでiPhoneは使えない

※説明の便宜上制御用Arduinoがユニット毎に存在するが、それぞれの制御は簡単なので一つのArduionにまとめても良い

位置偽装ユニット(左下)と連打ユニット(右上)
昇降ユニット:100均のスマホ置台を流用

システム動作概要:

位置偽装ユニットは任意地点の無線アクセスポイント環境を再現(偽装)する
クライアントはWifiで測位を行うため、位置情報を誤認してしまう
(クライアントがLTE通信機能なし、GPS非搭載であることが大前提)
偽装地点を一定間隔で変更することで、偽装先での移動が再現できる
外部機器を用いた位置偽装を参照

GoPlus連打ユニットは一定周期でGoPlusのボタンを押し続ける
上記偽装移動によってポケストップやポケモンを検知した場合はそれぞれのゲットが可能
(ボタンの空押しペナルティが無いため、連打で問題無い)

iPod昇降ユニットは一定周期でiPodの置き台を上下に揺らし続ける
iOSではジャイロセンサ(もしくは加速度センサ)を再測位トリガーに用いている
置き台の上に置いたiPodTouchを揺らすことで再測位を誘発する

以上のユニット動作によりクライアントは移動を誤認し、GoPlusの連打によってゲームを自動進行できる


動作例:

以下は動作の様子
偶然卵の孵化と速度制限オーバーが発生したがどちらもBOTの動作を妨げない
(GoPlusで操作しているため)


2016年9月23日金曜日

ポケモンの聖地で集団暴走が起こるメカニズム

 お台場ラプラスや台湾カビゴンなど、ポケモンGoプレーヤーが集団暴走を起こすケースが見られる
以下、この集団暴走が起きる理由のメモ

前提知識:
 ・ポケモンはポケソースと呼ばれるポイントで周期的に出現する
 ・ポケソースから出現したポケモンは全ユーザー同じ種類
 ・他のユーザーがゲットしても出現したポケモンは消えない
 ・出現したポケモンは一定時間経過すると消える
 ・レアポケモンほどこの時間は短い(15分程度)

 ・ポケソースは出現候補の抽選テーブル(仮称)を持つ
 ・抽選テーブルはポケソースごとに異なる
 ・抽選テーブルは時間帯ごとに異なる
 ・抽選テーブルは定期的に入れ替えられる(一週間程度)

  上記のデータはほぼすべてがクラックされている
 抽選テーブル(仮称)以外はすべて外部ツール/サイトにてリアルタイム情報が公開されている


集団暴走のメカニズム:
  SNS等でレアポケモン出現の報告があるとユーザーが集まってくる
 (定期的な入れ替えまでは同じ抽選テーブルを用いるため、報告から数日のディレイがあっても間に合う)

  一部のユーザーは現地でツールを用いて監視を行う
 レアポケモンが出現すると消えるまでの時間とポケソースの位置がかなり正確にわかる
 レアポケモンが消えるまでにポケソースに到着しなければいけないので自然と走ることになる
 ツールを使っていないユーザーも周囲の動きを察して追従するため、この暴走は集団化する傾向にある
 一定の人数が走り始めると集団心理がはたらいて警告の類もまったく効かなくなる

 SNSによるレア情報の拡散+ツールによる想定外のプレイ+集団心理によるイケイケ感
  →集団暴走発生

 といった感じ


 今後考えられるトラブル:
  ・人が集まると安全上マズい場所にレアポケモン出現
  →将棋倒しや交通事故など
 いち早く禁止にしたJRや私鉄はこの事態が読めていた?

  ・私有地内のポケソースにレアポケモン出現
  →ある日突然数百人単位のおしかけが発生
 ポケストップやジムなどと違ってポケソースがあることは把握し辛い
 テーブル変更でレアポケモンが来るまでは特に問題が起きないため予防も難しい


一定の人数が集まってしまった時点でもう制御不能になる
マナーとかモラルではなく人を散らす方法をシステムで設ける必要を感じる

2016年9月21日水曜日

『GPSの信号をさがしています問題』の解決

表題の件が解決したのでメモを残す

以下すべてiOS/iPodTouchでの内容であることに注意
AndroidおよびiPhoneについては未確認

もうこの表示とはサヨナラ

まえがき:
ポケモンGoで外部機器を用いた位置偽装を試している場合に
『GPSの信号をさがしています』というメッセージで固まってしまう場合がある
こうなってしまうと解除されるまで測位が行われず、偽装した位置情報も反映されない
なんらかの操作を行うと解除されやすい、という知見はあったが理由はわからなかった


原因:
iPodTouchが物理的に動いていないため

iOSではジャイロセンサ(もしくは加速度センサ)の変化が測位トリガーの一つである
ジャイロセンサ変化時≒スマホを持ってユーザーが移動したと解釈する(らしい)
移動を検知したら場所の再測位を行い、画面に反映する

偽装している場合、iPodTouchは机の上に置かれたままである
このためiPodTouchへの測位トリガーがなく、Wifiによる位置情報の変化も反映されない

GPSないし基地局測位を行っている場合の挙動は不明
Wifiの状態変化のみでは測位トリガーになり得ないことだけはわかった

操作を行うと解除されていたのは操作時にiPodTouchが物理的に動いたためだと思われる


解決方法:
『GPSの信号を探しています』旨のメッセージが出たらiPodTouchを振る
ジョークみたいな話だがこれで再測位が行われる

定期的に振っていれば『GPSの信号を探しています』というメッセージ自体が出ない
おそらくはiOS側の実装なので他の測位情報を用いるアプリでも同様の挙動と思われる

2016年9月19日月曜日

ポケモンGoPlusを自動で押す機械

表題の機械を作ったメモ

室内用なのでデカくて持ち歩けないしLEDの発光検知もしない(定期的に押すだけ)ので注意

振動がめっちゃ強い
サーボモーター(SG90)でアーム越しにGoPlusのボタンを押す
アームが軟質なので面の力で優しくボタンが押せるのがメリット
(気にしないならサーボホーンで直接ボタンを押せばよい)

現状は定期的に押すだけ(LEDが光っているかはチェックしない)
写真の外にArduinoがあるがスケッチは簡単すぎるので省略
フォトトリレーを仕込めばLEDが光ったトリガを拾えるのでもっと賢くできる

電波法を気にしないならボタンにリレーを付けてLEDの出力で押すだけで良い
(もしくはモーターかLEDの出力を適宜変換してボタン入力に直接ぶち込むだけ)
機械は一切不要

予想通り実機を使った位置偽装との相性はめっぽう良い
ボタンを連打するだけで
 ・ポケストップ自動回収
 ・ポケモン自動狩り(ただしゲット率は低い)
 ・卵孵化・相棒アメカウント可能
のフル機能BOTができてしまう

弱点は
 ・不定期にペアリングが切断される
  (連続使用に制限アリ?手動で再ペアリングするので長時間放置できない)
 ・頭がおかしくなる位のバイブ音連打
  (めっちゃデカいしオフできない)

飽きたらこっそり分解してバイブモーターの切除とLED―タクトスイッチの直結を試したい

2016/09/24追記:
この機械を用いたBOTを作成しました
電子工作的アプローチによるポケモンGoBOTの作成
実用性は無いです

2016年9月18日日曜日

ポケモンGoPlusのレビュー

以下一日使ってみた感想のメモ

落としやすいのでストラップつけた方がいい

・スマホ側のバッテリー消費は結構大きい
おそらくスリープ中の動作といえどもUI以外の処理はバリバリ動いているためか
昼から使い始めて夕方には一ケタ%まで落ちていた

・ポケモンの捕獲成功率は5割未満
ノーマルボール1個分しか頑張らないためこの程度か
レアポケモンを逃がしたことをログで知るのは辛い
割り切りが必要

・ポケストップをとりこぼす場合がある
同じ場所にポケストップとポケモン両方ともいた場合にはポケモンを優先する
このため、移動しながらボタンをポチポチしているとポケストップを結構取りこぼす
(ポケモンを捕まえている間にポケストップの範囲外に出てしまう)
また、ポケストップが密集している場合も同様に取りこぼす
これも割り切りが必要

・LEDはほとんど見ない
ポケストップないしポケモンを検知すると振動とLEDで告知を行う
ここで『ボタンを押さずに無視する』という選択肢はほぼ無い
(しくじってもノーマルボール一個分なのでケチる理由が無い)
振動したら反射的にボタンを押すようになる

・たまに切断される(そして気づかない)
理由はわからないがたまにペアリングが切断される
アプリが落ちている訳でもスマホを操作した訳でもなく原因は不明
切断時はGoPlusが振動してLEDが赤く点滅して教えてくれるのだが
前述のとおりLEDを見ずにボタンを押すためこれに気付かないことが多い
Plus側で切断状態にあるか再確認する方法はない
(スマホを見て確認するしかない)

総評:
孵化にはかなり使える
スリープにビクビクしながらバッテリーセーバー状態で持ち歩くのとは段違い
ただしバッテリー消費が大きいので予備バッテリーは手放せない

ポケストップからの資源回収、ポケモンの捕獲はスマホでのプレイよりかなり効率が落ちる
まったくプレイしないよりはずっとマシ、と割り切る必要がある

GoPlusに向いている使い方:
・孵化目的
・複数ポケストップ範囲内に陣取って片手間に資源回収

GoPlusに不向きな使い方
・ポケモンの巣で乱獲
・資源回収目的でのポケストップの巡回
 (ただしポケストップの密度やルアーの状態により効率が大きく変わる)

2016年9月16日金曜日

ポケモンGOPlusがあっさり買えた件とメーカーの瑕疵担保責任の話

朝方Amazonであっさり買えた
登録後しばらく商品検索にヒットしない状態だったので売り切れるまでに3時間くらいかかった模様
うれしい

連射装置を作って到着を待とう

保証の類を一切放棄している点がやっぱり引っかかるし、たぶんそのうち揉めると思う

ただしあの一文でメーカーの瑕疵担保責任が免責されるわけではないので注意したい
(メーカー原因の故障についてはメーカー責任で対応する必要がある)

水没や落下といった明らかなユーザー側要因の故障以外については交渉の余地があるし
1stロットなのでハードウェア上の明らかな不具合が存在する可能性もある

保証が無いからいいや!とレシートや外箱は捨てない方がいい

2016年9月15日木曜日

任天堂株のウォッチとアノマリー

以下は任天堂株をウォッチしていてぼんやり考えたこと

妄想するだけで実行する気にはなれない…

 ・特に材料が無い日に大きく右肩上がりの場合は大抵好材料のおもらし
 翌日はたいていGUなので当日乗っかっても間に合う
 逆も同じ

 ・GU後は寄り天ですぐ戻す
 『インパクトがあるがただちに数字は伴わない』材料が多いためか?
  ニュースで飛びついた素人が毎回大人に刈られる感じ

 ・おもらしに乗って買い→持越し→翌日寄りでドテン売り→引けで買戻し
 これでいいんじゃね?
  (ただしポケモノミクスで連日吹いたときにこれをやってたら死んでた)

・バリュエーションを考えてはいけない銘柄
  割高/割安を考えたらこんな高値は付かない
 そういった要素を一切無視している(もしくはそもそも知らない)参加者がかなり混じっていると考えた方が良い

・今後の好材料
 ポケモンGO
 ポケモンGOPlus
 ポケモン本編の発売年
 マリオを筆頭としたスマホへの注力

 ただしスマホゲームの影響はやや過剰に評価されているきらいがある
 母体が大きい分一つのアプリの大ヒットでのV字回復は困難
 スマホはあくまで収益の柱の一つでありコンシューマの復権が大前提

・今後の悪材料
 円高(想定レート1ドル110円)
 NX(延期や失敗など)
 3DSの製品寿命(そろそろ新ハード)
 スマホアプリの開発能力が未知数

 NXのガードは固く現時点で決定的なリークがなく評価しづらい
 年度内に間に合わせるには10月中の発売日発表がデッドライン
 これを逃した場合は来年度に持ち越し&下方修正だろう


pokemon GO Plusに対する邪推のメモ

バックグラウンドで歩数カウントする、旨の仕様変更があり実用度がかなり上がった
以下は懸念点などのメモ

孵化するなら欲しいよ

 ・なぜか販売チャンネルがかなり絞られている
Amazon以外は直販のみ
生産が間に合っていないため?いずれ一般店舗でも発売する?
生産問題で止む無く絞っているというよりも、あまり売りたくないような印象さえ受ける


・セキュリティリスクについて
 あらゆる操作を1ボタンで行うため、実機を用いたBOTのハードルがグッと下がる
スマホの画処理、高度な判断などが一切不要になりLEDが光ったらボタンを押すだけでOK
(たぶん常に連打でもOK)
速度警告も機能しなくなるものと思われる


 ・コピー対策について
BLE規格自体に堅牢なプロテクトやコピー不能なユニークID等は無い
IDやプロトコル偽装することで他のハードをgoPlusに偽装することは可能であろう
クライアントがスマホアプリで解析しやすいのもハードルを大きく下げる
実機が発売されてしまえば解析し放題なので、すぐにコピー品発売or自作のための情報が流れると思われる

コピー対策にはplus側の小まめなファームアップが必要となる
スマホ経由でのアップデートは難しいのでアップデートにはPCが必要
発売後のサポートの煩雑さとコストを考えるとガンガン売る気にはなれない…というのは邪推か

あと公式ページの記述で気になったのが
>※本商品には保証書はなく、故障時の修理保証も行っていないため、修理のご依頼は承っておりません。
この手のガジェットで修理対応の類を一切放棄しているのは初めて見た
なにか特殊事情のある例外的な扱いの製品であることは間違いないみたい