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
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.
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 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
~ $ 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)
~/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