Raspberry Pi

Sitio: Facultad de Ingeniería U.Na.M.
Curso: IC511 - Internet de las Cosas, Sensores y Redes
Libro: Raspberry Pi
Imprimido por: Invitado
Día: miércoles, 4 de diciembre de 2024, 23:35

1. Generalidades

Las Raspberry Pi son computadoras completas y totalmente funcionales pero del tamaño de una tarjeta de crédito. Son una elección muy popular para varios tipos de proyectos como: media center, NAS y por supuesto IoT. Forman un ecosistema excelente con los sistemas operativos Linux

Raspberry Pi 4 Specifications



Especificaciones
Procesador Broadcom BCM2711, quad-core Cortex-A72 (ARM v8)
64-bit SoC @ 1.5GHz
Memoria 1GB, 2GB, 4GB or 8GB LPDDR4
(depending on model) with on-die ECC
Conectividad 2.4 GHz and 5.0 GHz IEEE 802.11b/g/n/ac wireless
LAN, Bluetooth 5.0, BLE
Gigabit Ethernet
2 × USB 3.0 ports
2 × USB 2.0 ports
GPIO Standard 40-pin GPIO header
Sin ADC
Video y Sonido
2 × micro HDMI ports (up to 4Kp60 supported)
2-lane MIPI DSI display port
2-lane MIPI CSI camera port
4-pole stereo audio and composite video port
Multimedia H.265 (4Kp60 decode);
H.264 (1080p60 decode, 1080p30 encode);
OpenGL ES, 3.0 graphics
SD card Micro SD card slot for loading operating system
and data storage
Alimentación 5V DC via USB-C connector (3A1)
5V DC via GPIO header (3A1)
Power over Ethernet (PoE)–enabled
(requires separate PoE HAT)


Vamos a utilizar la versión lite (sin entorno gráfico)

https://www.raspberrypi.com/software/operating-systems/

sudo dd bs=4M conv=fdatasync if=2023-02-21-raspios-bullseye-arm64-lite.img  of=/dev/sdb status=progress

2. Instalación

Como vimos en las especificaciones estos dispositivos tienen un procesador de arquitectura ARM. Vamos a utilizar el SO Raspberry Pi OS en su versión lite (sin entorno gráfico).

Para generar la tarjeta sd se utiliza Raspberry Pi Imager.

Antes de grabar la imagen con Raspberry Pi Imager recuerde configurar WiFi, nombre del equipo, usuario, contraseña y habilitar ssh.


rpi imager 2

Finalmente insertamos la tarjeta sd y energizamos la placa.

2.1. SSH

Si tenemos acceso a nuestro servidor DHCP podemos ver qué IP le asignó a nuestra RPi. Otra alternativa es utilizar el comando nmap para encontrarla en nuestra red

sudo nmap -sP -n 192.168.25.0/24 | grep -B 2 Raspberry

basado en la IP que identificamos podremos conectarnos. Si no definimos ningún usuario/contraseña durante la creación de la tarjeta sd utilizamos los valores por defecto: usuario:pi; contraseña: raspberry.

ssh pi@192.168.25.173

2.2. Configuración

lo primero que se recomienda es cambiar la contraseña:

passwd

luego utilizamos la aplicación raspi-config para el resto

sudo raspi-config

System Options-> hostname

para que el cambio haga efecto hay que reiniciar

sudo reboot

continuamos con las configuraciones

sudo raspi-config

Interface Options -> I2C y 1-wire
Localisation Options -> Locale (es-AR utf8)
Localisation Options -> Timezone -> America->Buenos Aires (Argentina)
Localisation Options -> WLAN Country -> AR Argentina

y por último instalamos las actualizaciones

sudo apt update
sudo apt upgrade
sudo apt install git

3. VS Codium

Para facilitar la programación en un dispositivo remoto se recomienda instalar alguna extensión ssh en el vscodium (vscode), como por ejemplo Open Remote - SSH para VSCodium o Remote Explorer para VS Code


En la configuración de la extensión agregamos nuestro conexión remota a la rpi.

4. Entornos virtuales

Python Environment



Python cuenta con una herramienta muy poderosa para desarrolladores: entornos virtuales.

Los entornos virtuales son muy útiles para no mezclar dependencias y/o versiones. Es una forma de aislar los proyectos.

Para utilizar esta herramienta la instalamos en la rpi (ssh)

sudo apt install python3-venv git
ahora creamos un directorio y no ubicamos en el mismo

~ $ git clone https://github.com/GermanXander/RaspberryPi.git
~ $ cd RaspberryPi

preparamos el entorno virtual

~/RaspberryPi $ python3 -m venv .  (el punto final es para indicar como destino el directorio actual)
Por último lo activamos

~/RaspberryPi $ source bin/activate

vemos que aparece el nombre del entorno virtual antes del prompt (RaspberryPi)

el comando para desactivar el entorno virtual es:

$ deactivate

5. Cliente MQTT

Atendiendo a las premisas de seguridad y buenas costumbres se implementan las siguientes técnicas:

  • se utiliza un entorno virtual
  • las librerías adicionales se incluyen en un archivo requirements.txt para poder instalarlas con:
pip install -r requirements.txt
  • se utilizan variables de entorno (archivo .env) para que los datos sensibles no figuren en el código fuente.
  • en .gitignore se incluye además de .env, todo lo relacionado con el entorno virtual
  • se utiliza comunicación cifrada estricta (tls) con certificados válidos.
  • rutinas asincrónicas
branch 5a