miércoles, 15 de febrero de 2023

Raspberri Pi: primeros pasos

Utilidad y diferencias con Arduino

Para comenzar con una breve introducción, diremos que Raspberry es un ordenador completo con CPU, RAM, ranura para almacenaje secundario mediante microSD y puertos de comunicaciones (USB, Ethernet, HDMI, audio, Wifi,...) así como un bus de comunicación analógico-digital al que podemos conectar todo tipo de sensores y actuadores de código abierto similares a los que usamos con Arduino. 

A diferencia de Arduino, Raspberry permite ejecutar un sistema operativo completo desde el que lanzar distintos programas que hagan uso de sus puertos de comunicaciones. Por el contrario, Arduino no es un ordenador, sino un microcontrolador que ejecuta un único programa sencillo, escrito en C y compilado para ser ejecutado en su CPU. 

En la siguiente tabla podemos apreciar las características técnicas de algunos de los modelos Raspberry existentes en el mercado, y del controlador Arduino. 

Características técnicas de Raspberry y Arduino (extraído de Hardzone)

En cuanto a para qué utilizar un tipo de plataforma u otra, podríamos resumir en que Arduino está pensado para proyectos más sencillos, que una vez construidos pasan a funcionar de forma definitiva (a veces con batería). En cuanto a Raspberry está orientado a realización de proyectos más complejos (control de sistemas, análisis de los mismos, gestión de base de datos con resultados, puesta de datos en Internet,...). En la siguiente tabla podríamos ver las principales características para las que están pensados:

Diferencias fundamentales entre Raspberry y Arduino (extraído de Hardzone)

Poniendo en marcha a Raspberry

Antes de poner en marcha una Raspberry, hay que instalarle el sistema operativo. Al no disponer de memoria de almacenamiento secundario, la instalación se realiza en una tarjeta microSD. El proceso de instalación es muy sencillo, ya que la mayoría de imágenes de Sistemas Operativos disponibles en Internet para este dispositivo ya vienen preconfiguradas casi al 100%, sin que sea necesaria una detección de hardware (ya que el hardware básico es similar en todos los modelos). Por tanto, los pasos de instalación suelen ser siempre:

  1. Descarga de una imagen del sistema para microSD
  2. Copia de la imagen en la microSD (usando un PC convencional)
  3. Inserción de la microSD en la ranura de la Raspberry
  4. Conexión de la Raspberry a un monitor HDMI, teclado y ratón (y muy recomendable a una red ethernet).
  5. Inicio del sistema conectando la corriente eléctrica.
  6. Inserción de parámetros de configuración que se irán preguntando en el primer arranque, tales como el nombre de usuario, la clave, el país/zona horaria, la configuración del teclado o la clave del Wifi.

Punto 1: descarga de imagen por medio de aplicación "imager"

En nuestro caso, hemos instalado el sistema operativo Raspbian. Esto simplifica aún más las cosas, pues nos permite, haciendo uso del programa "imager" descargar la imagen que deseemos y copiarla en la tarjeta microSD en un solo paso. Para ello, accedemos a la página oficial de Raspberry y seleccionamos la opción de descarga para Ubuntu, Windows o Mac e instalamos el ejecutable descargado. En nuestro caso, que usamos Ubuntu, podemos realizar de forma aún más sencilla la instalación tecleando en el terminal el siguiente comando:

sudo apt install rpi-imager

Una vez instalado el programa "imager", lo ejecutamos y seleccionamos la imagen que deseemos instalar (en nuestro caso Raspberry Pi OS lite 64 bits), indicamos también en las opciones avanzadas que se habilite el servidor SSH y finalmente indicamos la ubicación de la tarjeta microSD para posteriormente comenzar la grabación, tal y como se muestra en la siguiente secuencia de imágenes:

 


 

Punto 2: escritura de la imagen en tarjeta microSD

Una vez comienza la grabación (tras pulsar el botón "Write"), se mostraŕa una barra de proceso hasta que finalice la misma, tras lo cual aparecerá una ventana informativa.

  

Acabado el proceso, la instalación en la tarjeta microSD ha concluido. Ahora habrá que desmontarla antes de extraerla del PC para que no se pierdan datos.

Puntos 3, 4 y 5: conexiones físicas

Una vez extraída la tarjeta de memoria del PC, deberá insertarse en la ranura correspondiente de la Raspberry Pi. Asimismo habrá que conectar un teclado, un ratón y un monitor HDMI a la misma para finalizar los detalles finales de configuración. También es recomendable conectar la misma a una red mediante un cable RJ45, aunque más adelante se nos dará la oportunidad de conectarnos a Internet mediante Wifi. 

Finalmente conectamos el dispositivo a la corriente eléctrica y esperamos instrucciones en pantalla.

Una vez acabada la instalación, podremos acceder a la Raspberry mediante SSH, VNC, RDP u otros protocolos sin necesidad de utilizar un teclado/ratón/monitor fisico enchufado a la misma.

Punto 6: configuración de parámetros

Durante la primera ejecución del sistema operativo instalado se nos preguntarán una serie de datos tales como el nombre de usuario, la contraseña, la red wifi donde podemos conectarnos y su clave, la ubicación, la zona horaria,...


Instalando imprescindibles

Después de la introducción de los parámetros del punto 6, se mostrará el escritorio en la pantalla del monitor. Ya podemos utilizar nuestra Raspberry como si se tratara de un pequeño PC. Sin embargo, es muy recomendable instalar algunas herramientas adicionales para poder usar esta desde un PC sin necesidad de monitor o teclado. 

Puede parecer un poco exagerado, pero cualquier cambio que hagamos en la configuración del sistema podría ocasionar que se interrumpiese la conexión con el monitor o el teclado/ratón, haciendo inservible nuestro dispositivo y no quedando otra opción más que la de reinstalar todo. Es por ello por lo que se hace casi imprescindible la habilitación del control remoto de la misma.

Instalación del servidor SSH

En el proceso de creación de la imagen ya indicamos que se habilitara un servidor SSH. Sin embargo, aún es necesario que este sea activado desde el escritorio. Para ello no tenemos más que acceder al menú Preferencias/Configuración de la Raspberry y activar allí la opción correspondiente.

En el próximo reinicio, ya podremos acceder a nuestro dispositivo desde otro ordenador conectado a la misma red simplemente tecleando (en caso de linux) en el terminal del PC lo siguiente:

ssh pi@192.168.5.137

O bien usando un programa específico de conexiones remotas como Remmina.

Indicar que en el comando anterior "pi" hace referencia al usuario que hemos indicado en el proceso de la instalación (pudiera ser "Pedro", "Juan", "María"...) y 192.168.5.137 es la dirección IP que ha asignado el router a la Raspberry. Esta dirección se puede averiguar de múltiples formas. Más adelante trataremos el tema.

Si estamos en un lugar donde no haya accesos de red, siempre podemos utilizar el teléfono móvil para proporcionar una conexión wifi (aunque no tengamos datos para conectarnos a Internet). Posteriormente podemos hacer un SSH a la Raspberry desde el mismo teléfono (con el comando antes indicado) usando aplicaciones cliente de SSH para el móvil (existen cientos de ellas) o un terminal de Android, como Termux (si Termux no incluyera el cliente SSH, podemos instalarlo mediante el comando "pkg install openssh").

Aplicación "termux" instalada en terminal Android

La primera vez que ejecutemos ssh desde un PC para conectarnos a la Raspberry, el sistema nos pedirá confirmación, indicando que nos queremos conectar a un equipo nuevo. 

Primera conexión por ssh deste un terminal de Ubuntu
En las siguientes ocasiones que nos conectemos desde el mismo equipo, ya no se mostrará esta pregunta de confirmación. Si se mostrase, significaría la Raspberry ha sido sustituida por otro equipo distinto (quizá estaríamos siendo atacados por un hacker).
Conexión mediante SSH desde Remmina

Instalación de Midnight Commander

Midnight Commander es un gestor de fichero (clon del clásico Comandante Norton), creado para Linux y posteriormente adaptado casi a cualquier sistema operativo, que permite realizar todo tipo de operaciones con ficheros y directorios desde un terminal de texto sin necesidad de tener conocimientos sobre comandos o programación. Por tanto, se vuelve una herramienta sumamente útil si nos conectamos remotamente a nuestra Raspberry mediante SSH y queremos operar desde el terminal sin tener muchos conocimientos acerca del mismo. 

Para instalar Midnight Comander, simplemente debemos ejecutar en el terminal de la Raspberry el siguiente comando:

sudo apt-get install mc

Tras la instalación, cuando queramos usar Midnight  Comander solamente debemos ejecutar "mc" (sin las comillas desde el terminal.

 

Ejecutando "mc" en Raspberry, mostrando la salida en "termux" de Android

Instalación del servidor RDP

El protocolo RDP (Remote Desktop Protocol) permite acceder remotamente a un equipo informático mediante un entorno gráfico. Este protocolo, creado por Microsoft, puede ser utilizado en cualquier equipo, independientemente del sistema operativo que utilice. 

Para poder controlar remotamente nuestra Raspberry de forma gráfica, lo primero que debemos hacer es instalar en ella un servidor RDP. Para ello, simplemente debemos ejecutar en un terminal el siguiente comando:

sudo apt-get install xrdp

Tras la instalación, y después de un reinicio, nuestra Raspberry estará lista para ser utilizada desde cualquier PC que esté conectado a la misma red local (al igual que ocurría con SSH), pero esta vez accediendo al entorno gráfico.

En nuestro caso, haremos uso de un PC con Ubuntu y de la aplicación Remmina para realizar la conexión. Simplemente deberemos indicar en la misma que queremos crear una nueva conexión RDP, la dirección IP de nuestra Raspberry, el usuario y la contraseña del mismo. Además, podremos adaptar la resolución del entorno gráfico al tamaño de la ventana que utilicemos, tal y como se muestra en la siguiente imagen. 

Conexión mediante RDP desde Remmina


Al igual que ocurría con SSH, si estamos en un lugar donde no haya accesos de red, también podremos utilizar el teléfono móvil para proporcionar una conexión wifi (aunque no tengamos datos para conectarnos a Internet) y conectar nuestra Raspberry a la misma. Una vez realizada la conexión, el acceso remoto es algo trivial haciendo uso de cualquier cliente RDP de Android (Remote Desktop, aRDP, RemoteToGo,....).

A continuación se muestra el proceso de conexión mediante RDP usando la aplicación de Microsoft "Remote Desktop" para Android.

Abriendo "Remote desktop" desde Android

Tras pulsar "+" en "Remote desktop" se puede agregar la IP de la Raspberry

Una vez agregada la Raspberry como nuevo equipo podemos conectarnos

En el proceso de conexión, Raspberry nos pregunta el usuario y la clave

Conexión en curso mostrándose en la pantalla del smartphone o tablet

Obteniendo la IP local de nuestro Raspberry

Existen numerosas formas de obtener la IP local de nuestra Raspberry. Si tenemos acceso a ella usando un monitor, teclado y ratón, podemos abrir un terminal y teclear el siguiente comando:

ifconfig

Con ello, se nos mostrará en pantalla información relativa a todas las conexiones, incluyendo la IP ethernet (si hay conexión mediante un cable) y la IP wifi (si hay conexión inalámbrica).

Ahora bien, cuando queremos realizar una conexión remota a nuestra Raspberry, necesitamos saber la IP. Pero si no disponemos de un monitor/teclado (por eso queremos hacer una conexión remota) no podremos teclear ningún comando. En este caso, una opción sencilla sería acceder a la configuración de nuestro router. Ahora bien, si no estamos familiarizados con esto, puede resultarnos complicado. Cada router tiene una interface distinta. Además, si el router no es nuestro, seguramente no tengamos las credenciales para acceder al mismo. En este caso hay que optar por otros métodos.

Podemos encontrar numerosas aplicaciones que permiten visualizar todos los dispositivos conectados a una red. Una de mis aplicaciones favoritas para ello es PingTools para Android (Otra también muy utilizada es Fing). Una vez instalada en el teléfono móvil o tablet, esta aplicación nos podrá mostrar todos los equipos conectados a la misma red (su nombre y su dirección IP, entre otros datos). Para ello solo tendremos que acceder a la opción "Red de Area Local" y listo. Una vez allí, buscaremos algún dispositivo que se llame "raspberry" o algo así.

Aplicación "pingtools" instalada en Android

Esta solución nos vale cuando tanto nuestro smartphone como nuestra Raspberry están conectadas a una red local compartiendo el router. Ahora bien, si es nuestro smartphone el que está "dando red" mediante una conexión compartida, entonces aplicaciones como "pingtools" no funcionarán. Eso no es un problema. En este caso, debemos acceder a las propiedades de la "conexión compartida" de nuestro móvil (también llamado "punto de acceso Wi-Fi", seleccionar la opción "usuarios conectados" y finalmente hacer marcar el usuario en concreto asociado a la Raspberry (lo normal es que sea el único conectado). Las imágenes que siguen muestran el proceso:

Propiedades del "Punto de acceso Wi-Fi"
Selección del "usuario conectado" al "punto de acceso Wi-Fi"


Profesores:

    Pablo Díaz Márquez

VISITA AULA HOSPITALARIA SAN PEDRO DE ALCÁNTARA_ FEBRERO/ABRIL 2024

Durante los días 29 de febrero y 11 de abril volvimos al aula Hospitalaria del San Pedro de Alcántara para realizar una serie de actividades...