GPSに興味があり、少し前からArduinoプラットフォームに興味がありました。 そのため、Sparkfunでは、数日差でArduino Duemilanove、
GPS Shield 、
GPS受信機EM-406Aが注文されました。
注文が来て、棚の上に部分的に置かれ、最近、このキットに手が届きました...
Arduinoに接続された組み立て済みのGPSシールド
ハードウェア
- Arduino duemilanove
- GPSシールド
- GPS受信機EM-406A
- LCD WH-0802A
機動性を高めるために、プラットフォームは別のバッテリーで駆動され、新しいスケッチをアップロードするためにのみコンピューターに接続します。
GPSモジュールEM-406Aのピン配列
シールドが存在する場合、ピン配置は概して重要ではありません。2つのコネクタを挿入するだけです。 シールドがない場合は、GNDピンをGNDに、Rxをデジタルピン2に、Txをデジタルピン3に、VCCをPOWER 5Vに接続する必要があります。 注意、灰色のワイヤーは1ではなく、6番目です!
GPSモジュールにはLEDステータスインジケータがあります:
- インジケータは常にオンです-衛星が検索され、座標が決定されています
- インジケータが点滅-座標が設定され、送信されています
- インジケータが点灯せず、シールドに電力が供給されている-コネクタの接触不良またはモジュールがバイナリSiRFプロトコルに切り替えられた
UART / DLINEスイッチ
スイッチを使用して、RxおよびTx GPSモジュールをTxおよびRx Arduinoの脚(UART位置)に接続するか、デジタル2およびデジタル3をピンに接続できます(はんだからジャンパーを外さない場合はDLINE位置)。 スイッチが「DLINE」位置にあることを確認する必要があります。そうしないと、Arduinoでのスケッチで問題が発生する可能性があります。
サイン合成LCDインジケーターの接続
画面の下に別のシールドを購入せず、既存のインジケータを接続しました-WH-0802Aを4ビットモードで。 原則として、この方法で他のサイン合成インジケーターを接続できます。 これを行うには、データシートでピン配列を見つけ、RS、E、D4、D5、D6、D7ラインをデジタルピン(0 ... 3を除く)に接続し、これらのラインがコード、Vss、R / Wで接続される場所を設定することを忘れないでください-GND、Vdd-5V。 Vo出力(コントラスト設定)は、GNDと5Vの間に接続されたポテンショメーターに接続する必要がありますが、それをGNDに接続しただけです-結果のコントラストは私に合っています。
インジケータWH-0802Aのピン割り当て
インジケーターをArduinoに接続する私のオプション
- RS-ピン13
- E-ピン12
- D4-ピン11
- D5-ピン10
- D6-ピン9
- D7-ピン8
- Vss、R / W、Vo-GND
- Vdd-5V
ソフトウェア部
GPSを
使用するには、 TinyGPSと
NewSoftSerialの 2つのライブラリ
が必要です 。 ライブラリはライブラリディレクトリに展開されます。
#include <NewSoftSerial.h>
#include <TinyGPS.h>
#include <LiquidCrystal.h>
TinyGPS gps;
//Tx, Rx
NewSoftSerial nss(2, 3);
// , lcd: RS, E, D4, D5, D6, D7
LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
bool feedgps();
void setup() {
//4800 GPS
nss.begin(4800);
//8 , 2
lcd.begin(8, 2);
lcd.print( "waiting" );
}
void loop() {
bool newdata = false ;
unsigned long start = millis();
long lat, lon;
unsigned long age;
//
while (millis() - start < 1000) {
if (readgps())
newdata = true ;
}
if (newdata) {
gps.get_position(&lat, &lon, &age);
lcd.setCursor(0, 0);
lcd.print(lat);
lcd.setCursor(0, 1);
lcd.print(lon);
}
}
bool readgps() {
while (nss.available()) {
int b = nss.read();
// TinyGPS , \r \n
if ( '\r' != b) {
if (gps.encode(b))
return true ;
}
}
return false ;
}
GPSモジュールをオンにしてスケッチを埋めた後、モジュールがその位置を特定し、有効な座標の発行を開始するまで少なくとも42秒(コールドスタート時間)待つ必要があります。 モジュールが動作モードになると、LEDが点滅します。 私のデスクトップでは、モジュールは常に衛星を見つけることができません-あなたはそれをウィンドウに転送する必要があります。
接続されたディスプレイと受信座標を備えた作業モジュール
ディスプレイの右側には、バックライト用の電源があります。
衛星を決定すると、座標がディスプレイに表示され、1秒ごとに更新されます。
その結果、経験が得られ、GPSのさらなる開発の基礎となりました。
「使用された文学」