ARDUINO GPS CLOCK | クルマ屋 奮闘記

ARDUINO GPS CLOCK


上の画像は、昭和53年11月製 HS130 日産フェアレディーZの三連メーター。
一番左に配されるのは デジタル時計 なのですが、残念ながらブラックアウトしてました。
実用一辺倒ならば、電池駆動かシガーソケット給電の安い時計を貼って仕舞いなんですが・・・
旧車オーナーにとっては、「そこにあるべき数字が踊っていない」ことが非常に哀しい訳であります。

なのでご本人が、中古の三連メーターを2セット落札されましたが、まともに動く時計は一つもなく。
次段、腕の立つ計器屋さん等2ヶ所に送るも、どちらからも修理不可との返答だったそうな。
以上のような経緯で、私が一肌脱ぐことに。。



真っ先に考えたのは、既製品デジタル時計の流用。
このフェアレディーの時計表示窓は、4×1センチほどの小さなものなのに対して、
汎用時計は視認性の関係で、0.56インチLEDが主流のようでした。 それだと縦1センチに収まらず。
あと、時計合わせ機能をどうするのかの問題。
オリジナルの時計ノブを活かせれば最高ですが、それは技術的に少しハードル高いと感じました。
元々の時計化粧パネルを改造しないなら、どこかに隠しボタンを忍ばせることになるでしょう。
しかし旧車というのは、丸2ヶ月程乗らない場合は、バッテリー端子を外しておくのも普通の姿。
久々エンジン始動する度に、妙なスイッチ操作で時刻合わせ強いるのも忍びないなと考えました。

あれこれ呻吟する中で目にしたのは、名古屋の超達人 JA2GQPさん のブログ画像でした。
小さなOLED液晶上に、敢えてクラシックな7セグフォントを選び、自在に操っておられる!
ARDUINO というものが2005年頃イタリアで発祥し世界に広まったことを初めて知りました。
奮励さえすれば、何でも思い通りに好きなことが出来そうな・・・。 これだ!!と確信。

GPS連動の正確無比なデジタル時計 in 旧車フェアレディーZ

何やら良さげな響きです。 実車に組み込むことに成功すれば、私が日本で一番乗りかも?(笑)
オーナー様にご提案し、幸いご裁可頂戴出来たので、あとは猪突猛進あるのみ♪




          ・ ELEGOO ARDUINO NANO
          ・ 0.91" 128x32 OLED
          ・ 3.3V/5V レベルコンバータ
          ・ USB2.0ケーブル ( A to miniB )
          ・ シリアルATAケーブル ( 壊れたPCからの流用品 )
          ・ 配線雑索・収縮チューブ・アセテートテープ
          ・ コネクター ( ETC/ナビ用ケーブルの余り )
          ・ GPS ( 秋月電子 GT-902PMGG、1.5mコード付 みちびきデフォ対応 )

クルマ屋が作るとハード側は、こんな具合です。 ARDUINO 初作品なり。


一方ソフト面、初めて挑んだC++言語のプログラミングも茨の道でした。
OLEDデフォルトのフォントをそのまま使えば手軽なんですが、頑固者の昭和ノスタルジー。
多分、頭の中に「デジタルの数字はコレ!」と刷り込まれているんでしょうね。
惚れ込んだ7セグフォントを、どうしても表示させたかったので、その方法を模索しました。
しかし本当の難関は、スイスUBLOX製チップを積んだ、グローバルな最新GPSとの格闘でした。
目的が自動車搭載なので、「コード付/みちびき対応/起動時間」に着目して選んだのですが、
定番ライブラリー TinyGPSPlus がすんなり使えず、仕方なしにNMEA仕様を勉強しました。
非受信状態のGPSが吐き出すお言葉は・・・・・
          $GNRMC,,V,,,,,,,,,,N*4D
          $GNVTG,,,,,,,,,N*2E
          $GNGGA,,,,,,0,00,99.99,,,,,,*56
          $GNGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*2E
          $GNGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*2E
          $GPGSV,1,1,02,03,,,21,05,,,25*79
          $GLGSV,1,1,00*65
          $GNGLL,,,,,,V,N*7A
初めて見ると、それ何ですかの世界(笑)
各行の意味を把握し、UBLOX英文マニュアル読み解いて「 $PUBX,40 」の呪文を習得。
( 情報量の制御命令 example: GPS.println("$PUBX,40,VTG,0,0,0,0,0,0*5E"); チェックサム計算機 )
苦労の末、時刻読み取り部分その他、ライブラリーに頼らず知恵絞ってほぼ独力で書きました。
されど物は考えようで。
遊び心で色々なシーンを想定して、各種テストを実施し、
改良重ねて最終的には、軽快に動く80行程のプログラムに仕上がったので良しとします。
衛星拾わぬ室内でGPS内部時計に頼った48時間の試験では、誤差数秒程度で発熱誤動作もなし。
完成レベルに達したと判断し、開発を終え、余ったパーツでもう1セット同じものを製作しました。^^


職人気質でこだわった点:
処理時間の関係で、約1秒表示が遅れるのが許せず補正かけました。
作動が一目で判別出来るよう、コロンは必ず点滅させたかったのですが、
GPSの吐き出す情報量の多寡に影響されない仕組みを思いつくのに発想の転換が要りました。
確実に衛星拾う場所であっても、コールドスタートの際に未受信表示「00:00」から始まるので、
それを回避するため、受信待ちを行いつつ、飽きさせない起動画面を設けました。

「言葉で百語るより一見にしかず」ということで、YouTubeデビューも果たしました♪