#2 Raspberry Piで作るStratum1 NTPサーバをベランダで動かすまで
ブログ三日坊主もいいところでした(反省)
さて、Twitterへ何気なく投稿した「ベランダNTPサーバ」ですが、大変多くの反応・リプライを頂き驚いているところです。ありがとうございます。
ベランダにきのこアンテナとRaspberry Pi設置してNTP Stratum1運用開始 pic.twitter.com/9mVJ4fC5Ez
— 竹下 (@_notchi) May 4, 2019
そろそろブログも書きたいなと思っていたところでしたので、良い機会として僭越ながらベランダNTPサーバが稼働するまでの一部始終をご紹介させて頂きます。まだ書き始めですが、長くなりそうなので最後まで根気よくお付き合いください。
事前の注意としまして、今回は屋外でAC100Vを扱います。施工不良により感電及び漏電や電気火災等の重大事故つながる虞を十分にはらんでいるため、施工においては自己責任でお願いします。
(自身は第二種電気工事士として免状交付を受けておりますので、その点ご承知おきください。)
きっかけ
趣味として通信(携帯電話基地局)や電力設備(変電所)などのインフラをカメラで撮影するなどという傍から見たらヤバい活動をしていると、よく携帯電話基地局に白いキノコ型の物体がついているのを見かけます。
この白い奴はGPSアンテナで、基地局や設備の時刻同期・基準周波数の生成に利用されていて、我々の通信には欠かせない大切な役割を果たしています。抑えきれない所有欲に駆られ、型番も名前もわからないままGoogleの海を6時間彷徨った結果正体を突き止め、eBay経由で手にすることができました。
南蛮渡来の白いアレを手に入れたのは良いものの、所有欲を満たしただけで使いみちがない。目で愛でるだけにしては余りにも役立たずすぎる。
そんな矢先に飛び込んできたのが「GPSをソースとしたNTPサーバ」でした。
(前置きが長くなってしまってすみません)
Raspberry PiでGPSをソースにしたStratum1 NTPサーバを作る
これが無いと始まりません。
一時期Raspberry PiでStratum1 NTPサーバを作るのがブームになっていたらしく、ググるといっぱい作例が出てきます。私もいくつか参考にして最初は見よう見まねで作ってみましたが、情報が整理されていない物も多くたくさん躓いてしまいました。
そんな情報を整理して、先日技術書典6にて「GPSと仲良くなってNTPサーバを作ろう」という本を会社の有志と出版しました。
もちろんRaspberry Piを使ったNTPサーバの作り方も書いてあります。物を揃えて手順の通りコマンドを投入するだけでStratum 1が動くところまで持っていけるので、ググって試したけどうまくいかないよーという方は是非参考にしてみてください。
機材一覧
今回NTPサーバを作るにあたって揃えた部品を掲載しておきます。きのこアンテナ以外全部秋月電子で揃えられるようにしました。
- Raspberry Pi
Model B/B+であれば2でも3でも問題ありません。私はPi2 Model Bしか持ってなかったので2で作りました。
RaspberryPi3 Model B (ラズベリーパイスリーモデルビー) element14版: マイコン関連 秋月電子通商-電子部品・ネット通販
- ケース
加工しやすくコレがおすすめです。
- GPSモジュール
GPSに加えてGLONASS(ロシア)やQZSS(みちびき/日本)も受信できるすぐれもの。
GNSS(GPS・GLONASS・QZSS)受信機キット 1PPS出力 みちびき3機対応 アンテナ外付タイプ: 組立キット 秋月電子通商-電子部品・ネット通販
- ジャンパーワイヤ
GPSモジュールとPiのGPIO端子を接続するメス-メスケーブル(5pin分)が必要です。私は端子とケーブルがあったので短いのを自作しました。
ブレッドボード・ジャンパー延長ワイヤ(メス−メス) 15cm黒 (10本入): パーツ一般 秋月電子通商-電子部品・ネット通販
- U.FL / SMA 変換ケーブル
ケースにGPSアンテナを接続するSMA端子を搭載するために必要。
SMA−J⇔IPEX(IPX/U.FL)変換ケーブル(120mm) テフロン同軸ケーブル: パソコン関連 秋月電子通商-電子部品・ネット通販
- SMA / N型 変換アダプタ
きのこアンテナはN型端子なので、SMAに変換するアダプタが必要。
- SMA同軸ケーブル
アンテナとGPSモジュールを接続するもの。
- きのこアンテナ
正式名称は Symmetricom 58532A と言います。ebay.com の方で探すと新品で8000円(送料込み)~で手に入ります。運良く中古が出てると2500円程でも。
ここだけの話、新品中古合わせて6個くらい買いました
買ったらあとは作るだけです!とりあえず室内でNTPサーバが動くところまでやってみましょう。
ベランダに出す
ベランダに出すメリットは室内より圧倒的に安定してGPS信号を受信できる事ですが、水濡れ厳禁の機器を屋外で運用するのは意外と気にする所が多く面倒です。屋外で運用するにあたっては何を出すか・設置場所・雨対策・雷対策・通信方式・給電方法の6項目について検討し、折り合いをつける必要があります。
6項目の検討と対策
現地調査(何を出すか)
そもそも何を出すか、現地調査をもとに決めましょう。出せるものはアンテナとRaspberry Piの2つですので、それらを外に設置したとき、どのように給電し屋内と通信させるか先に目処をつけておく必要があります。
- 室内への引き込み経路(同軸・LAN・電源の3本)
- 給電方法
の2つについて現地調査した結果、室内へはエアコンダクトが使え、給電についてはベランダにアース付き防雨型コンセントがあることが分かりました。
洗濯機はベランダに置くことを前提に設計された古いアパートに住んでいるため、屋外に100Vコンセントがついていました。エアコンダクトについてはフレッツ光を引き込むためにも使われており、こちらも室内に何かを引き込む際に使えそうです。
では、まずアンテナだけを外に出した場合のメリットとデメリットを考えます。
今回ベランダに出す目的をもう一度共有すると、GPS信号の受信安定度を上げることにあります。アンテナだけ外に出した場合、Raspberry Piは屋内に設置すればよく余計な雨対策や熱対策等に頭を悩ませずに済むメリットがあります。LANも電源も室内で完結し大変楽です。一方で室内へアンテナから伸びた同軸ケーブルを引き込む必要があり、エアコンダクトの利用は避けて通れません。パテを剥がし通線ワイヤを使って同軸ケーブルを引き込み、再度パテ盛りをするという施工が必要な上に、借家のため引っ越しの際に原状復帰が必要です。この手間(デメリット)を考えた結果エアコンダクトの施工を諦めました。
結果的には屋外にコンセントがあるという地の利を活かし、Raspberry Piの屋外運用をやってみたかったというのもあり、丸ごと外に出してしまうことで同軸と電源の2本についてはベランダで完結させLANケーブルのみフラットケーブルを利用して窓の隙間から宅内に引き込むという方法にしました。
設置場所と設置方法
アンテナとRaspberry Piを丸ごと外にだすことに決まりました。借家のためベランダも狭く設置(固定)する場所は手すりくらいしかありませんが、布団を干すのに邪魔にならない所、室外機を避けメンテナンスしやすい場所にしました。(夏場に室外機からの熱風を受け機器の温度上昇を避けるため)
アンテナの固定について、なかなかスマートにまとめる良い方法が思いつきません。そこで参考にしたのが、過去に撮り溜めたきのこアンテナ写真の数々です。
見返して頭に浮かんだのはステンレスのステーを使って取り付けるか、きのこアンテナ純正のアルミ台座を塩ビパイプに嵌めて手すりに固定する方法でした。腕金方式にするという手も思いつきましたが、重量級になりそうなのでやめました。
最終的にはきのこアンテナをホームセンターに持っていって現物合わせをしつつ、最もシンプルにステーを取り付けて手すりにクランプする方式にしました。結果こちらのほうが良かったと思います。
手すりが思ったより太くてクランプがギリギリになってしまい、ネジ頭で手すりに傷をつけてしまいました。パーツはコの字型のものとアンテナを取り付ける斜めのものを組み合わせて使っています。ホームセンターでそれぞれ400円くらい。
自宅の屋根がベランダより少し突き出ており、雨の影響が軽減される反面、完全なオープンスカイ(天頂が見えていること)にはなりませんがこの状態でも常時7~8個の衛星をキープしていたため、これで妥協しました。
また、事前にどの位置がよくGPS信号を受信できるか調査しました。
この太陽誘電のモジュールで使える公式のWindowsツールがあり、導入してPCとGPSモジュールを接続すると衛星の補足数や種類がグラフィカルに表示されるため、容易に調査可能です。秋月電子のGPSモジュール販売ページからダウンロードできます。(太陽誘電のモジュールをPCと接続するには こんなやつ が必要です)
私は太陽誘電以外にu-bloxのUSB接続できるGPSモジュールを持っていたため、そちらとu-blox公式ツールを利用しました。できることに変わりはありません。
雨対策
ベランダに雨が降り込んでくるため、電子機器を濡らさないよう箱に収容する必要があります。この手の通信機器類を収容する箱(ウォルボックス)は未来工業や日東工業から発売されており、プラスチックから金属製のものまで幅広く選ぶことができます。今回重視したのは以下の4点です。
- メンテナンスしやすいよう容易に開閉可能なドアがついていること
- 内部の機器のLEDを目視確認できるようドアが透明なこと
- ドアの隙間から雨が侵入しにくいよう屋根がついていること
- 電源設備・本体やACアダプタを収容できる余裕のスペースがあること
この4つを満たしたウォルボックスとして、日東工業のOP14-23CAを採用しました。
鍵つきのものもあります。ベランダの手すりへはこれで固定しました。
電線類(LAN・電源)については直接紫外線や雨に晒されないよう、エアコンの耐候型ドレンホースに収容しています。本来であればPF管を正しく利用するところですがドレンホースの可とう性が高く施工しやすかったのでズボラしてしまいました。
ウォルボックスとの接続についてもグロメット(黒いゴムのやつ)に切り込みを入れて刺しているだけです。PF管ならもっとまともなコネクタで施工します。(例など)
運良く28mmのグロメットに16mmのドレンホースがぴったりで、密着度はなかなかです。とりあえずこれでRaspberry Piと電源類は濡れないようになりました。
残すところはアンテナコネクタ部の防水処理です。スタンダードな防水処理として、自己融着(ブチルゴム)テープを巻きます。このテープは巻くとブチルゴムが溶けることで隙間を埋め、水分の侵入を防ぐものです。古河電工のエフコテープ2号を利用しました。絶縁・防水・耐候性に優れており界隈では有名です。
個人的には日東のテープのほうが好きです。
みっちりと巻いたら出来上がりです。
雷対策
雷対策については完全に素人です。2階建て平屋のこのアパートには避雷針もついていません。雨対策の部でオープンスカイについて言及しましたが、天頂が見えるほど補足できる衛星の個数は増えるかわりに雷対策の重要性も上昇します。そんな理由もあり妥協して突き出た屋根の下に設置しています。
雷と避雷針の保護範囲については古くから研究があるようで、保護角や遮へい角と呼ばれています。避雷針とその角度の関係については私も勉強中です。ココらへんが参考になります。
https://www.jstage.jst.go.jp/article/ieejjournal/125/6/125_6_356/_pdf
一応同軸ケーブルの雷対策については専用の品を確保しています。
これも界隈では有名なものみたいです。実はまだ取り付けられておらず、暇ができたら今度はこれを取り付ける予定でいます。
あまり具体的な雷対策はできていませんが、直撃しないよう建物の影に入れつつも衛星の補足個数は稼げる絶妙なポイントを探る必要があります。
通信方式
Raspberry PiがNTPサーバになるので、どうやって通信するか決めます。Pi3から無線LANも使えるようですが、せっかくならちゃんとやりたいところです。現地調査の部でも書いたとおり、LANケーブルは薄いフラットケーブルを利用して窓の隙間から室内へ配線します。
運良く(?)ベランダに出る窓とは別に換気用の窓がついており、こちら側の開閉回数もほぼ通年0なのでこちらに通しました。ベランダ用のはよく開閉するのでLANケーブルも傷みやすくなりこれが最適です。アルミテープで強化された隙間用LANケーブルというものもありますが、結局中身は普通のフラットケーブルなので それフラットケーブルをサッシに通して上からアルミテープ貼ったら同じじゃん という考えに至り5mのフラットケーブルを買って使っています。(まだアルミテープは貼っていませんが)
ウォルボックスへはドレンホースを通っているので、これで雨と紫外線対策はバッチリです。
給電方法
屋外にコンセントがあるので、自分で電線を加工します。
を用意しました。
VFFケーブルは撚り線なので、プラグにねじり接続する人をたまに見かけますが危険なので裸圧着端子をつけた上でネジ接続しましょう。ニチフの圧着工具を使用しました。
電線はドレンホースを通してウォルボックス内まで引き込みます。
電線が重いため下に引っ張られて抜けないよう円状にして木板にサドルで留めています。特に漏電する箇所もありませんが、屋外なので念のために漏電しゃ断器を入れておきました。仮設コンセントはVVFを刺すだけで使えるので大変便利です。露出コンセントの施工は窮屈な筐体内で のの字巻き をしないといけないので面倒だと思いパスしました。(せめてランプレセプタクルくらいの余裕があればやってもよかった)
できあがり
NTPサーバ化したRaspberry Piと6つの検討・対策によりベランダNTPサーバが完成しました。ここからはやろうと思ったができていないシリーズの懺悔コーナーです。
懺悔コーナー
雷対策
先程も書きましたが具体的な対策が素人すぎて全くできていません。先人の知恵求む。
熱対策
Raspberry Piを箱の中に閉じ込めて自然空冷しています。産業用グレードでもないこの機械がどこまで動くか、熱試験と称してこのままにしてみます。壊れたら強制空冷の手段を考えます。多分ベントキャップつけて小さいファンを動かすことになりそうです。(そうすると次は虫が入らないようにフィルター入れるとか考えることが増える)
給電1
せっかく防雨コンセントにアース端子があるのに何も接続していません。
給電2
Raspberry Pi本体への給電方法が普通のACアダプタです(横向きに刺さるアダプタじゃないと蓋が閉まらなくなるのでこれにしています)。USB端子じゃなくてGPIO端子から給電するとか、ACアダプタをもうちょっといいやつにするとか色々考えられますが今の私の知恵で良い方法が思いつきません。
雨対策1
使っている同軸ケーブルの件です。上で紹介した秋月の同軸ケーブルを耐候性について検証・確認していないことを認識しつつ、これも耐久試験だとか言っていきなり屋外利用しました。
RG-316ですね>秋月のやつ。あいつはテフロンなので屋外でもかなり耐えるんじゃないかと思います。
— 椚座 くにゅくにゅ/// 淳介 (@kunukunu) May 5, 2019
結果的には良かったらしい。
ちゃんと買ってはあるんですが、高くて直前にチキって使うのをためらってしまったのは内緒です。
雨対策2
防水処理部の水切り曲げの施工です。
雨水が付着した時にケーブルを曲げて重力で水を切るわけですが、同軸の最下部とブチルの巻終端が近く表面張力や毛細管現象でテープ付近もしくは内部に水が残ってしまう可能性があります。お手本は右の写真のように、ちょっとやりすぎとも言えるくらいに曲げておいたほうが良いはずです。これは調整で後からどうにでもなるようウォルボックス内に余長を作っているので、既に改善済みです。
雨対策3
細かいことですが、手すりにドレンホースを縛る際に利用した結束バンドが非耐候性のものでした。(Twitterでコメントを受けて気づきました)紫外線でボロボロになると手で引っ張ると切れるくらいに脆くなるものもあるので、暇があるときに耐候性の物を買って付け替えておきます。
インシュロックはこれ。指摘されてグサッときたけど耐候グレードの使えば良かった pic.twitter.com/7YbUfcDQ0t
— 竹下 (@_notchi) May 4, 2019
以上で懺悔コーナー終了です。長々とお付き合い頂きありがとうございました。
質問やご意見はコメントかTwitterへお願いします。