goo blog サービス終了のお知らせ 

酒と薔薇の日々(その2)

好きなことだけ求めて生きるアスペ気味のINTJ人

GPSモジュール(NEO-6M GPS)届いた。テストOK!

2023年02月13日 18時33分59秒 | マイコン(ESP32・Arduino等)

1月13日にアマゾンへ注文したGPSモジュール(NEO-6M GPS)756円が昨日届いた。
予定は2月6日だけど少し遅れて12日。ま、そんなもんでしょう。
発送は台湾の真向かいにある「福建省 泉州市 石獅市」から。(Ren Heさん)
基盤は静電防止袋そのままプチプチ袋へ

(少し値上がってるね)

【製品仕様】
・ボーレートのデフォルト値:バッテリーなしで9600bps(これは航空便には安全ではありません)バッテリーモデルはMS621FEです 溶接する必要があります。
・アンテナとEEPROMを内蔵したUblox / u-blox NEO-6M GPSモジュールこのモジュールはAPM2およびAPM2.5と互換性があり、 EPROMはすべての設定データを保存できます。
    電圧:3.3V、5V
    ボーレート:9600
    サイズ:約36mm * 24mm
    インターフェース:RS232 TTL
    データバックアップ付き
    LED信号灯付き

アンテナは右端スナップみたいな所へはめ込む。
blox NEO-6M-0-001 が型番かな。
LEDが1個付いてる。
左下には小型ボタン電池が固定されている。リチウムバックアップボタン電池 [MS621FE]
 測ると電圧は0.02Vしか無い。
左上のICは「4A2D」電源用IC
右下のICは「24C32 XJS1532」32kbitのEEPROM

電源は Vらしい。
後はシリアル通信用の信号線を繋ぐだけのようだ。
PPSは1秒毎の信号がパルスで与えられる(はず)

amazonには回路図が載っている。
信号線は3.3Vレベル
消費電力は実測で3.3Vx46mA=151.8mWと。
Q&Aで細かなパラメータをファームに書き込む手順が載っていた。

---------------

まずはUSBシリアル接続
半田コテを握ってピンを水平に付ける。2箇所ほど浮いてしまって水平って結構難しい。
で、接続。赤LEDがは点灯したが、Win10が変換ケーブルのドライバが無いと騒ぐ。
昔の記事を探す。ありましたが色々と問題があるようで・・・
パッチをDLして動かす。

展開中同じ場所でエラーとなる。止むを得ずに無視する。
デスクトップにアイコンが出来たのでこれを起動してインストーラを起動
Donate(寄付)しないのでSkip押下
パソコンをリブートする。ダメダメ

怪しい中華シリアル変換に付き合うのも馬鹿らしい。
しょうがないのでArduinoにGPSを繋げてUNO経由でGPSからのデータを取得することに。
サンプルはこちら様から頂戴しました。(ソフトウエアシリアルを使ってGPSからデータを取得)
ところがぁっ!!純正UNOがCOM認識されない。
しょうがないので先日までEEPROMで使っていたUNOに基盤変更(泣き泣き配線を引っこ抜いて)

今度はちゃんとCOM8で接続
文字化けなどしていたが少しつつくと届き始めました。
Teratermでもすんなりと。

今回は読み込みだけなのでGPSのRXも繋いでいるが、Arduinoから送信すると電圧が5Vになるので
3.3Vで動いているGPSが壊れる可能性があるらしい。
次回からは念のため接続しないようにしましょう。

まだGPS衛星を補足していないので暫くモバ電で屋外放置
衛星補足すれば赤色点滅に変わるそう。

暫くしたら点滅表示に変わっていた。

取り外して室内のPCにつなぎ直し、かなり家が建て込んでいる窓際に置いたが、ちゃんとデータを受信し続けた。

実際のところこの窓の向こう側には高さ10m以上の隣家が2mの盛土の上に建っていて、家と家の隙間は4m程度しかない。
それでも受信できるとは素晴らしい!

今日はここまでです。

参考サイト 記事1 記事2 記事3

下記ソースはこちら様のままです。
ありがとうございます。

#include ”SoftwareSerial.h”
SoftwareSerial mySerial(10, 11); // RX, TX
 
void setup() {
 // Open serial communications and wait for port to open:
 Serial.begin(57600);
 while (!Serial) {
 ; // wait for serial port to connect. Needed for native USB port only
 }
 Serial.println("Goodnight moon!");
 // set the data rate for the SoftwareSerial port
 mySerial.begin(9600);
 mySerial.println("Hello, world?");
}
 
void loop() { // run over and over
 if (mySerial.available()) {
 Serial.write(mySerial.read());
 }
 if (Serial.available()) {
 mySerial.write(Serial.read());
 }
}

=======注文前に調べていた情報メモ========

【GPSモジュールから事項を得てLCD表示】
https://www.hiramine.com/physicalcomputing/arduino/gps_latlong.html
https://smtengkapi.com/engineer-arduino-gps
https://smtengkapi.com/arduino-gps2

【NMEAをGoogleMAP形式に変化ううするツール「轍-wadachi」】
 http://mikioblog.dolphinsystem.jp/2020/11/gps-7.html
 もう1個の変換ツール
 https://forest.watch.impress.co.jp/article/2008/10/24/pot2kml.html

【ArduinoでGPSデーターを扱うライブラリ】ambient
https://pages.switch-science.com/letsiot/location/

先程のデータは生のNMEA-0183フォーマットデータでした。 Arduinoにはこのデータをプログラムで扱いやすいデータに変換する「 TinyGPS++」というライブラリがあります。
インストールはソフトシリアルと同様でTinyGPS++のサイトに行き、 ダウンロードアイコンの先の最新ZIPファイルをダウンロードし、Arduino IDEで「.ZIP形式のライブラリをインストール…」 でZIPファイルをインストールします。
シリアルから読んだGPSデーターを1文字づつライブラリに渡すと、それを解析し、GPSオブジェクトに追加、更新します。 解析中はfalseが返り、1行処理して解析が成功するとtrueが返されます。 シリアルからGPSデータを読んでGPSオブジェクトにする部分は次のようなプログラムになります。

    while (ss.available() > 0) {
        if (gps.encode(ss.read())) {
            break;
        }
     }

【GPSモジュールで生データ例】9桁の文字列(最終文字A、C型がターゲット)
1行まるごとで80文字、最小にして35字程度
$GPGGA,094012.000,3421.1155,N,13402.7798,E,1,5,2.53,-34.1,M,31.6,M,,*4D 
$ GNRMC,094022.000,A,3421.1107,N,13402.7726,E,0.45,231.16,240715,,,A*7D

【GPSのNMEAフォーマット解説】
NMEA 0183
https://www.hiramine.com/physicalcomputing/general/gps_nmeaformat.html

 

この記事についてブログを書く
« AIが2年以内に世界を大変貌さ... | トップ | GPSデータの加工 »