23 - Raspberry Pi - Introducción y puesta en marcha

Volver al curso

Lo básico

Mete los siguientes ficheros en la SD

Fichero wpa-supplicant.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=ES

network={
	ssid="TELO4"
	psk="pulpoafeira"
	id_str="telocatro"
}

Fichero interfaces (este debes editarlo manualmente con la orden sudo nano /etc/network/interfaces). No sirve con pegarlo en la SD.

source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

auto usb0
iface usb0 inet static
	address 192.168.177.1
	netmask 255.255.255.252
	network 192.168.177.0

allow-hotplug wlan0
iface wlan0 inet manual
	wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

iface default inet dhcp
iface reddhcp inet dhcp
iface telocatro inet static
	address 192.168.0.XXX
	gateway 192.168.0.254
	netmask 255.255.255.0
	dns-nameserver 8.8.8.8

Donde XXX es tu número de puesto más 20.

Introducción a las SBC ARM y a Linux

La Raspberry Pi es la SBC (Single Board Computer) más popular que existe. Nació en 2012 con el auge de los primeros smartphones y tablets arquitectura ARM (RISC)

No te suena ARM? Pues tiene historia. Y por cierto, NVidia ha comprado a ARM:

No todas las SBC son ordenadores al uso, de hecho, la MikroTik RBM33G, un fetiche mío, es un router.

A Raspberry Pi leva anos facilitando o aprendizaxe da informática, electrónica, e comunicacións. Para esta práctica evitaremos os modelos máis potentes e nos centraremos só en aqueles que teñan un consumo menor de 1 A, que é a corrente que adoitan soportar os portos USB dos routers.

GNU/Linux

Quizá pienses que Microsoft Windows es el sistema operativo más utilizado, y lo es. Pero si nos ceñimos a servidores y electrónica embebida, el rey es Linux.

Raspberry Pi Zero e similares

Raspberry Pi Zero 1.3 SEN Wi-Fi (debaixo leva batería). Raspberry Pi Zero con Wi-Fi (carcasa con accesorio badUSB). Banana Pi M2 Zero con antena e alimentación desde badUSB a GPIO
Raspberry Pi Zero 1.3 SEN Wi-Fi (debaixo leva batería). Raspberry Pi Zero con Wi-Fi (carcasa con accesorio badUSB). Banana Pi M2 Zero con antena e alimentación desde badUSB a GPIO

A Raspberry Pi conta cun procesador bastante lento dun único núcleo. A versión “W” incopora Wi-Fi 4 (“n”) de 2.4 GHz con antena integrada (adaptable a IPEX). Non soporta 5 GHz, pero a temperatura e o consumo son moi baixos. Ademais o soporte técnico é inmellorable.

Outras SBC teñen deseños similares e características máis atractivas. Antes de probar sorte con Orange Pi, Banana Pi ou Nano Pi has de saber que o soporte técnico non é o mesmo en ningún caso. Terás que buscarte a vida. Para este curso dispoñemos dunha Banana Pi M2 Zero que conta con catro núcleos, Wi-Fi 4 (“n”) de 2.4 GHz con conector coaxial u.Fl “hirose” (IPEX), ethernet de 100 Mbps (chip ethernet no SoC, o conector se fai cun lagiguillo), e ethernet RNDIS sobre USB. Como podes ver, as características de conectividade desta SBC son moi boas:

Wi-Fi n, USB gadget (suministrando alimentación), ethernet 100 Mbps, todo á vez!
Wi-Fi n, USB gadget (suministrando alimentación), ethernet 100 Mbps, todo á vez!

Raspberry Pi 3 A+

Este modelo conta cunha potente CPU de catro núcleos e Wi-Fi dual 2.4 GHz / 5 GHz. Non está pensada para traballar a menos de 2.5 A pero, con pequenas configuracións (desactivar entorno gráfico, apagar HDMI e Bluetooth) baixaremos o consumo por debaixo de 1 A.

Unha vez configurada, nos dará un excelente equilibrio entre potencia, temperatura, e consumo enerxético.

Entorno gráfico vs. consola

CLI: Command Line Interface (terminales, consolas)

GUI: Graphic User Interface (ventanitas)

Para conectarse en red a una CLI se usa SSH / Telnet / cable serie

Para conectarse en red a una GUI se usa VNC / Windows RDP / ...

La CLI de Linux y macOS se llama BASH

La CLI de Windows se llama (tres opciones):

Primeiros pasos co teu SBC: usuarios e rede

Posta en marcha (resumo):

Activación ethernet gadget USB

Diagnóstico de fallos → acceso porto serie

O acceso fóra de liña con cable convertedor USB-UART servirache para entrar na consola da Raspberry cando esta quede sen rede e non queres perder tempo conectando monitor e periféricos.

Convertedores USB-TTL/UART.
Convertedores USB-TTL/UART.

Estes convertedores serven de ponte entre a interfaz USB do teu ordenador e a UART (niveis TTL) serial que teñen a maioría de equipos hoxe en día (Arduino, ESP32, Raspberry, routers…). As cores poden dar lugar a confusión xa que coinciden cos do USB, pero dentro hai un circuito integrado que fai a conversión entre os dous sistemas:

O típico é cablear Tx, Rx e GND. Lembra que se trata de conexións cruzadas (Tx → Rx; Rx → Tx). Máis información sobre cableado na páxina do equipo de probas MikroTik.

Tamén podes prescindir do convertedor USB e cablear directamente unha Raspberry contra outra UART-UART (cruzando). Deberás desactivar a consola na que vaias a utilizar como cliente.

O programa que eu recomendo para as conexións é Putty en entornos Windows e minicomen Linux e macOS. Instálao con:

sudo apt install minicom -y

Averigua o nome da interface serial con dmesg | grep tty ou ben ls /dev/tty. Exemplo de conexión a consola de 115200 bps ubicada no dispositvo ttyUSB0:

minicom /dev/ttyUSB0 -b 115200

Unha vez dentro de minicom, podes declear comandos no shell da CLI como cando estás en sesión remota SSH. Tamén podes facer que minicom execute ordes pulsando CTRL A e a continuación a orde desexada. Por exemplo, CTRL A, X sae do programa.

As velocidades normalizadas en baudios as podes consultar nesta ligazón. As máis habituais son 115200 e 9600 bps. Podes axustar no setup as opcións predeterminadas tecleando minicom -s. Máis información nesta ligazón.

Pasos finais

Configuración IP: ethernet, USB gadget, Wi-Fi como cliente/estación

Realízase no ficheiro /etc/network/interfaces sempre e cando teñas activado o servizo networking: https://www.eduardocollado.com/2020/03/22/fichero-etc-network-interfaces-en-debian/

No seguinte exemplo:

source /etc/network/interfaces.d/*
# Network is managed by Network manager
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
	hwaddress ether B8:27:EB:4C:E2:16

auto usb0
iface usb0 inet static
	address 192.168.199.1
	netmask 255.255.255.252
	network 192.168.199.0


allow-hotplug wlan0
iface wlan0 inet manual
	wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf


iface default inet dhcp
iface reddhcp inet dhcp
iface telocatro inet static
	address 192.168.0.221
	gateway 192.168.0.254
	netmask 255.255.255.0

Para configurar o modo cliente/estación Wi-Fi debemos editar sudo nano /etc/wpa_supplicant/wpa_supplicant.conf e axustar SSID e PSK do punto de acceso.

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=ES

network={
	ssid="WiFicousas"
	psk="outrachavewifi"
	key_mgmt=WPA-PSK
	id_str="reddhcp"
	}

network={
	ssid="WiFiempresa"
	psk="achavewifiquesexa"
	id_str="telocatro"
	}

network={
	ssid="WiFiClienteTaller"
	psk="chavewifiascii"
	key_mgmt=WPA-PSK
	}

A rede WiFicousas terá os parámetros IP do perfil reddhcp. A rede WiFiempresa usará o perfil telocatro, e WiFiClienteTaller terá os parámetros IP do perfil default xa que non ten ningún especificado.

No ficheiro anterior o parámetro country=ES selecciona a configuración rexional de España (canais e potencias permitidos no CNAF)

Aplicar cambios nas redes cun reinicio total ou parcial: sudo systemctl restart networking

Configuración como punto de acceso Wi-Fi

Esta función tiene más sentido en Raspberry con ethernet y Wi-Fi. Si te interesa, míralo en este tutorial: https://danielrios.me/apuntes/2020radioenlaces/P04C/index.html

Outros comandos Wi-Fi interesantes en GNU/Linux

Ver Wi-Fis dispoñibles para conectarse como cliente:

sudo iw dev wlan0 scan | egrep "signal:|SSID:" | sed -e "s/\tsignal: //" -e "s/\tSSID: //" | awk '{ORS = (NR % 2 == 0)? "\n" : " "; print}' | sort

Comprobar estado da conexión actual como cliente Wi-Fi:

sudo iw dev wlan0 link

Estatísticas da túa conexión Wi-Fi actual como cliente (máis completo: MCS, paquetes…)

sudo iw dev wlan0 station dump

Canais soportados e potencias de transmisión máximas (dependen do locale, axústao en sudo raspi-config)

iw phy phy0 channels

Escaneo de direccións IP:

sudo nmap -sP 192.168.99.0/24

Batería e arranxos adicionais

A falta de SAI, boa é unha batería:

Por desgraza, estas baterías de tan reducido tamaño outorgan unha autonomía menor de tres horas. A falta de modo ”deep sleep” impide prolongar esa duración. Unha opción máis viable, para estudar a longo prazo, sería incoporar un microcontrolador que soporte deep sleep e utilizalo para activar remotamente a Raspberry cando fora preciso para aforrar batería ó máximo.

Neste capítulo vimos algunhas opcións da Raspberry Pi como complemento ós nosos nodos da rede. Podemos poñela punto de acceso Wi-Fi, cliente Wi-Fi, incorporarlle servizos como servidor SMB, Asterisk, e acoplar accesorios como a batería que vimos ou o “sombreiro” LoRa como o SX1262 Waveshare que veremos nun capítulo posterior (máis info na wiki de Waveshare)

 Tira GPIO

Un básico para empezar a experimentar con el hardware:

Pero ten esto siempre cerca:

Recuerda que hay dos numeraciones, la de los pines y la Broadcom. Nosotros usaremos la Broadcom.

Comandos básicos en Linux

pwd  #muestra en qué carpeta estás
touch cosa # crea un archivo que se llama "cosa" 
ls  # listar contenido de la carpeta actual
rm # borrar archivos
nano cosa # edita archivos y los crea si no existen
cat cosa # muestra contenido de archivos

mkdir carpeta # crea carpeta
rm -rf carpeta # borra carpeta y lo que contenga

cd carpeta # ir a carpeta "carpeta" situada en la carpeta actual

cd /carpeta # ir a carpeta "carpeta" situada en la carpeta "/"

cd .. #subir de carpeta

Instalando aplicaciones

Comando: apt install loquesea. Primero debes hacer sudo o su

Instala una de las tonterías de este link, por ejemplo:

Prueba tmux con cuatro paneles haciendo:

tmux set-option -g mouse on \; new-session \; split-window -v \; split-window -h \;  select-pane -U \; split-window -h \; select-pane -L
apt update # actualiza el listado de paquetes
#### FALLA!!!!!
sudo apt update ### "DO" as "SUPER USER"
sudo apt upgrade -y ### actualiza apps instaladas
sudo apt install cowsay -y ### instala cowsay
showfigfonts

sudo apt update && sudo apt upgrade -y
sudo nmap -sP 192.168.0.0/24

Volver ao curso