| 2006-8-22 | 公開開始 |
ニコンのデジタル一眼レフカメラのうち、D2Hs, D2X/Xs, D200など外部拡張ターミナルとして10ピンのコネクタがついているタイプでは、GPS機器と接続して撮影場所や時刻などのGPSデータを記録する機能がある。
この機能、前から気になっていたのだけど、次のような理由から結局は試さないままになっていた。
要は、値段が高いくせにでかくてダサくてよろしくない、ということ。
実は世間にはこれをスマートに取り付けてくれる製品も無いわけではないのだが、これでもまだかなり格好悪いし、しかも値段が高いという問題は解決しない。
ここらへんが何とかならないといまいち使いたくないところだ。
と思っていたらこんな製品をみつけた。表示装置等を一切搭載せず、GPSアンテナと処理部を単体化したもの。リードアウトはRS-232Cで出てくるらしい。
これならハンディGPSに比べるとだいぶ小さい、しかも安い。送料込みでも$100しないので、さっそく注文。わくわくして待つことにする。
GPSが到着するまでの間、これをカメラにどう繋ぐかを考える。
ニコンが推奨する組み合わせは、純正の「GPS接続ケーブル(MC-35)」を使う方法なのだが、このケーブルをyodobashi.comで買うと、10,080円。単なる変換ケーブルのくせに、GPS本体よりも高い。そもそも、こんな不恰好なアダプタを使いたくないという理由でGPSの導入をためらっていたのであるから、MC-35を使う、という手は無い。
ではどうするか。世の中に無いものは作ってしまうしかなかろう。
ここで問題となるのが、MC-35の中身だ。もちろん、単に配線を繋ぎ直すだけでGPSがカメラにつながるわけではない。あの不恰好な箱の中には何らかの回路が入っている。というわけでいろいろ検索したのだが、MC-35自体の内部回路がどうなっているかの資料は見つけられなかった。
ただ、過去に発売されていたNikon10pinとRS232C(DB25)を接続するMC-31ケーブルや、RS232C(DB9)と接続するMC-33ケーブルなどは、実際にそれらを解析しているサイトや、互換ケーブルを作っているサイトがたくさんみつかる。
ニコンがサポートするといっている「Garmin」は、GPSデータをRS-232Cで出力する。ならば、GPS接続ケーブル「MC-35」の中身は、10ピンターミナルとRS-232Cの信号を相互変換する機能が入っていると考えていいだろう。となると、MC-35の中身は、MC-31やMC-33とほぼ同じなのではなかろうか。MC-35には、リモートレリーズ接続用と思われる拡張用の10ピン端子が搭載されているが、MC-31やMC-33との違いは、この端子の有無くらいとしか思えない。
つまり
(MC-35)=(MC-33)+(10Pin拡張端子)ってことだと(勝手に)考えて、作業を進めてみよう。
ここで今回購入したGPSのスペックをもういちどよく見てみよう。すると、以下のような記述があることに気づく。
Power: 4.5~6.5V
Output Level: 0~2.85V(TTL)
一般にRS-232Cでは、通常のロジックICで使われる+5V信号ではなく、±12Vの信号を使用する。より正確に言えば、論理値「0」に相当する電圧は+3V~+15Vの範囲が使われ、これを「スペース」と呼ぶ。一方論理値「1」に相当する電圧はグランドレベルよりもさらに低いマイナス側電圧が使われる。具体的には-3~-15Vの範囲内の電圧の時、論理値「1」と見なされ、これを一般に「マーク」と呼ぶ。
今回のGPSの場合、出力電圧が0~2.85Vということからわかるように、RS-232Cレベルでないことは明らかだ。(TTL)という注釈がついていることからもわかるように一般のロジックICで使われる「TTLレベル」を用いたシリアル転送なのだろう。となると、MC-35の回路がそのまま使えるわけではなく、専用の回路を用意しなければならない。それはいったいどういった回路なのか。
一方、MC-31やMC-33の回路に目を向けると、これらではMAXIMのMAX232系のチップを使って信号を変換している。MAX232というICは、ロジック回路で使われる+5V回路と、RS232Cで使われるマーク/スペースをそれぞれ変換する「ラインドライバ」と呼ばれるICだ。具体的に言うとTTL/CMOSのロジック回路をRS-232Cの信号線に接続する場合に必要となるICである。
MC-31/33/35の一方の端にはRS-232C機器がつながり、もう一方の端にはカメラが繋がる。その間にMAX232が入るということは、逆に考えれば、カメラ側の10ピン端子には、+5VのTTL/CMOSレベルの信号が出ているものと想定される。
となると、話はいきなり簡単になる。なぜなら、GPS側はTTL信号であることがほぼ確実であり、カメラ側も同じくTTLか、あるいはCMOSレベルなのだ。うまくすれば、間に一切回路を挟まなくとも直結できる。信号論理が逆になっている可能性もあるが、この場合にもインバータをひとつ挟むだけで済む。いずれにしろ、MAX232を使った接続よりは遥かに単純な回路でつながるようになるはずだ。
ニコンの10ピンコネクタは、一般にはあまりみかけない特殊な形状をしている。
どこで作っているのかわからないので(実は薄々見当はついていたのだけど)、強力なコネをつかって調べてもらったら、ヒロセ電機製のカスタムコネクタであることが判明した。
実はメーカー型番まで教えていただいたのだが、そのコネクタはニコン専用に設計されたものであり、それ以外への販売は一切行えないということだ。つまり、このコネクタを入手しようと思うと、既存のケーブル製品を改造しなければならないということだ。
既存のニコン製品で流用できそうな製品にはいくつかあるが、写真にあるMC-21ケーブルがなかなかよさそうだ。10ピン端子用の延長ケーブルなので、内部的に全ピン接続されているのは確実だし、なによりオス/メス双方のコネクタが一度に手に入る。
ちょうど町田のヨドバシカメラに在庫があったので、購入してすぐに分解してみた。
MC-21ケーブルのレセプタクル(メス)側には、MC-35ほど大きくはないが、箱がつけられている。外形サイズは41×18×16mm程度。ケースは嵌め殺しではなく、4本のネジで固定されており、簡単に開けることができる。
小型の基板が入っているが、これは単に10本のケーブルをコネクタの各端子に導いているだけであり、それ以外の部品は一切搭載されていない。またこの箱の内部には、目測で25×10×4mm程度の空間はありそうだ。仮に何らかの回路が必要になったとしても、このサイズなら収めることができそう。
Nikon 10pin端子のピンアサインは、いくつかのサイトを検索すると見つかるので、それをそのまま使う。
ただし、注意しないといけないのが、これを調べているサイトごとにピン番号の附番がばらばらになっている点だ。またサイトによってはプラグ側とレセプタクル側それぞれにピン番号を振っている。うっかり間違えると左右反転した状態で配線してしまうので注意が必要だろう。
ではどのサイトの附番規則が正しいのだろう。実はこの点についてはすでに正解が判明している。MC-21を分解した際に発見したのだが、メス側コネクタの裏面に小さく番号が刻印してあったのだ。コネクタメーカー自体が番号を振っているのだから、これを正しいと言わずして何と言おうか。
というわけで、以下が「正式なピン番号」と、それにアサインされた信号の意味、そしてそれぞれに接続されているケーブルの色だ。見て分かるように、抵抗などで使われる「カラーコード」がそのままピン番号と一致しているので、カラーコードが読める人ならば、番号もすぐにわかるはずだ。
| Cable Color | Contact Number | Description |
|---|---|---|
| 茶(brown) | 1 | Battery+ |
| 赤(red) | 2 | RxD |
| 橙(orange) | 3 | Release Sense |
| 黄(yellow) | 4 | Signal Ground |
| 緑(green) | 5 | Battery Ground |
| 青(blue) | 6 | TxD |
| 紫(purple) | 7 | Release |
| 灰(gray) | 8 | Vcc(+5V regulated) |
| 白(white) | 9 | AF on/Standby |
| 黒(black) | 10 | No connection |
そうこうしているうちに、注文してあったGPSが届いた。写真にはコンパクトフラッシュも写っているが、これは単なるサイズ比較用であり、送られてきたのはGPS本体と、マニュアル等が収められたCD-ROMのみ。今回はPCと接続する予定はないため、変換ケーブル等は注文していない。
届いた製品を色々調べていたら、この製品、GlobalsatのBR-355という製品であることがわかった。
しかもこの製品国内でも販売されている。
価格的にもリーズナブルなので、これならわざわざ海外注文しなくとも、国内発注でも十分であったろう。
問題はGPSモジュールのピンアサインだ。BR-355では、シリアル信号をPS/2コネクタとして出しているのだが、このコネクタは使う予定はないので、ケーブルを途中で切断してしまう。
中から現れたケーブルは、シールド用の裸線を含めて5本だった。常識的に考えて赤はVcc(+5V)、黒はシグナルグランドと考えてよいだろう。裸線はこちらも常識から考えてフレームグランドに違いない。残るのは白と緑の線だ。シリアル信号を通すのだから、どちらかがTxで、もう一方がRxであると考えるのが普通。
ケーブル色が赤/黒/白/緑とくれば気づく人もいるだろうが、これはUSBケーブルと同じカラーコードだ。USBの場合、白は-Data、緑は+Dataとなるのが普通だが、これから類推すると、緑がTx(つまりGPSからのデータ出力)、白がRx(GPSへのデータ入力)のような気がしないでもない。確実じゃないけど、とりあえずVccとGNDを与えた状態で次に示すようにLEDを接続して確認してみたら、やっぱり緑側からデータが出ているような感じ。ということで、ビンゴ。
| Cable Color | Description |
|---|---|
| 裸(bare) | FG |
| 赤(red) | Vcc |
| 緑(green) | Tx |
| 白(white) | Rx |
| 黒(black) | GND |
GPSの信号アサインはわかったが、問題は、BR-355の信号論理が正論理か負論理なのかわからない点だ。ロジアナでも当てれば一発なのだろうが、あいにく我が家にはそんなものはない(ロジアナくらい買えよ、という突っ込みは無しで...)ので、テスト用としてLEDを信号線に取り付けてみた。
RS-232Cの調歩同期は、通信していないときにはマーク、そののち、スタートビットとしてスペースが1ビット分送られ、7または8ビット分のデータビットが送られた後、必要ならパリティが1ビット、最後にストップビットとしてマークが1ビット(または1.5/2ビット)送られる。ニコンの10ピン端子側はTTL正論理で動作するため、通信していない場合の出力は常に+5Vとなる。データが送られると、電圧が0Vに落ちる。
こうした動作ゆえに、信号線にLEDをあててグランドと接続してやると、平常時はLEDが点灯、データが流れている時にはLEDが点滅するはずだ。
では、BR-355の方はどうか。VccとGNDを接続した状態で、緑ケーブルにLEDを接続、これをGNDと接続する。
結果はどうかといえば、LEDは常時消灯状態で、1秒ごとに点灯する。つまりBR-355の出力は、電圧はTTLレベルなのだが、論理は負論理であることがわかる。つまりRS-232Cでいえばマイナスとなるはずの電圧が0Vであり、+3~15Vとなるはずの電圧が+2.85Vで出ているということだ。ニコン10ピン端子が正論理なので、信号の論理を反転させてやらないと動かないことになる。(もっとも、すでに述べたように、単にインバータを挟むだけという簡単な回路で済むのだが...)
GPSと10Pin端子の接続にはインバータが必要らしいことがわかったので、図のような感じで基板を作ることにした。
インバータとして使うのは東芝のTC7W14だ。TTLレベルなので7404か7414でもいいのだけど、4回路も必要ないし小さく収めたかったのでフラットパッケージの7W14を選んだ。
10ピン端子からの信号はVcc, GND, TxD, RxDの4本を使う。VccとGNDは7W14の電源に接続した上で、さらにGPS側のVcc、GNDに接続。TxDとRxDはインバータ回路を挟んだうえで、GPS側のRxDとTxDへと接続する。なお、図には描いていないが、GPS Txとカメラ側のTxはTTL出力であり、それをCMOS ICである7W14に入れることになるので、それぞれ100kΩ程度の抵抗でVccにプルアップしておいた。たぶん無くても動くと思うが念のため。
基板の切削はモデラ(MDX-15)を使う。バーチャルモデラを使って切削結果をシミュレーションしてみたのが右の図。基板といっても、部品が1個しか乗らないものなのですごく小さくて、サイズはおよそ8mm角程度。これに部品を乗せて端っこの部分に配線してやればできあがるはずなのだけど..実際にt=0.5mmの片面基板を削り出してみたものが下の写真。けっこうきれいにできたように思う。

あとはこいつに、部品をとりつける。写真はあくまで製作途中のもので、まだレベルあわせ用のプルアップ抵抗などは取り付けていない。またGPS接続はコネクタを介することにした。
GPS接続をコネクタにしたのは、GPS部分だけを取り外してテストすることを想定したからだ。使用したコネクタは、Molexの51047-0400で、この種の小型コネクタとしては非常にポピュラーなもの。これと組み合わせるプラグ側はMolexの51021-0400を使う。国内のパーツショップでも51021の方はあっさり手に入るだろうが、51047の方は、ちょっと探さないとならないかもしれない。
簡単に入手したければ、模型用として販売されているKATOカスタムショップの「29-116 DCCコネクター4極セット」を使うのが便利。もちろんこのコネクタ以外でも、適当に小さくて、MC-21の中に容易に収められるものであればまったく問題はないのだけど。
接続基板をMC-21内に組み込む前にMC-21の加工を済ませる。
MC-21のケーブルは延長用なので非常に長いのだが、今回の用途には邪魔なだけなので思い切って短く切り取る。MC-21のケーブルは意外に固くて長いと邪魔なので、むしろGPS側のケーブルの方を長めにしてやったほうが取り回しがいい。なお、MC-21のボックス側でケーブルを支えているブッシュ(折れ止め)は、ラジオペンチなどでちぎらないように注意しつつ丁寧に引っ張ってやればずらすことができる。
ついでにMC-21内部の小基板も邪魔なので取り去ってしまったが、その気になればこの基板の上に回路を構成することもできるだろう。
MC-21についている外部接続用のコネクタを生かすため、カメラ側に繋がるケーブルは、2番6番を除き、そのまま外部接続用のコネクタに元の通りに接続する。2番(Tx)と6番(Rx)はGPSに接続されるため、外部接続コネクタには配線してはならない。
2番6番はそのままGPSに接続するのではなく、TC7W14のシュミットトリガに接続し、論理を反転させたのちGPSへと接続する。
写真が、改造後のMC-21ケーブル。拡大してみると半田付けが汚い(汗
GPS側加工は簡単だ。ケーブルを適当な長さに切断してコネクタを取り付けるだけでよい。
GPS側のケーブル長は、およそ25cm程度にした。ちょっと長めに思えるかもしれないが、ホットシューにストロボを取り付けたとき、そのストロボの天面にGPSが置けるよう考えたのこと。コネクタを組み付ける前に、ケーブル折れ止めのブッシュを通しておくのを忘れないようにする。今回使ったのは、そこらへんに落ちていたイヤホンジャックについていたのをむしりとったもので、型番はよくわからない。
MC-21のボックスからGPSケーブルをどう出すかだが、私はMC-21の元のケーブルとは反対側にGPS用の穴をあけ、そこから出した。つまりGPSと10ピンターミナルの中間にMC-21のボックスが配置される状態。
出来上がった状態が以下の写真だ。ケーブル長は、10ピンコネクタからGPS部の入り口まで約35cmほどになる。
ここまでできあがったらそのままカメラに取り付けたいところだけれど、最低限、VccとGNDがショートしていないかくらいは確認しないとやばい。なにせ、GPSやケーブルは壊れてもたいしたことはないが、カメラ本体が壊れてしまったら目も当てられないから。
確認が終わったら、カメラに接続して動作を確認
すると...
あっさりつながっちゃいました。なんか拍子抜け。
画面は、D200の上面液晶。GPSのアイコンが最初は点滅、やがて点灯状態に変わるのがわかる。説明書によると、点滅はGPSが認識されているが、位置が確定していない状態。測位が終了して座標が確定すると、点灯に変わる。
実際にGPS有効状態で撮影した写真はまだ準備できていないので近日公開。こんど遠出したときにでもGPSありで撮影することにしよう。
それにしても、液晶画面、こうしてみると埃だらけできちゃないなぁ... 恥ずかしい。
とりあえず一応の完成をみたGPSケーブル。D200に取り付けてみた図がこれ。
アクセサリシューに取り付けてあるほうは、手元にあったどこかのメーカーのアクセサリシュー増設アダプタから取り外した「足」の部分を取り付け、さらにベルクロテープ(マジックテープ)を貼り付けてある。
スピードライトの上に取り付けてあるのも言うまでも無く、ベルクロテープによる取り付け。
ベルクロテープには「堅いほう」と「やわらかいほう」があるが、GPS本体には堅い方を貼り付けてあり、シューとスピードライトの方にはやわらかい方を貼ってある。
ただテープは手元にあった適当なものを貼ってあるだけなので、今度ユザワヤにでも寄って、すでにコメントをいただいているように、直径22mmの円形テープを貼ってやることにしよう。
もっとも、GPS自体非常に軽いものなので、ぶらぶらさせていてもあまり邪魔にならないような気がする。
さて、こうしてニコンのデジタル一眼とGPSを接続する「スマートな」ケーブル製作は終わったわけだけど、ついでにこんなものも作ってみた。
これは、我が家のガラクタ箱に入っていた「センチュリー」というメーカーのUSBシリアル変換アダプタ。基板だけを取り出してある。こいつには、USB/シリアル変換チップPL-2103が搭載されているので、ここから信号を引っ張りだしてやれば、BR-355とD2/D200との間をどんな信号が流れているかを横取りしてPCで確認することができる。
こうしてデータを拾ってやれば、D2/D200がGPSを認識するのに必要なセンテンスが判定できる。それでわかったことだが、少なくともGPSを使う場合、カメラからGPSへのデータ送信は一切行われていないようだ。今回は双方向の通信が行えるよう回路を構成したが、GPSへのコマンド送出が無いのなら、回路はもっと簡単にできる。もっとも、今から作り直す気は無いのだが。
で、実を言うと、いまさらに次の段階を計画中だ。まだ必要なパーツが揃っていないのだが、今回作ったものよりもさらにスマートにGPSが接続できる環境を計画中。うまくいくかどうかは、来月くらいには判明しているだろう。
完成しました。Bluetooth接続です。
乞うご期待。