Raspberry Pi 5 でギラティナ色違い厳選
はじめに
色違い厳選を自動化できると面白いなぁと常々思っていましたがRaspberry Pi 5が発売され、これを機にやってみよう!と思い、始めることにしました
色々調べてみて、AIを使用するほどでもないかな~と思ったのとモデルを作成するのが面倒なので今回はテンプレートマッチングを利用して厳選させたいと思います
結構適当です
使用言語はPyhton
※素人が書いてますので雑です
準備
使用したものは以下の通り
- Raspberry Pi 5
メイン
これが無いと始まらない!
Raspberry Pi 4 と仕様が少し変わってGPIOが扱いづらい
サーボモーターはPWMで制御するのでRaspberry Pi 4 の方が簡単
- サーボモーター×2
- USBカメラ
- 部品
- 抵抗
- フォトカプラ
- 電池・電池ボックス
- ジャンパーワイヤ
- ブレッドボード などなど
- 木材・ネジなど
カメラの設定
購入したカメラはピントの調節を物理的に行わないとダメなので調節します
USBカメラの外装を外すと上のような構造になってます
レンズの歯車のような形状の部分を回すとピントの調節ができます
接写するのでいい具合に調整しました
作る
回路はこんな感じ
サーボモータを直接Raspberry Pi に繋げても良いかもしれない
念のためフォトカプラで分離してます
抵抗はあったものを使用しているので雑です
プログラムはPython
通常色のギラティナがカメラに写っている間はプログラムが動作し続けるようになってます
一定時間、通常色のギラティナが写っていないときはLINEで使用者に通知
通知する際、画像と一緒に通知メッセージを送信します
カウント回数もプログラムで記録するようにしています
筐体作成
取り敢えずダンボールとDAISOの製品で試作を作ってみました
動かん
STARTボタンとSELECTボタンが押せない
Aボタンもダンボールが凹んで押せないこと多し
LRも押しっぱなしがムズイ
針金でどうにかしようと思ったけど、別の方法を試した方が良いかもしれない
色々調べて、筐体を作り直した
何かそれっぽい
LRとSTARTボタンはネジで固定
DSをあまり傷つけないようにスポンジとテープを一応挟んでいます
Aボタンは360度サーボでひたすら連打
SELECETボタンは180度サーボで適宜押します
いい感じ
リセット君と名付けました
実行
事前準備から
使用ポケモンはパラセクト
キノコのほうしを一番上に置いておくことでA連打の際、こいつが選択されます
あとは最初の日記みたいなヤツを飛ばしてレポートして準備完了
それでは実行
(動画はルギアに置き換えてます)
おもろい
余計な情報を入れないためにレンズにカバーをして、ギラティナのみが写るようにしています
このまま電池交換しつつやっていきます
僅かな環境変化でも止まるので適宜確認が必要
・ ・ ・
実験は成功だ!!
LINE通知も来ました
リセット回数はトータルで大体2295回
結構早め
シンクロは失敗!
おわりに
SwitchBotと赤外線受信モジュールを使えばLINEに送られてきた画面から、色違いじゃなければプログラムを続行するなんてこともスマホでできそうだった
気が向けばやってみても良いかなと
この機械の問題点は
- 電池の交換が面倒
- うるさい
- 部屋の明るさを一定にしないと精度が落ちる
- DSとカメラの角度の厳密な固定が必要
- 酷使しすぎてDSがバグり始めた
- 通常色と色違いの色の差が小さいと検知できない
- まぁまぁうるさい
- ホントにうるさい
リセット君ごと何かで覆ってしまえば、部屋の明るさ問題もなんとかなるし、DIYすれば角度の固定も可能
DSがバグり始めたのは、もう10年以上使用しているので仕方なし!
うるさいのは我慢しよう!
最大の問題は通常色と色違いの差が小さいと検知できない点
例えば、ゼクロムの色違いなんかは判定できるか怪しい(DSでは出現しないけども)
実際に色違いが出現しないと確認も難しい
今回のプログラムでは信頼度がが97%以上のときリセットを行っているが、撮影環境をガチガチに固定して信頼度を99%以上にすれば或いは可能かも…?
とはいえ放置するだけで固定リセットが行えるのは中々魅力的
まぁ、3DSVerでやれば確率も二倍なのであんまりDSでやる意味もないけど・・・
3DSが2つしかないので今回は生贄としてDSでやってみました
時間があれば3DS用にも作ってみたいと思います
以上!
ブランケットで覆われてしまったリセット君
マナフィ色違いが出ないせいでBWの全国図鑑が進まん!!
参考にしたもの
本体
プログラム