miércoles, 17 de diciembre de 2025

## **VERSIÓN MEJORADA "PLUG AND PLAY"** PASAIA LAB para: RASPBERRY PI OS ;)

 # **Análisis del Script: ¿Es realmente "Plug and Play"?**

WALLET BTC INGRESOS PASAIA LAB ;) 

 

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 ;)

### 🏭 La Fábrica del Futuro: Autónoma, Predictiva y Autoconsciente - **sistema industrial vivo, autónomo e integrado** COMO AFECTA ESTE DESARROLLO A LOS ASPECTOS CIVILIZATORIOS - EUSKADI 2030 UNA REVOLUCION DE LA CIVILIZACION

 El año 2030 se perfila no como una simple actualización de la industria actual, sino como el punto de inflexión hacia un nuevo paradigma ci...