Resumen
Este remix combina las dos partes de la caja en una sola, agrega una ventana de visualización de tinta electrónica con la pantalla Pimoroni InkyPHAT, y agrega puntos de montaje adicionales para los ventiladores de caja de 40 mm. Todos los demás archivos son los mismos, pero se han convertido a STL para facilitar la impresión. Este remix está sujeto a cambios a medida que hago un panel trasero más elegante que se ajust
Introducción
Este es un proyecto bastante fácil, pero tiene muchos pasos. También es un poco caro de producir dado el precio de las cuatro unidades SATA. No tienes que usar los mismos componentes que yo usé, pero donde haces cambios, tendrás que tener en cuenta las diferencias. Si usas unidades más baratas, no debería haber una diferencia significativa en la configuración aparte del costo. Usé las unidades SATA Samsung EVO de 2TB porque ya las tenía para un
Herramientas.
- Herramienta de soldadura.
- Imprimadora 3D de gran formato.
- 2 kg de filamento (puedes hacer esto con uno si no cometes NINGÚN error, pero... sí. No pude hacer eso.)
Hardware.
- Raspberry Pi 5 4GB + enfriador activo + tarjeta SD de alta resistencia.
-
Raspberry Pi Zero 2w (con encabezados) + tarjeta SD normal.
-
Cuatro unidades SSD SATA de 2TB (Samsung 870 EVO)
- Pantalla de tinta electrónica InkyPhat roja de Pimoroni.
-
Gorra SATA Geekworm x1009 con adaptador de alimentación.
-
Fans
- 1 Ventilador de 92 mm - 12v
- 2 ventiladores de 40 mm - 12v.
- Divisores de ventiladores (vienen en la caja)
- Sensor de temperatura.
- Adaptador Ethernet USB.
Hardware de ensamblaje.
- Enchufes de calor M2.5
- Un montón de tornillos de varios tamaños, M2 y 2.5.
-
Separadores M2.5 x 15 mm.
- Cables
- Adaptador de ventilador USB.
- 4 cables SATA 3
- De micro USB a USB A.
Asamblea
Imprime todas las piezas (esto tomará unos días). Imprime todo con soportes (en todas partes) en la orientación en la que aparecen.
- Caso
- Placa frontal.
- Vivienda para conductores.
- Cuatro (4) jaulas de unidad.
- Placa trasera.
- Trineo de Raspberry Pi.
Caso Principal
- Retira los soportes con cuidado (esto es tedioso)
- Instala el ventilador de la caja.
- Gran ventilador en la parte inferior (el logotipo está orientado hacia adentro)
- Los fans de Case al lado.
- Todos los ventiladores montan el soporte utilizando los tornillos que vienen con los ventiladores.
- Instala cuatro insertos de fijación térmica en los orificios en la parte posterior de la caja.
Vivienda Drive
- Use inserciones de fijación térmica en los cuatro orificios de la parte posterior, e instale un separador en cada zócalo.
- Monta un SSD SATA en cada jaula de unidad utilizando 4 tornillos M2 (o no, honestamente es opcional, yo no tenía ningún tornillo M2 que encajara, así que lo omití).
- Conecte los cables SATA y de alimentación del kit de Geekworm a cada unidad.
Monta el Raspberry Pi 5
-
Instala un sistema operativo básico de Raspberry Pi Lite en una tarjeta SD y configúralo para Wifi (necesitarás un cable Ethernet más tarde, pero por ahora podemos hacer nuestra configuración a través de wifi).
- Instale 8 inserciones de calefacción en los orificios superior e inferior del trineo de Raspberry Pi.
- Monta el Raspberry Pi en el trineo usando separadores.
-
Instala el sombrero SATA de Geekworm y sigue las instrucciones.
- No instales los discos todavía.
- Instala el sensor de temperatura y sigue las instrucciones aquí.
-
Opciónally, imprime el soporte de montaje para la placa de expansión e instálalo con tornillos.
-
Monta el trineo en la caja desde abajo usando tornillos M2.5 (opcional, pero recomendado).
-
Conecte las unidades SATA en orden, comenzando desde la izquierda (0) hasta (3). Si utiliza cables de ángulo recto, la última unidad debe montarse con el soporte de ángulo recto que entra en la Raspberry Pi, mientras que los otros tres cables tendrán los soportes de ángulo recto que entran en las unidades. Esto se debe a que no encaja de ninguna otra manera y no quería modificar la carcasa de nuevo, así que simple
-
Conecte el cable de alimentación SATA al Geekworm Hat.
-
Aún no enciendas el Raspberry Pi.
-
Opcionalmente, pegue el soporte de la placa de expansión a la carcasa (pero en realidad es mejor esperar hasta casi el final para este paso y, sinceramente, no lo pegué, simplemente está colgado allí suelto).
- El sensor térmico debería ir en el espacio abierto detrás de los cables SATA, pero delante de Zero 2W.
Pantalla de tinta electrónica de InkyPhat.
- Añade suavemente la pantalla InkyPhat a los encabezados Zero 2w, siguiendo las instrucciones de Pimoroni.
- Monta la pantalla con el Pi en la placa frontal.
- Conecte el cable USB al Zero 2W y páselo a través de la parte trasera.
- Conecte el lado USB A a uno de los puertos USB azules (con alimentación) en la Raspberry Pi.
- Enclava la placa frontal en la parte delantera de la caja.
Sigue las instrucciones de Pimoroni aquí para configurar la pantalla InkyPhat:
https://github.com/pimoroni/inky
Adaptador de ventilador USB.
- Conecte el adaptador de ventilador USB al otro puerto USB azul en la Raspberry Pi 5.
- Añade dos adaptadores Y de cuatro pines.
- Conecte el ventilador de la caja principal al primer puerto del primer adaptador Y.
- Conecte los otros dos ventiladores a los puertos restantes del segundo adaptador Y.
- Meted todos los cables de los ventiladores debajo del trineo.
En este punto, deberías tener todos los cables conectados. Enciende la Raspberry Pi usando la fuente de alimentación de Geekworm (no el puerto USB, que no se usará).
Configuración del software.
Parte 1: Configuración de Raspberry Pi 5
1. Instala el sistema operativo de Raspberry Pi.
- Flash Raspberry Pi OS Lite (64-bit) a tarjeta SD.
- Configure el nombre de host: nas.local
- Habilitar SSH durante la imagenización.
2. Configurar el SATA Hat (Geekworm X1001)
Instala los controladores:
Wget
sudo chmod +x x1001-v1.1.sh
sudo ./x1001-v1.1.sh
Edit /boot/firmware/config.txt:
sudo nano /boot/firmware/config.txt
Añade estas líneas:
Habilitar PCIe Gen 3
dtparam=pciex1_gen=3
Aumenta la potencia del USB.
PSU_MAX_CURRENT=5000
Reiniciar y verificar:
sudo reinicio
sudo lspci # Debería mostrar el controlador SATA.
lsblk # Debería mostrar tus SSDs.
3. Configurar el sensor de temperatura (DS18B20)
Cableado:
- Verde (Tierra) → Cable negro.
- Azul (en vivo) → Cable rojo.
- Púrpura (Datos) → Cable amarillo (conectar a GPIO 4 - Pin 7)
Configuración del software:
sudo nano /boot/firmware/config.txt
Añadir:
dtoverlay=w1-gpio
Reiniciar y verificar:
sudo reinicio
sudo modprobe w1-gpio
sudo modprobe w1-therm
ls /sys/bus/w1/devices/ # Debería mostrar el dispositivo 28-xxxx.
4. Instala OpenMediaVault.
Configure OMV:
- Acceda a la interfaz de usuario web en http://nas.local.
- Inicio de sesión: admin / openmediavault
- Formatar los 4 SSDs (Almacenamiento → Discos)
- Instala el plugin md-adm (Sistema → Plugins)
- Crear matriz RAID 5 (Almacenamiento → Gestión RAID)
- Crear un sistema de archivos en la matriz RAID.
- Crea carpetas compartidas y configura SMB/NFS según sea necesario.
5. Instalar el servicio de monitoreo
Clona el repositorio:
cd ~
git clone
cd RaspberryPi_NAS/Raspberry\ Pi\ 5/
Instalar dependencias:
sudo apt update
sudo apt install python3-pip -y
pip3 install -r requirements.txt
Configure el servicio:
cp .env.example .env
nano .env
Ajuste la configuración si es necesario (los valores predeterminados están bien para la mayoría de los usuarios):
LOG_DIR=/home/nas/services
MAX_LOG_LINES=2000
LOG_INTERVAL=3
SAVE_INTERVAL=60
TEMP_UNIT=F
Instala y habilita el servicio:
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
Verifica que esté funcionando:
sudo systemctl status nas_service
curlhttp://localhost:5000/cpu
curlhttp://localhost:5000/raid
Parte 2: Configuración de Raspberry Pi Zero 2W.
1. Instala el sistema operativo de Raspberry Pi.
- Flash Raspberry Pi OS Lite (32-bit) a tarjeta SD.
- Configure WiFi y SSH durante la imagen.
- Establece el nombre de host: display.local
2. Configurar el sistema.
sudo raspi-config
Habilitar:
- Opciones de interfaz → SPI(para InkyPHAT)
- Opciones de interfaz → I2C.(para InkyPHAT)
3. Instala los controladores de InkyPHAT.
curlhttps://get.pimoroni.com/inky| bash
Selecciona "InkyPHAT" cuando se te lo solicite.
Prueba la pantalla:
python3 ~/Pimoroni/inky/examples/phat/hello-world.py
4. Instala el software de visualización.
Clona el repositorio:
cd ~
git clone
cd RaspberryPi_NAS/Raspberry\ Pi\ Zero\ 2w/
Crear entorno virtual:
python3 -m venv ~/.virtualenvs/pimoroni
Fuente ~/.virtualenvs/pimoroni/bin/activate
Instalar dependencias:
pip install inky pillow requests python-dotenv sparklines font-fredoka-one
Configure el entorno:
cp .env.example .env
nano .env
Actualice el nombre de host/IP del NAS si es necesario:
Puntos finales de la API (ajusta nas.local al nombre de host o IP de tu Pi 5)
NAS_URL=http://nas.local:5000/raid
TEMPERATURE_URL=http://nas.local:5000/temperature
CPU_URL=http://nas.local:5000/cpu
CPU_TEMP_URL=http://nas.local:5000/cpu_temp
Ajustes de pantalla.
TEMA=luz
WARN_PERCENT=90
WARN_TEMP=90
FONT_DIR=/home/nas/fonts
Configure el envoltorio de script de visualización:
chmod +x display.sh
./display.sh
¡La pantalla debería actualizarse con tus estadísticas de NAS!
5. Configurar la actualización automática (Cron)
crontab -e
Añade esta línea para actualizar cada 5 minutos:
/5 * /home/nas/display/display.sh
Resumen de arquitectura.
Servicio de monitoreo unificado (Pi 5)
Un servicio reemplaza a más de 7 scripts separados:
- Recopila el uso de la CPU, la temperatura de la CPU, la temperatura ambiente y el estado de RAID.
- Servir datos a través de la API REST en el puerto 5000.
- Rotación automática de registros (mantiene las últimas 2000 lecturas)
- Manejo robusto de errores para fallas de sensores.
- ~100KB de tamaño total del registro (en comparación con más de 35 MB en versiones anteriores)
Puntos finales de la API:
- http://nas.local:5000/cpu - Uso de la CPU %
- http://nas.local:5000/cpu_temp - Temperatura de la CPU (°C)
- http://nas.local:5000/temperature - Temperatura ambiente.
- http://nas.local:5000/raid - Uso del disco RAID.
Guión de visualización (Pi Zero 2W)
- Obtiene datos del servicio de monitoreo.
- Rendere estadísticas en la pantalla de tinta electrónica de InkyPHAT.
- Cambia automáticamente al tema rojo en las advertencias.
- Actualizaciones cada 5 minutos a través de cron.
Resolución de problemas.
Monitorización de problemas del servicio.
El servicio no comenzará:
sudo journalctl -u nas_service -n 50Puntos finales de prueba:
curl http://localhost:5000/cpucurl http://localhost:5000/cpu_tempcurl http://localhost:5000/temperaturecurl http://localhost:5000/raidSensor de temperatura no encontrado:
- Verifica el cableado del GPIO 4.
- Verifica dtoverlay=w1-gpio en /boot/firmware/config.txt.
- Ejecute: ls /sys/bus/w1/devices/
RAID no se muestra:
- Verificar la matriz RAID: df -h | grep /dev/md
- Verificar la configuración de OMV.
Problemas de visualización.
La pantalla no se actualiza:
- Verificar el trabajo de cron: crontab -l
- Verificar la red: ping nas.local
- API de prueba: curl http://nas.local:5000/cpu
- Verificar los registros: journalctl -u nas_service
La pantalla muestra errores:
- Verifica que virtualenv esté activado en display.sh.
- Verificar si el directorio de fuentes existe: ls /home/nas/fonts/
- Prueba manualmente: ./display.sh
InkyPHAT no funciona:
- Verificar que SPI/I2C esté habilitado: sudo raspi-config
- Prueba con ejemplo: python3 ~/Pimoroni/inky/examples/phat/hello-world.py
Repositorio de GitHub.
Código fuente completo, documentación detallada y ejemplos de configuración:
https://github.com/adunderwood/RaspberryPi_NAS
Cada Pi tiene su propio README detallado con instrucciones paso a paso:
- Raspberry Pi 5/README.md - Configuración del servicio de monitorización.
- Raspberry Pi Zero 2w/README.md - Configuración de la pantalla.
Consejos y notas
Rendimiento:
- RAID 5 con 4 SSD proporciona ~5.5TB de almacenamiento utilizable con redundancia de 1 unidad.
- Pi 5 PCIe Gen 3 habilita velocidades SATA completas.
- La pantalla de tinta electrónica utiliza una cantidad mínima de energía y es legible a la luz del sol.
Personalización:
- Ajuste los umbrales de WARN_PERCENT y WARN_TEMP en la pantalla .env.
- Cambia el tema de la pantalla: TEMA=luz|oscuridad|rojo
- Modificar el intervalo de actualización en crontab (por defecto: 5 minutos)
Mantenimiento:
- Los registros se rotan automáticamente para evitar que el disco se llene.
- El servicio de monitorización se reinicia automáticamente en caso de fallo.
- La pantalla sobrevive a las interrupciones de la red con gracia.
Fuente del modelo
