micro:bit電波時計プロジェクト




↑クリックすると動画が表示されます
(2020/08/07)

◆事の起こり

私は20年近く、安物のソーラー電波腕時計を愛用しております。全くメンテナンスフリーで、秒単位の正確な時刻を提供してくれるので、乗り換えに秒を争う通勤の際とても助けられました。
パーツが劣化してきたのか、ここ数ヶ月、肝心の標準電波(JJY)の受信に失敗するようになってしまいました。高いものではないので買い替えるのが正解なのでしょうが、機械類は実質修理不能になるまで使う主義なので、受信できないならば電波を増幅するか、ローカルの信号を使えばいいじゃん、ということで秋月電子通商で売っている「JJYシミュレーターキット」を買ってしまったのですね。
http://akizukidenshi.com/catalog/g/gK-02500/


これで腕時計の較正という当初の目的は達成したのですが、ここで余計なことを考えます。w

2001年3月までは標準電波のJJYは5MHz、10MHzという短波で送信されていました。主に受信機の周波数の較正に使われていましたが、音声信号で時刻情報も送っていました。電話の117の時報のような秒、分単位の信号音が送信され、音声で「JJY、JJY、〇時〇分 JST」というコールサインも送信されていました。
現在は40KHz、60KHzという日常では縁のない長波で、ほぼ電波時計専用のようになり、時刻も独特の2進化10進数でコード化されています。
知識としては知っていましたが、そういえはJJYの信号をちゃんと見たことがないな、このシミュレーターからどんな信号出してるんだ...そう言えばaitendoで電波時計モジュール売ってたはず。あれを使えばこいつの出してる信号が見られるな...
ということで、電波時計モジュールを入手してしまいました。

◆aitendoの電波時計モジュール


https://www.aitendo.com/product/9148

CME6005というチップが使われており、バーアンテナもついていて、面倒な部分は処理して頂いているようです。助かります。電源をつなげば出力端子にタイムコードが出て来るはず。


◆そもそもJJYのタイムコードって

JJYは現在はNICT(情報通信研究機構)様が運営しておりますので、そのサイトにオフィシャルの解説があります。
http://jjy.nict.go.jp/index.html
タイムコードについても公式の解説は以下の通りです。

http://jjy.nict.go.jp/jjy/trans/timecode1.html
パルスの長さで「1」「0」「マーカー」の三種類のコードを表現しています。
1ビット分のコードの立ち上がりが秒を表していて、全ての情報を丁度60秒で送信するように作られています。
最初のマーカーが「x時x分0秒」をあらわしますが、分・時の情報を全て取得するのに20秒かかるため、マーカーの時刻がわかるのは20秒後ということになります。
原理的にリアルタイムに時刻を取得することはできず、あくまである程度正確な時計の較正用ということです。

◆micro:bitでタイムコードを解析する

電波時計モジュールの出力は、上記の3種類の幅を持つアナログ信号です。パルスの幅をmicro:bitで取得して、「1」「0」「マーカー」を識別する必要があります。


micro:bitには「入出力端子」のカテゴリに「P0に正パルスが入力されたとき」や「受け取ったパルスの長さ(マイクロ秒)」というブロックがありますが、まさにこういう場面で使う機能でした。


パルスの長さをコードに置き換えて配列に保存しておき、20秒後にBCDのコードを時刻表示に変換する処理を行います。
(デバッグのためシリアルにタイムコードを出力するようにしています。)

◆時計本体はどうしましょ

時計本体もmicro:bitで作りますが、LEDに表示するだけだと面白くないので、この際アナログ時計にします。
機械式の時計を制御する方法も思案しましたが、一番単純にサーボの回転角で表現するようにしました。
構造はレゴ、サーボはレゴ対応のGeekservoの灰色のやつです。
これは一般的な180度サーボと異なり270度回ります。実測すると300度くらい回ってしまいます。Makecodeはサーボは180度までが前提になっていますので、角度を変換する処理が必要になります。
文字盤は見やすいように紙コップで縦型にしました。表示は0時~11時、0分~59分と変則ですが、実用上は問題ありません。


基本的にはタイマーで分単位に文字盤を動かし、電波時計から較正の要求があれば、現在時刻を修正します。




◆実用性はどうなんだろうか

これが意外と実用になります。
もちろん電波時計なので元は正確なのですが、なにせ機械部分が適当すぎるのでどうなんだろう、と思っておりました。
自分の仕事机の上にありますが、実際は家庭で使う場合は「8時35分ぐらい」で問題ないのですね。電波時計のおかげで誤差が担保されているので結構信頼して使えます。

◆さらなる改造案

現状レゴとブレッドボードの仮設なので、構造をちゃんとするのが前提ですが、文字盤の精度を上げるのと時報機能は付けたいかなと。サーボが使えるので「電波鳩時計」も面白いと思います。
本当は機械式の時計の周期制御(振り子やひげゼンマイでやっているところ)をmicro:bitでやりたいのですがね。

とりあえず以上です。