2012/12/27

人工網膜LSIで星を撮る

ちょっと変わった製品もみつけた。

右:ポケットカメラ(M64282FP入り)  : 左 コナミ製PS2用のモーションセンサ(センサの型番不明)
中古屋でみつかるポケットカメラ(任天堂)。この"ゲーム用ソフト"の人工網膜LSIは128x123の解像度を持つモノクロイメージセンサで、低速マイコンでもインターフェース可能だ。

 製品自体も登場して14年くらい経つため、だいぶ話題から周回遅れだが…

 今回このセンサを使ってみて、普通ならロボットの視覚として高フレームレートを目指すところだけど、シャッター速度をかなり遅くできたので、逆の方向、長時間露光をテーマに撮影実験を行った。

 はたして、105円(税込)の視覚センサとArduinoで星は写せるのか。

M64282FP
自作のC基板Arduino互換機にシールドをつけて、カメラを配線している。
コードは、このサイトのものを参考にしている。
 http://www.bot-thoughts.com/2010/04/gameboy-camera-prototyping.html

シリアルで出てきた8ビットのグレースケール画像をBMP変換するという流れ。

人工網膜チップのPDF資料で、レジスタ設定などをひと通り確認できる。

レジスタ一覧 (Excel)

作って3年くらい経つ基板
普通に撮影した画像


露光時間を延ばす

 データシートには設定可能な露光時間が記載されていて、
C1レジスタを操作することで、最大1秒まで露光できるとある。
 ただし、これはクロックに500kHzを入力した場合の秒数らしいので、供給するクロックを下げると延びてゆく。 まだ50秒程(18kHz程度?)までしかテストしていないけど、もっと伸ばせるらしい。

一つ問題として、先ほどのコードでは逆に直射日光下での撮影は厳しい。
レジスタの設定も、露光時間を減らすと、ある時点で同期が取れていないような絵が撮れる。

ロジアナで測定してみた。

A/D変換にかかる遅延により、読み出し時はクロックがかなり間延びしているが、これ自体はあまり問題ないらしい。 てっきりどこも同じクロックを入力する必要があると思っていた。

問題の露光時にArduinoが出力するクロック出力速度は、合間のif文の処理時間などにより、200kHz程度までだった。

Arduinoだけだと明るい場所は減光フィルタでも入れたほうが良さそうだ。



 露光に関するパラメータとして、素子のゲインも調整できるが、上げすぎるとコントラストが失われるので、設定は半分程度までにする。

星の撮影だが、屋上にUSBデバイスサーバを設置してあるので、基板を外に設置しても、温かい室内でプログラムの修正と画像取得ができる(重要)
センサを南の方向、仰角80°程度に固定して、撮影エリアは移動せずに検証した。


明るい星を狙って、月の下にあるオリオン座と大三角の方角にレンズを向けた。 月があるので、あまり露光時間を上げられない。

30秒露出の画像。 写真はコントラスト修正後のものを、ニアレストネイバー法でピクセルを保ったまま4倍してある。
 上部に月の光が入射しているが、明るい輝点が3つ確認できる。下の滲んだ点がシリウスで、上の2つはオリオン座のベテルギウスとリゲルだった。   意外と映る。



少し時間が立って、星が動いてきた。 シリウスがはっきり確認できる。 一応星座として結んでみた。  星は映るが、128x123ピクセルしか無いので、ピクセルの境界に星がある場合は減光が確認できた。 1等か、ピクセルの位置が調度良かった2等星が映っていることになる。


実際の画像はこのような大きさ。



更に時間が経過して、大三角が見える位置になった。 下に雲が写っている。45秒露出。
シリウスは全天で月につぐ明るさがあるため、安定して写っている。


反転させる。 シリウスとベテルギウスは見やすいが、プロキオンがうっすらとしていて見えづらい。


一応、冬の大三角とオリオン座がこのような画角で撮れていた。
条件としては、月明かりもあり、あまり理想的ではなかったが。 意外と簡単に撮れた。
細かい星については、解像度が足りないということもあり、あまりはっきりとした像を捉えられていない。 数枚とって合成する手法が使えるかもしれない。

標準的な人工衛星では、太陽の向きでおおよその姿勢を把握してから、高度な姿勢決定のためにスタートラッカというセンサを使う。 カメラで星を撮像し、メモリに蓄えた恒星マップで画像推定を行い、どの方角を向いているのかを調べることができる。 今回作業していて、その作業をなぞったような気がした。

工夫すれば、この人工網膜LSIでも同じことができるかもしれない。写すのに結構時間がかかるのと、画素数、画角などの問題があるけれど、明るい光源に対してはある程度形状把握ができるので、2次元PSDセンサの代わりに太陽/地球センサとして使えるかも。

 このセンサは解像度は低いけど、幅広いシャッター速度で撮影可能なカメラモジュールとしては最もお手軽だと思う。 今回は試していないけれど、2値化やエッジ処理など、レジスタには面白そうな機能が沢山あるので、小ピンな32ビットマイコンも増える中、画像処理の方向で再び使うのも面白いかもしれない。

 とりあえず星が撮れるArduino互換機でした。   もっとポケットカメラ集めとこう… 

2012/12/18

LANケーブルを外に引く

USBデバイスサーバ+FunCubeDonglePro+ をタッパに収めたお手軽受信局を作り、現在運用実験中。 屋外に設置して3日目だが、雨天続きでもトラブルもなく使用できている。

アンテナは秋月の130/430Mモービルアンテナ(モノポール)だが、いろいろな周波数を聞く
には調度良かった。 見晴らしの聞くベランダの金属の台の上に設置。北と東側に高さ15度くらいの障害物があるほかは、地平線が見わたせるロケーション。

 屋外のUSBデバイスサーバまでLANケーブルを延ばすのは、それほど困難を伴わなかった。 使ったケーブルはフラットタイプのケーブル。自宅に関しては、窓サッシに沿って折り曲げることができて、かつ窓が閉まる選択肢だった。室内を5m、屋外へは15mのケーブルを伸ばしている。 避雷針があるので直撃はしないけど、雷対策として、窓のすぐ下で中継コネクタを挟んで切り離せるようにしてある。

 むしろ電源の確保が難しいかもしれない。 たまたま屋外コンセントがいくつかあって、それを使うことができた。

モノポールでAPTを受信してみたのデコード結果。 パスによってはこのくらいデコードできる。
これでFMを聴いたり、ACARSパケットをデコードしたり、NOAA衛星の気象画像(APT)をデコードしたりしている。モノポールながら、衛星も仰角と偏波で感度が落ちるけど聞くことは可能。

 使い勝手としては、ネットワーク内のどのマシンからでもアクセスできるので、受信時を逃しにくくなって便利になった。 なにより自分の机のデスクトップで運用しつつ、受信機自体は屋上におけるというのが便利。 あとは小型ローテータとマシなアンテナのみ…


2012/12/07

Arduino Pocket Geiger Radio

ARTSATのブースの店番の合間を縫って、MFT2012の会場で組み込み版ポケットガイガーType5を入手。


http://www.radiation-watch.org/2012/11/type5.html  

単純にガンマ線を検出したらパルスが出てきて、さらに3V~9Vの単電源で動作するのでとても使いやすい。 これなら小型のブザーと電池のみで動かす最小構成を試したり、いろいろな物に組み込むことが簡単になりそうだ。

ということで、1日目の夜に早速音声テレメトリ基板に組み込んでみた。
組み込み先の音声テレメトリ基板
以前作った音声テレメトリ基板にバッテリの過放電保護回路をつけたもので、18650セルを使う。電池には発火しないとされるLiFePO4(リン酸鉄リチウム)電池を使っている。 管理しやすく交換しやすいので、最近制作物の電源には乾電池タイプの生セルを使っている。
充電は外部の充電器で行うため、過放電対策のみを施した。

信号を見てみたところ(線源にはランタンのマントルを使用)

組み込みポケガからは、パルス検出ピンとノイズ検出ピンの2つが出ていて、ある程度ノイズと思われる信号はフィルタ可能になっている。
オープンコレクタ出力なので、プルアップする。 検出信号は負論理、ノイズ検知出力は正論理。
 

サンプルコードを参考に、信号を検出したらTone関数で短い音を出し、FMトランスミッタ経由で出力させる。 雰囲気はガイガーカウンターと一緒になった。

 せっかく音声合成ICがついているので、1分毎のカウント値(CPM)をしゃべってくれるようにした。1分毎にノイズ値を引いたシグナル検出回数(CPM)を読み上げるようにしている。
 これにはAquesTalk Picoのライブラリhttp://blog-yama.a-quest.com/ を使わせてもらっている。
数値読み上げも簡単にできてわかりやすい。


FMトランスミッタは微弱な電波で模擬実験に使うためについているので、半径30cm~1m程度しか飛ばない。実用性を追求するならスピーカーなどへ出力すると良いだろう。

 あえてガンマ線のカウントをブザー回路を経由せず、MCUで計数させることで、色々と処理を加えることができる。 検知回数が多いと音程が上がるとか、少ない時はFMトランスミッタをOFFにしておくとか。



読み上げ音を動画にしてみた。 線源はランタンのマントルを使っている。


ブツブツというノイズは、ポケガのバイアス用高電圧?が漏れているようだ。うまくフィルタできるかな。