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にしておくとか。



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


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


2012/11/29

FunCube Dongle Pro+


FunCubeDongle Pro+ が届きました。 

技術詳細は本家 http://www.funcubedongle.com/ で。

FunCube-1もフライトモデルが振動試験をパスして、打ち上げ準備が整ってきてるようです。



使い勝手向上
先代と見かけは変わらず。
 FunCubeDongle Proの改良版で、帯域が192kHzになり、受信できる周波数が広がった(150kHz~240MHz、 420MHz to 1.9GHz)

SDR#でも、すでにプルダウンメニューから選ぶ事ができるようになっていた。
I/Q信号のSwapとCprrect IQにチェックを入れた。

81MHzのFM放送

ACARSパケット (131MHz)

帯域幅が広がったので、WFMを綺麗に復調できるようになった。 



 I・O・データのnet.USBデバイスサーバーにつなげて、問題なく動作することを確認。
先代同様、アンテナタワーの防水ボックスに組み込むことができそうだ。

2012/11/13

USBデバイスサーバーとSDR



SDRのためにUSBデバイスサーバーを導入してみた。 すでに試している人がいるので、いま設置中の地上局に応用できると便利だと思い実験してみた。

今回導入したのは、Amazonで取り扱っていたI-O DATAのTRG-DS/US-HSという機種。安定してそうということで選択。

http://www.iodata.jp/product/lan/option/etg-dsus-hs/

これにFunCubeを接続し、何の問題もなく受信できることを確認した。

残念ながら、密かに期待していたRTLSDRはそのままでは使えなかった。
ドライバレベルでは認識しているのに、ソフトからは認識できない状態。

サーバ自体は、USB機器の設置の自由度を増すので、応用例はたくさん考えられる。
USBシリアル系(Arduino等)も普通に動作した。

受信機をアンテナから離す必要がなくなるので、同軸ケーブル延長に伴うロスを減らせるだろう。
 大学などでは、運用のための立派なアンテナは建物の屋上に設置されることが多いので、そこから無線機まで伸ばすケーブルは部屋の場所によってはかなり長くなる。 このシステムなら、直接アンテナ直下にくくりつけて、LANだけ伸ばすか、Wifiコンバータを経由するだけで良くなる。

 サーバー、ドングル、カメラ一式をセットで防水ケースに納め、アンテナ付近に設置すれば、重たいケーブルを引かずとも稼働する受信設備が完成する。

 自宅は屋外に防水コンセントがあるけど、アンテナ引き込みの隙間が無いので、余っていた無線LANルーターを使おうと思う。

追記

無線LAN経由で接続してみた結果。


ひとまず屋外設置用の装備をこしらえて実験してみた。 

・Wifiコンバータとして動かす無線LANルーター
・監視用カメラ(QCAM orbit AF)
・FUNCube Dongle Pro & QFH(430MHz)
・密閉型ケースとヒューズをつけた電気コード

実際のところ、この構成だとFunCubeのストリーミングすら止まるので実用的ではなかった。
最初に使ったルーターがFonelaにDD-WRTを入れたものだったので、次にBuffaloの新しめのルーター(これもDD-WRT入れたもの)につないでみたが、途切れるまでの時間が延びただけだった。

 なんとなく結末がわかっていたので、無線ルーターを取り外し、LANケーブルを引っ張ってきて接続すると、何の問題もなく動いた。 (このときのために20Mのケーブルも買っておいてよかった)

 有線接続→Gigabit対応の無線ルーター(AP)→ノート(Netbook)という経路では受信が途切れることはなかった。デバイスサーバーもGigabit対応なので、できるだけ無線化は避けたいところ。

 実験途中で箱を開けてみたところ、デバイスサーバーが結構発熱していた。冬場はそれほど問題ないけれど、密閉したケースも対策無しのままだと故障の原因となりそう。結露しないようにしつつ開放型にして、ファンを回すか、ヒートシンクを生やすか…

 実はQFHアンテナでいままでまともに受信運用ができていなかったが、FunCubeの周波数校正値を掴み、さらにデスクトップの大画面でゆったり探索した結果、意外と信号が見えていることがわかってほっとした。 ただ八木と比べるとゲイン不足が否めない。

2012/11/07

Arduino DUEを使う


Arduino DUEを早めに入手できたのでいろいろ触ってみた。
("DUE"って伊語でいう"2"ってことで合ってるのかな…)

本家のページ




  Atmel社のCortex-M3(AT91SAM8X3E)を搭載している。20mm角の144ピンパッケージなので、MEGA互換の基板の中でけっこう存在感がある。
 
I/O
ADC、GPIOのほか、UARTが4ch、SPI1つ、I2Cバスが2ch、DACが2ch、CAN(まだライブラリなし)と、MEGAと比べてもだいぶ増えた。

 注意として、I/Oは3.3レベルなので、従来のシールド資産とはあまり互換性が無いらしい。 個人的にはほとんどシールドを持っていないのと、使う部品の多くが3.3V系なのであまり影響ないけれど…。
 将来出るシールドでは、Leonardあたりから追加された IOREFピンを使うことで、シールド側で電圧を自動的に切替えられるようにする計画のようだ。 2電源レベルシフタを使うんだろうな。

消費電力
クロックが最初から84MHzなので、気になる消費電流を測ってみると、0.67Wほどだった。 結構大喰い。 
 とある計画でMEGA互換機を製作しているので、その代替候補になるか見る目的もあって購入した。電力的にはそのまま載せるにはちと厳しいので、ダウンクロックできるかどうか、ちょっと遊んでみよう…。

USBまわり
 2つあるMicroUSBポートのうち、片方は従来と同じUSBシリアル変換ポート、もう片方はSAM3X8Eが持つホスト機能もあるUSBポート。どちらからもスケッチの書き込みは可能。

 スケッチをアップロードするために一旦ROMが完全に消去される必要があるらしく、そのためのEraseという信号線がある。
 プログラム専用のUSBシリアル変換用IC(AVR 16U4)につながっている。おそらく過去の8U4とはまた違うのだろう。

 このErase信号線にはハードウェアスイッチも用意されていて、電源投入時に長押しでROMを消去することが可能。
マイコン自体のUSBポートで書き込む場合は、ROM消去をソフトウェアで行うようになっているが、万一消去に失敗したり、応答しなくなったときはこのハードウェアボタンで対応しろ、とのこと。
 LeonardをHIDデバイスとして使う時のようなスリルを味わうことはなくなったようだ。

 
 せっかくなのでケースをつけた。(TAKACHI SW-120) 



DUE向けのIDEとして、ベータ版のバージョン1.5.1を試している。
DACをつかったSDカードからのオーディオ再生、簡単なタスク並列動作などのサンプルがあった。

ソフトウェアまわり
DUEはARMベースなので、Arduino API以外の互換性は今のところ無い。 なので、AVRのIOポートマクロを使用するスケッチ/ライブラリはAPIを使うように書き換える などの対策が必要になる。

2012/11/01

初代iPodのレストアで、CF化の夢を見た

初代iPodをジャンク品として見つけたので遊んでみた。

 今はタブレットデバイスがめまぐるしく発表されているけれど、何が生き残るのかは時間が教えてくれるだろう。 ただ、Appleの製品はジャンク箱でもよく目立つ。

 初代iPodはFireWire接続のみで、Macでしか使えなかった。 私がまだ中学生の頃に登場したデバイスなんだなあとしみじみ。


 古いけどGigabitなPowerBookG4があるので、つないでみたら普通に動いた。 ただしバッテリは寿命が来ていて、数分で動かなくなる。


 

 分解して、バッテリを交換し、 ついでにHDDをCFカード化してみようとしたが、結論としてはうまく行かなかった。
初期型iPodは、HDDをLinuxマシンで覗いてみると、先頭に不可視領域がある。フォーマットしても消えないファームウェア領域らしく、これをまるごとCFにddコマンドで移せば行けそうだと思い、試してみたが…
 動作はするけれど、Macにつないでも認識されない。 運良く認識しても、修復しますかと問われるので、選択するとファームウェア領域も含めて初期化されてしまうため、だめだった。

仕方ないので、どれくらい消費電流が変わるのか、電流値を調べてみた。
傾向として、起動時と読み込み時は倍近く電流を消費するが、再生中は先読みしてバッファに貯められるため、CFもHDDも同じ電流値だった。 仮に交換しても劇的な変化ではなさそうだ。
Clone to CF card  can't connet iTunes
 とりあえず、バッテリが交換されたことで普通に動作してくれるようになったので、HDDを戻して使っている。(CFはiPod miniに入れた) 外装はアクリサンデーの研磨剤を使い、細かい傷を消した。

初代iPodだけが持つ、ぐるぐる回る機械式スクロールホイールを堪能できる。 この機構は直感的なのだけれど、やっぱりベアリングを挟むので結構な厚みが必要になってしまう。後継機がタッチ式になったのも自然な流れだなと思ったり。

2012/10/13

3エレ八木をつくる

久しぶりにアンテナを作ってみる。 手持ちで扱いやすい3エレの八木アンテナ





ISS放出小型衛星が何度かの延期を経て、ようやく旅立った。ステーションから撮影された放出後の衛星の画像がかなり綺麗でうらやましい。

 今のところ全部信号が来ているようでめでたい。

まだ正式名はないがTLEは出ているので、どこにいるか見てみると…


 結構離れてきたけど、この密集ぶりは新しい…

放出された翌日に6エレ八木で聞いてみたが、あまり大きく聞こえなかった。

どうも6エレの500円アンテナをテキトーに作りすぎたらしく、衛星はおろか付近のAPRS(※1)のデータすら受信が怪しいので、MMANAを使って作ってみることにした。

 アンテナ解析ソフト MMANA http://www33.ocn.ne.jp/~je3hht/mmana/

 ※1 APRS(Automatic Packet Reporting System)  運用周波数については http://wikiwiki.jp/dcn/?  APRS%2FFrequency

ネットの解説をたどりながら、まずダイポールを作り、そして2エレ、3エレ、4、5,6エレと作ってみた。
 ある程度手動で配置してから最適化を行うと、たとえばSWRを1に近づける過程で、エレメントの間隔や長さのパラメータを自動的に調節してくれる。



今回はこの値から、まず試しに3エレを実際に作ってみた。

 素子はφ3mmの真鍮パイプで、根本にタカチのSW-60を使用。中でスズメッキ線をハンダ付けして、SMAコネクタに接続した。 両端はハンズでみつけたキャップをはめて安全に扱えるようにする。

その他の素子はφ3mmのアルミパイプで作成。


インピーダンス整合のために輻射器と放射器が離れていて面白い。 


性能としてはAPRSパケットがやっとデコードできるようになり、衛星のCWも強く聞こえるようになった。方向は多少ずれても受信できるので気軽に手持ち受信できて良い感じだ。

そろそろ、アンテナの性能を測定できる環境を整えたい…。

アンテナ方向指示器の構想

AR八木アンテナについて色々考えて、スマートフォンを装着するのもありだが、気軽に、どんな機種でもできるようにするとしたら、これが唯一の解ではないと思い始めた。

 アプリ側で吸収できないのが大きさと重さ。最近のデバイスは大きさがまちまちで、機種によっては追尾中にだいぶ負担になりそうだ。 HT-03Aみたいに小さなデバイスが多ければいいのだが。 

端末の進化は、手持ちで風景にかざす用途に対して厳しい気がする。 かざしやすさで言うと折り畳み携帯のほうが楽そうなのだが…。

衛星追尾の補助には、デジタルコンパスと加速度計を内蔵したセンサと、マイコン、インジケータとなるブザーやLED程度で方向指示器を作り、アンテナにくっつけるだけでよさそうだと思う。 

これならタブレットでも、方位と仰角さえ表示できれば使うことができる。 Bluetoothなどで追尾の連携をするのもありかもしれない。   ArduinoでもTLEを計算できるので、データのアップデート手段さえ用意すれば、実はスマートフォンすら要らないかもしれない。

2012/09/23

監視カメラをLANケーブルで延長する


中古で見つけた業務用カメラのVC-C50iをどう使うか考えて、置き場所の自由を増やすことにした。
映像をLANケーブルで延長することはしていたので、今回は電源も延長する。

 写真は市販のLAN延長用アダプタを使ったもので、監視カメラの映像出力(BNCコネクタ)と2.1mmジャック、音声RCAジャックがついている。千石電商で購入した。
 音声信号用のRCAコネクタの信号ピンが曲者で、相手のメスコネクタによっては接触不良となるので注意(ちょっと曲げた)。
 ビデオバランがついているというので使ってみたけど、別に秋月のLANコネクタ(パルストランス無し)を使って自作したものと比べて違いはあまり見られなかった…。

 LANケーブルを延長用のツイストペアケーブルとみなせば、RS422なら上下2ch、RS485なら4ch通せるので、重たいケーブルを使うよりおすすめ。 差動ドライバはLTC485などが秋月で入手できる。

LANコネクタ(DIP化キット) http://akizukidenshi.com/catalog/g/gK-05404/


 電源も供給しているので、LANケーブル1本あれば好きな場所にカメラを設置できる。
20mほどのケーブルで試したが、カメラは無事起動した。あまり長いと配線抵抗が増えてダメかもしれない。
 RCAジャックで測定すると30Ωほどあった。 


このカメラは赤外線リモコンかRS232/485で遠隔操作ができる。お手軽にIRレピータを作り、音声端子経由で伸ばすとよさそうだ。 アナログVGAなので、最近のWebカメラと比べると広角側の画質は荒く感じるけれど、光学系がしっかりしているので、ズームして観察する用途ではかなり強力なツールとなる。 人の入りにくい実験環境の監視モニタとして使えるように整備している。

2012/09/11

デスクトップ更新


 今までアーキテクチャはLGA775/DDR2のままで来たけど、最近は起動にも5分、ログインしてから使えるまでに5分くらいかかるようになり、さらにCGやAdobe製品の動作が重たいので、中身を総入れ替えすることにした。
 いまやノート全盛の時代だというのに…。

  2年ぶりに自作PCの情報を仕入れてみたけど、最初にLGA775にした2008年もVistaによってDDR2価格が暴落していた時だったので、どうもDRAMが安くなるたびにシステムを買い換えている印象が。
ケース G4ポリタンク(引き継ぎ)
CPU: Celeron G540
マザボ: P8B75-M
メモリ: DDR3 4GBx2 (8GB)
SSD: Intel 330 120GB
HDD: 1TB(引き継ぎ)
GPU: Geforce GT220(引き継ぎ)
CPUクーラー: Big手裏剣

コスト重視で、メモリを2倍に、CドライブをSSDという流行りの構成。
CPUは飾りなので最下位に。本当はIvyBridge世代のPentiumにしたかったが売り切れていた。

起動が1分で終わるようになった。メモリ不足からも開放され、起動していたソフトウェアを再び開く際の応答停止時間がなくなった。 HDDが1基になったので騒音も減った。 前の構成よりもスリープ時の挙動が安定するようになった。  と個人的にはいいことづくめ。

以前の構成は木箱に受け継がれ、Ubuntuを入れて開発環境となった(完)


HDD収納用に上に箱をつける予定だったけれど、余っていた2.5インチHDDを内蔵してしまったため、これで完結してしまった感がある。