とりちらかったもろもろの言葉たち

ちょっと大きめのつぶやきにすぎない戯言をとりあえず書いてみました

カテゴリーアーカイブ: Project Chasing Moon

マイルストーン:スマホでカメラ台を制御

Project Chasing Moonとか言ってしまったが、そのマイルストーンその1。

2016-04-16 20.28.45スマートフォンのアプリで、指定した角度に首を振り、チルトさせるというもの。コントローラーは例によってLightBlue Beanにした。今回は細かく指定できることを確認するため、専用のアプリも作成した。

基本はBluetooth Low EnergyのCharacteristicに角度(アジマスとチルト)を書き込むと、それに応じてカメラ台のサーボが対象の角度に動く。サーボの制御はArduinoのServoライブラリ任せなので、本当にどの角度なのかは確認していない。が、まあそれらしい角度には動いている。後々のために、LightBlue Beanから加速度センサーの値をCharacteristic経由で取得できるようにもしている。

動かすとこんな感じだ。

ポイントはサーボが5V、LightBlue Beanが3Vで動作するのを整合させることくらい。もしかしたらサーボの制御ピンはCMOSロジックだったのかもしれないけど、SG90の説明はなんにも書いてないのでまあレベル変換は入れておいた。CMOSロジックで動いているといいな。何となく、ちょっと動作が不安定な感じがあるので。本当は波形の確認とかしなきゃいけないんだけど、まあそれも次のステップかな。

もう一つポイントだったのはアプリの方だけど、今回はBluetooth Developer Studio(BDS)を使ったら簡単にできた。基本はLightBlue BeanのCharacteristicをやり取りするサービスのUUIDを使ってBDSでプロジェクトを立ち上げる。これで標準のプラグインを使って、Androidのクライアントコードを生成させる。同じ名前、名前空間でAndroid Studioのプロジェクトを作っておけば、BDSで生成した中に入っているバッチファイルがソースを放り込んでくれる。Javaのソースコードだけではなく、XMLのデザインファイルなども入れてくれるので、実行可能なアプリがその場でできてしまう。

あとはデータをやり取りする構造(プロトコル)を決めて適切に処理させればいい。

 

プロジェクト「Chasing Moon」始動

などと大袈裟なタイトルを付けてしまった。

何をしたいかというと、要は超絶チープでかつ、楽ちんな自動導入なんてできないか、ということだ。組立式望遠鏡が意外に性能が高く、月などを見る分には十分すぎるくらい使えるのだが、導入が面倒。いや、これはどんな天体望遠鏡でもそうなのだろうけれど、それ自体がファインダーのような存在である組立式望遠鏡の場合、導入は素で見えている星でないと難しい。そもそもターゲット部分は光学系は存在せず、望遠鏡の先端と終端にあるマーカーが対象となる星に重なるように向けなければならない。ちゃんと見えている星ならば狙えるが、「だいたいあのへんにあるはず」で狙ってもなかなか当たらない。そのうち腰か首が疲れてきてあきらめることになる。

しかしボクが住んでいるここ東京は、星を見る環境としてはろくでもないところだ。最近ではこちらの目も悪化しているので、オリオン座のベルトの三ツ星(2等星)ですら、怪しいくらい。一方でこんな環境だからこそ、高額な光学系に投資する意味を持たない。そんな爆発的によく見えるわけはないが、これくらいなら見えるかも、というのは見てみたいのが人情だ。

セレストロンの「COSMOS90」が年末に意外に安売りしていたので、結構ほしいとか思っていたが、どう考えても普通には使うとは思い難い。こいつの売りは自動導入で、明るい星を1つ導入すれば、あとは勝手にやってくれるという。今までは3つ必要だったのだから、かなり楽なはずだ。

そこで少し考えてみた。星の位置に応じた水平方面の角度(方角)と、高度角の2つが求まれば本来は導入できるはずだ。それ自体は、理論上現在地の場所(経緯度)と時刻がわかれば算出できる。問題はそれを現実に設置した望遠鏡の角度に落としこむ部分だ。セレストロンが導入に3つの星を指定していたのは、これから考えればよくわかる。つまり水平方向の角度の誤差と、高度角方向の誤差の2つを算出するために、3つのデータが必要になるからだ。

だがこのIoTの時代である。まず水平方向の回転軸のズレは、加速度センサーを使えば求められる。静止状態で唯一発生している方向が地球中心の方向なので、要は天頂方向の逆だ。次が方位。これも方位センサーがあれば、理論的には北の方向がわかるので、そこから算出すればまあ、なんかちゃんと導入できるんじゃない?

基本的なアイデアとしては、スマートフォン+制御側の2段構成にする。制御側はArduinoクラスのハードウエアで十分。基本は指定した方向を入れてやったら、それに応じた動作をすればよい。誤差の補正をどちらに持たせるかは議論の余地があるので、まだ決定していない。スマートフォンで基本的に制御するのであれば、時刻や位置も取得できるので都合がよい。惑星の位置情報なども取得できそうだ。

制御側とスマートフォンはまあ、Bluetooth LEで接続するだろう。というわけで、制御側のハードウエアはとりあえず手持ちの「Metaware C」(mbientLab製)を使うことに決定。制御用のサーボは手持ちのSG90でまずはいろいろ試そう。とにかく安いし。あれ?でも出力系統足りるかな?そこは少しチェックしておこう。これがRaspberry Piクラスのハードなら、それ自体に通信機能とUIを持たせてもよいのだろうけれど、そこを作るのはソフト的にも面倒な感じがする。

なので、まずはフェーズ1としてスマートフォンで角度を指定して制御できるようにすることを目指す。次にフェーズ2として、設置誤差の修正をできるようにする。フェーズ3がちゃんとしたUIだ。できるならば星の名前を指定しただけで導入できるようにしたい。

いろいろと構造を考えてみたが、どうせサーボはSG90を少なくとも試験段階では使うので、カメラキットをeBayで買ったりした。