LS20031の使用方法について

mbed についてのご質問はこちら。情報交換などにもご利用ください。

LS20031の使用方法について

投稿記事by 樫原 輝 » 2012年12月12日(水) 18:32

こんにちは
以前にも質問させていただいた内容なのですが、未だに問題が解決しないので質問させてください。

LOCOSYS株式会社のMC-1513を使ったGPSモジュールを使用したいと考えています。
そこで以下の配線をしました。

【GPSモジュール】              【mbed】
1ピン(VCC)ーーーーーーーーーーーーーVOUT
2ピン(RX)ーーーーーーーーーーーーーーp10
3ピン(TX)ーーーーーーーーーーーーーーp9
4ピン(GND)ーーーーーーーーーーーーーGND
5ピン

この配線で、以下のプログラムを動作させました
コード: 全て選択
#include "mbed.h"
Serial gps(p9,p10);

int main(){
    char c;
    gps.baud(9600);
    printf("GPS Test\n");
    while(1){
        c = gps.getc();
        putc(c);
    }
}


以上の配線、プログラムで動かし、tera termで読み込もうとしました。
しかし、以前使用したGTー723Fでは衛星を捕捉していないときにテキストが返ってきたのですが、今回使用しているLS20031では衛星を捕捉していないときにテキストが返ってきません。
どうしてこのようになるのでしょうか。
もう一つ疑問に思ったのですが、このモジュールにはGNDが2つあります。なぜなのでしょうか?

すみませんが回答よろしくお願いします。
樫原 輝
 
記事: 134
登録日時: 2011年7月07日(木) 17:26

Re: LS20031の使用方法について

投稿記事by yamaguch » 2012年12月12日(水) 20:52

通信速度が一致しないとシリアル通信はできません。
確認してみてください。

山口
yamaguch
 
記事: 482
登録日時: 2010年7月06日(火) 17:37

Re: LS20031の使用方法について

投稿記事by 樫原 輝 » 2012年12月12日(水) 21:38

こんにちは、山口さん
一度確認してみました。
通信速度とは、添付画像の"9600BPS"という所でしょうか?
僕たちのプログラムもgps.baund(9600)と指定しています。指定の方法が間違っているのでしょうか?


回答よろしくお願いします。
添付ファイル
スクリーンショット 2012-12-12 21.35.26.png
スクリーンショット 2012-12-12 21.35.26.png (17.29 KiB) 表示数: 11674 回
樫原 輝
 
記事: 134
登録日時: 2011年7月07日(木) 17:26

Re: LS20031の使用方法について

投稿記事by 樫原 輝 » 2012年12月12日(水) 21:42

こんにちは、山口さん
すみません、今参考になる記事をストロベリー・リナックスのサイトで見つけました。
「データシートには1Hz, 9600bpsと書かれておりますが、販売品の初期状態は57600bpsもしくは11520bpsになっています。初期状態で57600bpsで通信できない場合は115200bpsで試してください。 」

一度、この指示通り、通信速度を変えて試してみます。
樫原 輝
 
記事: 134
登録日時: 2011年7月07日(木) 17:26

Re: LS20031の使用方法について

投稿記事by 樫原 輝 » 2012年12月13日(木) 17:11

こんにちは

通信速度を変えてみたのですが、通信することが出来ません。
配線は、前回質問した通りで、プログラムは以下です。115200bpsについてもbaudを変えてプログラミングしました。
コード: 全て選択
#include "mbed.h"

Serial gps(p9, p10);

int main()
{
    char c;
    gps.baud(57600);
    printf("LS20031-57600bps test\n");

    while(true) {
        if(gps.readable()) {
            printf("You can conect!\n");
            c = gps.getc();
            printf("%c", c);
        } else if(gps.readable() == 0) {
            printf("You can't conect!\n");
        }
    }
}


なぜ動かないのでしょうか?
すみませんが、回答よろしくお願いします。
樫原 輝
 
記事: 134
登録日時: 2011年7月07日(木) 17:26

Re: LS20031の使用方法について

投稿記事by yamaguch » 2012年12月15日(土) 08:07

GPSモジュールと mbed はシリアル通信を使って通信をしています。
シリアル通信ではクロック信号を使わない代わりに、1ビット分の信号を1秒間にどれだけ送るか(通信速度)を双方で決めておくことで、同期をとります。通信速度の単位は bps (bits per second) あるいは baud (もともとフランス語なので「ボー」と読みます)で、通常は 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 のどれかです。

プログラムが他の GPS モジュールで動くのであれば、このモジュールの問題かもしれません。
購入先(ストロベリーリナックス?)に聞いてみてはどうですか。

それから connect が正しいスペルです。

山口
yamaguch
 
記事: 482
登録日時: 2010年7月06日(火) 17:37

Re: LS20031の使用方法について

投稿記事by 樫原 輝 » 2012年12月17日(月) 18:42

ありがとうございます。
一度試してみます。
樫原 輝
 
記事: 134
登録日時: 2011年7月07日(木) 17:26

Re: LS20031の使用方法について

投稿記事by 樫原 輝 » 2012年12月21日(金) 18:46

回答ありがとうございます。
いろいろ試してみた結果、配線のrx,txが逆だったようです。
通信速度は115200で通信することが出来ました。
しかし、テキストは表示されたのですが、以下のように改行がうまくいかず、データも不規則です。
$GPGGA,091017.066,,,,,,G,E,P0.2$T,$GPGGA,091017.166,,,,
,VS,E1R101$T0
$GPGGA,091017.266,,,,,,G,E,P202$T,$GPGGA,091017.366,,,,,VG,E1P301$T0$GPGGA,091017.466,,,,,,G,1,P..2$,,$GPGGA,091017.566,,,,,,G,E,P502$T,$GPGGA,091017.666,,,,,,G,E,P602$T,$GPGGA,091017.766,,,,,VG,E1P701$T0
$GPGGA,091017.866,,,,,,G,1,3C,0,VM0$GPGGA,091017.966,,,,,VG,E13,V0,T,0$GPGGA,091018.066,,,,,VS,E1P001$T0
$GPGGA,091018.166,,,,,VG,E,P102$T0$GPGGA,091018.266,,,,,VG,E,P202$T0$GPGGA,091018.366,,,,,VG,E,P302$T0$GPGGA,091018.466,,,,
,VS,E1R401GT0
$GPGGA,091018.566,,,,,VS,E1P501$T0


何が原因かわかりません。
一度、出力が悪いと思い、抵抗を入れてみたのですが、うまくいきません。
何が原因なのでしょうか?
すみませんが、回答よろしくお願いします。
樫原 輝
 
記事: 134
登録日時: 2011年7月07日(木) 17:26

Re: LS20031の使用方法について

投稿記事by yamaguch » 2012年12月25日(火) 13:56

樫原さん、

通信速度が速すぎると受信側でデータを取りこぼしてしまうことがあります。
必要以上に通信速度を上げるのは避けた方がいいでしょうね。
それから改行処理をちゃんとしなければ、改行はされません。
実際にターミナルにどういうコードが送られてきているのかを確認する方がいいと思います。

山口
yamaguch
 
記事: 482
登録日時: 2010年7月06日(火) 17:37

Re: LS20031の使用方法について

投稿記事by 樫原 輝 » 2012年12月26日(水) 14:17

回答ありがとうございます。
パソコン、mbed間の通信速度を、GPSの速度に合わせると使うことが出来ました。
樫原 輝
 
記事: 134
登録日時: 2011年7月07日(木) 17:26


Return to mbed 質問箱

cron