$(ボタンアコーディオン付きの画像)
免責事項:RasPiにはstratum1 NTPサーバーの1000 + 1実装が既にあることを認識しています。 私のものは千二百になります。 しかし、私はそれについて本当に話したいです、特に結果は(a)ラックにマウントできるデバイスであるため、(b)単なるNTPサーバーよりもわずかに多くのタスクを実行し、(c)かなりの労力を必要としました大衆に感謝される
そのため、タスクは次のように(自分で)設定されました。
- インターネット接続がない場合でも、特定のデバイスがNTPサーバーになる可能性があります。
- 同じデバイスが、ターミナルサーバーとして、またはUSB経由のUPSからのデータ収集デバイスとして機能します。
- 同じデバイスを標準の19インチラックに取り付けることができます。
- 同じデバイスがイーサネットネットワークに有線接続されていました(速度は重要ではありません-コンソールポートはとにかく9600に構成されています)。
- 同じデバイスでラック内の温度を測定できます。
最低価格の基準は設定されておらず、価格の経験的な受容性に基づいてスペアパーツが購入されたことを強調したいと思います。
職業I(より正確に定式化する方法すらわからない)は電子機器の開発にはほど遠いので、Linuxでシステムを構築することに非常に近いため、Raspberry Piを選択しました(プラス、RasPiでそのようなデバイスを構築した経験があります) 、チップだけが少し少なく、悲惨さ-もう少し)。 次のコンポーネントが購入されました。
- Raspberry Pi Model B +自体(RasPi2-リソースによるオーバーヘッド、さらに高価)
- 「電源」MeanWell PS-05-5(複雑でない回路全体に電力を供給するには1Aで十分であることを以前に確認しました);
- ボード上のAdafruit GPSモジュール(私はまだはんだ付けを学んでいるため、むき出しではなく、SMDとBGAまでではありません);
- DS1307に基づくボード上のAdafruitのRTCモジュール(NTPサーバーの再起動ごとにクロックをリセットする価値はありません);
- AdafruitのRasPiのPerma-proto HAT。
- 16x2文字のLCDディスプレイ(モノクロではなかったため、RGBバックライトを使用する必要があり、最終的には便利になりました)。
- ディスプレイ用のI2C GPIOエキスパンダー。
- デジタル温度センサーDS18B20;
- 19 "1Uプラスチックケース。
- 味のパン粉。
すべてをRasPiに接続することは、次のように決定されました。
- GPSモジュール-UART経由(/ dev / ttyAMA0のコンソールは削除されました);
- RTCモジュール-I2Cに準拠。
- ディスプレイ(GPIOエキスパンダー経由)-I2Cによる;
- 温度センサー-1-Wire(明らかに);
- その他はすべて無料のGPIOで試飲できます。
DB9コネクタを使用して温度センサーを出力しました-3つのセンサーが必要で、それぞれに3つの脚があります。 センサー自体は、通常の電話4線ケーブルで接続されています。
結果は良い仕掛けです!
正面図(オフ):
ボディはドレメルでカットされました。どのモデルでも使用できると思います。 粗い切削穴に研磨材の切削ディスクを使用し(プラスチックが溶けるように)、仕上げに粒度180の研削ディスクを使用しました。また、薄い研削ピークを使用しようとしましたが、柔らかいプラスチックの丸い穴を「研磨」します角をそっと丸めます。 スキンディスクははるかに優れており、正確なカットに使用することもできます(もちろん、カットディスクのようにカットすることはできません)。 まあ、高さ6mmと高さ3mmのスペーサーからもDremelを受け取りましたが、これは特別な焦点ではないと思います。
正面図(付属):
GPSモジュールが衛星を見るかどうかによって、右側の黄色のLEDの点滅が異なります(LEDはFIXモジュールの出力に設定されています)
内面図:
左下はRTCモジュール、右上はGPSモジュール、左上はRasPi自体、中央は「電源」です。 ベースは、非導電性の帯電防止袋に包まれたアクリル板でできています。
これまでのところ、すべてが機能することを確認するための小さなpythonスクリプトを作成しました。 ここで GPIOエクスパンダーを使用するためにライブラリを取りました。 画面のバックライトは3つのピンで制御され、そのうちの1つはGPIOエキスパンダーで制御され、他の2つはRasPiで別々のGPIOに持ってきました。 たとえば、水色の画面:
画面には、温度センサーの1つからの時刻、日付、および温度が表示されます。
そして、これが黄色い画面です。
配線図から明らかなように、オレンジ色のボタンは通常閉じられており、押すと電源供給が中断されます(要するにリセット)。 しかし、青いボタンを押すとどうなりますか:
青いボタンで、少しスイングしました。 まず、通常は閉じられていますが、忘れてしまいました。 結果として、上昇する前線ではなく、落下する前線の外観をキャッチする必要があります。 そして、第二に、これらのボタンは、判明したとおり、ひどくがたがた音を立てます。 幸いなことに、これはrpi.GPIOライブラリで既に提供されており、コールバック関数が呼び出されない時間を設定できます。
Raspbianの配布パッケージではPPSソースをサポートしていないため、ntpdを少しいじってソースから再構築する必要がありました。これは、クールなstratum1 ntpサーバーにとってはあまり意味がありません。 まあ、同時に、JSONプロトコルをサポートするgpsdを収集しましたが、これには大きな意味はありません-遅延のみが増加し、SHMを介して(明らかに)データを駆動するのがはるかに高速であることがわかりました。 いずれにせよ、デバイスには屋外または路上アンテナに非常に近い場所が必要です。そうしないと、ジッタが不適切な値になり、GPSをタイムソースとして使用できなくなります。 PPSは、Raspbian pps-gpioのモジュールによってサポートされています。
温度センサーは、標準のw1-thermモジュールでもサポートされています。 ダウンロード後、各センサーのIDを持つディレクトリが/ sys / bus / w1 / devicesに表示されます。 各ディレクトリにはw1_slaveファイルがあり、このファイルから温度を読み取ることができます。 美人
箱から出して、デバイスはNTPサーバーとリモート端末の機能を実行できます。 RasPiは非常に安定しており、突然落ちたり、理由もなく落ちたりしないため、OOS管理やUPSからのデータ収集に使用できます。 画面、ボタン、温度センサーを操作するために、このデータをZabbixに報告するか、Zabbixにこのデータを読み取る機能を提供する小さなアプリケーションをロールアップする予定です。 クレイジーなアイデアから-誰かが必要に応じて、DNS内の地理的な場所でレコードを動的に更新できます。
理論的には、3つの温度センサーの代わりに、包含回路が適合する場合、他の1-Wireデバイスを接続できます。 残念なことに、RasPiには1-Wireバスが1つしかないため、3つのセンサーはすべて同じピン上にあるため、機能を単純に拡張することはできません。 ただし、3本の配線を内部でいつでもはんだ付けして、わずかに異なるデバイスを入手できます。
これがそのようなものです。 Scる。