かなーり昔に作ったGPS置時計
16セグメントLEDを使って表示はレトロっぽく中身は今っぽく作った時計
しばらく倉庫に眠ってたが、今週末のTGGで持っていきたいと思ったので倉庫から引っ張り出してきて電源入れたら。。。

うーん、どうしちゃったのかな??ほとんどのセグメントが点かないし、点いても暗い…
無造作に倉庫に放り込んでたから壊れちゃったのかな??
でも動かないとかじゃなくて暗いってどーゆーこと?
まあ作ってもう何年もなるし、事務所では常時動かしてたからLEDの寿命とかもあるのかな??

実はもっと大きくて明るくて多機能な時計が弊社にはあるにはある
一昨年ぐらいに作ったRaspberry Pi内蔵のIoT時計
時刻、ラップタイム、フィニッシュタイム、スタートまでのカウントダウン等々タイムを競う競技の時計に対する要求を全て盛り込んだ様な超多機能スポーツクロック
春のイベントではチームの記録を表示して一緒に記念撮影とかやってオオウケでしたよ

今週末のTGGにもこの時計を持っていけばいいんですけどね。。
持っていけばいいんですよね…
でもね、今週末の天気予報、雨ですよ。
しかもね、私、現地まで電車とバスで行くんですよ。
こんなの持っていけないですよね。。。

というわけで、倉庫から引っ張り出してきたGPS置時計を修理します
(前置き長い)

アルミフレームにタップ切って、スモークなアクリル板を皿ネジ止めして作った筐体。なかなか手間のかかる事してるな
仕事が丁寧じゃないか>俺

しかーし、あけてビックリ!

回路は、Arduinoのボードにプロトシールド載せて、そこに小さなブレッドボード両面テープで固定して、ジャンパーワイヤーで配線!!
覚えていないが、おそらく中身はちゃちゃっと作っちゃって見た目(ケース)にだけ時間かけて作ったんじゃないかな~

そして乱暴に扱ってたからか、シールドは半分抜けかかってて、ジャンパーワイヤーは何本か抜けてるし…

16セグメントLEDは以前弊社で販売していた「16セグメントLEDモジュール」を6枚使用。このモジュールはI2Cで制御します。
まだ生基板とかどこかに在庫してると思う

LEDモジュールを固定していたネジが抜けてアルミフレームの隙間でカラカラ言ってたのでとりあえず全部ばらします。

そしたら分解しているうちにI2CもGPSもなにもかも配線が外れてしまいました
配線の写真撮りながらやればよかったよ…

ArduinoはLeonardoですよ。ちょっと珍しいっすね。なんでこいつなんだろ?
きっと余ってたやつなんでしょうね

ネジ穴がバカになってて抜けそうなネジがいくつかあったので、そいつらはタッピングネジに交換しました

ピンヘッダとかジャンパワイヤとかきちんと刺しなおしました
ほんとは全部半田付けしちゃいたいけど、そんなに時間かけてる暇ないんで。

そして元どおり配線して組み立てるわけですが、ばらす前の写真みてもよくわかんない
というわけで回路図かせめてピンアサインでもどこかにメモが残っていないか探したのだが、出てきたのは16セグメントLEDモジュールの資料のみ…

回路図もポート割り当ても見つからないので、とりあえず使ってるGPSモジュールの型番しらべました。GM622Tというモジュールで1pps出力が付いてるのでした。pps出力で秒を同期させてるんすね。まあそうでしょうな。そう作りますよね。
ばらす前の写真みてもシリアル何処使ってるのかわかりません。ch0じゃないみたい。ソフトウェアシリアルかも。。
そして1ppsを突っ込んでるポートもよくわかりません。割込みに使えるポートって何処だ?

まあどうしたってポート割り当てわからんと元に戻せないので、今度はソースを探しました。
いま使ってるPCの中にはもちろん残ってないです。探すのはbitbucketの中です
そしたらそれらしきリポジトリがありましたよ!

leonard_GPS_Clock

これでしょ!
でもねソース見たらね、いきなり先頭にね

#include <LiquidCrystal.h>

って、、ハズレでした。LCD使ってないしね~
でもね、そのそばに

GPS_CLOCK

ってリポジトリが見つかりました。これでしょう!
ビンゴです。これでした。
しかしね、これ、Visual Microなるフォルダがあるんですよ。
なんと!Visual StudioでArduinoの開発ができるっていうんで試してた頃のプロジェクトだったんすね!

とはいえ、いまさらVisual Studioでプラグイン入れてビルドするつもりはないのでとりあえずそのまま

そんでソースみたら、適当ですね。。
後から見直す事とか考えてないですね。
PPS信号名のdefineもありません。。
シリアルは予想どおりソフトウェアシリアルでした。

SoftwareSerial ss(8, 9);

テキトーっすね。8,9がポート番号だろうけど、どっちがRXでどっちがTXなのよ~

PPSの外部割込みも

attachInterrupt(2, ppsInterrupt, RISING);

って、2ってなんなのよ。ポート番号??割込み番号??

APIやライブラリのドキュメントぐぐって、シリアルの割り当てと外部割込みの割り当て、時計のコロン表示はGPIOそのままだからソースからみてやっとポート割り当てが判明しました。


配線しなおしてごらんのとおりちゃんと時計として復活しました!
最上位の桁だけちょっと表示が暗いのが気になるので調べたんだけど、LEDモジュールの寿命なのかな?
最下位の桁にArduinoから電源&I2Cつないでいてあとは6個のLEDモジュールをデイジーチェーンしてるので、電圧下がっちゃってるんじゃないかな?とか思ったけどそうじゃなかった。
16セグメントLEDモジュールを組み立てる暇はないので、今回は取り急ぎこのままで!

この時計、起動してからGPS補足するまでの間は
“GPSCLK”
って表示してるんだけど、せっかくソース見つかったからそこんとこなんか変更しようかと

ところがですね、cloneしたソースをビルドしようとしてもね、一行目の
include <SoftwareSerial.h>
ここからエラーになっちゃうわけですよ。みつからんってね。
ライブラリ入ってないのね。

そんでね、昔のArduinoIDEはライブラリフォルダにライブラリのヘッダーファイルとソースコードとkeyword.txtってファイルとサンプルをぶち込めばよかったんですよ。

ソフトシリアルなんて同じじゃなくても何とかなりますけどね、自作16セグメントLEDのライブラリなんて代替ライブラリなんてありませんがな!
困ったちゃんはそのライブラリのソースコードが今度は見つからんって事
だけどね、またまたbitbucketの中に、ArduinoLibraries ってリポジトリがあったんですよ。自作ライブラリ置き場!

って事でそいつをcloneして、タイトルだけちょこっと変更して、書き込みましたとさ

もう一桁あれば TGG2019 って表示できたんだけどね~

つうことで、TGGオフィシャルクロックはこいつです!
雨降ったら嫌だな~

おしまい