基準時計に対してそれぞれの時計のズレを比較しました。

その比較する時計は、中古で550円のオーディオタイマー パイオニア DT-11(背面に50Hzと60Hzの切替スイッチ有り)と、数年前に千円位で購入したチプカシのA164Wです。基準にする時計はラズパイと1PPS出力付きGNSS受信キットで自作したStratum 1相応のNTPサーバーです。

↓ 次の画像は、先月2月18日にオーディオタイマーとチプカシの時刻を合わせてから31日間放置した状態です。この撮影時、チプカシは15.7秒遅れていますが、オーディオタイマーは僅か1.4秒早まっただけ。この31日間、オーディオタイマーは最大で3.7秒早まり2.8秒遅れただけです。但し私が気まぐれにデータ取りした範囲での事ですが。

↓ 31日間放置中。

↑ これを見た貴方の様に「このチプカシ16.6秒遅れじゃね?」と思った方々に申し上げますと。チプカシの表示が36秒なので、52.6 – 36 = 16.6秒遅れの様に見えますが、実際は動画のコマ送りで確認すると15.7秒遅れなのです。

↓ 私が気まぐれにデータ取りした散布図。何が気まぐれかと言うとサンプリング周期です。気が向いた時にデータ取りしていたので変動に偏りがあると思います。しかし個別のデータの精度は60fps動画をコマ送りしてデータ取りしたので、多分プラスマイナス0.1秒以内かと。

↓ 31日間(以下の画像は、後日121.1日間の物に入れ替えました。サンプル数は166)に渡る時刻のズレを0.1秒単位でプロット。基準の時計は自作したStratum 1 NTPサーバーです。この時計の0.1秒表示用7セグLEDの表示遅延は0.01秒以下(多分)

 

商用電源の周波数はやや変動するらしいので、このオーディオタイマーの様な商用電源周波数を利用する時計は、リセットするタイミングが、商用電源周波数変動の中間値で有れば、寄り正しい時刻を刻むのかなぁ。

数十年前の思い出なのですが、ジャンク購入したパタパタ時計が殆ど狂わなくて、「なんかすげ〜じゃん」と思った事が有りました。

前回のプリント基板発注は人生初でした。そしてまた、調子に乗って改良したプリント基板を前回と同じJLCPCBに発注しました。

なんの基板かと言うと、前回と同じ。でも全く同じでは無くて、GPIO Fan用の端子を追加したり、ラズパイ本体に有る電源コネクタに頼らず、この基板にGPIO給電用のUSB Cコネクタを設けたり、7セグLEDを前回より大きい物にしたりして、基板の大きさも前回よりひと回り大きく100mm x 62mmになりました。基板の大きさは2ドルで収めたいので100mm x 100mm以内にしました。

 

↓ プリント基板 表面

↓ プリント基板 裏面

 

↑ この基板を見て言いたい事は有るでしょうが、素人設計なので良しとしましょう。ベタグランドにもっとビアが必要かもとか、ノイズのアンテナにならない様にしようとか。私も勉強の為にそれらを意識して設計しようと思いましたが、結構面倒だし、この回路は高周波なんか無いしブレッドボードでも問題無く動くので程々にしました。

今月21日夜にガーバーデータをPCB工場にアップロードして、今年最後の今日12月31日午前に私のプリント基板が届きました。届くのは正月明けかなぁと思っていたので嬉しい。今週の月曜日に発送されて、2ドルちょっとの送料で香港から5日で届いた。今回利用した送料の安いOCS Expressはいい。勿論今回利用したプリント基板工場(JLCPCB)も、また利用したい。

↓ 届いたプリント基板

↑ ランドが金メッキ(無電解金メッキ ENIG)だったら、もっといい感じだったんだろうけど、追加料金$15.80だから我慢。この基板は追加料金ゼロのHASL(with lead)です。

 

設計は素人の私ですが、プリント基板製造はプロなので見た目は素晴らしいです。この品質で製造に$2、香港からの送料が$2.03、合計$4.03、日本円合計が546円。たったの546円でプリント基板が出来てしまう。自分で蛇目基板に配線したりエッチングするより遥かに良いと私は思う。

「これでハンダ付すれば良いだけ」って、ちょっと待って。実物を手にするとランド間隔が狭い!

ランド間隔は狭い所で2.54mmなんだけど、こんなに狭かったか? 拡大鏡が必須です。

PCB設計中はPCモニターに拡大して見ていたせいか、実物は小さい!

 

↓ この基板をRaspberry Pi 4に乗せてみました。基板の乗せられた部品はまだハンダ付されていませんけど。

今夜、PCBのガーバーデータをPCB工場のウェブサイトにアップロードしました。人生初!

この記事に付いて初めに理解して欲しいのは『素人の記事』です。全部間違った記事と言っても良いかもしれませんから悪しからず。

 

基板の色は紫にしました。「基板は緑に決まってる」と思って居ましたが、発注先のウェブサイトで紫の基板を見たら一目惚れしてしまいました。

5枚も届くので、1枚は玄関に飾りましょう。

↑ 発注先ウェブサイトのスクリーンショット

↓ KiCadの3D画像

 

見た目は立派ですよね? 今回発注したプリント基板表面の3D画像です。大きさはラズパイの基板と同じで85mm x 56mmです。これはGPS(GNSS)の1PPSを利用した7セグLEDの時計で、ラズパイを使用するので1PPSの利用中はstratum 1のNTPサーバとして機能します。多分。
また、stratum 1のNTPサーバ機能まで要らないなら、GNSSの基板不要でそのプログラムを走らせなければ良いだけです。それでもラズパイにインストールされたntpdで外のNTPサーバに同期して正確な時刻を刻みます。

どちらにしても、この時計はネットワーク環境が必須なのです。ずぼらな私でも時計は正確を好むので、正確な時刻を得るために動く。

 

ここで、発注後になって気付いた残念な事。

金メッキ(無電解金メッキ ENIG)だと思っていたのに、違ってました。
でもENIGにすると$15.8も余計に。ENIGは見た目が立派だけど、ついでに値段も立派? ↓

 

今回の基板サイズは100mm x 100mm以内、材質はガラスエポキシ(FR-4)で最小ロットの5枚。これで製作費用たったの2ドル。送料は安さ優先で2ドルちょっと。合計5ドル以下で見た目が素晴らしい基板が届くとは驚きです。

見た目はプロ級、でも心配。回路図が間違っていなければ動くはずです。私が苦手なアナログ回路な無くて、単純なLチカが63個あるだけですから。

でも昨日、ベタ塗りの所まで来た時、回路図の誤りが判明してビックリ。ピンアサインを間違えたり、3.3V接続の所を5Vにしていたりでビックリです。

もう修正したので大丈夫。ホント?

 

今度は、回路図はそのままでラズパイゼロ用に基板を作ってもいいかな。と言ってもラズパイが在庫切れで買えないけど。いつまで在庫切れが続くんだろう。

 

後日の追記

発注後に、ラズパイ基板の寸法図をぼんやり見ている時、待てよと気になりました。

ラズパイGPIOの1番ピンの位置がずれて無いか気になり調べてみると、基板取付穴中心からX軸Y軸共に0.03mm離れている感じです。もう注文した後だし、誤差の範囲かなぁ? ↓

この基板取付穴がラズパイより大きくて直径3.2mm。ラズパイは2.7mmだから、どうなる?

この他にも、後で思う事と言ったら。ファン用の5Vコネクタも設けておけばよかったと後悔。

 

C言語などで開発する時便利なのが、printf分でターミナルに文字列を出力する事です。

でもPi Picoはディスプレイが無いので
printf(“Hello, world!\n”); と書いても出力先が無いので意味がありません。

その出力先として、USBやUARTを通して母艦PCのターミナルを出力先に出来るとの事です。

私は母艦PCにRaspberry Pi 4を使用しUSBケーブルでPi Picoを繋げています。ですからUSB接続での設定をします。

 

開発中のC言語ソースファイルがあるディレクトリにCMakeLists.txtを用意します。中身は画像の通りです。LXS-TESTとはそのディレクトリ名(フォルダ名)なので参考になるでしょう。 ↓

CMakeLists.txt

add_executable(LXS-TEST
        test.c
        )

target_link_libraries(LXS-TEST pico_stdlib hardware_spi hardware_adc)

# enable usb output, disable uart output
pico_enable_stdio_usb(LXS-TEST 1)
pico_enable_stdio_uart(LXS-TEST 0)

# create map/bin/hex file etc.
pico_add_extra_outputs(LXS-TEST)

# add url via pico_set_program_url
example_auto_set_url(LXS-TEST)

↑ 赤線で囲まれた部分がターミナル関連です。

CMakeLists.txtが用意出来、ビルドが済んだ uf2ファイルをPi Picoに書き込むと、以下のコマンドでウインドウ内にprintf文の出力が表示されます。

$ minicom -b 115200 -o -D /dev/ttyACM0