Kitabı oxu: «Ejercicios prácticos con Raspberry Pi»
Ejercicios prácticos con Raspberry Pi
Ejercicios prácticos con Raspberry Pi
Simon Monk

Edición original publicada en inglés por O’Reilly con el título Raspberry Pi Cookbook, ISBN 978-14-919-3910-9 © Simon Monk 2016.
This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all rights to publish and sell the same.
Título de la edición en español:
Ejercicios prácticos con Raspberry Pi
Segunda edición en español, 2017
© 2017 MARCOMBO, S.A.
Gran Via de les Corts Catalanes, 594
08007 Barcelona
www.marcombo.com
Traducción: Loly Martos
Revisión técnica: Ferran Fàbregas
Diseño de la cubierta: ENEDENÚ DISEÑO GRÁFICO
«Cualquier forma de reproducción, distribución, comunicación pública o transformación de esta obra solo puede ser realizada con la autorización de sus titulares, salvo excepción prevista por la ley. La presente publicación contiene la opinión del autor y tiene el objetivo de informar de forma precisa y concisa. La elaboración del contenido, aunque se ha trabajado de forma escrupulosa, no puede comportar una responsabilidad específica para el autor ni el editor de los posibles errores o imprecisiones que pudiera contener la presente obra.»
ISBN: 978-84-267-2779-4
Producción del ebook: booqlab.com
Tabla de contenidos
Prefacio
1. Ajustes y configuración
1.1 Introducción
1.2 Seleccionar un modelo de Raspberry Pi
1.3 Proteger Raspberry Pi
1.4 Seleccionar una fuente de alimentación
1.5 Seleccionar la distribución del sistema operativo
1.6 Grabar una tarjeta microSD con NOOBS
1.7 Conectar el sistema
1.8 Conectar un monitor DVI o VGA
1.9 Usar un monitor de vídeo compuesto
1.10 Ajustar el tamaño de la imagen al monitor
1.11 Maximizar el rendimiento
1.12 Cambiar la contraseña
1.13 Ajustar Pi para empezar directamente con un sistema de ventanas
1.14 Apagar su Raspberry Pi
1.15 Instalar el módulo de cámara de Raspberry Pi
1.16 Usar bluetooth
2. Redes
2.1 Introducción
2.2 Conectar a una red por cable
2.3 Encontrar la dirección IP
2.4 Configurar una dirección IP estática
2.5 Ajustar el nombre de Raspberry Pi
2.6 Configurar una conexión inalámbrica
2.7 Conectar un cable de consola
2.8 Controlar Pi de forma remota con SSH
2.9 Controlar Pi de forma remota con VNC
2.10 Controlar Pi de forma remota con RDP
2.11 Uso compartido de archivos en una red Mac
2.12 Compartir la pantalla Pi en un Mac
2.13 Usar Raspberry Pi como almacenamiento conectado a la red (NAS)
2.14 Impresión en red
3. Sistema operativo
3.1 Introducción
3.2 Mover archivos de forma gráfica
3.3 Comenzar una sesión de terminal
3.4 Navegar por el sistema de archivos mediante un terminal
3.5 Copiar un archivo o una carpeta
3.6 Renombrar un archivo o carpeta
3.7 Editar un archivo
3.8 Visualizar el contenido de un archivo
3.9 Crear un archivo sin utilizar un editor
3.10 Crear un directorio
3.11 Eliminar un archivo o un directorio
3.12 Realizar tareas con privilegios de superusuario
3.13 Entender los permisos de archivo
3.14 Cambiar los permisos de archivo
3.15 Cambiar la propiedad del archivo
3.16 Hacer una captura de pantalla
3.17 Instalar un software con apt-get
3.18 Eliminar un software instalado con apt-get
3.19 Instalar paquetes de Python con Pip
3.20 Buscar archivos desde la línea de comandos
3.21 Buscar códigos fuente con Git
3.22 Ejecutar un programa o una secuencia de comandos al iniciar
3.23 Ejecutar un programa o una secuencia de comandos como servicio
3.24 Ejecutar un programa o una secuencia de comandos en intervalos regulares
3.25 Encontrar cosas
3.26 Utilizar el historial de la línea de comandos
3.27 Supervisar la actividad del procesador
3.28 Trabajar con archivos comprimidos
3.29 Mostrar los dispositivos USB conectados
3.30 Redirigir la salida desde la línea de comandos a un archivo
3.31 Concatenar archivos
3.32 Usar pipes (tuberías)
3.33 Ocultar la salida al terminal
3.34 Ejecutar programas en segundo plano
3.35 Crear alias de comandos
3.36 Ajustar la fecha y la hora
3.37 Saber cuánto espacio tiene en la tarjeta SD
4. Software
4.1 Introducción
4.2 Crear un centro multimedia
4.3 Instalar programas de ofimática
4.4 Instalar otros navegadores
4.5 Usar Pi Store
4.6 Crear un servidor webcam
4.7 Ejecutar un emulador de juegos de consola vintage
4.8 Ejecutar Minecraft Pi Edition
4.9 Ejecutar un servidor de Minecraft
4.10 Ejecutar Open Arena
4.11 Transmisor de radio Raspberry Pi
4.12 Ejecutar GIMP
4.13 Radio por Internet
5. Fundamentos de Python
5.1 Introducción
5.2 Decidir entre Python 2 y Python 3
5.3 Editar programas de Python con IDLE
5.4 Usar la consola de Python
5.5 Ejecutar programas de Python desde el terminal
5.6 Variables
5.7 Visualizar la salida
5.8 Leer la entrada del usuario
5.9 Aritmética
5.10 Crear cadenas
5.11 Concatenar (unir) cadenas
5.12 Convertir números en cadenas
5.13 Convertir cadenas en números
5.14 Conocer la longitud de una cadena
5.15 Conocer la posición de una cadena dentro de otra
5.16 Extraer una parte de una cadena
5.17 Sustituir una cadena de caracteres por otra dentro de una cadena
5.18 Convertir una cadena en letras mayúsculas o minúsculas
5.19 Ejecutar comandos de forma condicional
5.20 Comparar valores
5.21 Operadores lógicos
5.22 Repetir instrucciones un número exacto de veces
5.23 Repetir instrucciones hasta que alguna condición cambie
5.24 Interrumpir bucles
5.25 Definir una función en Python
6. Listas y diccionarios de Python
6.1 Introducción
6.2 Crear una lista
6.3 Acceder a elementos de una lista
6.4 Conocer la longitud de una lista
6.5 Añadir elementos a una lista
6.6 Eliminar elementos de una lista
6.7 Crear una lista dividiendo una cadena
6.8 Iterar sobre una lista
6.9 Enumerar una lista
6.10 Clasificar una lista
6.11 Cortar una lista
6.12 Aplicar una función a una lista
6.13 Crear un diccionario
6.14 Acceder a un diccionario
6.15 Eliminar elementos de un diccionario
6.16 Iterar sobre diccionarios
7. Python avanzado
7.1 Introducción
7.2 Dar formato a números
7.3 Dar formato a la fecha y hora
7.4 Devolver más de un valor
7.5 Definir una clase
7.6 Definir un método
7.7 Herencia
7.8 Escritura en un fichero
7.9 Lectura de un fichero
7.10 Pickling
7.11 Manejar excepciones
7.12 Usar módulos
7.13 Números aleatorios
7.14 Hacer peticiones web desde Python
7.15 Argumentos de la línea de comandos en Python
7.16 Ejecutar comandos de Linux desde Python
7.17 Enviar correos electrónicos desde Python
7.18 Escribir un servidor web simple en Python
7.19 Hacer más de una cosa a la vez
7.20 No hacer nada en Python
7.21 Usar Python con Minecraft Pi Edition
8. Visión artificial
8.1 Introducción
8.2 Instalar SimpleCV
8.3 Configurar una webcam USB para la visión artificial
8.4 Usar un módulo de cámara de Raspberry Pi para la visión artificial
8.5 Contar monedas
8.6 Detección facial
8.7 Detección de movimiento
8.8 Reconocimiento óptico de caracteres
9. Fundamentos de hardware
9.1 Introducción
9.2 Conocer el camino al conector GPIO
9.3 Mantener su Raspberry Pi segura cuando utilice el conector GPIO
9.4 Configurar I2C
9.5 Usar herramientas I2C
9.6 Configurar SPI
9.7 Instalar PySerial para acceder al puerto serie desde Python
9.8 Instalar Minicom para probar el puerto serie
9.9 Usar una placa de pruebas con cables puente
9.10 Usar una placa de pruebas con Pi Cobbler
9.11 Usar una Raspberry Squid
9.12 Usar el botón Raspberry Squid
9.13 Convertir señales de 5 V a 3,3 V con dos resistores
9.14 Convertir señales de 5 V a 3,3 V con un módulo convertidor de nivel
9.15 Alimentar Raspberry Pi con pilas
9.16 Alimentar Raspberry Pi con una batería LiPo
9.17 Introducción a Sense HAT
9.18 Introducción a Explorer HAT Pro
9.19 Introducción a la placa RaspiRobot
9.20 Utilizar una placa de prototipado para Pi
9.21 Crear un Hardware At Top (HAT)
9.22 Pi Compute Module
9.23 Pi Zero
10. Control de hardware
10.1 Introducción
10.2 Conectar un led
10.3 Dejar los pines GPIO en un estado seguro
10.4 Controlar el brillo de un led
10.5 Producir un zumbido
10.6 Conmutar un dispositivo CC de alta potencia mediante un transistor
10.7 Conmutar un dispositivo de alta potencia con un relé
10.8 Controlar los dispositivos de CA de alto voltaje
10.9 Crear una interfaz de usuario para activar y desactivar cosas
10.10 Crear una interfaz de usuario para controlar la potencia de PWM en ledes y motores
10.11 Cambiar el color de un led RGB
10.12 Usar muchos ledes (Charlieplexing)
10.13 Usar un medidor analógico como pantalla
10.14 Programar con interrupciones
11. Motores
11.1 Introducción
11.2 Controlar servomotores
11.3 Controlar servomotores de manera precisa
11.4 Controlar varios servomotores
11.5 Controlar la velocidad de un motor CC
11.6 Controlar la dirección de un motor CC
11.7 Utilizar motores paso a paso unipolares
11.8 Utilizar motores paso a paso bipolares
11.9 Utilizar un HAT para accionar un motor paso a paso bipolar
11.10 Utilizar una tarjeta RaspiRobot para impulsar un motor paso a paso bipolar
11.11 Crear un robot Rover sencillo
12. Entradas digitales
12.1 Introducción
12.2 Conectar un pulsador
12.3 Conmutar con un pulsador
12.4 Usar un conmutador de dos posiciones o un interruptor deslizante
12.5 Usar un conmutador con la posición central de apagado o un interruptor deslizante
12.6 Eliminar el rebote al pulsar un botón
12.7 Usar una resistencia pull-up externa
12.8 Usar un codificador rotatorio (cuadratura)
12.9 Usar un teclado
12.10 Detectar movimiento
12.11 Añadir un GPS a Raspberry Pi
12.12 Interceptar pulsaciones de teclas
12.13 Interceptar movimientos de ratón
12.14 Usar un módulo de reloj en tiempo real
13. Sensores
13.1 Introducción
13.2 Usar sensores resistivos
13.3 Medir la luz
13.4 Medir la temperatura con un termistor
13.5 Detectar metano
13.6 Medir el voltaje
13.7 Reducir el voltaje para medir
13.8 Usar sensores resistivos con un ADC
13.9 Medir la temperatura con un ADC
13.10 Medir la temperatura de la CPU de Raspberry Pi
13.11 Medir la temperatura, la humedad y la presión con Sense HAT
13.12 Medir la temperatura con un sensor digital
13.13 Medir la aceleración con un módulo MCP3008
13.14 Usar la Unidad de Medición Inercial (IMU) del Sense HAT
13.15 Encontrar el norte magnético con el Sense HAT
13.16 Detectar un imán con un interruptor de láminas
13.17 Detectar un imán con un Sense HAT
13.18 Medir la distancia
13.19 Sensor táctil capacitivo
13.20 Visualizar los valores de un sensor
13.21 Registrar en una unidad flash USB
14. Visualización
14.1 Introducción
14.2 Usar una pantalla led de cuatro dígitos
14.3 Visualizar mensajes en una matriz de led l2C
14.4 Usar la pantalla de matriz de led del Sense HAT
14.5 Visualizar mensajes en un HAT LCD alfanumérico
14.6 Visualizar mensajes en un módulo LCD alfanumérico
14.7 Utilizar una pantalla gráfica OLED
14.8 Usar tiras de ledes RGB direccionables
15. El Internet de las cosas
15.1 Introducción
15.2 Controlar las salidas GPIO mediante una interfaz web
15.3 Visualizar las lecturas de los sensores en una página web
15.4 Enviar correos electrónicos y otras notificaciones con IFTTT
15.5 Enviar tuits con ThingSpeak
15.6 CheerLights
15.7 Enviar los datos de los sensores a ThingSpeak
15.8 Responder tuits utilizando Dweet y IFTTT
16. Arduino y Raspberry Pi
16.1 Introducción
16.2 Programar un Arduino desde Raspberry Pi
16.3 Comunicarse con el Arduino usando el monitor serial
16.4 Configurar PyFirmata para controlar un Arduino desde Raspberry Pi
16.5 Escritura de salidas digitales en un Arduino desde Raspberry Pi
16.6 Utilizar PyFirmata con TTL en serie
16.7 Lectura de entradas digitales de Arduino usando PyFirmata
16.8 Lectura de entradas analógicas de Arduino usando PyFirmata
16.9 Salidas analógicas (PWM) con PyFirmata
16.10 Controlar un servo con PyFirmata
16.11 Comunicación personalizada con un Arduino sobre TTL en serie
16.12 Comunicación personalizada con un Arduino sobre I2C
16.13 Utilizar Arduinos pequeños con Raspberry Pi
16.14 Comenzar con una tarjeta aLaMode y una Raspberry Pi
16.15 Utilizar un shield de Arduino con aLaMode y Raspberry Pi
A. Componentes y proveedores
B. Asignación de patillaje de Raspberry Pi
Prefacio
Lanzado en 2011, Raspberry Pi ha encontrado un papel como un ordenador basado en Linux de muy bajo coste y como una plataforma para los sistemas informáticos incorporados. Resulta popular para los educadores y para los aficionados por igual.
Desde la primera edición de este libro, se han vendido varios millones de Raspberry Pi y se han producido nuevos modelos. Algunos modelos, como los modelos B+, A+ y el modelo B+ de la Pi 2, mejoran la especificación de este dispositivo, surgiendo así Raspberry Pi 2 con procesador de cuatro núcleos y el modelo Raspberry Pi Compute, que proporciona una placa de extensión que puede ser parte de un sistema más grande.
Esta edición ha sido completamente actualizada para abarcar los nuevos modelos de Raspberry Pi, así como los muchos cambios y mejoras de su sistema operativo Raspbian.
Esta edición contiene un nuevo capítulo sobre visión artificial y otro capítulo para hacer proyectos del Internet de las Cosas con Raspberry Pi.
Este libro está diseñado de tal manera que usted puede leerlo linealmente como lo haría con cualquier libro, o acceder a los capítulos de forma individual. Puede buscar en la tabla de contenido aquello que desee y saltar directamente a ese capítulo. Si el capítulo requiere que usted sepa sobre otras cosas, hará referencia a otros capítulos, igual que un libro de cocina podría referirse a una salsa concreta antes de mostrar cómo cocinar algo más elaborado.
El mundo Raspberry Pi se mueve rápidamente. Con una comunidad grande y activa se están desarrollando constantemente nuevas tarjetas de interfaz y bibliotecas de software. Además de los ejemplos que utilizan tarjetas de interfaz o softwares específicos, el libro también cubre los principios básicos para que pueda tener una mejor comprensión de cómo usar las nuevas tecnologías que aparecen a medida que se desarrolla el ecosistema Raspberry Pi.
Como era de esperar, al libro le acompaña una gran cantidad de código (principalmente los programas de Python). Estos programas son de código abierto y están disponibles en GitHub.
Para la mayoría de los capítulos basados en software, lo único que necesita es una Raspberry Pi. Recomiendo la Raspberry Pi 2 o 3. Cuando se trata de capítulos que involucran la fabricación del propio hardware para interconectarlo con Raspberry Pi, he tratado de usar módulos ya preparados, así como las placas de prueba sin soldadura y cables puente, para evitar tener que soldar.
Para aquellos que desean hacer más duraderos los proyectos basados en placas de prueba, aconsejo el uso de placas de prototipos con el mismo diseño que una placa de prueba de tamaño medio, como las vendidas por Adafruit, para que el diseño pueda soldarse.
Convenciones utilizadas en este libro
En este libro se utilizan las siguientes convenciones tipográficas:
Cursiva
Indica nuevos términos, URL, direcciones de correo electrónico, nombres de archivos y extensiones de archivo.
Ancho constante
Utilizado para listados de programas, así como dentro de párrafos para referirse a elementos del programa tales como nombres de variables o funciones, bases de datos, tipos de datos, variables de entorno, enunciados y palabras clave.
Ancho constante en negrita
Comandos u otros textos que deben ser escritos literalmente por el usuario.
Ancho contante en cursiva
Muestra el texto que debe ser reemplazado por valores proporcionados por el usuario o por valores determinados por el contexto.
| Este icono significa un consejo, sugerencia o nota general. |
| Este icono indica una advertencia o precaución. |
| Este icono le señala el vídeo relacionado para esta sección. |
Uso de ejemplos de código
El material complementario (ejemplos de código, ejercicios, etc.) está disponible para descargar en http://www.raspberrypicookbook.com.
Este libro está aquí para ayudarle a hacer su trabajo. En general, si se ofrece código de ejemplo con este libro, puede utilizarlo en sus programas y documentación. No necesita ponerse en contacto con nosotros para obtener ningún permiso a menos que esté reproduciendo una parte significativa del código. Por ejemplo, escribir un programa que utiliza varios fragmentos de código de este libro no necesita permiso. La venta o distribución de un CD-ROM de ejemplos de los libros de O’Reilly necesita permiso. Responder a una pregunta citando este libro y citando el código de ejemplo no requiere permiso. Incorporar una cantidad significativa de código de ejemplo desde este libro a la documentación de su producto requiere permiso.
Apreciamos, pero no pedimos, la atribución. Una atribución generalmente incluye el título, el autor, la edición y el ISBN. Por ejemplo: “Raspberry Pi Cookbook, Segunda Edición, por Simon Monk (O’Reilly). Copyright 2016 Simon Monk, 978-1-491-93910-9.”
Agradecimientos
Como siempre, doy las gracias a mi esposa Linda por su paciencia y apoyo.
También agradezco al revisor técnico Duncan Amos por su buen ojo, buen humor y sus excelentes propuestas que, sin duda, han contribuido en gran medida a este libro.
Gracias también a todo el equipo de O’Reilly, especialmente a los que conocí en la oficina de Cambridge, que fueron muy acogedores cuando fui. Y, por supuesto, a Nan Reinhardt por su copiosa edición.
CAPÍTULO 1
Ajustes y configuración
1.1 Introducción
Al comprar Raspberry Pi está comprando esencialmente una placa ensamblada de circuitos impresos. No incluye ni una fuente de alimentación ni un sistema operativo.
Este capítulo explicará cómo tener su Raspberry Pi configurada y lista para su uso.
Debido a que Raspberry Pi solo utiliza teclados y ratones USB estándares, la mayor parte de la configuración es bastante sencilla, por lo que se concentrará tan solo en las tareas específicas de Raspberry Pi.
1.2 Seleccionar un modelo de Raspberry Pi
Problema
Hay muchos modelos de Raspberry Pi y no está seguro de cuál utilizar.
Solución
Si quiere una Raspberry Pi para uso general, debe comprar el modelo B de la Raspberry Pi 3 o 2. Con cuatro veces más memoria y un procesador de cuatro núcleos, afrontará la mayoría de las tareas mucho mejor que con Pi Zero o con el modelo A+ y sus procesadores individuales. El modelo B de la Raspberry Pi 3 tiene la gran ventaja de tener wifi incorporado, así no necesitará un adaptador wifi USB adicional.
Si por el contrario ha incorporado una Raspberry Pi a un proyecto para un solo propósito, la mejor opción es utilizar el modelo A+ o Pi Zero y así ahorrará algunos euros.
Observaciones
La Figura 1.1 muestra la Pi Zero, el modelo A+ y el modelo B de la Raspberry Pi 2.

Figura 1.1. La Raspberry Pi Zero (izquierda), el modelo A+ (centro) y el modelo B de la Raspberry Pi 2 (derecha).
Como puede ver en la Figura 1.1, el modelo A+ es más pequeño que la Pi 2 y tiene solamente un puerto USB y ningún conector Ethernet RJ45. La Pi Zero es incluso más pequeña, ahorrando espacio al usar una ranura mini para el HDMI y un micro puerto USB. Si desea conectar un teclado y un ratón a la Pi Zero, necesitará adaptadores, tanto para los puertos USB como HDMI para poder conectar los periféricos estándar.
Las diferencias entre todos los modelos de Raspberry Pi hasta la fecha se resumen en la Tabla 1.1.
Tabla 1.1. Modelos de Raspberry Pi.

Si usted tiene uno de los modelos antiguos interrumpidos de Raspberry Pi, son igualmente útiles. No tienen el rendimiento que tiene la última, el modelo B de la Raspberry Pi 3, pero para muchas situaciones no importa.
En el Capítulo 9.22, se introducirá el módulo Raspberry Pi Compute. Está diseñado específicamente para permitir que Raspberry Pi sea incorporado en un producto.
Para saber más
Para obtener más información sobre los modelos de Raspberry Pi, consulte http://es.wikipedia.org/wiki/Raspberry_Pi.
El coste bajo de la Pi Zero hace que sea ideal para añadirla en los proyectos de electrónica sin tener que preocuparse por el precio. Véase el Capítulo 9.23.
1.3 Proteger Raspberry Pi
Problema
Necesita una carcasa para su Raspberry Pi.
Solución
Raspberry Pi no viene con carcasa a menos que usted la compre como parte de un kit. Esto hace que sea vulnerable, ya que hay conexiones descubiertas en la parte inferior de la placa del circuito que pueden producir fácilmente un corto circuito si se coloca en un objeto de metal.
Comprar algo que proteja su Raspberry Pi es una buena idea, por ejemplo, una carcasa. Si tiene intención de utilizar los pines GPIO de Raspberry Pi, puede ver el PiBow Coupé en la Figura 1.2 con un diseño bonito y práctico.
Observaciones
Existe una gran variedad de estilos para elegir, incluyendo:
• Simple, de dos partes, que encajan en cajas de plástico.
• Carcasas montables VESA (para adjuntar a la parte trasera de un monitor o un televisor).
• Carcasa estilo Lego.
• Diseños de carcasas impresas en 3D.
• Diseños acrílicos a presión cortados con láser.
Figura 1.2. Raspberry Pi 2 en un PiBow Coupé
La que compre es cuestión de gustos personales. Sin embargo, algunas de las cosas que hay que considerar son las siguientes:
• ¿Necesita tener acceso al conector GPIO? Esto es importante si va a conectar aparatos electrónicos externos a su Raspberry Pi.
• ¿Está bien ventilada la carcasa? Es importante si va a sobrecargar su Raspberry Pi (Capítulo 1.11) o si va a reproducir vídeos o a jugar, ya que estos generan más calor.
Encontrará kits de disipador de calor que tienen pequeños disipadores autoadhesivos para unir a los chips de su Raspberry Pi. Estos pueden ser de utilidad si está exigiéndole mucho a su Raspberry Pi, como al reproducir muchos vídeos.
Para saber más
Adafruit tiene una gran variedad de carcasas para Raspberry Pi.
También encontrarás muchos estilos de carcasas en los proveedores de Raspberry Pi en eBay.
1.4 Seleccionar una fuente de alimentación
Problema
Necesita seleccionar una fuente de alimentación para su Raspberry Pi.
Solución
La especificación eléctrica básica para una fuente de alimentación adecuada para Raspberry Pi es la que proporciona 5 V de CC (corriente continua).
La cantidad de corriente que la fuente de alimentación debe ser capaz de proporcionar depende tanto del modelo de Raspberry Pi como de los periféricos conectados. Vale la pena conseguir una fuente de alimentación que pueda hacer frente fácilmente a Raspberry Pi y debe considerar 700 mA como mínimo.
Si usted compra su fuente de alimentación en el mismo lugar donde compre la Raspberry Pi, el vendedor le podrá decir si funcionará.
Si va a utilizar un dongle wifi u otros periféricos USB que utilizan cantidades significativas de energía, debería tener una fuente de alimentación que soporte 1,5 A o incluso 2 A. Tenga cuidado con las fuentes de alimentación de muy bajo coste, ya que pueden no proporcionar 5 V de manera precisa y fiable.
Observaciones
En realidad, la fuente de alimentación y el conector son los mismos que los que se encuentran en muchos cargadores de teléfonos inteligentes. Si terminan en un conector micro USB, son, casi con toda seguridad, de 5 V (pero asegúrese). La única pregunta que debe formular es si pueden suministrar suficiente corriente.
Si no pueden, pueden suceder algunas cosas malas:
• Es posible que se calienten y puede haber riesgo de incendio.
• Pueden fallar.
• En momentos de alta carga (por ejemplo, cuando Pi está utilizando un dongle wifi) el voltaje puede caer y Raspberry Pi se reiniciará solo.
En general, busque una fuente de alimentación que pueda suministrar 700 mA o más. Si se especifica un número de vatios (W) en lugar de mA, divida el número de vatios por 5 para obtener la cifra en A. Por lo tanto, una fuente de alimentación de 5 V (10 W) puede suministrar 2 A (2000 mA).
El uso de una fuente de alimentación con, por ejemplo, una corriente máxima de 2 A no utilizará más electricidad que una fuente de alimentación de 700 mA. Raspberry Pi tomará la mayor cantidad de corriente que necesite.
En la Figura 1.3 se mide la corriente tomada por el modelo B de la Raspberry Pi y se compara con modelo B de la Pi 2.

Figura 1.3. Consumo de corriente durante el inicio de Raspberry Pi.
Las Raspberry Pi más recientes (el A+, B+ o Raspberry Pi 2) son mucho más eficientes en cuanto a energía que los modelos más antiguos. Sin embargo, cuando el procesador está totalmente ocupado y tiene una gran cantidad de periféricos conectados, pueden llegar a ser similares.
En la Figura 1.3 puede ver que la corriente rara vez se pone por encima de 500 mA. Sin embargo, el procesador no está haciendo nada realmente. Si reprodujese un vídeo HD, la corriente aumentaría considerablemente. Cuando se trata de fuentes de alimentación, por lo general, es mejor tener algo en reserva.
Para saber más
Puede comprar un módulo que se desconecte de la alimentación cuando la Raspberry Pi se apague en http://www.pi-supply.com/.
1.5 Seleccionar la distribución del sistema operativo
Problema
Hay un número elevado de distribuciones para Raspberry Pi. No sabe cuál utilizar.
Solución
La respuesta a esta pregunta depende de lo que vaya a hacer con su Raspberry Pi.
Para un uso general como ordenador, o para usarlo en proyectos electrónicos, debe utilizar Raspbian, la distribución estándar y oficial para Raspberry Pi.
Si va a utilizar su Raspberry Pi como centro multimedia, existe una serie de distribuciones específicamente para ese propósito (véase Capítulo 4.2).
En este libro utilizamos la distribución Raspbian casi exclusivamente, aunque la mayoría de los ejemplos funcionarán con cualquier distribución basada en Debian.
Observaciones
Las tarjetas microSD no son caras, por lo que consiga unas cuantas y pruebe algunas distribuciones. Si hace esto, es buena idea mantener sus archivos en una unidad flash USB, de manera que no tenga que estar copiándolos en cada tarjeta microSD.
Tenga en cuenta que, si va a seguir los siguientes pasos para escribir su propia tarjeta SD, necesitará tener un equipo con ranura para tarjetas SD (muchos portátiles la tienen), o puede comprar un lector USB de tarjetas SD de bajo coste.
Para saber más
La lista oficial de distribuciones de Raspberry Pi
1.6 Grabar una tarjeta microSD con NOOBS
Problema
Quiere grabar una tarjeta microSD utilizando NOOBS (New Out of the Box Software).
Solución
NOOBS es, con diferencia, la forma más sencilla de obtener un sistema operativo en su Raspberry Pi.
Descargue el archivo de NOOBS de http://www.raspberrypi.org/downloads, extráigalo y colóquelo en una tarjeta microSD. Para ello necesitará un ordenador con ranura para tarjetas SD o un adaptador USB y un adaptador de SD a micro SD.
Una vez haya descargado el archivo de almacenamiento NOOBS, extráigalo y copie los contenidos de la carpeta en la tarjeta SD. Tenga en cuenta que si el archivo extrae la carpeta llamada NOOBS_v1_3_12 o similar, es el contenido de la carpeta el que debe ser copiado en la raíz de la tarjeta micro SD, no la propia carpeta.
Coloque la tarjeta microSD que contiene los archivos extraídos de su NOOBS en su Raspberry Pi y después encienda Raspberry Pi. Cuando arranque, aparecerá la ventana que se muestra en la Figura 1.4. Desde esta pantalla, seleccione Raspbian y luego haga clic en el botón Instalar.
Si está utilizando NOOBS en una A+, verá una lista más corta de opciones, ya que solo se mostrarán las distribuciones para esa plataforma simplificada.
Figura 1.4. Primera pantalla NOOBS.
Recibirá un mensaje de advertencia diciendo que la tarjeta SD será sobrescrita (que está bien) y luego, como la distribución está instalada en la tarjeta SD, verá el progreso en la pantalla acompañado de información útil acerca de la distribución (Figura 1.5).
Figura 1.5. NOOBS sobrescribiendo la tarjeta SD.
Una vez que la copia de archivos se haya completado, recibirá el mensaje Image applied successfully. Raspberry Pi se reiniciará y, automáticamente, se ejecutará raspi_config para que pueda configurar la nueva instalación.
Una vez que esté en funcionamiento, la primera cosa que debe hacer es conectar su Raspberry Pi a Internet (Capítulo 2.2 y 2.6), abra una línea de comandos mediante LXTerminal (Capítulo 3.3), e introduzca el siguiente comando para actualizar su sistema a la última versión.
$ sudo apt-get update
$ sudo apt-get upgrade
Esto tardará un rato.
Observaciones
Para instalar NOOBS correctamente en una tarjeta microSD, la tarjeta debe estar formateada como FAT32. La mayoría de las tarjetas microSD se suministran ya formateadas en FAT32. Si va a reutilizar una tarjeta antigua y necesita darle formato FAT32, utilice las herramientas de su sistema operativo para formatear los dispositivos extraíbles.
El tipo de tarjeta microSD que tenga también afectará a la velocidad de ejecución de su Raspberry Pi cuando su sistema operativo esté instalado. Busque una tarjeta microSD descrita como “clase 10.”
Para saber más
Puede encontrar más información sobre la instalación de su sistema operativo con NOOBS, así como información sobre las diferentes distribuciones disponibles, en https://www.raspberrypi.org/help/noobs-setup/.
1.7 Conectar el sistema
Problema
Tiene todo lo que necesita para su Raspberry Pi y quiere conectarlo todo junto.
Solución
A menos que incorpore su Raspberry Pi en un proyecto o la utilice como centro multimedia, necesita conectar un teclado, un ratón, un monitor y probablemente un dongle wifi, excepto si tiene una Raspberry Pi 3.
La Figura 1.6 muestra un típico sistema de Raspberry Pi.
Figura 1.6. Típico sistema de Raspberry Pi.
Observaciones
A Raspberry Pi le va perfectamente bien cualquier teclado o ratón, alámbrico o inalámbrico. Excepto los teclados y ratones conectados por Bluetooth, que no funcionan con Raspberry Pi.
Si tiene una Raspberry Pi vieja o el modelo A o A+ y se queda sin conexiones USB, necesitará un hub USB.
Para saber más
La guía oficial de inicio rápido de Raspberry Pi
1.8 Conectar un monitor DVI o VGA
Problema
Su monitor no tiene HDMI, pero desea utilizarlo con su Raspberry Pi.
Solución
Mucha gente ha tenido este problema. Afortunadamente, es posible comprar adaptadores para monitores con entrada a DVI o VGA.
Los adaptadores DVI son los más simples y baratos. Se pueden encontrar por menos de 5 euros si se busca “convertidor macho HDMI para hembra DVI”.
Observaciones
El uso de adaptadores VGA es más complejo, ya que requieren un poco de electrónica para convertir la señal de digital a analógico, así que cuidado con los cables que no los contengan. El convertidor oficial se llama Pi-View y está disponible en los distribuidores oficiales de Raspberry Pi. Pi-View tiene la ventaja de haber sido probado para trabajar con Raspberry Pi. Es posible encontrar alternativas más baratas a través de Internet, pero a veces no funcionan.
Para saber más
eLinux tiene consejos sobre lo que debe buscar en un convertidor.
1.9 Usar un monitor de vídeo compuesto
Problema
El texto en su monitor compuesto de baja resolución es ilegible. Es necesario ajustar la resolución a Raspberry Pi para una pantalla pequeña.
Solución
Raspberry Pi tiene dos tipos de salida de vídeo: HDMI y vídeo compuesto desde el conector de audio, para el que necesita un cable especial. De estos, el HDMI es de mejor calidad. Si usted tiene la intención de utilizar la salida de vídeo compuesto para su pantalla principal, es posible que se lo deba replantear.
Si está utilizando la pantalla de ese modo —por ejemplo, porque necesita una pantalla muy pequeña— entonces es necesario hacer algunos ajustes para adaptar la salida de vídeo a la pantalla. Necesitará hacer algunos cambios en el archivo /boot/config.txt.
Puede editarlo en Raspberry Pi utilizando el siguiente comando en una sesión de terminal:
$ sudo nano /boot/config.txt
Si el texto es demasiado pequeño para leerlo y no tiene monitor HDMI, también puede editar el archivo quitando la tarjeta SD de su Raspberry Pi e insertándola en su ordenador. El archivo estará en el directorio raíz de la tarjeta SD y puede utilizar un editor de texto desde su ordenador para modificarlo.
Es necesario conocer la resolución de la pantalla. Para la mayoría de las pequeñas pantallas será 320 por 240 píxeles. Encuentre las dos líneas en el archivo que digan:
#framebuffer_width=1280
#framebuffer_height=720
Suprima el # del principio de cada línea y cambie los dos números a la anchura y altura de la pantalla. En el siguiente ejemplo, las líneas se han modificado para que sean 320 por 240:
framebuffer_width=320
framebuffer_height=240
Guarde el archivo y reinicie su Raspberry Pi. Debe notar que todo es más fácil de leer. Es probable que también vea un borde grande y grueso alrededor de la pantalla. Para ajustarlo véase el Capítulo 1.10.
Observaciones
Hay muchos monitores de circuito cerrado de bajo coste que pueden ir muy bien con su Raspberry Pi cuando esté haciendo algo como una consola retro (Capítulo 4.7). Sin embargo, estos monitores son a menudo de baja resolución.
Para saber más
Para otro tutorial sobre el uso de monitores compuestos, véase este tutorial Adafruit.
También, véase el Capítulo 1.8 y 1.10 para ajustar la imagen cuando se está utilizando la salida de vídeo HDMI.
1.10 Ajustar el tamaño de la imagen al monitor
Problema
Cuando conecte por primera vez Raspberry Pi a un monitor, es posible que algunos textos no se puedan leer al extenderse fuera de la pantalla, o que la imagen no utilice todo el espacio disponible en la pantalla.
Solución
Si el texto se extiende fuera de la pantalla, use la herramienta raspi-config para desactivar overscan.
Para ello, ejecute raspi-config mediante la apertura de una sesión de terminal y ejecute el comando:
$ sudo raspi-config
A continuación, utilice las flechas para desplazarse hacia abajo a Advanced Options y después Overscan, y desactive overscan (Figura 1.7).
Figura 1.7. Seleccionar la opción Overscan.
Si su problema es que hay un gran borde negro alrededor de la imagen, lo puede reducir (y posiblemente eliminar por completo) al editar el archivo /boot/config.txt utilizando el comando:
$ sudo nano /boot/config.txt
Busque la sección que va sobre overscan. Las cuatro líneas que hay que cambiar se muestran en el medio de la Figura 1.8.
Figura 1.8. Ajuste de overscan.
Para que las líneas tengan efecto, primero tiene que descomentarlas quitando el carácter # del principio de cada línea.
Luego, utilizando ensayo y error, cambie los ajustes hasta que se llene la pantalla y el monitor tanto como sea posible. Tenga en cuenta que los cuatro números deben ser negativos. Pruebe a poner todos a –20 para empezar. Esto aumentará el área de la pantalla que utiliza.
Observaciones
Tener que reiniciar varias veces Raspberry Pi para ver los efectos de los cambios en la resolución es un poco tedioso. Afortunadamente, solo tendrá que hacer este procedimiento una vez. Muchos monitores y televisores funcionan muy bien sin ningún ajuste.
Para saber más
Puede encontrar más información acerca de la herramienta raspi-config en http://elinux.org/RPi_raspi-config.
1.11 Maximizar el rendimiento
Problema
Su Raspberry Pi parece que va lenta, por lo que desea mejorar la velocidad para que funcione más rápido.
Solución
Si usted tiene una Raspberry Pi 2 con un procesador de cuatro núcleos, es muy poco probable que vaya lenta. Sin embargo, las Raspberry Pi de un solo núcleo más antiguas pueden ir bastante lentas.
Puede aumentar la velocidad de su Raspberry Pi para que funcione más rápido. Esto hará que use un poco más de potencia y esté un poco más caliente (véase el siguiente apartado de «Observaciones»).
El método de overlocking descrito se llama dynamic overclocking, ya que controla automáticamente la temperatura de la Raspberry Pi y deja caer la velocidad si se calienta demasiado.
Para hacer overclock en su Pi, ejecute la utilidad de raspi_config a través del siguiente comando en un terminal:
$ sudo raspi-config
Seleccione la opción Overclock en el menú y se presentarán las opciones de la Figura 1.9.
Figura 1.9. Opciones de Overclocking.
Seleccione una opción. Si usted ve que su Raspberry Pi empieza a ser inestable y que se bloquea inesperadamente, puede que tenga que elegir una opción más conservadora o configure el overclocking de nuevo en None.
Observaciones
Las mejoras en el rendimiento de overclocking pueden ser dramáticas. Para medirlas, use la revisión 2 del modelo B de la Raspberry Pi sin carcasa y a una temperatura ambiente de 15 °C.
La siguiente secuencia de comandos de Python es el programa de pruebas. Esto solo repercute en el procesador, y no es realmente representativo de las demás cosas que pasan en un ordenador, como, por ejemplo, escribir en una tarjeta SD, los gráficos, etc. Pero nos da una buena señal sobre el rendimiento de la CPU si desea evaluar el efecto de overclocking en su Raspberry Pi.
import time
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
before_time = time.clock()
for i in range(1, 10000):
factorial(200)
after_time = time.clock()
print(after_time - before_time)
Compruebe los resultados del test en la Tabla 1.2.
Tabla 1.2. Overclocking.
| Test de velocidad | Corriente | Temperatura (grados C) | |
| 700 MHz | 15,8 segundos | 360 mA | 27 |
| 1 GHz | 10,5 segundos | 420 mA | 30 |
Como puede ver, el rendimiento ha aumentado en un 33 % pero con más corriente y a una temperatura ligeramente superior.
Un recinto bien ventilado ayudará a mantener el funcionamiento de la Raspberry Pi a toda velocidad. También ha habido algunos esfuerzos para añadir refrigeración por agua a Raspberry Pi. Francamente, es una tontería.
Para saber más
Puede encontrar más información acerca de la herramienta raspi-config en http://elinux.org/RPi_raspi-config.
1.12 Cambiar la contraseña
Problema
Por defecto, la contraseña de Raspberry Pi será raspberry. Quiere cambiarla.
Solución
Puede utilizar la herramienta raspi-config para cambiar su contraseña. Ejecute raspi_config mediante el siguiente comando en un terminal (véase el Capítulo 3.3):
$ sudo raspi-config
A continuación, seleccione la opción change_pass en el menú y siga las instrucciones que se muestran en la Figura 1.10.
Figura 1.10. Cambiar la contraseña.
Para cambiar la contraseña no es necesario reiniciar Raspberry Pi para que los cambios surtan efecto.
Observaciones
También puede cambiar la contraseña en una sesión de terminal simplemente usando el comando passwd de la siguiente manera:
$ passwd
Changing password for pi.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Para saber más
Puede encontrar mucha más información sobre la herramienta raspi-config en http://elinux.org/RPi_raspi-config.
1.13 Ajustar Pi para empezar directamente con un sistema de ventanas
Problema
Cada vez que reinicie su Raspberry Pi tiene que iniciar sesión y luego iniciar el escritorio manualmente. Quiere hacer esto automáticamente.
Solución
Puede utilizar la herramienta raspi-config para cambiar el comportamiento de arranque para que Raspberry Pi se registre de manera automática y se inicie el escritorio. Ejecute la utilidad raspi_config con el siguiente comando en un terminal:
$ sudo raspi-config
Ahora, seleccione la opción Enable Boot to Desktop/Scratch y después Desktop Log in as user pi (Figura 1-11).
Cuando usted cambie la opción de arranque, se le pedirá que reinicie Raspberry Pi para que los cambios surtan efecto.
Figura 1.11. Arranque automático en un escritorio.
Observaciones
Evidentemente hay implicaciones de seguridad al permitir que Raspberry Pi inicie sesión en el entorno de ventanas de forma automática. Pero, como Raspberry Pi generalmente se usará como un ordenador personal, en lugar de ser compartido, normalmente la conveniencia pesa más que las desventajas.
Para saber más
Puede encontrar mucha más información sobre la herramienta raspi-config en http://elinux.org/RPi_raspi-config.
1.14 Apagar su Raspberry Pi
Problema
Quiere apagar su Raspberry Pi.
Solución
Haga clic en el menú Raspberry, en la esquina superior izquierda del escritorio. Esto mostrará una serie de opciones (Figura 1.12).
Shutdown
Apaga Raspberry Pi. Tendrá que desconectar la alimentación y volver a enchufarlo para que Raspberry Pi arranque de nuevo.
Reboot
Reinicia Raspberry Pi.
Logout
Finaliza la sesión y muestra un aviso para introducir sus credenciales de acceso para que pueda entrar de nuevo.
Figura 1.12. Apagar su Raspberry Pi.
También puede reiniciar desde la línea de comandos con el comando:
sudo reboot
Puede que tenga que hacer esto después de instalar algún software. Cuando lo reinicie, verá el mensaje que se muestra en la Figura 1.13, que ilustra la naturaleza multiusuario de Linux y advierte a todos los usuarios conectados a Pi.
Figura 1.13. Apagando su Raspberry Pi del terminal.
Observaciones
Es mejor cerrar su Raspberry Pi como se describió anteriormente que simplemente tirar del enchufe, ya que Raspberry Pi puede estar en medio de la escritura de la tarjeta microSD. Esto podría llevar a la corrupción de archivos.
A diferencia de apagar la mayoría de los ordenadores, apagar Raspberry Pi no desconecta la alimentación. Entra en un modo de baja potencia; es un dispositivo de muy baja potencia (pero el hardware de Raspberry Pi no tiene control sobre su fuente de alimentación).
Para saber más
Puede comprar un módulo que se desconecte a la alimentación cuando Raspberry Pi se apague en http://www.pi-supply.com/.
1.15 Instalar el módulo de cámara de Raspberry Pi
Problema
Desea utilizar el módulo de cámara de Raspberry Pi (véase la Figura 1.14).
Solución
El módulo de cámara de Raspberry Pi (Figura 1.14) está unido a Raspberry Pi con un cable de cinta.
Figura 1.14. Módulo de cámara de Raspberry Pi.
Este cable se conecta a un conector especial entre el audio y las tomas HDMI en la Raspberry Pi 2. En el modelo B original de la Raspberry Pi, el conector está justo detrás de la toma Ethernet. Para ajustarlo, tire hacia arriba de las palancas a ambos lados del conector para que se desbloquee y luego presione el cable en la ranura, con los conectores planos del cable lejos de la toma Ethernet. Presione las dos palancas del conector hacia abajo para bloquear el cable (Figura 1.15).
Figura 1.15. Montaje de un módulo de cámara de Raspberry Pi unido a una Raspberry Pi modelo B.
| El embalaje del módulo de cámara afirma que es sensible a la electricidad estática. Antes de manipularla, toque algo que esté en el suelo como la tapa metálica de su ordenador. |
El módulo de la cámara requiere algo de configuración de software. La forma más fácil de configurarlo es usar raspi_config. Para ejecutar raspi-config introduzca el siguiente comando en una sesión del terminal:
$ sudo raspi-config
Verá la opción Enable Camera (Figura 1.16).
Hay dos comandos disponibles para capturar imágenes fijas y vídeos: raspiStill y raspivid.
Figura 1.16. La herramienta de configuración raspi-config actualizada.
Para capturar una imagen fija utilice el comando raspistill como se muestra aquí:
$ raspistill -o image1.jpg
Aparecerá una pantalla de vista previa durante unos cinco segundos y luego hará la fotografía y la almacenará en el archivo image1.jpg del directorio actual.
Para capturar un vídeo, utilice el comando raspivid:
$ raspivid -o video.h264 -t 10000
El número que aparece en el extremo es la duración de la grabación en milisegundos, en este caso, 10 segundos.
Observaciones
Tanto raspstill como raspivid tienen un gran número de opciones. Si escribe cualquier comando sin ningún parámetro, el texto de ayuda mostrará las opciones que estén disponibles.
El módulo de la cámara tiene capacidad para imágenes de alta resolución y para grabación de vídeo. Estas son algunas de las características de la cámara:
• Sensor de 5 megapíxeles
• Lentes f/2 de foco fijo
• Resolución 1920×1080
• Vídeo 1080p, 30fps
Una alternativa al módulo de la cámara es utilizar una cámara web USB (véase el Capítulo 8.3).
Para saber más
La documentación de RaspiCam incluye raspstill y raspivid.
1.16 Usar bluetooth
Problema
Quiere usar bluetooth con Raspberry Pi.
Solución
Conecte un adaptador bluetooth USB a Raspberry Pi e instale el software Bluetooth de apoyo.
No todos los adaptadores bluetooth son compatibles con Raspberry Pi. La mayoría lo son, pero para estar seguro, compre una marca que trabaje con Raspberry Pi. La Figura 1.17 muestra una Raspberry Pi 2 equipada con un adaptador bluetooth USB (el más cercano a la cámara) y un adaptador wifi USB.
Figura 1.17. Raspberry Pi 2 con adaptadores USB para bluetooth y wifi.
Para instalar el software necesario para admitir bluetooth, introduzca los siguientes comandos:
$ sudo apt-get update
$ sudo apt-get install bluetooth bluez-utils blueman bluez
$ sudo usermod -G bluetooth -a pi
Estos comandos deben funcionar para todos los adaptadores bluetooth compatibles con Raspberry Pi.
Conecte el adaptador bluetooth y reinicie Raspberry Pi (Capítulo 1.14).
Encontrará una nueva entrada en el menú de inicio de Raspbian en la sección Preferencias llamada Administrador de Bluetooth. Abra esta herramienta y haga clic en Buscar para buscar dispositivos bluetooth (Figura 1.18). Asegúrese de que los dispositivos bluetooth estén visibles.
Figura 1.18. Administración de dispositivos bluetooth.
Observaciones
Desde el administrador de bluetooth puede vincularse con otros dispositivos bluetooth, enviarles archivos y configurar la visibilidad de su Raspberry Pi con los demás dispositivos bluetooth.
Para saber más
Para obtener una lista de los adaptadores Bluetooth compatibles con Raspberry Pi, vea http://elinux.org/RPi_USB_Bluetooth_adapters.
CAPÍTULO 2
Redes
2.1 Introducción
Raspberry Pi está diseñada para estar conectada a Internet. Su capacidad para comunicarse a través de Internet es una de sus características principales y abre todo tipo de usos posibles, incluyendo la automatización del hogar, servidores web, monitoreo de red, etc.
La conexión se puede llevar a cabo mediante un cable Ethernet (al menos en el caso del modelo B), o se puede usar un módulo wifi USB para proporcionar una conexión de red.
Tener una conexión a Internet en Raspberry Pi también significa que puede conectarse a ella de forma remota desde otro ordenador. Esto es muy útil en situaciones en las que la propia Raspberry Pi es inaccesible y no tiene teclado, ratón ni monitor conectado a ella.
En este capítulo se le darán pautas para conectar su Raspberry Pi a Internet y para controlarla remotamente a través de una red.
2.2 Conectar a una red por cable
Problema
Desea conectar su Raspberry Pi a Internet mediante una conexión por cable.
Solución
En primer lugar, si usted tiene un modelo A, A+, o Zero, de la Raspberry Pi no tendrá conector RJ45 para Ethernet. En este caso, la mejor opción para el acceso a Internet es el uso de un adaptador USB inalámbrico (véase el Capítulo 2.6).
Si usted tiene el modelo B de la Raspberry Pi, conecte un cable de conexión Ethernet en su enchufe RJ45 y luego conecte el otro extremo a la toma correspondiente en la parte posterior de su router. La Figura 2.1 muestra una tarjeta Raspberry Pi 1 original, donde los ledes de red están junto a la toma de audio. En una Raspberry Pi 2, los ledes se encuentran en el mismo enchufe Ethernet.
Figura 2.1. Conectar Raspberry Pi a un concentrador.
Los ledes de la red de su Raspberry Pi deben comenzar inmediatamente a parpadear cuando Raspberry Pi se conecta a la red.
Observaciones
Raspbian está preconfigurado para conectarse a cualquier red utilizando el protocolo de configuración dinámica de host (DHCP). Se le asignará automáticamente una dirección IP, siempre y cuando el DHCP no esté desactivado en la red.
Si los ledes de red en su Raspberry Pi no se encienden cuando se conecta el router, compruebe que está utilizando la toma Uplink RJ45 en el router o pruebe con otro cable.
Si los ledes parpadean, pero no se conecta a Internet su Raspberry Pi utilizando un navegador, compruebe que el DHCP está activado en la consola de gestión de red. Busque una opción como la que se muestra en la Figura 2.2.
Figura 2.2. Activar el DHCP en el router.
Para saber más
Para conectarse a una red inalámbrica consulte el Capítulo 2.6.
2.3 Encontrar la dirección IP
Problema
Quiere saber la dirección IP de su Raspberry Pi para comunicarse con él, ya sea conectándolo como un servidor web, intercambiando archivos o controlándolo de forma remota con SSH (Capítulo 2.8) o VNC (Capítulo 2.9).
Una dirección IP es un número de cuatro partes que identifica la interfaz de red de un equipo de manera única dentro de una red. Cada parte está separada por un punto.
Solución
Para encontrar la dirección IP de su Raspberry Pi ejecute este comando en una ventana de terminal:
$ hostname -I
192.168.1.16
Esta es la dirección IP de su Raspberry en su red doméstica.
Observaciones
Raspberry Pi puede tener más de una dirección IP (es decir, una para cada conexión de red). Así que, si usted tiene una conexión por cable y una conexión inalámbrica a su Pi, tendrá dos direcciones IP. Normalmente, sin embargo, tendría que conectarlo solo mediante un método u otro, pero no ambos. Para ver todas las conexiones de red, utilice el comando ifconfig:
$ sudo ifconfig
eth0 Link encap:Ethernet HWaddr b8:27:eb:d5:f4:8f
inet addr:192.168.1.16 Bcast:192.168.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1114 errors:0 dropped:1 overruns:0 frame:0
TX packets:1173 errors:0 dropped:0 overruns:0
carrier:0 collisions:0 txqueuelen:1000
RX bytes:76957 (75.1 KiB) TX bytes:479753 (468.5 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0
carrier:0 collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
wlan0 Link encap:Ethernet HWaddr 00:0f:53:a0:04:57
inet addr:192.168.1.13 Bcast:192.168.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:38 errors:0 dropped:0 overruns:0 frame:0
TX packets:28 errors:0 dropped:0 overruns:0
carrier:0 collisions:0 txqueuelen:1000
RX bytes:6661 (6.5 KiB) TX bytes:6377 (6.2 KiB)
En cuanto a los resultados de la ejecución de ifconfig, puede ver que Pi está conectado mediante una conexión por cable (eth0) con una dirección IP de 192.168.1.16, y una inalámbrica (wlan0) con una dirección IP de 192.168.1.13. La interfaz de red lo es una interfaz virtual que permite al ordenador comunicarse con ella misma.
Otra manera de encontrar la dirección IP es conectarlo a la consola de administración del router, encontrar la sección LAN y luego consultar la tabla IP. Debe haber un dispositivo de la lista llamado raspberrypi con su dirección IP al lado.
Para saber más
Wikipedia tiene todo lo que desea saber sobre las direcciones IP.
2.4 Configurar una dirección IP estática
Problema
Desea configurar la dirección IP de su Raspberry Pi para que no cambie.
Solución
Para configurar la dirección IP de su Raspberry Pi, tanto si el uso de la red es por cable como inalámbrica, necesita editar el archivo de configuración /etc/network/interfaces.
Si ve el archivo /etc/network/interfaces utilizando el siguiente comando:
$ more /etc/network/interfaces
debe ser algo como esto:
auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
Esto le está diciendo que Raspbian tiene conocimiento de tres interfaces de red en su Raspberry Pi, cada una comienza con la palabra iface.
lo
Loopback. Puede pasar esto por alto.
eth0
Una conexión de red mediante la toma Ethernet.
wlan0
Interfaz de red con un adaptador wifi USB o con hardware wifi incorporado de Raspberry Pi 3.
Su Raspberry Pi tendrá una dirección IP diferente para cada conexión de red. En este ejemplo acaba de hacer la dirección IP de la interfaz Ethernet estática. Si desea hacer lo mismo para la interfaz wifi, en su lugar, edite la entrada en el archivo interfaces.
Para editar el archivo, escriba el siguiente comando:
$ sudo nano /etc/network/interfaces
En primer lugar, decida una dirección IP para usar. Es necesario escoger una que a la vez no sea utilizada por otro equipo en la red dentro del rango permitido de direcciones IP por su router. En este caso, se utilizará 192.168.1.116.
Modifique el contenido del archivo, cambiando la palabra dhcp por static y añadiendo las siguientes líneas:
address 192.168.1.116
netmask 255.255.255.0
gateway 192.168.1.1
Con el archivo cambiado como se muestra aquí, la dirección IP estática 192.168.1.116 ha sido asignada a la interfaz eth0.
auto lo
iface lo inet loopback
iface eth0 inet static
address 192.168.1.116
netmask 255.255.255.0
gateway 192.168.1.1
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
Para la mayoría de las redes, la configuración de la máscara de red debe establecerse en 255.255.255.0 y la puerta de enlace debe ser la dirección IP de su propio router de casa. Esta será la misma que la dirección IP que utiliza para conectarse a la consola de administración de su router.
Después de editar y guardar el archivo, ejecute los siguientes comandos para borrar todas las entradas DHCP que existan y reinicie su Pi para que los cambios surtan efecto.
$ sudo rm /var/lib/dhcp/*
$ sudo reboot
Observaciones
Las direcciones IP internas son algo como 192.168.1.116, donde se cambia solo el último número de cada uno de los diferentes ordenadores. Otro formato común para las direcciones IP internas es 10.0.0.16.
Para saber más
Wikipedia tiene todo lo que desea saber sobre las direcciones IP.
2.5 Ajustar el nombre de Raspberry Pi
Problema
Desea cambiar el nombre de su Raspberry Pi para que no se llame simplemente “raspberrypi.”
Solución
Cambiar el nombre de su Pi es bastante sencillo. Hay solo dos archivos que necesitan cambios.
Primero, edite el archivo /etc/hostname. Puede hacerlo abriendo una ventana de terminal y escribiendo el comando:
$ sudo nano /etc/hostname
Reemplace “raspberrypi” por el nombre que elija. Debe ser una sola palabra, sin ningún tipo de puntuación o caracteres inusuales (incluyendo el carácter _.)
En segundo lugar, abra el archivo /etc/hosts en un editor usando el comando:
$ sudo nano /etc/hosts
Se verá algo así:
| 127.0.0.1 | localhost |
| ::1 | localhost ip6-localhost ip6-loopback |
| fe00::0 | ip6-localnet |
| ff00::0 | ip6-mcastprefix |
| ff02::1 | ip6-allnodes |
| ff02::2 | ip6-allrouters |
| 127.0.1.1 | raspberrypi |
Cambie el texto del final, que utiliza el nombre antiguo (“raspberrypi”), por el nuevo nombre.
Reinicie Pi y verá que el nombre ha cambiado cuando aparezca en la red desde otro ordenador.
Observaciones
Cambiar el nombre de su Pi puede ser muy útil, especialmente si usted tiene más de uno conectado a la red.
Para saber más
Consulte el Capítulo 2.4 para cambiar la dirección IP de su Raspberry Pi.
2.6 Configurar una conexión inalámbrica
Problema
Desea conectar su Raspberry Pi a Internet a través de un adaptador inalámbrico USB.
Solución
Si tiene la versión más reciente de Raspbian, configurar el wifi es muy fácil. Solo tiene que conectar un adaptador wifi USB y luego hacer clic en el icono de red en la parte superior derecha de la pantalla (Figura 2.3). Se le presentará una lista de redes wifi. Seleccione su red y se le pedirá que introduzca la Pre Shared Key (contraseña). Introduzca la contraseña, y, después de un rato, el icono Network cambiará al símbolo estándar de wifi y se conectará.
Figura 2.3. Conectar a una red wifi.
Si usted tiene una distribución más antigua de Raspbian, tendrá que utilizar la opción WiFi Config con un acceso directo en el escritorio. Si no está utilizando una distribución reciente, debe actualizarla de todos modos (véase el Capítulo 1.5).
Si tiene Raspberry Pi 3, ya lleva el hardware WiFi incorporado. Si usted tiene una Raspberry Pi más vieja, conecte un adaptador inalámbrico USB compatible (la mayoría son compatibles) en una de las tomas USB de su Raspberry Pi e inicie la utilidad WiFi Config (Figura 2-4). Encontrará la herramienta de configuración de wifi debajo de la sección Preferencias en el menú de inicio de Raspberry. Haga clic en el botón Scan para buscar los puntos de acceso. Haga doble clic en el punto de acceso (para su router) al que desea unirse y luego introduzca la contraseña en el campo PSK.
Por último, haga clic en Connect para unirse a la red.
Figura 2.4. Detectando las redes.
Observaciones
Los adaptadores WiFi USB pueden utilizar una gran cantidad de energía, por lo que si ve que su Pi se reinicia inesperadamente o no arranca correctamente, puede que tenga que utilizar un suministro de energía más potente. Busquen una alimentación que sea de 1,5 A o más.
Si está utilizando también un teclado y un ratón, es posible que se le acaben las conexiones USB. En ese caso, la respuesta es un concentrador USB. La elección de un concentrador con su propia fuente de alimentación ayudará con el problema de la energía.
Si está utilizando su Raspberry Pi como un centro multimedia (véase el Capítulo 4.2), habrá una página de configuración que le permita conectarlo a la red mediante WiFi.
También puede configurar una conexión inalámbrica utilizando solo la línea de comandos. Para ello, primero debe editar el archivo /etc/network/interfaces con el comando:
$ sudo nano /etc/network/interfaces
A continuación, busque la sección del archivo relativo a la interfaz wlan0 y cámbielo para que sea:
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
La primera línea especifica que la conexión WiFi debe iniciarse automáticamente cuando se inserte un dongle WiFi USB. La segunda especifica que Raspberry Pi debe asignar la dirección IP usando DHCP. Si desea utilizar una dirección IP estática, sustituya la palabra dhcp por static y añada las líneas que se describen en el Capítulo 2.4 para asignar una dirección IP estática.
La última línea especifica la ubicación del archivo solicitante. Este es el archivo que contiene realmente el SSID (nombre de la red) y el PSK (contraseña) para su red inalámbrica. Así, la próxima vez editará el archivo usando el comando:
$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
Modifique el archivo ajustando los valores de ssid y pskfoobar para su red inalámbrica.
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="My-Network-Name"
psk="My-password"
proto=RSN
key_mgmt=WPA-PSK
pairwise=TKIP
auth_alg=OPEN
}
Para que los cambios realizados surtan efecto, reinicie su Raspberry Pi.
Para saber más
Consulte el Capítulo 2.2 para las conexiones por cable. Si quiere conocer los adaptadores WiFi compatibles con Raspberry, consulte http://elinux.org/RPi_VerifiedPeripherals.
Para más información sobre cómo configurar una red por cable, véase el Capítulo 2.2.
2.7 Conectar un cable de consola
Problema
No hay ninguna conexión de red disponible, pero quiere controlar de forma remota su Raspberry Pi desde otro ordenador.
Solución
Utilice un cable de consola para conectarlo a Raspberry Pi.
Los cables de consola son ideales para una Pi que va a ser utilizada headless, es decir, sin teclado, ratón ni monitor. El cable de consola mostrado en la Figura 2.5 está disponible en Adafruit.
Figura 2.5. Cable de consola.
Conecte el cable de la siguiente manera:
1. Conectar el cable rojo (5 V) al pin de 5 V, el pin del borde izquierdo del encabezado GPIO.
2. Conectar el cable negro (GND) a GND, el siguiente pin de la izquierda.
3. Conectar el cable blanco (RX) al GPIO 14 (TXD), a la izquierda del cable negro.
4. Conectar el cable verde (RX) a 15 (RXD), a la izquierda del cable blanco.
Si se utiliza un cable diferente, los colores de los cables pueden ser diferentes, así que siempre consulte la documentación de los cables o podrá dañar su Raspberry Pi.
Tenga en cuenta que el cable USB también proporciona 5 V en el cable rojo con suficiente potencia para la misma Pi, pero no si tiene muchos dispositivos conectados.
Si usted es usuario de Windows o Mac OS X, tendrá que instalar drivers para el cable USB, que se encuentren disponibles para Windows y para Mac OS X. Los usuarios de Linux, por lo general, no necesitan instalar ningún driver para estos cables.
Para conectarse a Pi desde Mac OS X, necesitará ejecutar el terminal y escribir el comando:
$ sudo cu -l /dev/cu.NoZAP-PL2303-00001004 -s 115200
El nombre del dispositivo será diferente, pero si pulsa Tab y después cu.P, se autocompletará. Después de la conexión pulse Entrar, y debería aparecer el indicador de conexión de Raspberry (Figura 2-6). El nombre de usuario y contraseña por defecto es pi y raspberry, respectivamente.
Figura 2.6. Inicio de sesión con el cable de consola.
Si está intentado conectarse a su Raspberry Pi desde un ordenador Windows, es necesario que descargue el software del terminal llamado Putty.
Cuando ejecute Putty, cambie “Connection type” a Serial y establezca la velocidad en 115200. También deberá establecer la “Serial line” para que esté el puerto COM en uso por el cable. Puede ser COM7, pero si eso no funciona, compruebe el Administrador de dispositivos de Windows.
Al hacer clic en Open y pulsar Entrar, la sesión del terminal debe comenzar con una pantalla de entrada.
Observaciones
El cable de la consola puede ser una forma muy conveniente de usar su Pi si viaja ligero, ya que proporciona energía y es una manera de controlarlo de manera remota.
El cable de consola tiene un chip al final del USB que proporciona una interfaz de USB a serie. Esto a veces (dependiendo de su sistema operativo) requiere la instalación de drivers en el ordenador. El cable que se utiliza aquí es uno suministrado por Adafruit (código de producto: 954). Debe ser capaz de utilizar cualquier convertidor USB a serie mientras tenga los drivers necesarios para su ordenador.
Conectar las tomas de los cables en los lugares correctos es más fácil si cuidadosamente los pega juntos en el orden correcto para que se ajusten, en un bloque, al encabezado GPIO.
Encontrar la posición correcta en el encabezado GPIO es más fácil si se utiliza una plantilla GPIO como la hoja de Raspberry (vea el Capítulo 9.2).
Para saber más
Puede encontrar más información sobre el uso de consola serie en este tutorial de Adafruit. Adafruit también vende cables de consola.
2.8 Controlar Pi de forma remota con SSH
Problema
Desea conectarse a Pi de forma remota desde otro ordenador usando Secure Shell (SSH).
Solución
Antes de que pueda conectarse a su Raspberry Pi usando SSH, debe habilitar SSH. En las versiones más recientes de Raspbian puede utilizar la herramienta Configuración de Raspberry Pi (Figura 2.7) que se encuentra en el menú principal debajo de Preferencias. Simplemente marque la casilla de SSH y haga clic en OK. Se le pedirá que reinicie.
Si tiene una versión anterior de Raspbian, utilice la aplicación raspi_config. Comience en cualquier momento introduciendo el siguiente comando en el terminal:
$ sudo raspi-config
Desplácese hasta la opción SSH y actívela.
| En las versiones más recientes de Raspbian, SSH está activado de forma automática y no hay ningún ajuste para cambiarlo. |
Figura 2.7. Activar SSH usando la herramienta de configuración.
Si está utilizando Mac OS X o tiene Linux instalado en el equipo desde el que desea conectar su Pi, lo único que tiene que hacer para conectarlo es abrir una ventana de terminal y escribir el comando:
$ ssh 192.168.1.16 -l pi
donde la dirección IP (192.168.1.16) es la dirección IP de su Pi (véase el Capítulo 2.3). Se le pedirá la contraseña y luego se conectará a su Pi (Figura 2.8).
Figura 2.8. Inicio de sesión con SSH.
Para conectarse desde un ordenador con Windows, tendrá que utilizar Putty (Capítulo 2.7) para empezar una sesión SSH.
Observaciones
SSH es una forma muy común de conectarse a equipos remotos; cualquier comando que se pueda ejecutar en la propia Pi, puede utilizarse desde Secure Shell. También es, como su nombre indica, seguro, ya que la comunicación está encriptada.
Tal vez el único inconveniente es que se trata de una línea de comandos en lugar de un entorno gráfico. Si necesita acceso al entorno del escritorio de Raspberry Pi de forma remota, necesita usar VNC (Capítulo 2.9) o RDP (Capítulo 2.10).
Para saber más
Consulte este tutorial de Adafruit.
2.9 Controlar Pi de forma remota con VNC
Problema
Quiere tener acceso al escritorio gráfico Raspbian de su Pi desde un ordenador (Windows o Linux) o desde Mac OS X, usando VNC.
Solución
Instalar un servidor de Computación Virtual en Red (VNC).
Abra una sesión de terminal (o una sesión SSH) en Pi y ejecute los siguientes comandos:
$ sudo apt-get update
$ sudo apt-get install tightvncserver
Después de haber instalado el servidor VNC, ejecútelo con el comando:
$ vncserver :1
La primera vez que lo ejecute se le pedirá que cree una nueva contraseña para que cualquier persona que se quiera conectar de forma remota tenga que introducir la contraseña antes de obtener acceso a Pi.
Para conectarse a Pi desde un equipo remoto necesita instalar un cliente VNC. RealVNC es una opción conocida que se conecta bien con tightvnc y que está disponible para Windows, Linux y Mac OS X.
Cuando se ejecute el programa cliente en Mac OS X o en un PC, se le pedirá que introduzca la dirección IP del servidor VNC al que desea conectarse (la dirección IP de su Pi). Introduzca “:1” después de la dirección IP para indicar que desea conectarse al terminal número 1.
A continuación, se le pedirá la contraseña. Recuerde, es la contraseña que determinó previamente después de instalar tightvncserver y no es necesariamente la misma que la contraseña normal de Raspberry Pi.

Figura 2.9. Inicio de una sesión con VNC.
Observaciones
Aunque se pueden hacer más cosas con SSH, a veces es útil tener acceso al entorno gráfico de Pi.
Si desea que el servidor VNC se inicie automáticamente cada vez que se reinicie su Raspberry Pi, siga estos pasos:
$ cd /home/pi
$ cd .config
$ mkdir autostart
$ cd autostart
$ nano tightvnc.desktop
Pegue lo siguiente en la ventana del editor:
[Desktop Entry]
Type=Application
Name=TightVNC
Exec=vncserver :1
StartupNotify=false
Mientras su Raspberry Pi se está configurado para iniciar sesión y arrancar en el entorno de ventanas, el servidor VNC se iniciará automáticamente cuando se reinicie.
Para saber más
Consulte el tutorial de Adafruit.
Véase también el Capítulo 2.10.
2.10 Controlar Pi de forma remota con RDP
Problema
Quiere tener acceso al escritorio gráfico Raspbian de su Pi desde un PC o Mac OS X mediante RDP.
Solución
Instalar el software XRDP en su Raspberry Pi introduciendo los siguientes comandos:
$ sudo apt-get update
$ sudo apt-get install xrdp
Una vez instalado el software se reiniciará automáticamente el servicio xrdp, lo que significa que se iniciará cuando se reinicie Raspberry Pi.
Si usted tiene Windows 7 o posterior, ya incluye un cliente RPD para conectar a su Raspberry Pi. Lo encontrará como Conexión de Escritorio Remota dentro de los Accesorios de Windows del menú de inicio. Para las versiones anteriores de Windows, puede descargarse el cliente desde: ModMyPi.
Los usuarios de Mac OS X pueden descargar el cliente Microsoft RDP para OS X desde la web de Microsoft.
Un cliente para Linux está disponible en http://www.rdesktop.org/.
Cuando inicie el cliente RDP se le preguntará a qué equipo quiere conectarse. Introduzca la dirección IP de su Raspberry Pi. A continuación, se le pedirá el username y password (Figura 2-10), que son los mismos que su habitual inicio de sesión en Raspberry Pi, es decir, el nombre de usuario de pi y la contraseña raspberry a menos que la haya cambiado.
Figura 2.10. Inicio de sesión con RDP.
Observaciones
RDP hace el mismo trabajo que VNC, pero funciona de manera más eficiente y, por lo tanto, actualiza el contenido de la pantalla fluidamente. El único inconveniente es que para los usuarios de Mac OS X no se integra con la función Share Screen de OS X.
Para saber más
Consulte también el Capítulo 2.9.
2.11 Uso compartido de archivos en una red Mac
Problema
Quiere que su Raspberry Pi aparezca en la lista de ordenadores en el Finder de Mac OS X para que pueda conectarse a él y navegar por el sistema de archivos mediante el Finder.
Solución
El sistema operativo Mac OS X incluye una función de soporte para la visualización de archivos en el Finder a través de la red (Figura 2.11). Sin embargo, debe hacer algunos cambios de configuración en su Raspberry Pi para OS X.
Figura 2.11. Raspberry Pi en el Finder de Mac OS X.
Necesita saber la dirección IP de su Raspberry Pi (Capítulo 2.3).
Ahora, en Raspberry Pi, instale netatalk usando el comando:
$ sudo apt-get install netatalk
Luego, de vuelta en su Mac, en el menú del Finder seleccione Go→Connect to Server e introduzca afp://192.168.1.16 como dirección de servidor (pero utilice la dirección IP para su Raspberry Pi en lugar de la que se muestra aquí). A continuación, haga clic en Connect. Se le pedirá que inicie sesión. Tiene que reiniciar la Raspberry Pi antes de que llegue el mensaje de inicio de sesión.
Puede acceder usando el nombre pi y su contraseña, que será raspberry por defecto. El Finder ha de mostrarle el contenido de su directorio particular en Raspberry Pi.
Hay unos cuantos cambios de configuración que hacer en Raspberry Pi.
$ sudo apt-get install avahi-daemon
$ sudo update-rc.d avahi-daemon defaults
A continuación, escriba el comando:
$ sudo nano /etc/avahi/services/afpd.service
Pegue el siguiente código en el archivo:
<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">%h</name>
<service>
<type>_afpovertcp._tcp</type>
<port>548</port>
</service>
</service-group>
Para activar el daemon escriba el comando:
$ sudo /etc/init.d/avahi-daemon restart
Cambie de nuevo a su Mac y deberá ver su Raspberry Pi en el Finder.
Observaciones
Ser capaz de mover archivos fácilmente entre su Mac y su Raspberry Pi es muy útil. Esto significa que puede utilizar archivos de su Pi sin tener que conectar ningún teclado separado, ratón o monitor.
También puede abrir archivos en Raspberry Pi como si estuvieran en su Mac. Esto tiene la ventaja de poder editarlos con TextMate o con su editor de textos de OS X favorito.
Si está utilizando Windows o Linux, también puede compartir archivos configurando su Raspberry Pi para trabajar como almacenamiento conectado en red (NAS); véase Capítulo 2.13.
Para saber más
Las instrucciones fueron adaptadas de este tutorial, que acredita el libro de Matt Richardson y Shawn Wallace Getting Started with Raspberry Pi (O’Reilly) como la fuente original.
2.12 Compartir la pantalla Pi en un Mac
Problema
Configura VNC, pero le gustaría compartir la pantalla de su Raspberry Pi como si fuera otro dispositivo Mac OS X en su red.
Solución
En primer lugar, siga el Capítulo 2.9 para instalar VNC. También necesitará el Capítulo 2.11.
A continuación, introduzca el comando:
$ sudo nano /etc/avahi/services/rfb.service
y pegue lo siguiente en el editor:
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">%h</name>
<service>
<type>_rfb._tcp</type>
<port>5901</port>
</service>
</service-group>
Luego, introduzca el comando:
$ sudo /etc/init.d/avahi-daemon restart
Ahora debería ser capaz de ver la opción Share Screen mostrada en la Figura 2.12. Cuando se le pida una contraseña, utilice la contraseña que ha configurado para VNC, no su contraseña general de Raspberry.
Figura 2.12. Compartir la pantalla de Raspberry Pi con Mac OS X.
Observaciones
Este capítulo solo añade un poco de comodidad al proceso de compartir la pantalla de su Raspberry Pi.
Si usted tiene más de una Raspberry Pi en su red, es necesario darles diferentes nombres para que pueda identificarlas en la red (Capítulo 2.5).
Si usted es un usuario de Windows o Linux, todavía puede conectarse a Raspberry Pi mediante VNC (Capítulo 2.9).
Para saber más
Las instrucciones han sido adaptadas de este tutorial, que acredita el libro de Matt Richardson y Shawn Wallace Getting Started with Raspberry Pi (O’Reilly) como fuente original.
2.13 Usar Raspberry Pi como almacenamiento conectado a la red (NAS)
Problema
Desea utilizar su Raspberry Pi como almacenamiento conectado a la red (NAS) mediante el acceso a una unidad USB conectada a su Raspberry Pi desde ordenadores de su red.
Solución
La solución a este problema es instalar y configurar Samba. Para ello ejecute los comandos:
$ sudo apt-get install samba
$ sudo apt-get install samba-common-bin
Ahora, conecte el disco duro USB a su Raspberry Pi. Automáticamente se montará en la carpeta /media. Para comprobar que está ahí, utilice el comando:
$ cd /media
$ ls
La unidad deberá aparecer con el nombre que se le dio cuando se formateó. Se montará automáticamente cada vez que Raspberry Pi se inicie.
Ahora tiene que configurar Samba, por lo que la unidad puede ser compartida en la red. Para ello, primero tiene que añadir un usuario Samba (pi). Introduzca el siguiente comando y escriba una contraseña:
$ sudo smbpasswd -a pi
New SMB password:
Retype new SMB password:
Added user pi.
Después tendrá que hacer algunos cambios en el archivo /etc/samba/smb.conf, por lo que introduzca el comando:
$ sudo nano /etc/samba/smb.conf
La primera línea que busca está cerca de la parte superior del archivo:
workgroup = WORKGROUP
Solo necesita cambiar esto si se va a conectar desde un ordenador Windows. Este debe ser el nombre de su grupo de trabajo (workgroup) de Windows. Para Windows XP, por defecto, es MSHOME; para las nuevas versiones de Windows es HOME (pero compruébelo en la red de Windows).
El siguiente cambio a realizar está más abajo del archivo en la sección de autenticación. Busque la línea:
# security = user
Quite el # de delante para activar la seguridad.
Finalmente, desplácese a la derecha hasta el final del archivo y añada las siguientes líneas:
[USB]
path = /media/NAS
comment = NAS Drive
valid users = pi
writeable = yes
browseable = yes
create mask = 0777
public = yes
Guarde el archivo y reinicie Samba introduciendo el comando:
$ sudo /etc/init.d/samba restart
Si todo va bien, la unidad USB ahora debe ser compartida en la red.
Observaciones
Para conectarse a la unidad en un Mac OS X, simplemente seleccione Go→Connect to Server desde el menú del Finder. A continuación, introduzca smb://raspberrypi/USB en el campo de dirección del servidor (Server Address). Verá un cuadro de diálogo de inicio de sesión, donde se tendrá que cambiar el nombre de usuario a pi (Figura 2-13).
Figura 2.13. Conectar a NAS con Mac OS X.
Si se está conectando a NAS desde un ordenador Windows, el procedimiento exacto puede variar dependiendo de la versión de Windows. Sin embargo, el principio básico es que en algún momento tendrá que introducir la dirección de red que debe ser \\raspberrypi\USB (Figura 2.14).
Figura 2.14. Conectarse a NAS desde Windows.
Se le pedirá el nombre de usuario y contraseña antes de poder utilizar el disco desde NAS (Figura 2.15).
Figura 2.15. Navegación NAS en Windows.
Si usted es usuario de Linux, este comando montará la unidad NAS para usted:
$ sudo mkdir /pishare
$ sudo smbmount -o username=pi,password=raspberry //192.168.1.16/USB /pishare
Para saber más
Es posible que desee cambiar el nombre de la red de Raspberry Pi a algo más adecuado como piNAS (véase Capítulo 2.5).
2.14 Impresión en red
Problema
Desea imprimir en una impresora de red con Raspberry Pi.
Solución
Use el sistema de impresión común de Unix (CUPS).
Comience introduciendo el siguiente comando en un terminal para instalar CUPS. Esto puede tomar algo de tiempo.
$ sudo apt-get install cups
Dese privilegios de administrador para CUPS introduciendo el siguiente comando:
$ sudo usermod -a -G lpadmin pi
CUPS está configurado a través de una interfaz web. Los navegadores web Midori ni Dillo funcionan bien con las páginas de administración de CUPS, pero Iceweasel funciona muy bien. Puede instalar el navegador Iceweasel introduciendo el siguiente comando:
$ sudo apt-get install iceweasel
Inicie Iceweasel desde el grupo Internet del menú de inicio y vaya a la dirección http://localhost:631.
Vaya a la pestaña de administración y seleccione la opción Add Printer. Se mostrará la lista de impresoras que están en la red o conectadas directamente al puerto USB de Raspberry Pi (Figura 2-16).
Figura 2.16. Descubrir impresoras con CUPS.
Siga los cuadros de diálogo para configurar la impresora.
Observaciones
Cuando haya terminado puede probar la impresora con AbiWord (véase el Capítulo 4.3). Escriba algún texto y cuando esté listo para imprimirlo deberá ver su impresora recién agregada disponible para imprimir (Figura 2-17).
Figura 2.17. Imprimir desde AbiWord.
Para saber más
Consulte también la web oficial de CUPS.
CAPÍTULO 3
Sistema operativo
3.1 Introducción
Este capítulo explora muchos aspectos del sistema operativo Linux utilizado por Raspberry Pi. Esto en muchas ocasiones implica el uso de líneas de comandos.
3.2 Mover archivos de forma gráfica
Problema
Desea mover archivos a través de una interfaz gráfica como puede hacer en un Mac OS X o PC.
Solución
Utilice el Administrador de archivos.
Puede encontrar este programa en el grupo Accesorios del menú de inicio (Figura 3.1).
Con el Administrador de archivos puede arrastrar un archivo o directorio de un directorio a otro o utilizar el menú Edición para copiar un archivo en una ubicación y pegarlo en otra. Esto funciona igual que el Administrador de archivos de Windows o que el Finder de Mac OS X.
Figura 3.1. Administrador de archivos.
Observaciones
En el lado izquierdo del Administrador de archivos se muestran las unidades instaladas, es decir, si conecta una unidad flash USB o una unidad USB externa, aparecerá aquí.
El área central muestra los archivos de la carpeta actual, desde donde puede navegar utilizando los botones de la barra de herramientas o escribiendo una ubicación en el área de ruta de archivo en la parte superior.
Haga clic con el botón derecho en un archivo para ver las opciones que se pueden usar en ese archivo (Figura 3-2).
Figura 3.2. Opciones del Administrador de archivos.
Para saber más
Consulte también el Capítulo 3.5.
3.3 Comenzar una sesión de terminal
Problema
Cuando utiliza Raspberry Pi es necesario ejecutar comandos de texto en un terminal.
Solución
Seleccione el icono LXTerminal (parece un monitor de ordenador negro) en la parte superior del escritorio de Raspberry Pi, o seleccione la opción de menú Terminal en el menú de inicio del grupo Accesorios (Figura 3-3).
Figura 3.3. Abrir LXTerminal.
Observaciones
Cuando se inicia LXTerminal se establece en su directorio personal (/home/pi).
Puede abrir tantas sesiones de terminal como desee. A menudo es útil tener un par de sesiones abiertas en diferentes directorios para que no tenga que cambiar constantemente los directorios usando el comando cd (Capítulo 3.4).
Para saber más
En la siguiente sección (Capítulo 3.4) verá la estructura de directorios al navegar usando el terminal.
3.4 Navegar por el sistema de archivos mediante un terminal
Problema
Necesita saber cómo cambiar de directorio y cómo moverse por el sistema de archivos usando el terminal.
Solución
El comando principal utilizado para navegar por el sistema de archivos es cd (cambiar directorio). Después de cd debe especificar el directorio al que desea cambiar. Esto puede ser una ruta relativa a un directorio de dentro del directorio actual o una ruta absoluta a otro lugar del sistema de archivos.
Para ver cuál es el directorio actual puede utilizar el comando pwd (imprimir –mostrar– el directorio de trabajo).
Observaciones
Pruebe algunos ejemplos. Abra una sesión de terminal y verá un mensaje como este:
pi@raspberrypi ~ $
El mensaje de cada comando (pi@raspberrypi ~ $) es un recordatorio de su nombre de usuario (pi) y el nombre de su ordenador (raspberrypi). El carácter ~ es una abreviatura para su directorio de inicio (/home/pi). Por lo tanto, en cualquier momento puede cambiar de su directorio actual a su directorio personal de la siguiente manera:
$ cd ~
| A lo largo del libro utilizo un $ al principio de cada línea donde se escribe el comando. La respuesta de la línea de comandos no será prefijada por nada; aparecerá igual que ocurre en la pantalla de Raspberry Pi. |
Puede confirmar que el comando realmente estableció el directorio en el directorio de inicio mediante el comando pwd:
$ pwd
/home/pi
Si desea subir un nivel en la estructura de directorios, puede usar el valor especial .. (dos puntos) después del comando cd, como se muestra aquí:
$ cd ..
$ pwd
/home
Como ya se deduce, la ruta de acceso a un archivo o directorio en particular está formada por palabras separadas por /. Así que, la raíz de todo el sistema de archivos es /. Para acceder al directorio de inicio, dentro de /, será /home/. Entonces, para encontrar el directorio pi dentro de ese utilizará /home/pi/. El último / se puede omitir.
Las rutas también pueden ser absolutas (comenzando con / y especificando la ruta completa desde la raíz) o pueden ser relativas al directorio de trabajo actual, en cuyo caso no deben comenzar con /.
Tendrá acceso completo de lectura y escritura a los archivos en su directorio de inicio, pero una vez que se mueva a los lugares donde se guardan los archivos del sistema y las aplicaciones, su acceso a algunos archivos estará restringido solo a la lectura. Puede anular esto (Capítulo 3.12), pero se debe tener cuidado.
Compruebe la raíz de la estructura del directorio introduciendo los siguientes comandos:
| $ cd / | |||||||||
| $ ls | |||||||||
| bin | dev | home | lost+found | mnt | proc | run | selinux | sys | usr |
| boot | etc | lib | media | opt | root | sbin | srv | tmp | var |
El comando ls (lista) nos muestra todos los archivos y directorios bajo un / del directorio raíz. Verá que hay un directorio home (de inicio) en la lista; es el directorio del que acaba de llegar.
Ahora cambie a uno de esos directorios usando el comando:
| $ cd etc | ||
| $ ls | ||
| adduser.conf | hosts.deny | polkit-1 |
| alternatives | hp | profile |
| apm | iceweasel | profile.d |
| apparmor.d | idmapd.conf | protocols |
| apt | ifplugd | pulse |
| asound.conf | init | python |
Usted notará un par de cosas. Primero, hay una gran cantidad de archivos y carpetas en la lista, más de lo que puede caber en la pantalla a la vez. Utilice la barra de desplazamiento del lateral de la ventana del terminal para moverse hacia arriba y hacia abajo.
En segundo lugar, verá que los archivos y las carpetas tienen alguna codificación de color. Los archivos se muestran en blanco, mientras que los directorios son azules.
A menos que le guste escribir, la tecla Tab le ofrece un buen atajo. Si empieza a escribir el nombre de un archivo, al pulsar la tecla Tab la función de autocompletar intentará completar el nombre del archivo. Por ejemplo, si va a cambiar el directorio a network, escriba el comando cd netw y después pulse la tecla Tab. Debido a que netw es suficiente para identificar el archivo o directorio, se autocompletará al pulsar la tecla Tab.
Si lo que ha escrito no es suficiente para identificar de forma exclusiva el nombre del archivo o del directorio, pulsando otra vez la tecla Tab mostrará una lista de opciones posibles que coinciden con lo que ha escrito hasta ahora.
Por lo tanto, si se había detenido en net y pulsó la tecla Tab, verá lo siguiente:
$ cd net
netatalk/ network/
Puede proporcionar un argumento adicional después de ls para restringir las cosas que desea listar. Cambie el directorio a /etc y luego ejecute lo siguiente:
$ ls f*
fake-hwclock.data fb.modes fstab fuse.conf
fonts:
conf.avail conf.d fonts.conf fonts.dtd
foomatic:
defaultspooler direct filter.conf
fstab.d:
pi@raspberrypi /etc
$
El carácter * se llama comodín. Al especificar f* después de ls, estamos diciendo que queremos listar todo lo que empieza con f.
Con ayuda, los resultados primero muestran todos los archivos dentro de /etc que empiezan con f y luego el contenido de todos los directorios en esa carpeta que comiencen con f.
Un uso común de comodines es listar todos los archivos con una cierta extensión (por ejemplo, ls *.docx).
Una convención en Linux (y en muchos otros sistemas operativos) es prefijar archivos que deben estar ocultos por el usuario iniciando su nombre con un punto. Los archivos o carpetas así denominados no aparecerán cuando escriba ls a menos que también proporcione ls con la opción -a. Por ejemplo:
$ cd ~
$ ls -a
.
..
Adafruit-Raspberry-Pi-Python-Code
.advance
.AppleDB
.AppleDesktop
.AppleDouble
Asteroids.zip
atari_roms
.bash_history
.bash_logout
.bashrc
.cache
.config
.dbus
Desktop
.dillo
.dmrc
.emulationstation
.fltk
.fontconfig
.gstreamer-0.10
.gvfs
indiecity
.local
motor.py
.mozilla
mydocument.doc
Network Trash Folder
.profile
.pulse
.pulse-cookie
python_games
sales_log
servo.py
.stella
stepper.py.save
switches.txt.save
Temporary Items
thermometer.py
.thumbnails
.vnc
.Xauthority
.xsession-errors
.xsession-errors.old
Como puede ver, la mayoría de los archivos y carpetas de su directorio de inicio están ocultos.
Para saber más
Consulte también el Capítulo 3.14.
3.5 Copiar un archivo o una carpeta
Problema
Desea copiar un archivo utilizando una sesión de terminal.
Solución
Utilice el comando cp para copiar archivos y directorios.
Observaciones
Por supuesto, usted puede copiar archivos utilizando el Administrador de archivos y sus opciones de copiar y pegar (Capítulo 3.2).
El ejemplo más simple de copiar en una sesión de terminal es hacer una copia de un archivo dentro de su directorio de trabajo. El comando cp va seguido por el archivo que se va a copiar y luego por el nombre que se le va a dar al nuevo archivo.
Por ejemplo, el ejemplo siguiente crea un archivo llamado myfile.txt y después hace una copia de él con el nombre myfile2.txt. Puede encontrar más información sobre el truco de crear un archivo usando el comando > en el Capítulo 3.9.
$ echo "hello" > myfile.txt
$ ls
myfile.txt
$ cp myfile.txt myfile2.txt
$ ls
myfile.txt myfile2.txt
Aunque en este ejemplo ambas rutas de archivo son las del directorio actual, las rutas del archivo pueden estar en cualquier parte del sistema de archivos donde tenga acceso de escritura. El siguiente ejemplo copia el archivo original en un área /tmp, que es una ubicación para archivos temporales. No ponga nada importante en esa carpeta.
$ cp myfile.txt /tmp
Tenga en cuenta que, en ese caso, el nombre que se va a dar al nuevo archivo no se especifica, solo se especifica el directorio donde va a ir. Esto creará una copia de myfile.txt en /tmp con el mismo nombre de myfile.tmp.
A veces, en lugar de copiar solo un archivo puede que desee copiar todo un directorio lleno de archivos y posiblemente otros directorios. Para copiar dicho directorio debe utilizar la opción -r (recursivo). Esto copiará el directorio y todo su contenido.
$ cp -r mydirectory mydirectory2
Siempre que esté copiando archivos o carpetas, si no tiene permiso, el resultado del comando le dirá eso. Tendrá que cambiar los permisos de la carpeta en la que está copiando (Capítulo 3.14) o copiar los archivos con privilegios de superusuario (Capítulo 3.12).
Para saber más
Consulte también los Capítulos 3.6 y 3.11.
3.6 Renombrar un archivo o carpeta
Problema
Desea cambiar el nombre de un archivo mediante una sesión de terminal.
Solución
Utilice el comando mv para renombrar archivos y directorios.
Observaciones
El comando mv (mover) se utiliza de manera similar al comando cp, a excepción de que el archivo o carpeta que se está moviendo simplemente se renombra en lugar de hacer un duplicado.
Por ejemplo, para simplemente renombrar un archivo de my_file.txt a my_file.rtf, utilice el comando:
$ mv my_file.txt my_file.rtf
Cambiar el nombre de un directorio es igual de sencillo y no necesita la opción recursiva -r que usó al copiar.
Para saber más
Consulte también los Capítulos 3.5 y 3.11.
3.7 Editar un archivo
Problema
Desea ejecutar un editor desde la línea de comandos para cambiar un archivo de configuración.
Solución
Utilice el editor nano incluido con la mayoría de las distribuciones de Raspberry Pi.
Observaciones
Para usar nano simplemente escriba el comando nano seguido del nombre o ruta del archivo que quiere editar. Si el archivo no existe, se creará cuando lo guarde desde el editor. Sin embargo, esto solo ocurrirá si tiene permisos de escritura en el directorio donde intente crear el archivo.
Desde su directorio de inicio escriba el comando nano my_file.txt para editar o crear el archivo nano my_file.txt. La Figura 3.4 muestra nano en acción.
Figura 3.4. Editar un archivo con nano.
No puede utilizar el ratón para situar el cursor; utilice las teclas de flecha en su lugar.
El área de la parte inferior de la pantalla muestra una serie de comandos a los que puede acceder manteniendo pulsada la tecla Ctrl y la letra indicada. La mayoría de estos no son muy útiles. Los que probablemente utilice más son:
Ctrl-X
Salir. Se le pedirá que guarde el archivo antes de salir de nano.
Ctrl-V
Siguiente página. Piense en ello como una flecha apuntando hacia abajo. Esto le permite moverse una pantalla cada vez a través de un archivo grande.
Ctrl-Y
Página anterior.
Ctrl-W
Dónde está. Esto le permite buscar un trozo de texto.
También hay algunas opciones del tipo cortar y pegar, pero en la práctica es más fácil utilizar el portapapeles normal desde el menú al que se accede con un clic derecho.

Figura 3.5. Usar el portapapeles en nano.
Usar este portapapeles también le permite copiar y pegar texto entre otras ventanas de su navegador.
Cuando esté listo para guardar los cambios en el archivo y salir de nano, utilice el comando Ctrl-X. Escriba Y para confirmar que desea guardar el archivo. nano muestra el nombre del archivo como el nombre predeterminado para guardarlo. Pulse Intro para guardar y salir.
Si desea abandonar los cambios que ha realizado, introduzca N en lugar de Y.
Para saber más
Los editores son cuestión de gustos personales. Muchos editores están disponibles para Linux y funcionan perfectamente en Raspberry Pi. El editor vim (vi mejorado) tiene muchos fans en el mundo de Linux. Está incluido también en las distribuciones populares de Raspberry Pi. Sin embargo, no es un editor fácil para principiantes. Puede ejecutarlo de la misma manera que nano, pero utilizando el comando vi en lugar de nano. Hay más detalles sobre el uso de vim en http://newbiedoc.sourceforge.net/text_editing/vim.html.en.
3.8 Visualizar el contenido de un archivo
Problema
Desea visualizar el contenido de un archivo pequeño sin editarlo.
Solución
Use el comando cat o more para ver el archivo. Por ejemplo:
$ more myfile.txt
This file contains
some text
Observaciones
El comando cat muestra todo el contenido del archivo, aunque sea más largo de lo que cabría en la pantalla.
El comando more solo muestra una pantalla de texto a la vez. Pulse la barra espaciadora para mostrar la siguiente pantalla.
Para saber más
También puede utilizar cat para concatenar (unir) un número de archivos (Capítulo 3.31).
Otro comando popular relacionado con more es less. less es como more a excepción de que permite moverse hacia atrás en el archivo y también hacia delante.
3.9 Crear un archivo sin utilizar un editor
Problema
Desea crear un archivo de una línea sin tener que utilizar un editor.
Solución
Utilice los comandos > y echo para redirigir lo que escribe en la línea de comandos a un archivo. Por ejemplo:
$ echo "file contents here" > test.txt
$ more test.txt
file contents here
| El comando > sobrescribe un archivo existente, así que úselo con precaución. |
Observaciones
Puede ser útil para crear un archivo.
Para saber más
Para usar el comando more para ver archivos sin usar un editor, consulte el Capítulo 3.8. Para usar > para capturar otros tipos de salida del sistema, consulte el Capítulo 3.30.
3.10 Crear un directorio
Problema
Desea crear un nuevo directorio utilizando el terminal.
Solución
El comando mkdir creará un nuevo directorio.
Observaciones
Para crear un directorio, utilice el comando mkdir. Pruebe el siguiente ejemplo:
$ cd ~
$ mkdir my_directory
$ cd my_directory
$ ls
Debe tener permiso de escritura en el directorio en el que intenta crear el nuevo directorio.
Para saber más
Para obtener información general sobre el uso del terminal para navegar por el sistema de archivos, véase el Capítulo 3.4.
3.11 Eliminar un archivo o un directorio
Problema
Desea eliminar un archivo o un directorio utilizando el terminal.
Solución
El comando rm (eliminar) borrará un archivo o directorio y su contenido. Debe ser utilizado con extrema precaución.
Observaciones
Eliminar un solo archivo es simple y seguro. El siguiente ejemplo eliminará el archivo my_file.txt del directorio personal:
$ cd ~
$ rm my_file.txt
$ ls
Debe tener permisos de escritura en el directorio en el que está intentando realizar la eliminación.
También puede utilizar el comodín * para eliminar archivos. Este ejemplo eliminará todos los archivos que comiencen por my_file. en el directorio actual:
$ rm my_file.*
También puede eliminar todos los archivos del directorio escribiendo:
$ rm *
Si desea eliminar de manera recursiva un directorio y todo su contenido, incluidos los directorios que contiene, puede utilizar la opción -r:
$ rm -r mydir
| Al eliminar archivos desde una ventana de terminal, recuerde que no tiene la red de seguridad de una papelera de reciclaje desde la que se pueden recuperar archivos eliminados. Además, en términos generales, no se le dará la opción de confirmar; los archivos se eliminarán inmediatamente. Esto puede ser totalmente devastador si se combina con el comando sudo (Capítulo 3.12). |
Para saber más
Consulte también el Capítulo 3.4.
Si le preocupa la eliminación accidental de archivos o carpetas, puede forzar el comando rm mediante la configuración de un alias de comando (Capítulo 3.35).
3.12 Realizar tareas con privilegios de superusuario
Problema
Algunos comandos no funcionan porque no tiene suficientes privilegios. Necesita ejecutar comandos con privilegios de superusuario.
Solución
El comando sudo (Super User DO) le permite realizar acciones con privilegios de superusuario. Simplemente debe prefijar el comando con sudo.
Observaciones
La mayoría de las tareas que desea realizar en la línea de comandos normalmente se pueden realizar sin privilegios de superusuario. Las excepciones más comunes aparecen cuando se instala un nuevo software o se editan archivos de configuración.
Por ejemplo, si intenta usar el comando apt-get update, recibirá varios mensajes de permiso denegado:
$ apt-get update
E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied)
E: Unable to lock directory /var/lib/apt/lists/
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
El mensaje del final —are you root?— le da juego. Si ejecuta el mismo comando con el prefijo sudo, el comando funcionará correctamente:
$ sudo apt-get update
Get:1 http://mirrordirector.raspbian.org wheezy InRelease [12.5 kB]
Hit http://archive.raspberrypi.org wheezy InRelease
Get:2 http://mirrordirector.raspbian.org wheezy/main Sources [6,241 kB]
Hit http://archive.raspberrypi.org wheezy/main armhf Packages
Ign http://archive.raspberrypi.org wheezy/main Translation-en_GB
Ign http://archive.raspberrypi.org wheezy/main Translation-en
40% [2 Sources 2,504 kB/6,241 kB 40%]
Si tiene una gran cantidad de comandos para ejecutar como superusuario y no quiere tener que prefijar cada uno con sudo, puede usar el siguiente comando:
$ sudo sh
#
Tenga en cuenta cómo cambia el indicador de $ a #. Todos los comandos posteriores se ejecutarán como superusuario. Cuando desee volver a ser un usuario normal, introduzca el comando:
# exit
$
Para saber más
Para saber más sobre los permisos de archivos, véase el Capítulo 3.13. Para instalar el software utilizando apt-get, véase el Capítulo 3.17.
3.13 Entender los permisos de archivo
Problema
Ha visto caracteres extraños en algunos nombres de archivo cuando aparecen en la lista. Usted quiere saber lo que significan.
Solución
Para ver los permisos y la información de propiedad relativa a los archivos y directorios, utilice el comando ls con la opción -l.
Observaciones
Ejecute el comando ls -l y verá un resultado como el siguiente:
$ ls -l
total 16
-rw-r--r-- 1 pi pi 5 Apr 23 15:23 file1.txt
-rw-r--r-- 1 pi pi 5 Apr 23 15:23 file2.txt
-rw-r--r-- 1 pi pi 5 Apr 23 15:23 file3.txt
drwxr-xr-x 2 pi pi 4096 Apr 23 15:23 mydir
La Figura 3.6 muestra las diferentes secciones de la información del listado. La primera sección contiene los permisos. En la segunda columna, el número 1 indica cuántos archivos están involucrados. Este campo solo tiene sentido si la entrada de la lista es para un directorio; si es un archivo será casi siempre 1. Las dos entradas siguientes (ambos pi) son el propietario y el grupo del archivo. El tamaño de la entrada (la quinta columna) indica el tamaño del archivo en bytes. La fecha cambiará cada vez que se edite o cambie el archivo. Y, por último, la entrada final es el nombre real del archivo o directorio.
Figura 3.6. Permisos de archivo.
La cadena de permisos se divide en cuatro secciones (Tipo, Propietario, Grupo y Otros). La primera sección es el tipo de archivo. Si se trata de un directorio, será el carácter d; si es solo un archivo, la entrada será un -.
La siguiente sección de tres caracteres especifica los permisos de propietario para ese archivo. Cada carácter es un indicador que está o no. Así que si el propietario tiene permisos de lectura habrá una r en la primera posición del primer carácter. Si tiene permisos de escritura habrá una w en la segunda ranura. La tercera posición, que es
– en este ejemplo, puede ser x si el archivo es ejecutable (un programa o script).
La tercera sección tiene los mismos tres indicadores, pero para cualquier usuario del grupo. Los usuarios pueden organizarse en grupos. Por lo tanto, en este caso, el archivo tiene un usuario pi y un grupo de propiedad pi. Si hubiera otros usuarios en el grupo pi, tendrían los permisos especificados ahí.
La sección final especifica los permisos para cualquier otro usuario que no sea pi ni del grupo pi.
Dado que la mayoría de la gente solo utilizará Raspberry Pi como usuario pi, los permisos de mayor interés están en la primera sección.
Para saber más
Para cambiar los permisos de archivo véase el Capítulo 3.14.
3.14 Cambiar los permisos de archivo
Problema
Necesita cambiar los permisos en un archivo.
Solución
El comando chmod se utiliza para modificar los permisos de archivo.
Observaciones
Las razones más comunes por las que puede que desee cambiar los permisos de archivo son tener que editar un archivo con permiso de solo lectura y darle a un archivo permisos de ejecución para que pueda ejecutarse como un programa o un script (secuencia de comandos).
El comando chmod le permite añadir o quitar permisos a un archivo. Hay dos sintaxis para hacer esto; una requiere el uso de octal (base 8) y el otro está basado en texto. Utilizaremos el método de texto, que es más fácil de entender.
El primer parámetro de chmod es el cambio que se va a realizar, y el segundo el archivo o carpeta a la que debe aplicarse. El parámetro de cambio toma la forma del ámbito de permiso (+, –, = para añadir, quitar y establecer, respectivamente) y, a continuación, el tipo de permiso.
Por ejemplo, el siguiente código dará derechos de ejecución (x) al archivo para el propietario del archivo file2.txt.
$ chmod u+x file2.txt
Si ahora enumeramos el directorio, podemos ver que el permiso x se ha añadido:
$ ls -l
total 16
-rw-r--r-- 1 pi pi 5 Apr 23 15:23 file1.txt
-rwxr--r-- 1 pi pi 5 Apr 24 08:08 file2.txt
-rw-r--r-- 1 pi pi 5 Apr 23 15:23 file3.txt
drwxr-xr-x 2 pi pi 4096 Apr 23 15:23 mydir
Si queremos agregar permisos de ejecución para el grupo u otros usuarios, podríamos usar g y o, respectivamente. La letra a añadirá el permiso a todos.
Para saber más
Para obtener más información sobre los permisos de archivo consulte el Capítulo 3.13. Véase el Capítulo 3.15 para cambiar la propiedad del archivo.
3.15 Cambiar la propiedad del archivo
Problema
Quiere cambiar la propiedad de un archivo.
Solución
El comando chown (cambio de propietario) se utiliza para modificar la propiedad de un archivo o directorio.
Observaciones
Como hemos descubierto en el Capítulo 3.13, cualquier archivo o directorio tiene un propietario y un grupo asociado a él. Puesto que la mayoría de los usuarios de Raspberry Pi solo tendrán el usuario pi, no necesitamos preocuparnos de los grupos.
De vez en cuando, encontrará archivos en su sistema que han sido instalados con un usuario diferente a pi. Si este es el caso, puede cambiar la propiedad del archivo utilizando el comando chown.
Para cambiar el propietario de un archivo utilice chown seguido del nuevo propietario y grupo, separados por dos puntos, y después el nombre del archivo.
Probablemente verá que necesita privilegios de superusuario para cambiar la propiedad. En este caso prefije el comando con sudo (Capítulo 3.12).
$ sudo chown root:root file2.txt
$ ls -l
total 16
-rw-r--r-- 1 pi pi 5 Apr 23 15:23 file1.txt
-rwxr--r-- 1 root root 5 Apr 24 08:08 file2.txt
-rw-r--r-- 1 pi pi 5 Apr 23 15:23 file3.txt
drwxr-xr-x 2 pi pi 4096 Apr 23 15:23 mydir
Para saber más
Para obtener más información sobre los permisos de archivo, consulte el Capítulo 3.13. También puede consultar el Capítulo 3.14 para cambiar los permisos de archivo.
3.16 Hacer una captura de pantalla
Problema
Desea capturar una imagen de la pantalla de Raspberry Pi y guardarla en un archivo.
Solución
Instale y utilice el software de captura de pantalla llamado scrot.
Observaciones
Para instalar scrot ejecute el siguiente comando desde el terminal:
$ sudo apt-get install scrot
La forma más sencilla de capturar una pantalla es simplemente introduciendo el comando scrot. Esto tomará inmediatamente una imagen de la pantalla principal y la guardará en un archivo llamado algo así como 2013-04-25-080116_1024x768_scrot.png dentro del directorio actual.
Alguna vez querrá una captura de pantalla para mostrar un menú que se abre o algo que generalmente desaparece. Para estas situaciones puede especificar un retraso antes de que se realice la captura usando la opción -d.
$ scrot -d 5
El retraso se especifica en segundos.
Si captura toda la pantalla, puede recortarla posteriormente con un software de edición de imágenes, como Gimp (Capítulo 4.12). Sin embargo, es más conveniente capturar directamente un área de la pantalla utilizando la opción -s.
Para utilizar esta opción, escriba este comando y arrastre el área de la pantalla que desea capturar con el ratón.
$ scrot -s
El nombre del archivo incluirá las dimensiones en píxeles de la imagen capturada.
Para saber más
El comando scrot tiene otras opciones para controlar cosas como utilizar múltiples pantallas y cambiar el formato del archivo guardado. Puede obtener más información sobre scrot escribiendo el siguiente comando:
$ man scrot
Para obtener más información sobre la instalación con apt-get véase el Capítulo 3.17.
3.17 Instalar un software con apt-get
Problema
Desea instalar un software utilizando la línea de comandos.
Solución
La herramienta más utilizada para instalar un software desde una sesión de terminal es apt-get.
El formato básico del comando que debe ejecutar como superusuario es:
$ sudo apt-get install <name of software>
Por ejemplo, para instalar el software del procesamiento de texto AbiWord, introduzca el comando:
$ sudo apt-get install abiword
Observaciones
El gestor de paquetes apt-get utiliza una lista de software disponible. Esta lista está incluida con la distribución del sistema operativo de Raspberry Pi que usted utiliza, pero es probable que esté desactualizada. Por lo tanto, si el software que intenta instalar es retornado por apt-get como not found (no encontrado), ejecute el siguiente comando para actualizar la lista:
$ sudo apt-get update
La lista y los paquetes de software para la instalación están todos en Internet, por lo que nada de esto funcionará si su Raspberry Pi no tiene conexión a Internet.
| Si ve que al actualizar obtiene un error como E: Problem with MergeList /var/lib/dpkg/status, pruebe a ejecutar estos comandos: sudo rm /var/lib/dpkg/status sudo touch /var/lib/dpkg/status |
El proceso de instalación puede tardar un poco porque los archivos se tienen que descargar e instalar. Algunas instalaciones también agregarán accesos directos en su escritorio o grupos de programas en su menú de inicio.
Puede buscar software para instalar con el comando apt-get search seguido por una cadena de búsqueda como abiword. Esto mostrará una lista de paquetes coincidentes que podría instalar.
Para saber más
Consulte el Capítulo 3.18 para eliminar programas que no necesita y así liberar espacio.
Consulte el Capítulo 3.21 para descargar el código fuente de GitHub.
3.18 Eliminar un software instalado con apt-get
Problema
Después de haber instalado una gran cantidad de programas con apt-get, desea eliminar algunos de ellos.
Solución
apt-get tiene una opción (remove) que eliminará paquetes, pero solo quitará los que se hayan instalado con apt-get install. Por ejemplo, si desea eliminar AbiWord, debería utilizar el comando:
$ sudo apt-get remove abiword
Observaciones
Eliminar un paquete como este no siempre lo elimina todo, ya que los paquetes a menudo tienen paquetes previos que también están instalados. Para eliminar estos puede utilizar la opción autoremove, como se muestra aquí:
$ sudo apt-get autoremove abiword
$ sudo apt-get clean
La opción apt-get clean limpiará un poco más los archivos de instalación de paquetes no utilizados.
Para saber más
Consulte el Capítulo 3.17 para instalar paquetes mediante apt-get.
3.19 Instalar paquetes de Python con pip
Problema
Desea utilizar el gestor de paquetes pip para instalar las bibliotecas de Python.
Solución
Si tiene la última versión de Raspbian, pip ya estará instalado y lo podrá ejecutar desde la línea de comandos como se muestra en el siguiente ejemplo, tomado del Capítulo 8.2, donde se utiliza para instalar la biblioteca svgwrite de Python.
$ sudo pip install svgwrite
Si pip no está instalado en su sistema, puede instalarlo usando el comando:
$ sudo apt-get install python-pip
Observaciones
Aunque muchas bibliotecas de Python pueden instalarse usando apt-get (véase el Capítulo 3.17) algunas no pueden y deben usar pip.
Para saber más
Para instalar un software usando apt-get, véase el Capítulo 3.17.
3.20 Buscar archivos desde la línea de comandos
Problema
Desea descargar un archivo desde Internet sin necesidad de utilizar un navegador web.
Solución
Utilice el comando wget para obtener un archivo de Internet. Por ejemplo:
$ wget http://www.icrobotics.co.uk/wiki/images/c/c3/Pifm.tar.gz
--2013-06-07 07:35:01-- http://www.icrobotics.co.uk/wiki/images/c/c3/Pifm.tar.gz
Resolving www.icrobotics.co.uk (www.icrobotics.co.uk)... 155.198.3.147
Connecting to www.icrobotics.co.uk (www.icrobotics.co.uk)|155.198.3.147|
:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 5521400 (5.3M) [application/x-gzip]
Saving to: `Pifm.tar.gz'
100%[==================================================>] 5,521,400 601K/s
2013-06-07 07:35:11 (601 KB/s) - `Pifm.tar.gz' saved [5521400/5521400]
Si su URL contiene caracteres especiales, es buena idea escribirlo entre comillas dobles. Este ejemplo de URL es del Capítulo 4.11.
Observaciones
Encontrará instrucciones para instalar software que dependen del uso de wget. A menudo es más conveniente hacer esto desde la línea de comandos en lugar de usar un navegador, encontrar el archivo, descargarlo y luego copiarlo en el lugar que lo necesite.
El comando wget toma la URL para descargarla como argumento y la descarga en el directorio actual. Normalmente se utiliza para descargar un archivo de algún tipo, pero también descargará cualquier página web.
Para saber más
Para obtener más información sobre la instalación con apt-get, consulte el Capítulo 3.16. Para obtener más información sobre cómo seleccionar y utilizar un navegador, consulte el Capítulo 4.4.
3.21 Buscar códigos fuente con Git
Problema
A veces, las bibliotecas Python y otros softwares se suministran a través de una URL del repositorio Git. Tiene que ser capaz de buscarlas en Raspberry Pi.
Solución
Para usar códigos en los repositorios de Git necesita usar el comando git clone para descargar los archivos.
Observaciones
Por ejemplo, el siguiente comando descargará todos los ejemplos de código fuente de este libro:
$ git clone https://github.com/simonmonk/raspberrypi_cookbook_ed2.git
Para saber más
Aprende más sobre Git y el servicio de hosting GitHub.
Consulte también el Capítulo 3.17.
3.22 Ejecutar un programa o una secuencia de comandos al iniciar
Problema
Desea que un programa o una secuencia de comandos se inicie automáticamente cuando su Raspberry Pi arranque.
Solución
Modifique su archivo rc.local para ejecutar el programa que desea.
Edite el archivo /etc/rc.local utilizando el comando:
$ sudo nano /etc/rc.local
Agregue la siguiente línea después del primer bloque de líneas de comentario que comienza con #:
$ /usr/bin/python /home/pi/my_program.py &
Es importante incluir & al final de la línea de comandos para que se ejecute en segundo plano; de lo contrario su Raspberry Pi no arrancará.
Observaciones
Esta manera de autoejecutar un programa necesitará una edición muy cuidadosa de rc.local, o tendrá que parar su Raspberry Pi en el arranque.
Para saber más
Una forma más segura de autoejecutar un programa se detalla en el Capítulo 3.23.
3.23 Ejecutar un programa o secuencia de comandos como servicio
Problema
Desea que una secuencia de comandos o programa concreto se inicie automáticamente cada vez que se reinicie Raspberry Pi.
Solución
Debian Linux, en el que se basan la mayoría de las distribuciones de Raspberry Pi, utiliza un mecanismo basado en la dependencia para automatizar el funcionamiento de los comandos al inicio. Esto es un poco complicado de usar e implica crear un archivo de configuración para el script o programa que desea ejecutar en la carpeta llamada init.d.
Observaciones
El siguiente ejemplo muestra cómo ejecutar un script de Python en su directorio personal. El script podría hacer cualquier cosa, pero en este caso, ejecuta un servidor web de Python simple, que se describe más adelante en el Capítulo 7.18.
Los pasos involucrados en esto son:
1. Cree un script init.
2. Haga que init sea ejecutable.
3. Informe al sistema acerca del nuevo script init.
Primero, cree el script init. Debe crearlo en la carpeta /etc/init.d/. Se puede llamar como quiera, pero, en este ejemplo, lo llamará my_server.
Cree el archivo nuevo utilizando nano con el siguiente comando:
$ sudo nano /etc/init.d/my_server
Pegue el siguiente código en la ventana del editor y guarde el archivo:
### EMPIEZA LA INFO INIT
# Provides: my_server
# Required-Start: $remote_fs $syslog $network
# Required-Stop: $remote_fs $syslog $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Simple Web Server
# Description: Simple Web Server
### ACABA LA INFO INIT
#! /bin/sh
# /etc/init.d/my_server
export HOME
case "$1" in
start)
echo "Starting My Server"
sudo /usr/bin/python /home/pi/myserver.py 2>&1 &
;;
stop)
echo "Stopping My Server"
PID=`ps auxwww | grep myserver.py | head -1 | awk '{print $2}'`
kill -9 $PID
;;
*)
echo "Usage: /etc/init.d/my_server {start|stop}"
exit 1
;;
esac
exit 0
Es bastante trabajo para automatizar la ejecución de un script, pero casi todo es código repetitivo. Para ejecutar uno diferente, modifique la ruta a través del script, cambiando las descripciones y el nombre del archivo Python que desea ejecutar.
El siguiente paso es hacer que este archivo sea ejecutable por el propietario, cosa que se hace con este comando:
$ sudo chmod +x /etc/init.d/my_server
Ahora que el programa está configurado como servicio, puede probar que todo está bien antes de configurarlo de inicio automático en el arranque usando el siguiente comando:
$ /etc/init.d/my_server start
Starting My Server
Bottle v0.11.4 server starting up (using WSGIRefServer())...
Listening on http://192.168.1.16:80/
Hit Ctrl-C to quit.
Por último, si se ejecuta correctamente, utilice el siguiente comando para que el sistema sea consciente del nuevo servicio que ha definido:
$ sudo update-rc.d my_server defaults
Para saber más
Para obtener un enfoque más sencillo sobre la ejecución automática de un programa, consulte el Capítulo 3.22. Para más información sobre cómo cambiar permisos de archivos y carpetas, consulte el Capítulo 3.13.
3.24 Ejecutar automáticamente un programa o una secuencia de comandos en intervalos regulares
Problema
Desea ejecutar una secuencia de comandos una vez al día o en intervalos regulares.
Solución
Utilice el comando crontab de Linux.
Para ello, Raspberry Pi necesita saber la hora y la fecha y, por lo tanto, necesita una conexión a la red o a un reloj en tiempo real. Consulte el Capítulo 12.14.
Observaciones
El comando crontab le permite programar eventos en intervalos regulares. Esto puede ser diario o por horas, e incluso puede definir patrones complicados para que tenga lugar en diferentes días de la semana. Esto puede ser útil para las tareas de copia de seguridad, que es posible que desee que se ejecuten en mitad de la noche.
Puede editar los eventos programados mediante el siguiente comando:
$ crontab -e
Si el script o el programa que desea ejecutar necesita ser ejecutado por un superusuario, prefije todos los comandos crontab con sudo (Capítulo 3.12).
La línea de comentarios indica el formato de una línea crontab. Los dígitos son, en orden, minuto, hora, día del mes, mes, día de la semana y el comando que desea ejecutar.
La línea que comienza por un # es solo una línea de comentarios para recordarle el formato de una línea crontab.
Si hay un * en la posición del dígito, significa every (cada); si hay un número en su lugar, la secuencia de comandos solo se ejecutará en ese minuto/hora/día del mes.
Por lo tanto, para ejecutarlo cada día a la 1 de la madrugada: Figura 3.7.

Figura 3.7. Editar crontab.
Utilizando solamente un solo dígito puede especificar los intervalos para ejecutar el script solo los días laborables, por ejemplo:
0 1 * * 1-5 /home/pi/myscript.sh
Si su script necesita ejecutarse desde un directorio en particular, puede usar un punto y coma (;) para separar varios comandos como se muestra aquí:
0 1 * * * cd /home/pi; python mypythoncode.py
Para saber más
Puede ver la documentación completa de crontab introduciendo este comando:
$ man crontab
3.25 Encontrar cosas
Problema
Desea encontrar un archivo que sabe que está en alguna parte del sistema.
Solución
Utilice el comando de Linux find.
Observaciones
Comenzando con un directorio especificado en el comando, el comando find buscará y, si encuentra el archivo, mostrará su ubicación. Por ejemplo:
$ find /home/pi -name gemgem.py
/home/pi/python_games/gemgem.py
Puede iniciar la búsqueda más arriba del árbol, incluso en la raíz de todo el sistema de archivos (/). Esto hará que la búsqueda tarde mucho más, y también producirá mensajes de error. Puede redirigir estos mensajes de error añadiendo 2>/dev/null al final de la línea.
Para buscar el archivo en todo el sistema de archivos utilice el siguiente comando:
$ find / -name gemgem.py 2>/dev/null
/home/pi/python_games/gemgem.py
Puede también usar comodines con find, como se muestra aquí:
$ find /home/pi -name match*
/home/pi/python_games/match4.wav
/home/pi/python_games/match2.wav
/home/pi/python_games/match1.wav
/home/pi/python_games/match3.wav
/home/pi/python_games/match0.wav
/home/pi/python_games/match5.wav
Para saber más
El comando find tiene otras funciones avanzadas para la búsqueda. Para ver la documentación completa de find use este comando:
$ man find
3.26 Utilizar el historial de la línea de comandos
Problema
Quiere ser capaz de repetir comandos en la línea de comandos sin tener que escribirlos de nuevo.
Solución
Utilice las teclas (arriba y abajo) para seleccionar comandos anteriores desde el historial de comandos y el comando history con grep para encontrar comandos antiguos.
Observaciones
Puede acceder al comando anterior que ejecutó pulsando la tecla de la flecha hacia arriba. Al pulsarla de nuevo le llevará al comando anterior, y así sucesivamente. Si se pasa el comando que desea, la flecha hacia abajo lo llevará de nuevo en la otra dirección.
Si desea cancelar sin ejecutar el comando, utilice Ctrl-C.
Con el tiempo, su historial de comandos crecerá demasiado como para encontrar un comando que usó hará siglos. Para encontrarlo hacia atrás, use el comando history.
$ history
1 sudo nano /etc/init.d/my_server
2 sudo chmod +x /etc/init.d/my_server
3 /etc/init.d/my_server start
4 cp /media/4954-5EF7/sales_log/server.py myserver.py
5 /etc/init.d/my_server start
6 sudo apt-get update
7 sudo apt-get install bottle
8 sudo apt-get install python-bottle
Esto muestra todo el historial de comandos y es probable que tenga demasiadas entradas para encontrar la que desea. Para remediarlo, puede canalizar el comando history con el comando grep, el cual solo mostrará resultados que coincidan con una cadena de búsqueda. Así, por ejemplo, para encontrar todos los comandos apt-get (Capítulo 3.17) que ha emitido, puede usar la línea:
$ history | grep apt-get
6 sudo apt-get update
7 sudo apt-get install bottle
8 sudo apt-get install python-bottle
55 history | grep apt-get
Cada elemento del historial tiene un número junto a él. Así que si encuentra la línea que buscaba, puede ejecutarla usando ! seguido del número del historial como se muestra aquí:
$ !6
sudo apt-get update
Hit http://mirrordirector.raspbian.org wheezy InRelease
Hit http://mirrordirector.raspbian.org wheezy/main armhf Packages Hit
http://mirrordirector.raspbian.org wheezy/contrib armhf Packages
.....
Para saber más
Para encontrar archivos en lugar de comandos consulte el Capítulo 3.25.
3.27 Supervisar la actividad del procesador
Problema
Raspberry Pi a veces puede funcionar un poco lento, por lo que desea ver qué está acaparando el procesador.
Solución
Utilice el Administrador de tareas, lo encontrará dentro del menú de inicio en el grupo de programas Herramientas del sistema (Figura 3.8).
Figura 3.8. Administrador de tareas.
El Administrador de tareas le permite ver cuánta CPU y memoria se está utilizando. También puede hacer clic con el botón derecho del ratón en un proceso y seleccionar la opción para eliminarlo en el menú emergente.
Los gráficos de la parte superior de la ventana muestran el uso total de la CPU y la memoria. Los procesos se enumeran debajo, y puede ver la CPU que cada uno está utilizando.
Observaciones
Si prefiere hacer este tipo de cosas desde la línea de comandos, utilice el comando top de Linux para mostrar datos similares sobre el procesador y la memoria y los procesos que utilizan más recursos (Figura 3.9). Puede utilizar el comando kill para detener un proceso. Tendrá que hacerlo como superusuario.
En este caso, puede ver que es un programa de Python que utiliza el 97 % de la CPU. La primera columna muestra el ID del proceso (2447). Para detener este proceso, introduzca el comando:
$ kill 2447
Es posible eliminar procesos vitales del sistema operativo de esta manera. Si lo hace, apagar y volver a encender su Pi restablecerá las cosas a la normalidad.
Figura 3.9. Utilizar el comando top para ver el uso de los recursos.
A veces, es posible que tenga un proceso en ejecución que no sea visible inmediatamente cuando utilice top. Si este es el caso, puede buscar todos los procesos que se ejecutan usando el comando ps y canalizando (Capítulo 3.32) los resultados con el comando grep, que buscará los resultados y resaltará los elementos de interés.
Por ejemplo, para encontrar el ID del proceso de Python que acapara la CPU, ejecutaríamos el siguiente comando:
$ ps -ef | grep "python"
pi 2447 2397 99 07:01 pts/0 00:00:02 python speed.py
pi 2456 2397 0 07:01 pts/0 00:00:00 grep --color=auto python
En este caso, el ID del proceso del programa speed.py de Python es 2447. La segunda entrada en la lista es el propio proceso del ps.
Una variación en el comando kill es el comando killall. Utilícelo con precaución, ya que elimina todos los procesos que coinciden con su argumento. Así, por ejemplo, el siguiente comando eliminará todos los programas de Python que se estén ejecutando en Raspberry Pi:
$ sudo killall python
Para saber más
Puede consultar las páginas de la documentación para top, ps, grep, kill y killall. Puede verlas escribiendo man seguido del nombre del comando, como se muestra aquí:
$ man top
3.28 Trabajar con archivos comprimidos
Problema
Ha descargado un archivo comprimido y desea descomprimirlo.
Solución
Dependiendo del tipo de archivo, necesitará utilizar los comandos tar o gunzip.
Observaciones
Si el archivo que desea descomprimir solo tiene la extensión .gz, puede descomprimirlo usando el comando:
$ gunzip myfile.gz
También puede encontrar archivos (llamados tarballs) que contienen un directorio que ha sido archivado con la utilidad de Linux tar y luego son comprimidos con gzip en un archivo con un nombre como myfile.tar.gz.
Puede extraer los archivos y las carpetas originales de un tarball utilizando el comando tar:
$ tar -xzf myfile.tar.gz
Para saber más
Puede obtener más información sobre tar desde las páginas de la documentación, a las que puede acceder mediante el comando man tar.
3.29 Mostrar los dispositivos USB conectados
Problema
Ha conectado un dispositivo USB y quiere asegurarse de que Linux lo reconoce.
Solución
Utilice el comando lsusb. Esto mostrará todos los dispositivos conectados a los puertos USB de su Raspberry Pi:
$ lsusb
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 15d9:0a41 Trust International B.V. MI-2540D [Optical mouse]
Observaciones
Este comando le indicará si un dispositivo está conectado o no, pero no garantiza que esté funcionando correctamente. Puede haber drivers para instalar y cambios de configuración para hacer en el hardware.
Para saber más
Para obtener un ejemplo de uso de lsusb al conectar una webcam externa consulte el Capítulo 4.6.
3.30 Redirigir la salida desde la línea de comandos a un archivo
Problema
Desea crear rápidamente un archivo con algo de texto o grabar una lista de directorios en un archivo.
Solución
Utilice el comando > para redirigir la salida que aparecería en la línea de comandos.
Por ejemplo, para copiar una lista de directorios en un archivo llamado myfiles.txt, haga lo siguiente:
$ ls > myfiles.txt
$ more myfiles.txt
Desktop
indiecity
master.zip
mcpi
Observaciones
Puede usar el comando > en cualquier comando de Linux que produzca una salida, incluso si está ejecutando, por ejemplo, un programa de Python.
También puede usar el comando opuesto (<) para redirigir la entrada del usuario, aunque esto no es tan útil como >.
Para saber más
Para utilizar cat para unir varios archivos consulte el Capítulo 3.31.
3.31 Concatenar archivos
Problema
Usted tiene un número de archivos de texto y desea unirlos en un archivo grande.
Solución
Utilice el comando cat para concatenar un numero de archivos en un archivo de salida (output). Por ejemplo:
$ cat file1.txt file2.txt file3.txt > full_file.txt
Observaciones
Unir archivos es el verdadero propósito del comando cat. Puede proporcionar tantos nombres de archivos como desee, y todos se escribirán en el archivo al que los dirija. Si no redirecciona la salida, aparecerá en la ventana del terminal. Si son archivos grandes, puede tardar.
Para saber más
Consulte también el Capítulo 3.8, donde se utiliza cat para mostrar el contenido de un archivo.
3.32 Usar pipes (tuberías)
Problema
Desea utilizar la salida de un comando de Linux como entrada de otro comando.
Solución
Utilizar el comando pipe, que es el símbolo de barra (|) en el teclado, para canalizar la salida de un comando a otro. Por ejemplo:
$ ls -l *.py | grep Jun
-rw-r--r-- 1 pi 226 Jun 7 06:49 speed.py
Aquí encontrará todos los archivos con la extensión py que también tengan Jun en su lista de directorios, indicando que fueron modificados por última vez en junio.
Observaciones
A primera vista, esto se parece bastante a la redirección de salida usando > (Capítulo 3.30). La diferencia es que > no funcionará si el objetivo es otro programa. Solo funcionará para redirigir a un archivo.
Puede encadenar tantos programas como quiera, como se muestra aquí, aunque no es algo que hará a menudo.
$ command1 | command2 | command3
Para saber más
Puede consultar el Capítulo 3.27 para un ejemplo de uso de grep para encontrar un proceso.
Véase el Capítulo 3.26 para buscar en su historial de comandos, usando un pipe y grep.
3.33 Ocultar la salida al terminal
Problema
Desea ejecutar un comando, pero no quiere que la salida aparezca en pantalla.
Solución
Redireccione la salida a /dev/null utilizando >. Por ejemplo:
$ ls > /dev/null
Observaciones
Este ejemplo ilustra la sintaxis, pero es bastante inútil. Un uso más común se da cuando está ejecutando un programa y el desarrollador deja muchos mensajes de rastreo en su código que realmente no quiere ver. El siguiente ejemplo oculta la salida innecesaria del comando find (véase el Capítulo 3.35).
$ find / -name gemgem.py 2>/dev/null
/home/pi/python_games/gemgem.py
Para saber más
Para más información acerca de cómo redirigir la salida estándar, consulte el Capítulo 3.30.
3.34 Ejecutar programas en segundo plano
Problema
Desea ejecutar un programa, pero también trabaja en otras tareas.
Solución
Ejecute el programa o el comando en segundo plano utilizando el comando &.
Por ejemplo:
$ python speed.py &
[1] 2528
$ ls
En lugar de esperar hasta que el programa haya terminado de ejecutarse, la línea de comandos muestra el ID del proceso (el segundo número) e inmediatamente le permite continuar con cualquier otro comando que quiera ejecutar. Puede utilizar el ID del proceso para eliminar procesos en segundo plano (Capítulo 3.27).
Para llevar un proceso del segundo plano al primer plano utilice el comando fg:
$ fg
python speed.py
Esto informa del comando o programa que se está ejecutando y luego espera a que finalice.
Observaciones
La salida del proceso en segundo plano seguirá apareciendo en el terminal.
Una alternativa para poner procesos en segundo plano es simplemente abrir más de una ventana de terminal.
Para saber más
Para obtener información sobre cómo administrar procesos consulte el Capítulo 3.27.
3.35 Crear alias de comandos
Problema
Desea crear alias para los comandos que utiliza con frecuencia.
Solución
Edite el archivo ~/.bashrc utilizando nano (Capítulo 3.7) y luego muévase al final del archivo y añada tantas líneas como desee como estas:
alias l='ls -a'
Esto crea un alias llamado l que, cuando lo introduzca, será interpretado como el comando ls -a.
Guarde y salga del archivo usando Ctrl-X y Ctrl-Y, y luego, para actualizar el terminal con el nuevo alias, escriba el siguiente comando:
$ source .bashrc
Observaciones
Muchos usuarios de Linux configuran un alias para rm como el siguiente para que confirme las eliminaciones.
$ alias rm='rm -i'
No es una mala idea, siempre y cuando no se olvide cuando utilice el sistema de otra persona que no tenga este alias configurado.
Para saber más
Para más información sobre rm, consulte el Capítulo 3.11.
3.36 Ajustar la fecha y la hora
Problema
Desea configurar manualmente la fecha y la hora de su Raspberry Pi, porque no tiene conexión a Internet.
Solución
Utilice el comando de Linux date.
El formato de fecha y hora es MMDDHHMMYYYY, donde MM es el número del mes, DD es el día del mes, HH y MM son las horas y los minutos, respectivamente, y YYYY es el año.
Por ejemplo:
$ sudo date 010203042013
Wed Jan 2 03:04:00 UTC 2013
Observaciones
Si Raspberry Pi está conectada a Internet, a medida que arranque, automáticamente establecerá la hora utilizando un servidor de tiempo de Internet.
También puede utilizar date para mostrar la hora UTC simplemente introduciendo date (fecha):
$ date
Wed Jan 2 03:08:14 UTC 2013
Para saber más
Si desea que su Raspberry Pi mantenga la hora correcta incluso cuando no hay red, puede utilizar un módulo de reloj a tiempo real (RTC) (Capítulo 12.14).
3.37 Saber cuánto espacio tiene en la tarjeta SD
Problema
Desea saber cuánto espacio hay libre en la tarjeta SD.
Solución
Utilice el comando de Linux df:
| $ df -h | ||||
| Filesystem | Size | Used | Avail | Use% Mounted on |
| rootfs | 3.6G | 1.7G | 1.9G | 48% / |
| /dev/root | 3.6G | 1.7G | 1.9G | 48% / |
| devtmpfs | 180M | 0 | 180M | 0% /dev |
| tmpfs | 38M | 236K | 38M | 1% /run |
| tmpfs | 5.0M | 0 | 5.0M | 0% /run/lock |
| tmpfs | 75M | 0 | 75M | 0% /run/shm |
| /dev/mmcblk0p1 | 56M | 19M | 38M | 34% /boot |
Observaciones
En cuanto a la primera línea de los resultados, puede ver que hay 3,6 GB de almacenamiento en la tarjeta SD, de los cuales se utilizan 1,7 GB.
Cuando se quede sin espacio en el disco es probable que obtenga un comportamiento inesperado, como mensajes de error que indiquen que no se pudo escribir un archivo.
Para saber más
Puede encontrar la página de la documentación para df utilizando man df.
CAPÍTULO 4
Software
4.1 Introducción
Este capítulo contiene una serie de fórmulas para utilizar softwares preconfigurados en Raspberry Pi.
Algunas fórmulas de este capítulo están relacionadas con la conversión de Raspberry Pi a un solo uso, mientras que otras utilizan piezas específicas de softwares en Raspberry Pi.
4.2 Crear un centro multimedia
Problema
Desea convertir su Raspberry Pi en un centro multimedia.
Solución
Para utilizar su Raspberry Pi como centro multimedia debe tener una Raspberry Pi 3 o el modelo B de la Raspberry Pi 2, ya que la reproducción de vídeo es muy intensa en los procesadores.
Puede configurar su Raspberry Pi como centro multimedia durante el proceso de instalación de NOOBS (Capítulo 1.6). En lugar de seleccionar Raspbian como la distribución a instalar, seleccione OpenELEC_Pi1 si tiene la Raspberry Pi 1 o OpenELEC_Pi2 si tiene la Raspberry Pi 2.
OpenELEC es una distribución que optimiza su Raspberry Pi como centro multimedia. Incluye el software del centro multimedia Kodi, basado en el proyecto de código abierto XBMC que fue desarrollado originalmente para convertir las consolas Xbox en centros multimedia. Desde entonces, el código ha sido llevado a muchas plataformas, incluyendo Raspberry Pi (Figura 4.1).

Figura 4.1. Raspberry Pi como centro multimedia.
Raspberry Pi es perfectamente capaz de reproducir vídeos en full HD, así como música en streaming, archivos MP3 y radio por Internet.
Observaciones
Kodi es una potente pieza de software con muchas características. Quizás la manera más simple de comprobar que está funcionando es poner algunos archivos de música y/o vídeo en una unidad flash USB o en un disco duro externo y conectarlo a Raspberry Pi. Debería poder reproducirlos desde Kodi.
Puesto que Raspberry Pi es probable que esté cerca de su TV, puede ver si su TV tiene un puerto USB que pueda proporcionar corriente suficiente para ejecutar Raspberry Pi. Si este es el caso, no necesitará una fuente de alimentación aparte.
Es una buena idea tener un teclado y un ratón inalámbricos, si los compra como un conjunto usarán un solo puerto USB para el dongle, ya que evitará tener los cables por todas partes. También puede comprar miniteclados con trackpads incorporados que son útiles en esta situación.
Una conexión de red por cable ofrece generalmente un rendimiento superior y mejor que una conexión WiFi, pero no siempre es posible tener Pi cerca de una toma Ethernet. Si este es el caso, puede configurar XBMC para utilizar un dongle WiFi para una conexión de red.
La configuración de Kodi es muy intuitiva. Puede encontrar las instrucciones completas sobre el uso del software en http://kodi.wiki/.
Para saber más
Puede agregar un control remoto IR a Raspberry Pi para controlar XBMC.
4.3 Instalar programas de ofimática
Problema
Necesita abrir procesadores de texto y documentos de hojas de cálculo en Raspberry Pi.
Solución
Raspberry Pi es, después de todo, un ordenador Linux, por lo que hay varias aplicaciones de ofimática que puede instalar para utilizar hojas de cálculo y documentos de procesador de textos.
Los programas para Raspberry Pi se descargan de Internet, por lo que necesitará tener una conexión.
Antes de instalar cualquier software nuevo, una buena idea es abrir un terminal y ejecutar el siguiente comando:
$ sudo apt-get update
Para instalar el procesador de texto AbiWord, ejecute este comando:
$ sudo apt-get install abiword
Se le pedirá que confirme la instalación escribiendo Y; después de un minuto aproximadamente la instalación estará completa. Si observa su menú de Inicio, verá una nueva sección llamada Office, donde encontrará AbiWord (Figura 4-2).
AbiWord abrirá .doc, .docx, y otros formatos comunes de documentos de procesadores de textos.
Si necesita usar una hoja de cálculo, Gnumeric es una buena opción. Instálelo utilizando el comando:
$ sudo apt-get install gnumeric
Figura 4.2. AbiWord en Raspberry Pi.
Pulsuz fraqment bitdi.