Posted on

英文サイトをご覧ください

日本語の文書は下にある「MewProとアプリケーションの使い方」「MewPro Genlock Dongle の使い方」「Atmel STK500 の改造」「HVprog2の使い方」「ポケモンGOでの「かくれているポケモン」活用法」を含むごく少数の記事しか翻訳していません。

恐れ入りますが英文サイトの方をご参照くださいますようにお願いいたします。

付記: 当サイトの “Contacts” に記されているアドレスへのお問い合わせでは、日本語か英語での対応が可能ですので、お気軽にお問い合わせください。

Posted on

Arduino を用いた “ねこ鍋型猫体重計” の製作

料理用のはかりと市販のアルミ製 “ねこ鍋” と Arduino Uno を用いて、猫専用の体重計を作りました。

なぜ、ねこ鍋型体重計?

去る2月のとても寒い日に、当ラボのスタッフが弱って行き倒れている三毛猫を保護したのが始まりです。病猫の容体を把握するためには体重を正確に測り続けることが必要です。ところが、人間用の体重計は誤差が 500g 程度もあり、病猫用にするには精度が不十分です。また、台所用のはかり (キッチンスケール) は精度が 0.1g から 1g 程度と高いものの、病気の保護猫を秤皿に乗せてじっとさせておくのが至難の技です。もちろん獣医さんに連れて行けば体重は測ってもらえるのですが、猫は病院が大嫌いで、とくに保護猫はキャリーに入れるだけでも一大事です。

というわけで、猫用の体重計を市販の製品 (キッチンスケール、ねこ鍋) を組み合わせて自作することにしました。

特徴

次の条件をみたすことを考えました:

  1. 市販のアルミ製ねこ鍋を秤皿に用いて、猫が勝手に入ってくれるようにする。
  2. ねこ鍋には毛布やおもちゃが入れてあっても正確に測れる。
  3. 猫が入ってから電源を入れても測れる。

上の条件1をみたすために、ねこ鍋を単純に台所用のはかりに乗せたのでは安定が悪く、はかりの台座の拡張が必要でした。また、条件2、3をみたすために、マイクロコントローラ (Arduino Uno) を用い、風袋(猫体重を測る際に差し引かれるべき、毛布やおもちゃの重量) の値を電源断の間も保持するようにしました。

Arduino Uno を用いたため、

  1. PC で連続的に体重データを読み込むことも可能

になりました。また、液晶ディスプレイの表示スペースに空きがあったので、

  1. 温湿度計と時計の機能

も持たせました。

実際に製作した、ねこ鍋型体重計の様子

写真の美猫はみちつなちゃんで、Instagram: @azumakuniyuki さんにご撮影/ご提供いただきました。ありがとうございます。

ねこ鍋型体重計の取説

取扱説明書 (PDF) はここにあります。

ねこ鍋型体重計の製作

ここまで記事を読んできて同じものを自作してみたいと思われた方は、以下もお読みください。自作したくないという方は、ありがとうございました、お読みになる必要はありません。

なお、ここで製作した “ねこ鍋型猫体重計” と同じものを MewPro Scale という名前で、当ラボで受注生産しております。ご興味のある方は info@mewpro.cc にご連絡ください。8000円 (消費税と送料別) で納期約1週間で承ります。

次の材料を使いました:

  • ねこ鍋: Petio クールアルミキャットボウル (幅X奥行X高さ 35×7.7×35cm)
  • 台所用のはかり (キッチンスケール): HBLIFE デジタルキッチンスケール 1g単位 最大10kgまで 計量可能 風袋引き機能付き
  • クリアパイン集成材 1R円形 300mmɸ x 18mm
  • Arduino Uno (互換機 Seeeduino R4.2 を用いました)
  • キャラクタLCDディスプレイ 16×2
  • ロードセル用24ビットADコンバーター HX711
  • 温湿度センサー AM2320
  • リアルタイムクロック DS3231
  • モーメンタリースイッチ、配線部材など

キッチンスケールの表示部を取り除き、そこに HX711 を収め、ロードセルからのリード線をはんだ付けします。クリアパイン集成材を切断し、キッチンスケールをはめ込みます。

底面はアルミテープで接着します。

Arduino Uno に表示/センサー部を載せた自作のシールドを装着し、HX711 と接続します。(Arduino Uno には専用のソフトウエアがインストールされています。ソースコードは、まだ公開されていませんが、必要な方はご連絡ください。)

動作確認とロードセルの校正をしたあと、ねこ鍋を接着します。

完成です。

Posted on

ポケモンGO S2セルビューワー

ポケモンGOトレーナーが利用できるS2セルビューワーを用意しました。

注意: このポストはビデオカメラGoProとかジェンロックとかArduinoとかには関係ありません。

ポケモンGOは「S2セル」という、Googleが発明したすごい技術を使っています。トレーナーとしてはぜひそれを知っておいた方が良いでしょう。ゲーム内ではS2セルが、すくなくとも次のようなところに使われているのが知られています:

セルレベル
天気 10 1つのセル内の天気は同じです
EXレイド 12* 〜2018年2月8日 開催日には、各セルごとに最大1箇所のジムでEXレイドが開催されます
13* 2018年2月17日〜
ジムとポケストップの視界 15 (注1を参照)
ポケモン捕獲の領域 20 (注2を参照)
EXレイドが来るかどうか 20 (注3を参照)

注1: あるジムまたはポケストップが地図上で(あるいは「ポケストップのちかくにいるポケモン」で)見えるのは、トレーナーを中心とする半径500mの円を覆う レベル15のS2セル被覆 にそれが含まれるときです。

注2: ポケソース(つまり、ポケモンが出現する地点)はいつもレベル20のS2セルの中心にあります。あるポケモンがトレーナーから見えて捕獲可能であるのは、トレーナーを中心とする半径50mの円を覆う レベル20のS2セル被覆 にそれが含まれるときです。同様に、あるジムまたはポケストップにトレーナーから手が届くのは、トレーナーを中心とする半径30mの円を覆う レベル20のS2セル被覆 にそれが含まれるときです。

注3: スポンサージムでないジムにEXレイドが来る可能性があるのは、そのジムを含むレベル20のS2セルの中心が「公園」の内部に位置するときです。

ここでは、S2セルとは何かとか、そのレベルとか、被覆とかについては説明しません。それにもかかわらず、わたしたちがここで公開したツールを使えばそれを経験することができます。

ではお楽しみください!

蛇足

このサイトのツール以外にもS2セル被覆を見せてくれるサイトがあります: Region Coverer by Sidewalk labs.

S2セルについてもっと知りたい方は、この説明とかこれとかを参照してください(どちらも英文です)。

このサイトのPokémon GO S2 Cell Viewerには「逆」関数の機能が実装されており、半径が0、レベルが15または20のときに発動します。つまり、その際にはピンク色で囲まれた領域が現れ、ピンを立てた場所にあるジムまたはポケストップが見える/さわれる範囲を表します。


(*) 2018年2月中旬に、EXレイドパスを多く配布するための修正があり、S2セルのサイズがレベル12から13になりました。ところがこれに関して、Niantic は 2018年2月11日(北米から南米では2月10日)2018年2月26日 に開催されるEXレイドのパスの配布にそれぞれ手違いがあったとアナウンスしています。実際、後者の配布は修正前のレベル12のS2セルを使って間違えて行われました。そして、前者の配布は、なんとレベル10のS2セル(これは、通常の場合のレベル12のS2セルの16倍の広さがあります)を使って配布されました。下のスクリーンショットは、このバグの回なのに貰えた、とても珍しいEXレイドパスです。 🙂

Posted on

ポケモンGOでの「かくれているポケモン」活用法

ポケモンGOの「かくれているポケモン」のタブを利用して、レアなポケモンをつかまえるやり方を説明します。

注意。GoPro や Genlock や Arduino とは無関係の記事です。うちのスタッフがポケモンGOで遊んでいるときにすばらしいことを発見したのですが、ゲームの裏技的なこともうちのブログではどんどん書いていいことになっています。

2016/11/5 UPDATE: 出現時間が15分単位から30分単位に変更。ソース更新の方法が変更

はじめに

ポケモンGOの仮想3Dマップで出会うポケモンは、次のいずれかです。

[場合 A] 誘導されたポケモン
2通りの方法でポケモンを誘導できます: 1) ポケストップに誰かがルアーモジュールを挿したあとの30分間、ピンク色の花吹雪が舞っているときに現れるポケモン(出現頻度は3分ごとに1匹)、
2) ポケモントレーナーのアバターがおこうのピンク色の芳香に包まれている30分間に、足元に現れるポケモン(出現頻度は5分ごとに1匹)。
[場合 B] 周期的ポケモン
その他。

以下では、周期的ポケモンに関することを書きます。なぜ「周期的」ポケモンというかは、次の節でわかります。

現れたポケモンがA、Bどちらの場合なのかは見て簡単に区別できます。ポケモンの足元(飛んでいる場合は真下)に同心円状の波動がありますが、半径が小さくてピンク色なら「場合 A」で、半径が大きくていなら「場合 B」です。

[例] 次のキャプチャー画像で、コラッタ(右、紫色のネズミのポケモン)は「誘導されたポケモン」(場合 A)で、タマタマ(左、人面卵のポケモン)は「周期的ポケモン」(場合 B)です。

periodical

ルアーモジュールやおこうを使うという攻略法が良く言われますが、それは場合 Aのポケモン(誘導されたポケモン)をつかまえるという、誰でもすぐに実行できる当たり前のハックです。あなたは、場合 Bのポケモンをつかまえるために何もしなくていいのですか?ただ、偶然にポケモンに出会うというのだけで本当に満足しているのですか?

以下では、運に頼らないで、場合 Bのポケモン(周期的ポケモン)とたくさん出会う、体系的で確実な方法をひとつ提案します。

ポケソース

私たちが発見した事実をいくつか挙げます。

[事実 1] 周期的ポケモンは、決まった地点にしか出ない。

直感に反するかもしれませんが、出現するポケモンが(誘導されたポケモンであっても)他の場所から動いて来て、さらに別の場所へ動いて行くことはありません。ポケモンは出現した場所にしばらくの間、滞在し、あなたがボールを投げてつかまえない場合には、その場で消え失せます。

[定義] 周期的ポケモンが出現する地点をポケソースと呼ぶ。

つまり、もし誰もルアーモジュールを使うことが無く、かつ、あなた自身がおこうを使わない場合、あなたがポケモンに出会うのはポケソースがあなたの観測範囲(半径40m。GPSの精度が悪いときには50m)に入った時だけです。

ポケストップとは異なり、ポケソースは仮想3Dマップ上に表示されません。とはいえ、ポケソースは、ポケストップの近くにあるという傾向があるかもしれません。

[事実 2] 各ポケソースでは毎時x分に、まだ可視化していないポケモンが出現する。ここで、xはポケソースごとに定まる定数である。

この事実があるので、誘導されたポケモン以外のポケモンを周期的ポケモンと呼ぶことにしたのです。

可視化していないポケモンは、あなたが歩いて行き、あなたのアバターの足元から出たピンクと白の同心円状の波動がポケソースに到達したとき、突然に可視化します。

次の地図は、東京近郊某所のもので、付近にあるすべてのポケソースの位置を示したものです(2016年11月6日現在)。

ato

数字は、出現時刻の「毎時x分」における定数xです。

[事実 3] ポケモンはポケソースに最小で27分、最大で30分間とどまる。(ポケソースが通常タイプの場合)
注意。ポケソースの中には、そこで出現するポケモンの継続時間が最小で57分、最大で60分のものがあります。このようなポケソースを2重ポケソースと呼びます。通常タイプのポケソースは1重ポケソースとみなすことができます。また、いままでポケモンが出現していたポケソースが停止することがあります。このような休眠ポケソースは0重ポケソースとみなすことができます。

上掲の地図で、赤丸は1重ポケソース、青丸は2重ポケソースです。

かくれているポケモン

次の事実が今回、私たちがいろいろ試したうちの最大の成果です。

[事実 4] かくれているポケモンとしてリストに表示されるのは、200m以内に居るすべての周期的ポケモンである。

1重ポケソースの場合、周期的ポケモンは、このタブに毎時x分に現れ、その27分から30分後に消えます(ただし、xは定数)。ポケモンがタブに表示されているうちに、対応するポケソースにあなたが歩いて充分近くまで来ると、仮想3Dマップであなたのアバターとポケモンが遭遇することになります。

注意。同じ種類のポケモンが200m以内に2匹以上居る場合、リストには1匹だけ表示され、何匹居るかは分かりません。

[例] いま、朝の8時20分で、あなたは上掲の東京近郊某所の地図の円の中心に位置するダイニングルームで朝食をとっているところだとしましょう。さて、その1分後にあなたは「かくれているポケモン」の中にミュウツーの灰色の影を見つけました。あなたはどうしますか?

答えを書く必要はなさそうですが、上の地図で、21という数字が書かれた場所にすぐ行ってください。そうすれば実際にミュウツーをつかまえることができます!なぜならば、毎時21分に「かくれているポケモン」に出現するのはそのポケソースのポケモンだけですし、このタブはとても正確に、200m以内の近所のポケモンをすべて表示しているからです。

以上で、真に革命的な技の解説は終わりですが、注意点を列挙しておきます。

[注意 1] 周期的ポケモンにボールを投げてつかまえると、かくれているポケモンとして表示されていたものも消えます。ただし、同じポケモンが200m以内にもう1匹いる場合には消えません。

[注意 2] 周期的ポケモンの出現時刻はとても正確ですが、消える時刻に関してはそれほどでもありません。

[注意 3] 「かくれているポケモン」にポケモンが表示される順番は、完全にランダムです。ただし、タブを閉じた場合に小さく表示されるのは、最上段の3個です。

Gotcha Snorlax using our method (14 August 2016)
この方法でカビゴンをつかまえました (2016/08/14)

ではお楽しみください!

Posted on

HVprog2の使い方

HVprog2 は、HVSP/PP や ISP、TPI、PDI でのプログラムができる Atmel STK500 のクローンです。 本記事では HVprog2 の使い方を説明します。

注意: 本記事は GoPro とかジェンロックと無関係です。 AVR マイクロコントローラに関する記事です。

前記事では、Atmel 純正 STK500 のソフト、ハード両面にわたる改造に関して述べました。改造前と改造後の Atmel STK500 に触発されて、それらのクローンとして設計したのが本記事のプログラマ HVprog2 です。

Atmel STK500 にはすでにハードウェアのクローンとして HVprog という名のプログラマがあり、HVSP/PP や ISP でのプログラムができると称しています。HVprog2 は HVprog の改良版にあたるので似たような名前にしましたが、HVprog2 は実際に AVR チップを HVSP/PP や ISP でプログラムできますし、それだけではなく TPI や PDI でもプログラムできます。

純正STK500と改造STK500、HVprog、HVProg2の比較

下の表は4つの AVR プログラマを比較した表です:

純正STK500 改造STK500 HVprog HVprog2
回路図 公開 不要 (*1) 公開 公開
Atmel純正ファームウェア 搭載可 不可 搭載可 搭載可 (*2)
ScratchMonkeyファームウェア 不可 搭載可 不可 搭載可 (*2)
RSTDISBL ヒューズの復元 不可 (*3)
HVSP/PP、ISP でのプログラム 信頼できない (*3)
TPI/PDI でのプログラム 不可 不可 可 (*2)

注1: 改造STK500は単に純正STK500からいくつかの部品を除去したり換装したりして作られています。

注2: Atmel純正のファームウェアは、プログラマのマイクロコントローラが ATmega8535 の場合に使えますが、この場合にはTPI/PDIでプログラムすることはできません。マイクロコントローラが ATmega16/32/64/128 か ATmega164/324/644/1284 の場合には ScratchMonkeyファームウェアを用いて、HVSP/PP や ISP だけでなく、TPI/PDI でもプログラムすることができます。

注 3: RSTDISBL (リセット無効化) ヒューズを復元するためには、ターゲットの電源電圧を制御する必要があります。HVprog にはそのための回路がありませんので、リセットを無効化した場合には元に戻せません。それだけではなく、STK500とHVprogの回路図を精査するとわかるように、同じソフトを使うにも関わらず前者は XTAL1 の信号を反転させていますが後者はそのままです。反転されていない信号をトリガとする HVprog はこの結果ありとあらゆる局面でタイミングに問題が生じ、信頼できないプログラマになってしまっています。

HVprog2 の概要

HVprog2の回路図です:
HVprog2

もしもあなたが ScratchMonkey のファームウェアだけしか使わないつもりなら、IC2 74HC165 とそのバイパスコンデンサ C3 は実装する必要はありません。これらの部品は Atmel 純正のファームウェアがハードウェアのバージョンを認識するためにだけ存在しています。

IC1 には DIP IC ソケットを使うことを推奨します。そうすれば、将来、マイクロコントローラを高性能なものに換装したりすることが容易になるからです。


次の写真は、HVprog2の製作例です。
プリント基板は当ショップで売っているものを使いました。
HVprog2

このプリント基板はスルーホール用の部品を可能な限り使うように設計しましたので半田付けは比較的容易なはずです。

JP1と印刷された6ピン(上側右)は PC に接続するためのコネクタで、非常に普及している Sparkfun FTDI ブレークアウトボードのピンの順に配列されています: 5V 版のFTDIブレークアウトをここに接続した場合、HVprog2のすべてのロジックは 5V で動作します(HVSP/PP と TPI は 5V ロジックであることが必要です)。一方、3.3V 版のFTDIブレークアウトを接続した場合、HVprog2 は 3.3V ロジックで動作し、これはPDIでプログラムするための電圧になっています。

HV_PROG と印刷された20ピン(下側右)はターゲットに接続するためのコネクタです。これらのピンはAVR Dragonの同名のピンと同じ順に並べてあります。つまり、AVR Dragon の網羅的なドキュメントをHVSP/PPでプログラムする際に参照して、ブレッドボードなどで配線できるということになります。

ソフトウェア

HVprog2にファームウェアを書き込むには、ジャンパ JP2 を 1-2 (SELF) 側にセットします。いま書き込もうとしているHVprog2とは別の ISP プログラマを、 ISP と印刷された 6 ピン(中央近くの左)に接続し書き込んでください。

上述したように、いまのところ、HVprog2に実装したマイクロコントローラに応じて2種類のファームウェアが利用可能です:

  1. ATmega8535 の場合は Atmel 純正の STK500 用のファームウェア
  2. ATmegaATmega16/32/64/128 または ATmega164/324/644/1284 の場合は ScratchMonkey

場合 1. Atmel 純正のファームウェアは Atmel Studio 4/5/6/7 のどの版をダウンロードしてもその中に含まれています: ファームウェアのバイナリファイルは STK500.ebn という名前ですが、このファイルのフォーマットは avrdude などの普通の書き込みソフトでそのままでは使えません。EBN2HEX.exeを使って “.ebn” を “.hex” に変換すれば書き込めるようになります (EBN2HEX.exe公式と思われるサイトを見つけることができませんでした。ご自分でGoogleなどで検索してダウンロードしてください)。ちなみに、ATmega8535のヒューズは、S8535C と CKOPT は unprogrammed に、SPIEN は programmed にして、 SUT_CKSEL=”Ext. Crystal/Resonator High Freq; Start-up time: 16K CK + 64ms” とした場合に動作することを確認しています。

場合 2. ScratchMonkeyを使います。必要なものの準備やコンパイル、アップロードの仕方は前記事に書いてあります。

ターゲットとの接続

HVSP/PP. HVSPの場合でもPPの場合でも、Device Connection Sheets, AVR Dragon’s manualに書いてあるとおりに結線してください: HV_PROGという同名のコネクタを参照のこと。
注意: VCC と JTAG を結線する必要はありません。HVprog2 にはそのコネクタがありませんので。


ISP. ISP でプログラムするには ISP コネクタを使います (JP2 は 2-3 にセットしてください)。
注意: HVprog2 の ISP6 ピンヘッダに出ている VCC にはつねに FTDI の VCC から電源が供給されています。


TPI/PDI. HVprog2 は 純正のSTK500 や改造STK500 のクローンなので、avrdude に前記事でやったのと同じ変更が必要です。

TPIのマイクロコントローラをプログラムするには、510オームの抵抗が2つ外付けで必要になります。HVprog2 自体は 5V版の FTDI ブレークアウトボードで PC と接続する必要があります。TPI ターゲットとの接続は次の回路図を参照してください:
TPI
5VとMOSIとMISOとSCKとGNDは “ISP” コネクタにあります (JP2 は 2-3 にセットしてください)。VTARGET は “HV_PROG” の 19ピン、RESET5V は “HV_PROG” の 5ピン、RESET12V は “ISP” の 5ピンまたは “HV_PROG” の18ピンにあります。回路図上の TPI コネクタはリセット無効化ヒューズがプログラムされていない(リセットが有効)の場合に接続してください。リセット無効化ヒューズがプログラムされている(リセットが無効)の場合には、ターゲットの電源を制御する必要がありますので、回路図上の TPI HV コネクタに接続してください。

PDIのマイクロコントローラをプログラムするには、510オームの抵抗が2つ外付けで必要になります。HVprog2 自体は3.3V 版の FTDI ブレークアウトボードで PC と接続する必要があります。PDIターゲットとの接続は次の回路図を参照してください:
PDI2
(破線内の部品は必要ありません。)

3V3とMOSIとMISOとSCKとGNDはすべて “ISP” にあります (JP2 は 2-3 にセットしてください)。