Aplicaciones Electrónicas para Raspberry Pi con Python - vv.aa. - E-Book

Aplicaciones Electrónicas para Raspberry Pi con Python E-Book

aa.vv

0,0
14,99 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.
Mehr erfahren.
Beschreibung

Domine el potencial de la Raspberry Pi: de la iniciación al desarrollo de aplicaciones inteligentes ¿Desea explorar todo lo que puede lograr con su Raspberry Pi? Este libro le ofrece una guía completa y estructurada que le acompañará desde los primeros pasos de conexión hasta el desarrollo de aplicaciones IoT con inteligencia artificial integrada. Pensado tanto para autodidactas como para entornos educativos o profesionales, este manual técnico comienza con una introducción accesible a Linux y Python, avanza con el control de periféricos (GPIO, SenseHat, cámara y visión por computador con OpenCV), y culmina con la creación de APIs, bases de datos SQL y aplicaciones IoT conectadas mediante MQTT o HTTP. Todo ello acompañado de ejemplos prácticos y ejercicios propuestos que le permitirán consolidar sus conocimientos. Con este libro aprenderá a: • Configurar su Raspberry Pi y comunicarse con ella de forma remota desde el primer momento. • Programar en Python con aplicaciones prácticas orientadas al hardware y la automatización. • Controlar sensores, actuadores y periféricos mediante GPIO, SenseHat y comunicación serie. • Desarrollar proyectos IoT con interfaces gráficas, bases de datos y servidores web. • Entrenar y ejecutar modelos de inteligencia artificial en la Raspberry Pi usando PyTorch. Tanto si es docente, estudiante, ingeniero, maker o entusiasta del aprendizaje técnico, encontrará en estas páginas una hoja de ruta clara, rigurosa y actualizada para convertir su Raspberry Pi en una herramienta de desarrollo profesional.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern

Seitenzahl: 247

Veröffentlichungsjahr: 2025

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



 

 

Aplicaciones electrónicas para Raspberry Pi con Python

Primera edición, 2025

© 2025 Daniel Gutiérrez, Samuel Yanes, José Manuel García y Sergio Toral

© 2025 MARCOMBO, S. L. www.marcombo.com

Gran Via de les Corts Catalanes 594, 08007 Barcelona

Contacto: [email protected]

Ilustración de cubierta: Jotaká

Corrección: Mónica Muñoz

Directora de producción: Mª Rosa Castillo

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. Diríjase a CEDRO (Centro Español de Derechos Reprográficos, www.cedro.org) si necesita fotocopiar o escanear algún fragmento de esta obra.

ISBN: 978-84-267-4079-3

Producción del ePub: booqlab

Índice

Cubierta

Título

Créditos

Índice

Cómo usar este libro

I Primeros pasos con la RPi

1 Conexión con la RPi

1.1 Conexión inicial mediante Ethernet

1.2 Activación del servicio VNC

1.3 Conexión mediante VNC

1.4 Configuración wifi

1.5 Creación de una red wifi con nuestro móvil

2 Guía rápida de Linux

2.1 Superusuario – Comando sudo

2.2 Cómo (re)instalar el SO

3 Introducción a Python

3.1 ¿Qué es Python?

3.1.1 Variables

3.1.2

Scripts

en Python

3.1.3 “Hola mundo” en un

script

de Python

3.1.4 Control de flujo

3.1.5 Funciones

3.1.6 Importar módulos

3.1.7 Editor de código: Thonny

II Manejo de periféricos

4 Entradas y salidas digitales

4.1 GPIO

4.1.1 Control de los GPIO con GPIOZero y Python

4.2 Interrupciones con GPIOZero

4.3 Manejo del PWM

4.4 Comunicación serie mediante UART

4.5 Ejercicios propuestos

5 SenseHat: uso y aplicaciones

5.1 Características

5.2 Lectura de los sensores

5.3 Uso del

joystick

5.3.1 Representación de datos con Matplotlib

5.4 Uso del giróscopo y acelerómetro

5.5 Uso de la matriz de ledes

5.6 Ejercicios propuestos

6 RaspiCamera y OpenCV

6.1 Instalación de la RaspiCam

6.2 Manejo de la cámara con Python

6.2.1 Captura de imagen

6.2.2 Captura de vídeo

6.3 Computer Vision con OpenCV

6.3.1 Primer ejemplo con OpenCV

6.3.2 Eventos con OpenCV

6.3.3 Filtrado por colores

6.3.4 Combinación de imágenes por canal alfa

6.3.5 Detector de movimiento

6.4 Detección de caras con filtros Haar

6.5 Ejercicios propuestos

III Desarrollo de aplicaciones IoT

7 Protocolos IoT: MQTT y HTTP

7.1 Protocolos de transporte de datos

7.2 Transmisión de datos usando MQTT

7.2.1 Publicador con PAHO-MQTT

7.2.2 Suscriptor con PAHO-MQTT

7.3 Servidor HTTP con API REST

7.3.1 Servidor REST con Flask

7.3.2 Respuesta en formato JSON

7.3.3 Paso de parámetros

7.3.4 Servidor REST para un sensor y un actuador

7.3.5 Cliente REST con Flask

7.3.6 Incluyendo el SenseHat

7.4 Servidor ThingSpeak

7.4.1 Envío y recepción de datos a través de API

7.5 Interfaces gráficas con Tkinter

7.5.1 Creación de una interfaz secilla

7.5.2 Uso de la pantalla táctil de 7’

7.6 Ejercicios propuestos

8 Bases de datos SQL para IoT

8.1 Tipos de bases de datos

8.1.1 Modelo de base datos plana

8.1.2 Modelo de base datos jerárquica

8.1.3 Modelo relacional

8.1.4 Modelo no relacional

8.1.5 Modelo orientado a objetos

8.2 SQL, lenguaje de consulta

8.2.1 Comandos SQL

8.2.2 Comandos de definición de datos (DLL)

8.2.3 Comandos de manipulación de datos (DML)

8.3 Sistema gestor de bases de datos (SGBD)

8.4 SQLite 3

8.4.1 Características de SQLite3

8.4.2 Descarga e instalación

8.4.3 Operaciones sobre la base de datos SQLite3

8.4.4 Operaciones con columnas

8.5 Entorno gráfico – DBeaver

8.5.1 Creación de una base de datos a partir de DBeaver

8.5.2 Conexión a una base de datos existente

8.6 Ejercicios propuestos

9 Desarrollo de API para IoT

9.1 Módulo Flask y SQLAlchemy

9.2 Desarrollo de la API

9.2.1 Servidor Flask

9.3 Configuración de una base de datos

9.4 Especificaciones de la API REST v1

9.5 Implementación de la API REST v1

9.5.1 Listado de plazas de garajes

9.5.2 Datos de una plaza de garaje

9.5.3 Datos de una plaza de garaje a partir de un identificador de vehículo

9.5.4 Listado de plazas de garaje extendido

9.6 Implementación de la API REST v2

9.6.1 Inserción de nuevo dato en tabla

9.6.2 Creación de un cliente

9.7 Ejercicios propuestos

IV RPi e inteligencia artificial

10 Deep learning y visión artificial

10.1

Machine learning

y

deep learning

10.1.1 Introducción al deep learning

10.1.2 Aprendizaje supervisado y no supervisado

10.2 Introducción a las redes neuronales

10.2.1 Perceptrón

10.2.2 Redes densas

10.2.3 Funciones de activación

10.3 Entrenamiento de una red neuronal

10.3.1 Métricas de funcionamiento

10.4 Redes convolucionales

10.4.1 Capa convolucional 2D

10.4.2 Capa de

max-pooling

.

10.4.3 Capa densa

10.5 Instalación de Miniconda

10.6 Entrenamiento de redes con PyTorch

10.6.1 Entrenamiento de clasificador de dígitos: MNIST

10.6.2 Clasificador basado en redes convolucionales

10.6.3 Evaluación de la red neuronal

10.7 Clasificando señales de tráfico

10.7.1

Dataset

10.8 Ejercicios propuestos

11 Inferencia neuronal en RPi

11.1 Cuantización de modelos

11.1.1 Escalado y redondeo en la cuantización

11.1.2 Tipos de cuantización en PyTorch

11.1.3 Cuantización estática

11.1.4 Cuantización dinámica

11.1.5 Quantization-Aware Training

11.2 Compilador Just-In-Time (JIT)

11.3 Inferencia en tiempo real

11.4 Otras arquitecturas neuronales

11.5 Inferencia en tiempo real con MobileNet

11.6 Ejercicios propuestos

Guide

Cover

Resumen Del Contenido

Start

Cómo usar este libro

Bienvenida

¡Hola, futuro creador!

Estás a punto de embarcarte en un emocionante viaje a través del mundo de la Raspberry Pi 4, donde exploraremos sus capacidades para aplicaciones de Internet de las cosas e inteligencia artificial. Este libro ha sido diseñado para ser tu compañero en este camino, guiándote desde los conceptos básicos hasta proyectos prácticos que te permitirán dar vida a tus ideas.

Cada capítulo que compone esta obra ha sido diseñado para ser una unidad de aprendizaje en sí misma, permitiéndote consultar temas específicos según tus intereses y necesidades. Sin embargo, te recomendamos recorrer estas páginas en el orden establecido, ya que cada capítulo se construye sobre los conceptos presentados en los anteriores. Esta progresión secuencial te brindará una comprensión más profunda y sólida, permitiéndote apreciar la interconexión de los diversos aspectos de la Raspberry Pi 4.

A lo largo de tu lectura, te encontrarás con numerosos ejemplos prácticos, elaborados para ilustrar los principios teóricos que se presentan. Te animo a que no te limites a leerlos, sino que los lleves a la práctica, los modifiques y los expandas con tus propias ideas. La experimentación es el alma de la innovación, y cada prueba que realices te acercará un paso más a la maestría.

Al final de cada capítulo, te aguardan preguntas y ejercicios diseñados para consolidar tu aprendizaje y estimular tu pensamiento crítico. Estas actividades no son meras evaluaciones, sino herramientas para reforzar tu comprensión y para ayudarte a establecer conexiones entre los diferentes temas que exploraremos. Además, las preguntas y ejercicios están diseñados de forma secuencial, por lo que en las preguntas posteriores a menudo se incorporarán elementos de capítulos anteriores, lo que te ayudará a reforzar los conocimientos a medida que avanzas.

Deseamos que este libro se convierta en un recurso preciado en tu camino hacia la creación de proyectos revolucionarios con la Raspberry Pi 4. Queremos que te sientas inspirado a explorar, a experimentar y a desafiar los límites de lo posible. Que, cada página, te impulse a dar rienda suelta a tu creatividad y a convertir tus ideas en realidades tangibles.

Nuestra filosofía

En el corazón de este libro reside una filosofía de aprendizaje donde se valora la práctica por encima de todo. Creemos firmemente que la mejor manera de dominar la Raspberry Pi 4 y sus aplicaciones en IoT e IA es a través de la experimentación y la aplicación directa de los conceptos. Por ello, hemos tejido una red de ejemplos prácticos a lo largo de cada capítulo, diseñados para servir como puentes entre la teoría y la realidad.

Estos ejemplos no son meras ilustraciones; son invitaciones a la acción, a ensuciarse las manos y a descubrir el poder de la Raspberry Pi 4 por ti mismo. Cada ejemplo ha sido cuidadosamente seleccionado para demostrar un concepto específico: desde la configuración inicial hasta la implementación de algoritmos de IA complejos. Te animamos a que los sigas paso a paso, a que los modifiques, los expandas y los adaptes a tus propios proyectos.

Los ejemplos de este libro son más que simples demostraciones; son herramientas de descubrimiento. Te permiten explorar las capacidades de la Raspberry Pi 4, comprender cómo funcionan sus componentes y descubrir cómo se pueden combinar para crear proyectos innovadores. Al seguir los ejemplos, adquirirás una comprensión profunda de los conceptos teóricos y desarrollarás las habilidades prácticas necesarias para dar vida a tus propias ideas.

Nuestro objetivo final es que te conviertas en un creador autónomo, capaz de diseñar y construir tus propios proyectos de IoT e IA con la Raspberry Pi 4. Los ejemplos de este libro son peldaños en ese camino, guiándote desde los conceptos básicos hasta la creación de proyectos complejos. Al seguir los ejemplos, adquirirás la confianza y las habilidades necesarias para convertirte en un experto en la Raspberry Pi 4.

Herramientas necesarias

Capítulo 1. Primeros pasos con la electrónica

En el primer capítulo, donde exploraremos los fundamentos de la electrónica con la Raspberry Pi 4, te recomendamos tener a mano los siguientes componentes:

•Protoboard: una placa de pruebas para montar circuitos sin necesidad de soldar.

•Ledes: diodos emisores de luz de diferentes colores para visualizar señales.

•Resistencias: componentes para limitar el flujo de corriente y proteger los ledes.

•Cables: cables de conexión para interconectar los componentes en la Protoboard.

Para facilitarte la adquisición de estos componentes, te recomendamos buscar “kits de inicio de electrónica para Raspberry Pi 4"en tiendas online especializadas. Estos kits suelen incluir todos los componentes necesarios para los primeros capítulos, ahorrándote tiempo y esfuerzo en recopilar todas las herramientas.

Capítulos 2 y 3. Capturando el mundo con cámara y sensores

A medida que avancemos, en los capítulos 2 y 3, nos adentraremos en el mundo de la visión artificial y la detección de datos ambientales. Para ello, será recomendable que cuentes con:

•Raspberry Pi Camera: una cámara diseñada específicamente para la Raspberry Pi, ideal para proyectos de visión artificial.

•Sense HAT: una placa con diversos sensores (temperatura, humedad, presión, etc.) para recopilar datos del entorno.

Estos componentes te permitirán explorar las capacidades multimedia y de detección de la Raspberry Pi 4, abriendo un abanico de posibilidades para tus proyectos.

Capítulos avanzados: el poder del software

En los últimos capítulos, nos centraremos en el desarrollo de aplicaciones de IoT e IA, donde el software tomará el protagonismo. Si bien no será estrictamente necesario contar con hardware adicional, te recomendamos tener a mano los componentes de los capítulos anteriores, ya que te permitirán poner en práctica los conceptos aprendidos y dar vida a tus creaciones.

Recomendaciones adicionales

• Al adquirir tu Raspberry Pi 4, asegúrate de que venga con una fuente de alimentación adecuada y una tarjeta microSD para el sistema operativo.

• Considera la posibilidad de adquirir una carcasa para proteger tu Raspberry Pi 4 y mantenerla organizada.

• Es recomendable adquirir un multímetro, para poder medir los voltajes y las corrientes de los circuitos.

• Siempre es bueno tener a mano un juego de destornilladores pequeños.

Con estos componentes en tu poder, estarás listo para embarcarte en un emocionante viaje de aprendizaje y creación con la Raspberry Pi 4.

I Primeros pasos con la RPi

1 Conexión con la RPi

1.1 Conexión inicial mediante Ethernet

1.2 Activación del servicio VNC

1.3 Conexión mediante VNC

1.4 Configuración wifi

1.5 Creación de una red wifi con nuestro móvil

2 Guía rápida de Linux

2.1 Superusuario – Comando sudo

2.2 Cómo (re)instalar el SO

3 Introducción a Python

3.1 ¿Qué es Python?

1. Conexión con la RPi

EN este apartado inicial aprenderemos los métodos de conexión con la Raspberry y los comandos más importantes para movernos dentro de un sistema operativo (SO) de tipo UNIX como es Raspberry Pi OS.

1.1 Conexión inicial mediante Ethernet

Lo primero que ha de hacerse es conectarse mediante un cable Ethernet a la RPi. Si no se ha configurado ninguna conexión a una red wifi preexistente, la RPi permanece aislada. Para poder realizar la configuración inicial, lo más inmediato es conectarnos mediante un cable Ethernet con nuestro ordenador. Debemos fijarnos que, al encender la RPi mediante la conexión a la corriente, los ledes del puerto Ethernet se encienden (indica que está bien conectado). Cuando se haya iniciado el sistema, la RPi se asigna dinámicamente una IP. Esta IP se puede conocer si en un terminal (PowerShell, CMD, Shell, etc.) escribimos el comando (en Windows):

O el siguiente (en macOS o Linux):

Bajo la configuración del adaptador Ethernet, debe poder encontrarse la IP de la Raspberry Pi conectada por Ethernet, tal y como aparece en la figura 1.1, bajo el campo IPv4. Realmente, al iniciar el SO de forma predeterminada, la RPi impone una IP en el rango de la subred 10.42.0.X para la conexión Ethernet, por lo que, en ausencia de un servidor DHCP que le asigne una IP, podremos encontrar a la RPi de entre esas IP. La RPi dispone de un servicio de hostname automático para evitar tener que encontrar la IP cada vez que encendemos el dispositivo. El hostname de la RPi es, de forma predeterminada, raspberrypi.local. Este nombre hace de alias de red, por lo que podremos conectarnos a la RPi usándolo en vez de la IP explícita.

Figura 1.1: Resultado del comando ipconfig

1.2 Activación del servicio VNC

VNC (Virtual Network Computing), es un software de código libre de tipo cliente servidor que permite ver la pantalla del ordenador servidor y controlarlo en uno o varios ordenadores clientes; sin importar qué sistema operativo pueda ejecutar el cliente o el servidor, podemos ver la pantalla y controlar el equipo del que ejecuta el servidor desde el cliente. Usaremos este servicio para poder conectarnos al escritorio remoto de la RPi.

De forma predeterminada, el SO que proporcionamos ya tiene el servicio VNC activado. Por lo tanto, no hace falta hacer lo que viene a continuación. No obstante, si no funcionara o instaláramos Raspberry Pi OS desde cero, para activarlo, deberemos configurarlo a través de una conexión SSH. Una conexión SSH es un sistema seguro de acceso al SO mediante terminal. Para conectarnos, abriremos un terminal1. Una vez abierto el terminal, escribiremos el siguiente comando:

Con este comando, estamos iniciando una conexión SSH con el usuario pi y la IP raspberrypi.local. Una vez ejecutado, nos pedirá confirmar la identidad. Aceptamos escribiendo y (yes) y ya estaremos dentro de la RPi. A continuación, ejecutaremos el comando de configuración de Raspberry:

Nos pedirá la contraseña, que es raspberry, de forma predeterminada. Una vez dentro, deberemos ir (con las teclas y el Enter) a la opción Interface Options. Dentro de Interface Options, seleccionaremos VNC y activaremos el servicio cuando nos lo pida (véase figura 1.2). Tras esto, ya podemos acceder por VNC a la RPi.

Figura 1.2: Activación de VNC mediante comando raspi-config

1.3 Conexión mediante VNC

Para conectarnos a la sesión VNC de la RPi, debemos descargarnos un cliente VNC; por ejemplo RealVNC Viewer2. Una vez instalado el programa, debemos iniciarlo y escribir en la barra de conexiones (arriba) la IP de la RPi o su hostname raspberrypi.local, tal y como aparece en la figura 1.3. Para conectarnos, deberemos introducir el usuario (pi) y la contraseña (raspberry).

Figura 1.3: Conexión VNC con RealVNC Viewer

Ahora podremos ver el escritorio de la RPi y mover el ratón y usar el teclado libremente.

Figura 1.4: Selección del SSID del router wifi

1.4 Configuración wifi

La conexión Ethernet no es siempre lo más adecuado, puesto que la RPi no siempre puede estar cerca de nuestro ordenador. La mejor forma de conectarnos a la RPi es mediante wifi. Para tener conexión wifi debemos configurar a qué punto de acceso se conectará la RPi; por ejemplo, el wifi de nuestra casa o un punto de acceso que creemos con el móvil. Si estos puntos de acceso tienen internet, la RPi también.

Para conectarnos a un router, debemos seleccionar el símbolo del wifi en la esquina superior derecha (también puede aparecer a veces como dos flechas si estamos conectados por Ethernet) (véase figura 1.4). De ahí seleccionaremos el SSID al que queramos conectarnos, introduciendo la contraseña correspondiente. Ahora, si desconectamos el cable Ethernet y nos conectamos a la misma red SSID que la RPi, deberemos poder seguir accediendo mediante VNC o SSH. En otras palabras, seremos capaces de conectarnos a la RPi si estamos en la misma red: si la RPi se conecta a un router, el ordenador debe de estar conectado a ese router por Ethernet o wifi. Si la RPi se conecta a la red wifi móvil, nuestro ordenador también debe estar conectado a esa red.

1.5 Creación de una red wifi con nuestro móvil

Podemos conectar la RPi a la red Eduroam, que es abierta. No obstante, si hacemos esto, no podremos conectarnos a la RPi por VNC desde nuestro ordenador a la RPi, aunque ambos estén en la red de Eduroam. La conexión solo estará disponible mediante Ethernet. Esto se hace por seguridad. Es por ello que debemos crear un punto de acceso wifi desde nuestro móvil. Dependiendo del SO (iOS o Android), se hace de forma distinta. Hay que tener en cuenta que, con este método, la RPi usará nuestro plan de datos móviles.

Configuración para iOS

Para crear un hostspot en iOS, simplemente accederemos a la opción Punto de acceso personal desde la app de Ajustes. Ahí, activaremos la opción de Permitir a otros conectarse y escribiremos una contraseña (véase figura 1.5). El punto de acceso wifi aparecerá con tu nombre; por ejemplo, Iphone de Pedro. Una vez hayamos configurado el punto de acceso wifi, podemos comprobar que aparece en la RPi y que nos podemos conectar a él. Si nuestro móvil tiene internet, la RPi también tendrá.

Figura 1.5: Configuración wifi en iOS

Configuración para Android

Para crear un hostspot en Android, todo dependerá del modelo de móvil. En general, en la app de configuración, dentro de wifi y redes móviles, podemos ver una opción llamada zona wifi o Compartir conexión. Desde ahí, podemos poner un nombre cualquiera al SSID y una contraseña (véase figura 1.6).

Figura 1.6: Configuración wifi en Android

 

1 Todos los SO (macOS, Windows, Linux, etc.) tienen una herramienta de terminal: por ejemplo, para Windows es Power Shell y, para MacOS y Linux, es Terminal

2https://www.realvnc.com/en/connect/download/viewer/

2. Guía rápida de Linux

• Comando ls: lista el contenido del directorio actual. Una variante útil es ls-l, que muestra información detallada como permisos y usuarios.

• Comando cat: muestra el contenido de un archivo.

• Comando cd: cambia el directorio actual; por ejemplo, cd .. va al directorio padre, y luego cambiamos al directorio Documentos.

• Comando pwd: muestra la ruta completa del directorio actual.

• Comando mkdir: crea un nuevo directorio; or ejemplo, crea el directorio nuevacarpeta:

• Comando rmdir: elimina un directorio vacío.

• Comando touch: crea un archivo vacío.

• Comando less: muestra el contenido de un archivo página por página.

• Comando cp: copia archivos o directorios. cp -r copia directorios recursivamente.

• Comando mv: mueve o renombra archivos y directorios.

• Comando rm: elimina archivos o directorios. rm -r elimina directorios recursivamente.

• Comando chmod: cambia los permisos de un archivo o directorio; por ejemplo, hacemos script.sh ejecutable: o

• Comando chown: cambia el propietario de un archivo o directorio.

• Comando apt update: actualiza la lista de paquetes disponibles para instalar.

• Comando apt install: instala un paquete de software.

• Comando apt remove: desinstala un paquete de software.

• Comando ps aux: lista todos los procesos en ejecución.

• Comando top: muestra los procesos en tiempo real.

• Comando kill: termina un proceso por su ID de proceso (PID); por ejemplo, matamos el proceso 1234:

• Comando killall: termina todos los procesos con el nombre especificado.

• Comando ifconfig: muestra la configuración de red; por ejemplo, la configuración de Ethernet:

• Comando ping: envía N paquetes de prueba a un host.

• Comando ssh: inicia una sesión SSH en un host remoto. Por ejemplo, al host servidor.com en el puerto 2222:

2.1 Superusuario – Comando sudo

En los sistemas operativos UNIX existen ciertas operaciones que solo las pueden realizar aquellos usuarios que tienen privilegios de superusuario. La lista de usuarios y sus privilegios se puede consultar en el fichero sudoer, que se encuentra en el directorio /etc/.

Operaciones típicas que solo la pueden realizar los superusuarios son:

1. Instalar un nuevo software (librería, programa, etc.):

2. Actualizar el sistema. Es bueno actualizar continuamente Raspberry Pi OS, ya que es un sistema operativo “muy vivo” y continuamente se están actualizando librerías y apareciendo nuevas:

3. Ver si un paquete (software) está disponible. En muchas ocasiones es necesario comprobar si está disponible para nuestro sistema operativo:

4. Desinstalar software:

5. Cambiar el propietario de un archivo. Hay veces que necesitamos que ciertos archivos pertenezcan al superusuario:

6. Abrir una sesión de terminal como superusuario:

2.2 Cómo (re)instalar el SO

Para instalar (o reinstalar) el SO en la Raspberry Pi usaremos el programa Raspberry Pi Imager que podemos descargar desde el siguiente link: https://www.raspberrypi.com/software/ para cualquier sistema operativo. Una vez instalado, debemos introducir la tarjeta microSD de la RPi en el ordenador, ya sea con un adaptador USB o SDCard. Al ejecutar el programa, debemos escoger el modelo de Raspberry Pi en la pestaña Elegir dispositivo. Una vez seleccionado el modelo de RPi, pulsaremos el botón Elegir SO. Si queremos reinstalar el SO, nos iremos a la última opción, Use Custom (véase figura 2.1). Seleccionaremos el archivo .img que podremos descargar del siguiente link: https://hdvirtual.us.es/discovirt/index.php/s/3xGPLwQW8MQyjFF. Para terminar, pulsaremos Elegir almacenamiento y seleccionaremos la tarjeta SD. Al pulsar Siguiente, nos preguntará si queremos aplicar los ajustes customizados. Seleccionaremos NO. El proceso de flasheo de la SD tardará unos minutos. Cuando nos indique, podemos desconectar la tarjeta SD y colocarla en la RPi.

Figura 2.1: Selección del SO personalizado en Raspberry Pi Imager

Advertencia

Si reinstalamos el SO, se borrarán todos nuestros archivos, las configuraciones y los módulos que hayamos instalado. Recuerda hacer una copia de seguridad primero.

3. Introducción a Python

3.1 ¿Qué es Python?

Python es el lenguaje oficial de la RPi desde su origen. Eso no significa que otros lenguajes de programación no puedan ser utilizados, ni mucho menos. No obstante, Python cumple uno de los objetivos principales de cualquier proyecto con una RPi: acercar las ciencias de la computación al mayor número de personas de una forma sencilla. Python es un lenguaje relativamente sencillo de aprender, ya que es bastante intuitivo y tiene una versatilidad alta.

Python es un lenguaje interpretado; eso significa que las instrucciones son ejecutadas paso a paso por un intérprete de Python. Esta característica lo hace más lento que otros lenguajes compilados; por ejemplo, C. Por defecto, Raspberry Pi OS incluye un intérprete de Python (la inmensa mayoría de distribuciones de Linux lo incluyen). Simplemente ejecutando el comando python en un terminal, ya dispondremos del intérprete interactivo de Python. A su vez, Raspberry Pi OS incluye un intérprete de Python más útil llamado ipython. A continuación, se va a proceder a realizar un resumen de las principales características del lenguaje de programación Python.

3.1.1 Variables

En Python las variables no tienen tipo por defecto; esto quiere decir que el tipo de las variables se define con su contenido.

Existen unos tipos de variables más complejos en Python que se denominan listas y tuplas. Ya habrás notado que los comentarios en Python se definen con el carácter #; es decir, todo el texto que viene después del carácter # no es ejecutado por el intérprete. Otro aspecto interesante es que no existe ningún carácter especial para indicar el fin de una instrucción (no hacen falta punto y coma ‘;’ como en C/C++).

El contenido de las listas puede ser cualquier cosa: números, cadenas o incluso otra lista. Las listas se definen entre corchetes [] y cada uno de sus elementos está separado por comas. Para acceder al contenido de una lista, procedemos de la siguiente forma:

Si cambio el índice 0 por otro número, accederé a una posición distinta. Ojo, tiene que ser una posición definida. Si intento hacer algo como:

Otra característica importante de las listas es que, cuando se define, se está definiendo un puntero a la lista. Esto quiere decir que, si hago algo como:

En realidad, l2 y l1 apuntan al mismo sitio, por lo que, si hago un cambio en cualquiera de las dos, tendrá efecto en la otra.

Existe una gran cantidad de métodos (funciones que se pueden aplicar sobre las listas) disponibles para trabajar con listas. En este libro se cubrirán solo algunos; el resto pueden ser consultados en el siguiente enlace: https://docs.python.org/3.8/tutorial/datastructures.html

Si quiero saber la longitud de una lista, puedo utilizar la función len. Las funciones built-in son funciones que están disponibles nativamente en el intérprete de Python; es decir, que están siempre disponibles.

Las tuplas no son más que otra secuencia de datos parecida a las listas, pero son solo de lectura; es decir, no podemos modificar el contenido de las tuplas.

En este caso, las tuplas se definen entre paréntesis () y su contenido se separa por comas. Igual que en el caso de las listas, puedo acceder al contenido de una posición en concreto de la siguiente forma:

Lo que no puedo hacer es lo siguiente:

Ya que las tuplas solo pueden ser accedidas en modo lectura.

Hay más tipos de datos en Python, como los diccionarios, sets o variables booleanas, pero de momento esto es suficiente para la mayoría de aplicaciones descritas en este libro.

3.1.2Scripts en Python

Antes de pasar a describir otros aspectos del lenguaje de programación, es importante detenerse un poco a definir qué son los scripts de Python. No son más que un archivo de texto en el que se ordenan una serie de instrucciones en Python que el intérprete ejecutará una a una de forma secuencial. Así, para programar un script de Pytho,n solo necesito crear un archivo de texto, escribir código Python en el archivo y guardarlo con extensión .py. Ese archivo se podrá ejecutar en un terminal, simplemente llamando al intérprete de Python de la siguiente forma:

3.1.3 “Hola mundo” en un script de Python

En los tutoriales de la mayoría de los lenguajes de programación se comienza por escribir el código que imprime por pantalla el mensaje de bienvenida “hello world”. Nosotros en este caso lo vamos a realizar desde un script. La instrucción que tenemos que introducir en el archivo (por ejemplo, hola.py) es la siguiente:

Si en el terminal hacemos:

Podremos visualizar el mensaje “hola mundo” en el terminal.

La función built-inprint se puede utilizar también para imprimir variables. A continuación, se detallan algunos ejemplos de uso:

3.1.4 Control de flujo

Como en cualquier lenguaje de programación medianamente serio, Python dispone de instrucciones de control de flujo (if-else) y bucles (for, while). La forma de definir una sentencia if-else es la siguiente:

Un aspecto muy particular de Python es la tabulación que tenemos que incluir en las sentencias de control de flujo. Esto se debe a que Python es un lenguaje denominado “indentado”; es decir, todo lo que se encuentra dentro del if anterior es lo que está tabulado hacia la derecha. Igual podemos decir del else. Si tenemos varios if-else anidados, tenemos que tabularlos todos.

Los bucles for también son un poco particulares en Python, ya que se utilizan iterando sobre elementos iterables, por ejemplo, listas. Veámoslo con un ejemplo:

Este bucle lo que hace es recorrer una lista que se ha definido con la función built-inrange, la cual crea un elemento iterable del 0 al 9, algo como [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]. En cada una de las iteraciones del bucle, la variable auxiliar i toma un valor distinto de la lista. Dentro del bucle, lo único que se ha hecho es imprimir por pantalla la variable auxiliar i. Es importante señalar que las instrucciones incluidas en el bucle son aquellas que están tabuladas.

Para programar un bucle while, actuaríamos de la siguiente forma:

3.1.5 Funciones

Las funciones en Python se definen de la siguiente forma:

La definición de las funciones en Python es bastante intuitiva. Es importante no olvidar tabular el contenido de la función. Para llamar a una función en un script de Python, simplemente debe estar definida antes de su llamada.

3.1.6 Importar módulos