【DIY修理】Tripmate 850 GPS ロールオーバー

執筆:2019.10.24
編集:2019.10.24


2019年4月7日に「GPS週数ロールオーバー」と呼ばれる事象が発生いたしました。
「GPS週数ロールオーバー」は一定の周期で発生する仕様上の現象です。

そして、GPSモジュールが故意に「GPS週数ロールオーバー」に対応していなかったため
GPSモジュールにおいて、年月日が間違った情報を返し、正常に利用できなくなりました。

ログを見ると
日付 GPSログ

GPSログ
ファイル
タイムスタンプ

2019/04/05 19/04/05 2019/04/05
2019/04/07 99/08/22 2099/08/22
2019/10/01

00-02-15
(150200)


GPSの日付 99年 は (19)99年を指しているのに対し、Tripmateは 2099年と解釈しているため
2099年となります。

GPSの日付は10bit情報なので、1024週分だけ日付を足してあげればいいことになります。

手順
  1. 年を下2桁にします。(千百はきりすてます)。
    99はもう終わっているため 20xx年月日
  2. 20xx年月日に1024週たすと、正常な日付になります。
PHPの場合
$date = new DateTime('1999-08-22');
$date->add(new DateInterval('P1024W'));
echo $date->format('Y-m-d') . "\n";
既存のログを修正する場合は、 $GPRMCの行を修正することになります。



GPSモジュールレベルで修理する場合
1. GPSモジュールのファームウェアを更新する
2. GPSモジュールを交換する
3. GPSモジュールの信号を変換する
上記の3通りの方法があります。

1.サポートが終了しているためファームウェアレベルでのアップデートは無理でしょう。

2.GPSモジュールを交換する
交換できそうなGPSモジュールがあれば、交換します
(TripmateのGPSモジュール端子を解析していないので今後に期待)

3.GPSモジュールの信号を変換する
マイコン ATTINY85-20SUR、ATMEGA328P-AU あたりで、モジュールレベルの日付変換器を作れば正常な値になりそう。
フローチャート:GPSモジュール(データ)IO ⇔ マイコンIO ⇔ 本体IO
マイコンの要件:1行分のデータをバッファできる。日付計算変換するだけのプログラム容量がある。IOが4つある。
(TripmateのGPSモジュール端子を解析していないので今後に期待)

収容する場所が極めて小さいため、
ATMEGA328P-AUを採用する可能性あり。

» 続きを読む