2016-05-20 3 views
0

私はCRIUS Neo-6 GPSモジュールを使用しています.GPSからGPSモジュールを介して10秒ごとにデータを送信したいと思います。私が持っているコードは、次のようになります。ArduinoのGPSデータ

if (Serial1.available() > 0) 
if (gps.encode(Serial1.read())) 
{ 

    double hour = gps.time.hour(); 
    double minute = gps.time.minute(); 
    double second = gps.time.second(); 

    Serial.println("Sending SMS:"); 
    GPRS.print("AT+CMGF=1\r"); 
    delay(100); 
    GPRS.println("AT+CMGS= \"00*********\""); 
    delay(100); 
    GPRS.print("HOUR="); 
    GPRS.print(hour); 
    GPRS.print(" MINUTE="); 
    GPRS.println(minute); 
    GPRS.print(" SECOND="); 
    GPRS.println(second); 
    delay(100); 
    GPRS.print((char)26); 
    delay(100); 
    GPRS.println(); 
    Serial.println("Text sent."); 


    Serial.println(); 
delay(10000); 
} 

Serial1は、GPSモジュールと通信するためのSoftwareSerialインスタンスです。 これで10秒ごとにSMSが送信されますが、データが壊れています。 =

HOUR = 6.00 MINUTE = 37.00 SECOND = 54.00

HOUR = 6.00 MINUTE = 37.00 SECOND = 54.00

HOUR = 6.00 MINUTE = 37.00 SECOND = 54.00

HOUR:私のような何かを得ます6.00分= 38.00秒= 15.00

など..常に同じ2つまたは3つの同一のSMS-es、次に30秒のギャップを持つ次のSMSなどです。常に最新のGPSタイムを送信するために変更する必要はありますか?

答えて

0

1)あなたが使用しているArduinoを教えてください。それはメガかもしれないように見えます。

2)スケッチ全体を投稿し、使用しているライブラリを特定してください。それはTinyGPS ++かもしれないようです。

5)ダブルを使用しないでください。 Arduinoではfloatと同じです。しかし、floatのいずれかを使用しないでください。 intまたは符号なしの文字を使用してください。

今すぐです。サンプルプログラムは動作しましたか?それは良い衛星受信を持っていることを確認します。

次に、GPSが毎秒いくつかの種類のメッセージを送信していることをご存知でしたか?すべてのメッセージに時間フィールドが含まれているわけではありません(table of messages vs. fields参照)。

そして最後に、これらの線は、多くの問題が発生します:スケッチは、これらの遅延で停止している間

delay(100); 
    ... 
delay(100); 
    ... 
delay(100); 
    ... 
delay(100); 
    ... 
delay(10000);[/code] 

、何のGPSの文字が処理されていませんが。しかし、その後、あなたは「もし(gps.encode」と解析され得るためにただ一つのメッセージを待って、あなたは別のSMSを送信する。時間フィールドを持っていなかった、おそらく解析されてしまっただけのメッセージを、あなたは同じ時間を送るようにします。

あなたがUseful Linksで「一度に複数のことを実行する方法」、Arduinoのフォーラムにいくつかの記事を見てみましょう。「シリアル入力の基本を」delayを使用しないようにする方法を研究しなければならない。

をまた、私はより良い書きましたGPSライブラリは、NeoGPSと呼ばれる。それは++ TinyGPSよりもはるかに小さく、高速である。例は、あまりにも、よりよく構成されている。NMEAtimezone.inoは、あなたがやっていることに近いです。あなたはそれを試してみたい場合は、Installation指示に従ってくださいいくつかのプログラムをd NMEA、NME必要に応じて診断およびNMEAorder、NMEAfused。次に、NMEAtimezoneを試して、何をしているのかを変更してください。

+0

あなたの答えをありがとう、私はいくつかの解決策を得ることができた。 –

関連する問題