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
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
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
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.
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. |