# **Análisis del Script: ¿Es realmente "Plug and Play"?**
CONTACTO: PASAIA LAB tormentaworkfactory@gmail.com
El script que has compartido es **semi-automático** pero **NO es completamente plug and play** por varias razones importantes:
## **PROBLEMAS IDENTIFICADOS EN TU SCRIPT:**
### **1. Falta de comprobaciones previas:**
```bash
# NO verifica:
# - Si ya existe el directorio LCD-show (sobreescritura)
# - Si la pantalla está realmente conectada
# - Si hay conexión a internet
# - Versión del Raspberry Pi OS
```
### **2. Problemas de reinicio automático:**
```bash
# ¡Reinicia SIEMPRE sin confirmación!
# Esto podría ser peligroso si hay procesos importantes ejecutándose
```
### **3. Dependencias no manejadas:**
```bash
# No instala dependencias previas como:
# - git (si no está instalado)
# - build-essential
# - librerías específicas
```
### **4. Sin manejo de errores:**
```bash
# Si falla un comando, sigue ejecutando los siguientes
# Esto puede llevar a un sistema inconsistente
```
## **VERSIÓN MEJORADA "PLUG AND PLAY"**
Aquí tienes un script mejorado con características plug and play:
```bash
#!/bin/bash
# setup_pi_enhanced.sh - Script mejorado con plug and play
# Guardar y ejecutar: chmod +x setup_pi_enhanced.sh && sudo ./setup_pi_enhanced.sh
set -e # Detener script en caso de error
trap 'echo "Error en línea $LINENO. Comando: $BASH_COMMAND"' ERR
# ================= CONFIGURACIÓN =================
LOG_FILE="/var/log/pi_setup_$(date +%Y%m%d_%H%M%S).log"
exec > >(tee -a "$LOG_FILE") 2>&1
# ================= FUNCIONES =================
function check_prerequisites() {
echo "[$(date)] Verificando prerrequisitos..."
# Verificar que es Raspberry Pi
if [ ! -f /proc/device-tree/model ]; then
echo "ERROR: No se detecta Raspberry Pi"
exit 1
fi
# Verificar conexión a internet
if ! ping -c 1 google.com &> /dev/null; then
echo "ERROR: Sin conexión a internet"
echo "Conecta a WiFi/Ethernet y reintenta"
exit 1
fi
# Verificar usuario
if [ "$EUID" -ne 0 ]; then
echo "Por favor, ejecuta como root o con sudo"
exit 1
fi
}
function install_dependencies() {
echo "[$(date)] Instalando dependencias..."
# Actualizar repositorios
apt update || {
echo "ERROR: No se pudo actualizar repositorios"
exit 1
}
# Instalar dependencias básicas
apt install -y \
git \
curl \
wget \
build-essential \
python3-dev \
python3-pip \
python3-venv \
libatlas-base-dev # Para OpenCV
}
function setup_screen() {
echo "[$(date)] Configurando pantalla táctil 3.5\"..."
# Verificar si el driver ya está instalado
if [ -f "/boot/overlays/waveshare35a.dtbo" ]; then
echo "Driver de pantalla ya instalado"
return 0
fi
# Clonar repositorio (con verificación)
if [ -d "LCD-show" ]; then
echo "Eliminando instalación previa..."
rm -rf LCD-show
fi
git clone https://github.com/goodtft/LCD-show.git || {
echo "ERROR: No se pudo clonar repositorio"
return 1
}
cd LCD-show
# Detectar modelo de Raspberry Pi
PI_MODEL=$(cat /proc/device-tree/model | tr -d '\0')
# Instalar driver según modelo
if echo "$PI_MODEL" | grep -q "Raspberry Pi 4"; then
echo "Detectado: Raspberry Pi 4"
./LCD35-show-4B
elif echo "$PI_MODEL" | grep -q "Raspberry Pi 3"; then
echo "Detectado: Raspberry Pi 3"
./LCD35-show-3B
elif echo "$PI_MODEL" | grep -q "Raspberry Pi 5"; then
echo "Detectado: Raspberry Pi 5"
echo "NOTA: Pi 5 puede necesitar configuración manual"
./LCD35-show
else
echo "Modelo no específico, usando instalación genérica"
./LCD35-show
fi
cd ..
# Verificar instalación
if [ -f "/boot/overlays/waveshare35a.dtbo" ]; then
echo "✓ Driver de pantalla instalado correctamente"
else
echo "⚠ Posible problema con instalación de pantalla"
fi
}
function setup_camera() {
echo "[$(date)] Configurando cámara HQ..."
# Habilitar cámara
raspi-config nonint do_camera 0
# Verificar si la cámara está habilitada
if vcgencmd get_camera | grep -q "detected=1"; then
echo "✓ Cámara detectada y habilitada"
else
echo "⚠ Cámara no detectada. Verifica conexión física"
fi
# Instalar software para cámara
apt install -y \
libcamera-apps \
python3-picamera2 \
python3-opencv \
python3-numpy \
python3-pil
# Instalar librerías adicionales para HQ Camera
pip3 install picamera2[gui] || pip3 install picamera2
# Configurar memoria GPU para HQ Camera
echo "Ajustando memoria GPU para HQ Camera..."
raspi-config nonint do_memory_split 256
}
function setup_ssh() {
echo "[$(date)] Configurando SSH..."
# Habilitar SSH
raspi-config nonint do_ssh 0
# Configurar SSH seguro
sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/' /etc/ssh/sshd_config
# Reiniciar servicio SSH
systemctl restart ssh
# Mostrar IP
IP_ADDRESS=$(hostname -I | awk '{print $1}')
echo "SSH habilitado. Conectar con: ssh pi@$IP_ADDRESS"
}
function optimize_system() {
echo "[$(date)] Optimizando sistema..."
# Deshabilitar swap en SSD
systemctl disable dphys-swapfile
systemctl stop dphys-swapfile
# Habilitar TRIM para SSD
systemctl enable fstrim.timer
systemctl start fstrim.timer
# Ajustar swappiness
echo "vm.swappiness=10" >> /etc/sysctl.conf
# Optimizar montaje SSD
if grep -q " / " /etc/fstab; then
sed -i 's/errors=remount-ro/errors=remount-ro,noatime,nodiratime/' /etc/fstab
fi
}
function install_useful_tools() {
echo "[$(date)] Instalando herramientas útiles..."
# Herramientas de sistema
apt install -y \
htop \
nmon \
tmux \
screen \
vim \
neofetch \
rpi-monitor \
gpiozero \
pigpio \
python3-gpiozero
# Interfaz gráfica mejorada
apt install -y \
lxterminal \
chromium-browser \
gpicview \
python3-tk \
thunar
# Multimedia
apt install -y \
vlc \
ffmpeg \
gimp
}
function setup_autostart_apps() {
echo "[$(date)] Configurando autoarranque..."
# Crear directorio si no existe
mkdir -p /home/pi/.config/autostart
# Crear lanzador para terminal
cat > /home/pi/.config/autostart/lxterminal.desktop << EOF
[Desktop Entry]
Type=Application
Name=Terminal
Exec=lxterminal
EOF
# Crear script de bienvenida
cat > /home/pi/welcome.sh << 'EOF'
#!/bin/bash
echo "=========================================="
echo " Raspberry Pi Configurado Correctamente "
echo "=========================================="
echo "Pantalla: 3.5\" táctil"
echo "Cámara: HQ Camera"
echo "Almacenamiento: SSD 512GB"
echo "=========================================="
EOF
chmod +x /home/pi/welcome.sh
}
function finalize_setup() {
echo "[$(date)] Finalizando instalación..."
# Limpiar paquetes innecesarios
apt autoremove -y
apt clean
# Crear archivo de configuración
cat > /home/pi/SETUP_INFO.txt << EOF
CONFIGURACIÓN COMPLETADA - $(date)
================================
Componentes:
- Pantalla: Raspberry Pi 3.5" Touch
- Cámara: HQ Camera 2020
- Almacenamiento: SSD 512GB M.2 SATA
- Sistema: Raspberry Pi OS Bookworm
Configuraciones aplicadas:
1. Drivers pantalla instalados
2. Cámara habilitada
3. SSH configurado
4. Sistema optimizado para SSD
5. Herramientas básicas instaladas
Log completo: $LOG_FILE
================================
Para recalibrar pantalla: DISPLAY=:0 xinput_calibrator
Para probar cámara: libcamera-hello -t 0
Para ver temperatura: vcgencmd measure_temp
================================
EOF
echo "=========================================="
echo " INSTALACIÓN COMPLETADA"
echo "=========================================="
echo "Log guardado en: $LOG_FILE"
echo "Información en: /home/pi/SETUP_INFO.txt"
echo ""
echo "¿Reiniciar ahora? (s/n): "
read -r response
if [[ "$response" =~ ^[Ss]$ ]]; then
echo "Reiniciando en 5 segundos..."
sleep 5
reboot
else
echo "Reinicia manualmente cuando quieras: sudo reboot"
fi
}
# ================= EJECUCIÓN PRINCIPAL =================
main() {
clear
echo "=========================================="
echo " INSTALADOR RASPBERRY PI - PASAIA LAB "
echo "=========================================="
echo "Este script configurará:"
echo "1. Pantalla táctil 3.5\""
echo "2. Cámara HQ 2020"
echo "3. SSH y optimizaciones"
echo "4. Herramientas esenciales"
echo "=========================================="
echo ""
# Ejecutar pasos
check_prerequisites
install_dependencies
setup_screen
setup_camera
setup_ssh
optimize_system
install_useful_tools
setup_autostart_apps
finalize_setup
}
# Ejecutar script principal
main "$@"
```
## **CARACTERÍSTICAS "PLUG AND PLAY" AÑADIDAS:**
### **1. Auto-detección:**
- Detecta modelo de Raspberry Pi
- Verifica conexión a internet
- Comprueba hardware conectado
### **2. Manejo de errores robusto:**
- Se detiene si hay errores
- Log detallado de todo el proceso
- Verificaciones después de cada paso
### **3. Seguridad:**
- Pide confirmación antes de reiniciar
- Configura SSH con autenticación por clave
- No asume nada, verifica todo
### **4. Completamente automático:**
- Instala todas las dependencias
- Configura optimizaciones específicas
- Crea documentación automática
## **CÓMO USARLO:**
```bash
# 1. Descargar script
wget https://ejemplo.com/setup_pi_enhanced.sh
# 2. Dar permisos de ejecución
chmod +x setup_pi_enhanced.sh
# 3. Ejecutar (como root)
sudo ./setup_pi_enhanced.sh
# 4. Seguir instrucciones en pantalla
```
## **CONSEJOS ADICIONALES:**
1. **Antes de ejecutar:** Asegúrate que todo el hardware está conectado correctamente
2. **Durante instalación:** No desconectes la alimentación
3. **Después:** Calibra la pantalla táctil con: `DISPLAY=:0 xinput_calibrator`
4. **Pruebas:** Verifica todo funciona con los comandos de diagnóstico
¿Necesitas alguna modificación específica para tu caso de uso?
CONTACTO: PASAIA LAB tormentaworkfactory@gmail.com
BRAINSTORMING
- Tormenta de Ideas de PASAIA LAB © 2025 by José
Agustín Fontán Varela is licensed under CC
BY-NC-ND 4.0
BRAINSTORMING
- Tormenta de Ideas de PASAIA LAB © 2025 by José
Agustín Fontán Varela is licensed under Creative
Commons Attribution-NonCommercial-NoDerivatives 4.0 International
Tormenta Work Free Intelligence + IA Free Intelligence Laboratory by José Agustín Fontán Varela is licensed under CC BY-NC-ND 4.0

No hay comentarios:
Publicar un comentario
COMENTA LIBREMENTE ;)