まとめ
このリミックスは、2つのケースを1つに組み合わせ、Pimoroni InkyPHATディスプレイを備えた電子インクディスプレイウィンドウを追加し、40 mmケースファン用の追加取り付けポイントを追加します。他のすべてのファイルは同じですが、印刷しやすいSTL形式に変換されています。このリミックスは、私が使用しているハードウェアに適合するよりエレガントなバ
イントロ
これはかなり簡単なプロジェクトですが、多くのステップがあります。また、4つのSATAドライブの価格を考えると、製造には多少のコストがかかります。私が使用したコンポーネントを使用する必要はありませんが、変更を加える場合は、その違いを考慮する必要があります。より安いドライブを使用する場合、コスト以外にセットアップに大きな違いはないはずです。私は別のプロジェクトですでにそれら
ツール
- はんだり具
- 大型3Dプリンタ
- 2kgのフィラメント(エラーがなければ1本でも可能ですが、、、ええ、私はそれができませんでした。)
ハードウェア
- ラズベリーパイ5 4GB + アクティブクーラー + プロエンダーランスSDカード
-
ラズベリーパイゼロ2w(ヘッダー付き)+通常のSDカード
-
4つの2TB SATA SSDドライブ(サムスン870 EVO)
- ピモロニの赤いInkyPhat電子インクディスプレイ。
-
ジークワームx1009 SATAハットと電源アダプタ
-
ファンたち
- 1 92 mm ファン - 12V
- 2 40 mm ファン - 12V
- ファン スプリッター (箱に入っています)
- 温度センサー
- USBイーサネットアダプタ
組立て用のハードウェア
- M2.5ヒートセットソケット
- さまざまなサイズのネジの束、M2と2.5。
-
M2.5×15 mmのスタンドオフ
- ケーブル
- USB ファンアダプタ
- 4本のSATA 3ケーブル
- マイクロUSBからUSB Aに
組み立て
全てのピースを印刷する(これには数日かかります)。全てのピースをサポート(いたるところ)付きで印刷し、それらが表示される方向に印刷します。
- ケース
- フェイスプレート
- ドライブハウジング
- 4つのドライブケージ
- バックプレート
- ラズベリーパイのソリ
メインケース
- サポートを慎重に取り外す(これは面倒なことです)。
- ケースファンを取り付けます。
- 底部に大きなファン(ロゴが内側に向かっています)
- サイドにあるケースファン
- 全てのファンは、ファンに付属のネジを使用して取り付けられています。
- ケースの裏側にある穴に4つのヒートセットインサートを取り付けます。
ドライブハウジング
- 背面の4つの穴にヒートセットインサートを使用し、各ソケットにスタンドオフを取り付けます。
- 各ドライブケージにSATA SSDを4本のM2ネジで取り付けます(オプションですが省略しても問題ありません。私は合うM2ネジがなかったので、省略しました)。
- GeekwormキットからのSATAと電源ケーブルを各ドライブに接続します。
ラズベリーパイ5を取り付けます
-
基本的なRaspberry Pi Lite OSをSDカードにインストールし、Wi-Fi用に設定します(後ほどイーサネットケーブルが必要になりますが、今のところWi-Fiで設定を行えます)。
- ラズベリーパイのソリの上下の穴に8個のヒートセットインサートを取り付けます。
- スタンドオフを使用してラズベリーパイをソリに取り付けます。
-
Geekworm SATAハットをインストールし、指示に従ってください。
- まだドライブをインストールしないでください。
- 温度センサーを取り付けて、ここの指示に従ってください。
-
必要に応じて、ブレイクアウトボード用の取り付けブラケットを印刷し、ネジで取り付けます。
-
M2.5ネジを使用して(オプションですが、お勧めです)ケースの底からソリを取り付けます。
-
直角ケーブルを使用する場合、左から(0)~(3)の順にSATAドライブを接続してください。最後のドライブは、他の3本のケーブルがドライブに接続されている間に、ラズベリーパイに接続される直角ブラケットで取り付けなければなりません。これは、他の方法では適合しないためで、私はケースを再度改造したくなかったので、ケーブルを逆に接続したのです。
-
SATA電源ケーブルをGeekworm Hatに接続してください。
-
まだラズベリーパイに電源を供給しないでください。
-
オプションで、ブレイクアウトボードマウントをケースに接着する(ただし、このステップは最後の方がいいですし、正直言って、私は接着しなかったので、それはただそこに緩く置いてあるだけです)。
- 熱センサーは、SATAケーブルの後ろにある開放空間に入れるはずですが、Zero 2Wの前にあります。
InkyPhatの電子インクディスプレイ。
- ピモロニの指示に従って、InkyPhatスクリーンをZero 2wヘッダーに軽く取り付けます。
- ピの付いたスクリーンをフェイスプレートに取り付けます。
- USBケーブルをZero 2Wに接続し、後方に通すようにしてください。
- USB A側をラズベリーパイの青色(電源付き)USBポートのいずれかに接続します。
- フェイスプレートをケースの前面にスナップします
ここでPimoroniの指示に従って、InkyPhatディスプレイを設定してください。
https://github.com/pimoroni/inky
USB ファンアダプタ
- Raspberry Pi 5のもう一つの青いUSBポートに、USBファンアダプタを接続してください。
- 2つの4ピンYアダプタを取り付けます。
- メインケースファンを最初のYアダプタの最初のポートに接続します。
- もう2つのファンを2つ目のYアダプタの残りのポートに接続します。
- ファンケーブルをすべてソリの下に押し込みます。
この時点では、すべてのケーブルが接続されているはずです。Geekworm電源(USBポートではなく、使用されないもの)を使用してラズベリーパイに電源を供給します。
ソフトウェアのセットアップ
パート1:Raspberry Pi 5のセットアップ
1. Raspberry Pi OSをインストールする。
- フラッシュ ラズベリー Pi OS ライト (64 ビット)を SD カードにインストールする
- ホスト名を設定する: nas.local
- イメージング中にSSHを有効にする
2. SATAハット(Geekworm X1001)を設定する。
ドライバーをインストールする:
wgethttps://geekworm.com/cdn/shop/files/x1001-v1.1.sh
sudo chmod +x x1001-v1.1.sh
sudo ./x1001-v1.1.sh
/boot/firmware/config.txtを編集する:
sudo nano /boot/firmware/config.txt
これらの行を追加してください。
PCIe Gen 3を有効にする
dtparam=pciex1_gen=3
USBの電力を増やす
PSU_MAX_CURRENT=5000
再起動して検証してください:
sudo リブート
sudo lspci # SATAコントローラが表示されるはずです
lsblk # あなたのSSDが表示されるはずです
3.温度センサー(DS18B20)の設定
配線:
- グリーン(接地)→ 黒いワイヤー
- ブルー(ライブ)→ レッドワイヤー
- 紫(データ)→ 黄色のワイヤー(GPIO 4 - ピン 7に接続)
ソフトウェアの構成:
sudo nano /boot/firmware/config.txt
追加:
dtoverlay=w1-gpio
再起動して検証してください:
sudo リブート
sudo modprobe w1-gpio
sudo modprobe w1-therm
ls /sys/bus/w1/devices/ # 28-xxxxデバイスが表示されるはずです
4. OpenMediaVaultをインストールする
wget -O -https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install| sudo bash
OMVを設定する:
- ウェブUIにアクセスするには、http://nas.local をご覧ください。
- ログイン: admin / openmediavault
- すべての4つのSSDをフォーマットする(ストレージ→ディスク)。
- md-admプラグインをインストールする(システム→プラグイン)
- RAID 5アレイを作成する(ストレージ→RAID管理)
- RAIDアレイ上にファイルシステムを作成する。
- 共有フォルダを作成し、必要に応じてSMB/NFSを設定する。
5.監視サービスをインストールする
リポジトリをクローンしてください:
cd ~
git clonehttps://github.com/adunderwood/RaspberryPi_NAS.git
cd RaspberryPi_NAS/Raspberry\ Pi\ 5/
依存関係をインストールする:
sudo apt update
sudo apt install python3-pip -y
pip3 install -r requirements.txt
サービスを設定する:
.env.example を .env にコピーする。
ナノ .env
必要に応じて設定を調整してください(ほとんどのユーザーにはデフォルトの設定で問題ないです)。
LOG_DIR=/home/nas/services
MAX_LOG_LINES=2000
ログ間隔=3
SAVE_INTERVAL=60
TEMP_UNIT=F
サービスをインストールして有効にする:
sudo mkdir -p /home/nas/services
sudo cp nas_service.py /home/nas/services/
sudo cp .env /home/nas/services/
sudo cp services/nas_service.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable nas_service
sudo systemctl start nas_service
実行中かどうかを確認してください。
sudo systemctl status nas_service
カールhttp://localhost:5000/cpu
カールhttp://localhost:5000/raid
パート 2: Raspberry Pi Zero 2Wのセットアップ
1. Raspberry Pi OSをインストールする。
- フラッシュ ラズベリー Pi OS ライト (32 ビット) を SD カードにインストールする
- イメージング中にWiFiとSSHを設定する。
- ホスト名を設定する: display.local
2.システムを設定する
sudo raspi-config
有効にする:
- インターフェイス オプション → SPI(InkyPHATのために)
- インターフェイス オプション → I2C(InkyPHATのために)
3. InkyPHATドライバーをインストールする
カールhttps://get.pimoroni.com/inky| bash
プロンプトが表示されたときに「InkyPHAT」を選択してください。
ディスプレイをテストしてください:
python3 ~/Pimoroni/inky/examples/phat/hello-world.py
4.ディスプレイソフトウェアをインストールする
リポジトリをクローンしてください:
cd ~
git clonehttps://github.com/adunderwood/RaspberryPi_NAS.git
cd RaspberryPi_NAS/Raspberry\ Pi\ Zero\ 2w/
仮想環境を作成する:
python3 -m venv ~/.virtualenvs/pimoroni
ソース~/.virtualenvs/pimoroni/bin/activate
依存関係をインストールする:
pip install inky pillow requests python-dotenv sparklines font-fredoka-one
環境を設定する:
.env.example を .env にコピーする。
ナノ .env
必要に応じて、NASのホスト名/IPを更新してください。
APIエンドポイント(nas.localをあなたのPi 5のホスト名またはIPに調整してください)
NAS_URL=http://nas.local:5000/raid
温度のURL=http://nas.local:5000/temperature
CPU_URL=http://nas.local:5000/cpu
CPU_TEMP_URL=http://nas.local:5000/cpu_temp
表示設定
テーマ=光
WARN_PERCENT=90
WARN_TEMP=90
FONT_DIR=/home/nas/fonts
ディスプレイスクリプトラッパーを設定する:
chmod +x display.sh
./display.sh
ディスプレイにNASの統計値が更新されるはずです!
5.自動更新(Cron)を設定する
クロンタブ -e
毎5分更新するには、この行を追加してください。
/5 * /home/nas/display/display.sh
建築の概要
統合監視サービス(Pi 5)
1つのサービスで7つ以上の別々のスクリプトを置き換えます。
- CPUの使用量、CPU温度、環境温度、RAIDステータスを収集します。
- ポート5000でREST APIを経由してデータを提供する。
- 自動ログ回転(最後の2000回の読み取りを保持)
- センサー障害に対する強固なエラーハンドリング
- 合計100KBのログサイズ(旧バージョンの35MB以上に対して)
APIエンドポイント:
- http://nas.local:5000/cpu - CPU 使用率 %
- http://nas.local:5000/cpu_temp - CPUの温度(°C)
- http://nas.local:5000/temperature - 周囲温度
- http://nas.local:5000/raid - RAIDディスクの使用状況
ディスプレイスクリプト(Pi Zero 2W)
- 監視サービスからデータを取得する。
- InkyPHATの電子インクディスプレイに統計値をレンダリングする。
- 警告時に自動的に赤いテーマに切り替わる。
- クロンを介して5分おきに更新
トラブルシューティング
サービスの問題を監視する
サービスが開始されない:
sudo journalctl -u nas_service -n 50テストのエンドポイント:
curl http://localhost:5000/cpucurl http://localhost:5000/cpu_tempcurl http://localhost:5000/temperaturecurl http://localhost:5000/raid温度センサーが見つかりませんでした。
- GPIO 4の配線をチェックしてください。
- /boot/firmware/config.txt で dtoverlay=w1-gpio を検証してください。
- 実行:ls /sys/bus/w1/devices/
RAIDが表示されない:
- RAIDアレイを検証する: df -h | grep /dev/md
- OMVの設定を確認してください。
表示の問題
ディスプレイが更新されない:
- クロンジョブを確認する: crontab -l
- ネットワークを確認してください: ping nas.local
- テストAPI: curl http://nas.local:5000/cpu
- ログを確認する: journalctl -u nas_service
ディスプレイにエラーが表示されます。
- ディスプレイ.shでvirtualenvがアクティブになっていることを確認してください。
- フォントディレクトリが存在するか確認する: ls /home/nas/fonts/
- 手動でテストする: ./display.sh
InkyPHATが機能しない:
- SPI/I2Cが有効かどうかを確認する: sudo raspi-config
- 例でテスト:python3 ~/Pimoroni/inky/examples/phat/hello-world.py
GitHub リポジトリ
完全なソースコード、詳細なドキュメント、および設定例:
https://github.com/adunderwood/RaspberryPi_NAS
各Piには、段階的な指導書を含む独自の詳細なREADMEがあります。
- ラズベリーパイ 5/README.md - 監視サービスの設定
- ラズベリーパイ ゼロ 2w/README.md - ディスプレイの設定
ヒントとノート
パフォーマンス:
- 4つのSSDを使用したRAID 5は、1つのドライブの冗長性で約5.5TBの使用可能なストレージ容量を提供します。
- ピー5 PCIe Gen 3は、フルSATA速度を実現します
- E-inkディスプレイは電力消費が最小限に抑えられ、日光の下でも読みやすい仕様になっています。
カスタマイズ:
- ディスプレイの.envファイルで、WARN_PERCENTとWARN_TEMPのしきい値を調整してください。
- 表示テーマを変更する: THEME=light|dark|red
- クロンタブのリフレッシュ間隔を変更する(デフォルト:5分)。
メンテナンス:
- ディスクがいっぱいにならないように、ログは自動的に回転します
- 監視サービスは、障害発生時に自動的に再起動します。
- ディスプレイはネットワークの中断にも問題なく対応します
Model Kaynağı
