【DIY修理】Tripmate 850 GPS ロールオーバー
2019年4月7日に「GPS週数ロールオーバー」と呼ばれる事象が発生いたしました。
「GPS週数ロールオーバー」は一定の周期で発生する仕様上の現象です。
そして、GPSモジュールが故意に「GPS週数ロールオーバー」に対応していなかったため
GPSモジュールにおいて、年月日が間違った情報を返し、正常に利用できなくなりました。
ログを見ると
GPSの日付 99年 は (19)99年を指しているのに対し、Tripmateは 2099年と解釈しているため
2099年となります。
GPSの日付は10bit情報なので、1024週分だけ日付を足してあげればいいことになります。
手順
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を採用する可能性あり。
執筆:2019.10.24
編集: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 |
GPSの日付 99年 は (19)99年を指しているのに対し、Tripmateは 2099年と解釈しているため
2099年となります。
GPSの日付は10bit情報なので、1024週分だけ日付を足してあげればいいことになります。
手順
- 年を下2桁にします。(千百はきりすてます)。
99はもう終わっているため 20xx年月日 - 20xx年月日に1024週たすと、正常な日付になります。
$date = new DateTime('1999-08-22');既存のログを修正する場合は、 $GPRMCの行を修正することになります。
$date->add(new DateInterval('P1024W'));
echo $date->format('Y-m-d') . "\n";
GPSモジュールレベルで修理する場合
1. | GPSモジュールのファームウェアを更新する |
2. | GPSモジュールを交換する |
3. | GPSモジュールの信号を変換する |
1.サポートが終了しているためファームウェアレベルでのアップデートは無理でしょう。
2.GPSモジュールを交換する
交換できそうなGPSモジュールがあれば、交換します
(TripmateのGPSモジュール端子を解析していないので今後に期待)
3.GPSモジュールの信号を変換する
マイコン ATTINY85-20SUR、ATMEGA328P-AU あたりで、モジュールレベルの日付変換器を作れば正常な値になりそう。
フローチャート:GPSモジュール(データ)IO ⇔ マイコンIO ⇔ 本体IO
マイコンの要件:1行分のデータをバッファできる。日付計算変換するだけのプログラム容量がある。IOが4つある。
(TripmateのGPSモジュール端子を解析していないので今後に期待)
収容する場所が極めて小さいため、
ATMEGA328P-AUを採用する可能性あり。
» 続きを読む
カテゴリー: General
2019.10.24