秋月の新しいGPSモジュールを試してみました

秋月の新しいGPSモジュール(単品ではなくキットの方)を試してみました。

このキットはこのUSBシリアル変換基板と接続して使うことを初めから想定しているのか端子配置が合わせられています。・・・が、Androidでも使ってみたいと思っているので、今回はあえてPL-2303を使用したUSBシリアル変換モジュールと接続するケーブルを作成しました。

まずは、aitendoのモジュールと同じ構成で中華Androidに接続、「You Are Here GPS」を起動するとしばらくして測位ができて座標が表示されました。GPSモジュール側でもLEDが1秒周期で明るく点滅するようになりました。さらに、中華AndroidのGoogle Mapsでも現在位置としては取得できたのですが、継続的にトラッキングしてはくれません(理由不明)。

そこで、今度はLinuxMint13環境で動かしてみました。

まずはwineとwine-geckoをインストールして、秋月のWebサイトに上がっているMiniGPS(GPSチップの製造元、MediaTekのソフトのようです)を動かしてみました。

としてからMiniGPSをwineで実行します。実行したらCOM1を選択して9600bpsに設定。測位が完了すると無事にGPS衛星の掴み具合を表示してくれました。(なお、後述のgpsdをインストール後はCOMポートに接続できなくなりますので要注意)

次にgpsdをsynapticでインストールしました。・・・が、これだけでは動いているんだかよくわかりません。せっかくGPSなのですから、マップ上に自分の場所を表示させてみたいものです。ググってみると、Vikingというのが定番みたいなので、Synapticでインストールしてみました。

使い方がちょっとわからなかったのですが、ウインドウの左側がレイヤーになっているようなので、

  1. 左側の下の方の「+」ボタンを押して、「New Map Layer」でOpenStreetMap(MapQuest)を追加します。以下のダイアログが開くので、
    Screenshot-Layer-Properties-1「Autodownload maps」にチェックを入れてOKを押します。
  2. 次に、「New GPS Layer」でGPSを追加します。ダイアログで「GPSRealtime Tracking mode」を選択して、以下のように設定します。
    Screenshot-Layer Properties

この状態だと現在位置はニューヨークのマンハッタンになっているのですが、追加したGPSを右クリックして「Start Realtime Tracking」を選択してしばらくすると、地図上に軌跡が描かれるようになりました。

Screenshot-Untitled-Viking-1

キャプチャ画面でもわかる通り、道路に沿って綺麗に軌跡を描いてくれます。

ちなみにこのVikingですが、aitendoで購入したモジュールでも同じように動作しました。
Linuxで動かすぶんにはPL-2303系のモジュールである必要はないと思うので、FT234Xのモジュールに変更して動かしてみようかと思います。

GPS動かず・・・

室内だったため測位できなかったと思われたGPSモジュールを外に連れだしてみました。

IMG_3106s

こんな感じで車のダッシュボード上に置いてみたのですが、結局測位できず・・・。アンテナが悪いのか、モジュールが悪いのかわかりませんが、ダメでした・・・。

<追伸>

よくみると、GPSのアンテナの裏側がシールドされています。パッシブアンテナでもシールドが要るもんなんだろうか?ひょっとして、アクティブアンテナなんじゃなかろうか?
・・・・ということで、3.3Vを47uHのマイクロインダクタを通してアンテナの芯線に供給してみました。結果、多少表示が変わりましたが、測位には至らず。外は寒いので手早くやってしまったので、もう少し放置すると変わるのかもしれません。

<さらに追伸2/21>

あらためて、車のダッシュボード上でしばらく放置していたら測位できました。インダクタの効果かどうかはわかりませんが・・・。

中華タブレット用GPSを作ってみました

以前購入した中華Androidタブレットがあるのですがが、(WiFiタブレット全般に)GPSが付いていません。そこで、外付けのGPSユニットを作ってみました。

IMG_3104s

外付けGPSについて調べてみると、PL2303をUSB-UARTコンバータとして使用しているUSB接続GPS機器をAndroidで使うための「You Are Here GPS」というソフトがあることがわかりました。そこから察するにNMEA-0193フォーマットでUARTにデータを吐くGPSモジュールをPL-2303に接続すれば良さそうです。ただ、You Are Here GPSを動かしてみたところ、シリアルの速度は4800bpsか9600bpsしか選べません。ここはGPSモジュール選定の際の要注意事項です。

実際の回路はGPSはaitendoでGM-242iというモジュールとGPSHMX-039というパッシブアンテナ、USB-TTL2303-5PというUSB-UART変換モジュールを購入して、小さな基板上に5VからGPSの電源の3.3Vを生成する三端子レギュレータとバックアップ用のコイン形リチウム電池を載せました。

まずは、LinuxMintをインストールしたPCに接続してGM-242iのデフォルトの通信速度である38400bps、ビット長8、パリティなし、ストップビット1ビットで接続します。ソフトはmoserialを使用しました。

こんな感じのGPSメッセージが流れているのが確認できますので、以下のコマンドをASCIIで送信して速度を9600bpsに変更します。

変更したら、moserial側も一旦切断して速度を9600bpsに変更して再接続します。引き続きHEXで以下のUBXコマンドを送って、コイン形リチウム電池でバックアップされるBBRAM領域に設定を保存します。

B5 62 06 09でCFG-CFGコマンド(コンフィギュレーションのクリア、保存、読み出し)を指定します。続く「0D 00」がリトルエンディアンなので0x000Dで長さ13を示しています。続く「00 00 00 00」=0x00000000でクリアするものはなし、「FF FF 00 00」=0x0000FFFFですべて保存、「00 00 00 00」=0x00000000でロードするものはなし、次の17で保存できるデバイスすべてを指定しています。

参考まで、UBXコマンドのチェックサムを付加・算出するPythonスクリプトを置いておきます。

これで電源をOFFしても電源投入時点から9600bpsで動作します。この状態で中華タブレットに接続し、 You Are Here GPSを動作させます。設定で通信速度を9600bpsにセットして「connect」を押すとNMEA-0193メッセージが1秒周期で表示されます。
カタログスペックでは衛星捕捉-142dBm、トラッキング-159dBmの感度があることになっていますが、残念ながら鉄筋コンクリートの室内では測位できないようです(スマートフォンでは何とか衛星捕捉から可能なようなのですが・・・)。近いうちに外で測位させてみたいと思います。

SDRに挑戦してみました

aitendoのサイトを見ていたら、特売品の中にRTL2832Uを用いたUSBワンセグTVチューナーがアンテナ+リモコン付きで999円、どうも別の機種っぽいUSBチューナー単体が666円で出ていました。

海外のワンセグTVチューナーが広帯域受信機として使用可能、いう話を以前から見かけていたので、調べてみたらどうもチップも一致、しかも、ダイレクトサンプリングという手法(というか、RF飛ばして入力する?)で、RTL2832UでLF~HF帯も受信可能なようです。

こちらのサイトで非常に詳しく色々と解説されていて、とても参考になります。そして、ポチッとしたい衝動を抑えられなくなりました(笑)

で、届いたのがこれ。

OLYMPUS DIGITAL CAMERA OLYMPUS DIGITAL CAMERA

さすがaitendoです。シンプルな包装です(^^;。ま、必要なのは中身だけなんでそれでいいんですけどね。

で、動かすためのソフトウェアですが、どうもこんな感じみたいです。

  • Gqrx SDR receiver
    GNU RadioとQtをベースにしたグラフィカルで綺麗な表示のSDRです。
  • GNU Radio
    ソフトウェア無線のためのツールキットです。名前からわかる通りオープンソースです。
  • RTL-SDR
    OsmoSDRは安価に実現可能なSDRソフトウェア開発プロジェクト・・・と書かれています。
    このプロジェクトの中にRTL-SDRというソフトウェアがあって、RTL2832Uに対応したコマンドライン版ソフトウェアのようです。
    このRTL-SDRはクライアント-サーバに分かれていて、サーバ側に受信機(USBワンセグチューナ)を設置します。
    このサーバにはRaspberryPiを使うことも可能なようで、実際に試されています

この中からまずはGqrxを動かしてみることにしました。ダウンロードはsourceforge.netのプロジェクトページから。環境はLinuxMint13 32bit版です。

  1. 軟弱者なのでバイナリパッケージ(gqrx-2.1.251-i686.tar.xz)を持ってきます。
  2. 展開して、README.txt を読むと、いくつか依存するものがあるようです。
    ・GNU Radio 3.6以降
    ・「gnuradio-fcd」「gnuradio-uhd」「RTL-SDR」「Osmo SDR」のどれか
    ・gnuradio-osmosdr
    ・pulseaudio
    ・Qt 4.6以降と Qt Creator
  3. ・・・が、下の方を読むと、バイナリパッケージには必要なGNU Radio、UHD、rtlsdr、Boostライブラリが含まれているそうです。

展開したファイルの中に「gqrx」という実行ファイルがあるので、とりあえずこれをroot権限で起動すると動作できます。

※追伸
lubuntu13.04ではlibqtgui、Qt Creator、pulseaudioをSynapticでインストールする作業が必要でした

root権限ないではUSBチューナが見えない、というのはイマイチなので、/dev/udev/rules.d の下にルールを追加します。
具体的には、/etc/udev/rules.d/20.rtlsdr.rules として以下の内容のファイルを作ります。

作成後、「$ sudo restart udev」とした後、一旦USBチューナーを抜き差しすると、ユーザー権限で起動しても動作するようになりました。

Screenshot-Gqrx 2.1.251 - rtl=0

これはFM東京を受信している様子です。ごく簡単なアンテナで、しかも鉄筋コンクリートの室内、普通のポータブルタイプのFMラジオだとほとんど受信できない環境なのにFM局が何局か受信できました。

<参考>
Computer Radio RF Techさん
ダイレクトサンプリング、アップコンバータの適用、RaspberryPiでSDRサーバなど
ゆうちゃんのパパさん
ダイレクトサンプリングやアンプ搭載、LPF搭載、など

Nokiaの携帯電話液晶に文字表示

Raspberry Piにaitendoで購入したノキア携帯5510の液晶を接続して文字表示をさせてみました。
この液晶パネルはSPIインタフェースだったのでまじめにSPIで接続して・・・と思ったのですが、 Command/DataやChip EnableなどSPI以外の追加の制御信号があるので面倒になって直接ポートでSPI相当の信号を作ることにしました。

“Nokiaの携帯電話液晶に文字表示” の続きを読む