Portada! Guía básica de Raspberry Pi 4

Nuestro glorioso Tech Admin, también conocido como El Vikingo, The flying Dutch o unreal4u para sus íntimos nos presenta una serie de guías para sacarle el jugo a tu Raspberry Pi. En este primer capítulo traemos los pasos para instalar un sensor de temperatura y humedad.

Hace un par de meses atrás (por allá en el invierno del 24 de Junio 2019), se lanzó de forma sorpresiva la nueva Raspberry Pi 4, así que su redactor presente se le ocurrió comprar uno de estos de forma inmediata… sólo para tener que esperar por un poco más de 2 meses antes que finalmente le llegara ya que no quedaba stock. La intención fue buena, la ejecución en cambio… menos mal que ya no tenemos el slogan «Lo leíste primero en Capa9».

En el intertanto, ya muchísimo se ha hablado acerca de lo bueno, malo y feo de este aparato, pero para aquellos que han estado viviendo bajo una roca, un pequeño resumen:

Lo bueno:
  • La nueva Raspberry Pi 4 (de ahora en adelante simplemente rPi 4) incluye un procesador quad core basado en Cortex A74 en vez de la Cortex A53 como en la rPi 3b+.
  • La posibilidad de elegir entre el modelo con 1GB, 2GB y 4GB en RAM. Cabe señalar que encargamos la versión más jugosa posible y obviamente la primera que se agotó en tiempo récord: la versión de 4GB.
  • La rPi 4 trae además 2 puertos microHDMI con soporte para 4K a 60fps, alimentado gracias a la nueva VideoCore GPU que ya va en la sexta generación (VI) en vez de la IV como en rPi 3b+.
  • Mientras que la rPi 3b+ traía 4 conexiones USB, estos eran sólo 2.0. La rPi 4 trae igualmente 4 conexiones USB, pero esta vez son 2 puertos 2.0 y 2 puertos 3.0.
  • El puerto de alimentación igualmente obtuvo un upgrade, gracias a que ahora es un puerto USB-C en vez de un simple mini USB.
  • Por último, esta nueva rPi 4 también viene con un puerto Gigabit Ethernet en vez de un puerto que se limita a sólo 100Mbps.

Lo malo:
  • La Raspberry Pi Foundation (la organización que está detrás de esta pequeña maravilla) no preveyó lo exitoso que sería la versión de 4GB, dando como resultado un grave desabastecimiento al principio que recién ahora están empezando a solucionar.
  • No se puede bootear directamente desde los puertos USB 3.0. Solucionarán esto en el futuro a través de software, pero es algo a tener en cuenta ya que por el momento una tarjeta microSD ES necesaria para poder utilizar la rPi.
Lo feo:

Durante la época de diseño y posterior testeo… durante más de un año… a la Raspberry Pi Foundation nunca se les ocurrió probar un cable USB-C que tuviera una marca electrónica, dando como resultado que se les olvidó incluir una resistencia adicional en la placa haciendo que este dispositivo no se pueda ocupar con cables que tienen esta marca electrónica. Los cables que ocupan este tipo de marca son por ejemplo todos los que ha producido Apple.

1587740508710-png.4873

En fin, no nos enfoquemos en lo negativo y veamos el lado positivo: con todos estos cambios, las aplicaciones que pueden hacer uso de este aparato se acrecentan bastante: una NAS casera ya está dentro de las posibilidades reales gracias a sus dos puertos USB 3.0 y sistemas que ocupan múltiples pantallas (digital signage) también se verán fuertemente beneficiadas.

Lo mejor de todo es el precio: incluso con todos estos cambios, el precio base de la rPi 4 con 1GB de RAM siga siendo la modesta suma de USD 35. Pequeño disclaimer si: ese es el precio por la placa madre. Hay que sumarle la fuente de poder, una tarjeta microSD, la carcaza y cables opcionales.

Sin embargo, lo que nos trae a esta guía será algo más simple que eso: en mi casa quiero monitorear la temperatura y unas cuantas cosas más que vendrán en el futuro, así que por lo pronto necesitaremos lo siguiente:

  • Raspberry Pi 4 (nótese que para estos propósitos, la 3b+ o incluso la original sirven)
  • Un DHT11 que nos permitirá monitorear no sólo la temperatura, sino que también humedad. Un DHT22 o un AM2302 igual sirven, sólo hay que ajustar una pequeña configuración. Recomiendo como mínimo un DHT22 ya que es más exacto que un DHT11: llenarán varias comas decimales en vez de… ninguno como la DHT11 pero lamentablemente es lo único que tengo en este momento.
Lo primero es bajar la distro que corresponde, para los rPi lo más recomendado es bajar Raspbian a menos que uno vaya a ocupar aplicaciones más específicas. Para bajar esto, se hace desde aquí: https://www.raspberrypi.org/downloads/raspbian/

Luego hay que formatear la tarjeta microSD. Como yo estoy ocupando un Mac, los pasos son los siguientes:

  1. Inserta la tarjeta microSD
  2. Abre la aplicación Utilidad de Discos
  3. Anota el número de la tarjeta SD (en mi caso era disk3s1, por lo tanto anotamos el número 3).
  4. Desmonta la unidad
  5. Descarga y descomprime la imagen
  6. En la terminal, ejecuta el siguiente comando:
    Bash:
    sudo dd bs=1m if=~/Downloads/X.img of=/dev/rdiskY
    Reemplazando la X y la Y respectivamente por lo que corresponde: la X por la imagen que acaban de bajar y la Y por el número de la tarjeta SD en paso 3.
  7. Cuando eso termine y como quiero dejar este sistema totalmente headless (sin gráficas), lo otro que es necesario es habilitar SSH cuando bootee el equipo. Para hacer esto, en la terminal pueden ejecutar lo siguiente:
    Bash:
    cd /Volumes/boot
    touch ssh
    Una vez hecho eso, la imagen queda lista.
  8. Desmonten la tarjeta, sáquenla del equipo flasheador e inserten la tarjeta en la rPi.
    Cabe destacar que si no la van a conectar directamente a un cable ethernet, pueden habilitar que se conecte automáticamente a una wifi, creando un archivo llamado wpa_supplicant.conf con el siguiente contenido:
    Código:
    country=clupdate_config=1
    ctrl_interface=/var/run/wpa_supplicant
    
    network={
    scan_ssid=1
    ssid="LaSSIDDeSuRed"
    psk="LaContraseñaDeSuRed"
    }
Una vez hecho eso y enchufada la rPi, empieza la diversión! Lo primero que tendremos que saber es a qué ip conectarnos. Echen un vistazo a su firewall y/o router para eso. En mi caso, fue la siguiente ip: 172.16.10.20.

En una terminal, conéctense ahora via SSH:
Código:

El usuario predeterminado es pi y la contraseña predeterminada es raspberry. Les sugiero cambiarlo para que no tengan que googlear por este artículo cada vez que se quieran meter a la máquina.

Lo primero que haremos será actualizar a la última versión e instalar algunos paquetes que en mi caso siempre encuentro útiles, seguido de un reboot para empezar fresquitos:
Bash:
sudo rm /etc/localtime && sudo ln -s /usr/share/zoneinfo/America/Santiago /etc/localtime
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install vim ncdu git
sudo reboot

Ahora empieza lo realmente interesante.

1587740556182-png.4874

La imagen de arriba es justamente la razón por la que la Raspberry Pi se hizo tan popular: estos puertos permiten enchufar una cantidad de sensores increíbles y obtener la salida de ellas para poder hacer algo en otros puertos, lo único que se requiere es un poco de programación.

Como esta guía ya es bastante larga, partiré con un ejemplo sencillo que es simplemente leer datos desde el sensor de temperatura y humedad. Antes de conectar cualquier cosa apaguen su rPi, no lo hagan en caliente.

La parte del sensor es bastante sencilla: trae sólo 3 pines, uno para electricidad DC positivo, el otro negativo (tierra) y el tercero es el bus de datos.

1587740561778-png.4875


Si tienen el mismo modelo que el que está arriba, lo más probable es que la del centro sea para datos.

El VCC lo conectaremos a un puerto que entregue 5v mientras que GND lo conectaremos a alguna tierra, la línea de datos se puede conectar al pin 17. Siéntanse libres de conectarlo a cualquier otro pin a su conveniencia, pero ajusten el código en ese caso.
Pequeña nota al respecto: si tienen una rPi4 con un buen cargador y un cable no tan largo, intenten primero conectarlo a la línea de 3.3v ya que el DHT11 tiene un rango operativo de entre 3.5v a 5.5v, sin embargo, durante mis pruebas, 3.3v fue más que suficiente.

Una vez hecho eso, nos meteremos via SSH a la raspberry de nuevo y ejecutaremos los siguientes comandos:

Bash:
sudo apt-get install build-essential python-dev python3-pip
cd
mkdir .python-dependencies
cd .python-dependencies
git clone https://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit_Python_DHT/
sudo python3 -m pip install --upgrade pip setuptools wheel
sudo python3 setup.py install
cd
mkdir -p gpio/read-dht11
cd gpio/read-dht11/
touch read-sensor.py

En ese archivo colocaremos el siguiente código:

Código:
import Adafruit_DHT

humidity, temperature = Adafruit_DHT.read_retry(Adafruit_DHT.DHT11, 17)

humidity = round(humidity, 2)
temperature = round(temperature, 2)

if humidity is not None and temperature is not None:
  print('{0:0.1f}|{1:0.1f}'.format(temperature, humidity))
else:
  print('')

Si tienen la DHT22 o la AM2302, cambien la siguiente línea por esto otro:

Código:
# Viejo:
humidity, temperature = Adafruit_DHT.read_retry(Adafruit_DHT.DHT11, 17)

# Nuevo:
humidity, temperature = Adafruit_DHT.read_retry(Adafruit_DHT.DHT22, 17)
humidity, temperature = Adafruit_DHT.read_retry(Adafruit_DHT.AM2302, 17)

Ahora necesitamos correr este archivo:

Bash:
python3 read-sensor.py

Y esto debería dar la siguiente salida (por supuesto que los valores van a ser distintos):

Código:
22.0|56.0

Qué significa esta cifra? Pues simple: hacen 22° C y hay una humedad relativa de un 56%. Ahora pueden hacer lo que ustedes quieran con esto! En lo personal, yo creé un script que sube estos datos a mi broker MQTT para que sea procesado por Home Assistant.

Y con eso concluye esta guía que se irá entregando en partes: en la próxima entrega veremos otra arista distinta y esta será la instalación de Home-Assistant.

¿Tiene alguna duda, reclamo, sugerencia, felicitaciones, aporte, no-aporte, comentario, aaaaaaaaaalgo que sea por favoooooorrr con respecto a estas guías? Pues dejen su recuerdo por aquí.
 

tglaria

InExperto
Se incorporó
10 Febrero 2005
Mensajes
9.693
[...] las almacena en una mysql local (encriptada y la sd de la PI también está encriptada) [...]
¿Nunca has tenido dramas de corrupción de la memoria SD?
¿cuánta lectura/estritura tiene esa memoria?

A la rpi3 [...] Como esa corre sólo desde una MicroSD no le tengo swap y varias veces me ha pasado que está colgada o telegraf o magic mirror los mata el OOM killer.
Siempre puedes correr desde alguna unidad por USB, :zippy
 

tglaria

InExperto
Se incorporó
10 Febrero 2005
Mensajes
9.693
ojo que la reproducción es via software, así que aguanta con cuea 1080p 30fps, 1080p 60fps o 4k no lo puede reproducir de forma nativa.

Sé que Kodi ahora último sacó su última versión que al parecer acelera por hardware tb h264, pero no lo he probado todavía (tiempo :( ).

Saludos.
Tenía entendido que había aceleración por hardware desde hace rato.
Algo que pillé:
Pi0-3 have hardware accelerated decode for H264, MPEG4, H263, and through optional codec licences for MPEG2 and VC1.
Pi4 has the same hardware accelerated decode for H264, but not the other codecs. It also has a separate block for HEVC.
 

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
Se incorporó
2 Octubre 2005
Mensajes
13.442

tglaria

InExperto
Se incorporó
10 Febrero 2005
Mensajes
9.693

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
Se incorporó
2 Octubre 2005
Mensajes
13.442
¿Nunca has tenido dramas de corrupción de la memoria SD?
¿cuánta lectura/estritura tiene esa memoria?


Siempre puedes correr desde alguna unidad por USB, :zippy
eso lo hice y andaba como río de caca. Mucho más lento que la MicroSD.

MicroSD's corruptas tb he tenido, pero ocurre poco si tienes una MicroSD grande.

Saludos.
 

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
Se incorporó
2 Octubre 2005
Mensajes
13.442
Algo similar había leído en varias páginas (por ej).
Lo que no pillé (y tampoco me importa mucho) es si esta habilitación sirve desde Kodi (u otro reproductor) para dejar el sistema como 'media center'.
no puedo decir mucho sobre eso 🥷

La razón? Estoy por sacar un artículo sobre eso jajajaja paciencia! :)

Saludos.
 

yakko

pingüino mal genio
Se incorporó
24 Agosto 2004
Mensajes
16.883
¿Nunca has tenido dramas de corrupción de la memoria SD?
¿cuánta lectura/estritura tiene esa memoria?


Siempre puedes correr desde alguna unidad por USB, :zippy
No nunca me ha pasado, y la escritura es muy muy baja, el sistema fue tuneado para evitar al máximo las escrituras al disco
 

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
Se incorporó
2 Octubre 2005
Mensajes
13.442
Debe ser por eso.
A grandes rasgos, ¿podrías explicar qué tuneaste?

El impacto no es tanto. Tengo la misma microsd hace como 5 años ya en una rpi y ni siquiera me he preocupado de no escribir los logs al disco (se podría hacer).

Mientras no sea nada intensivo y no tengas muchos cortes de luz la tarjeta te puede durar años.

Saludos.
 

napon

Miembro Regular
Se incorporó
17 Junio 2005
Mensajes
31
yo tengo una 3b y la uso con esto https://pi-hole.net, bloque anuncios etc... entonces lo tengo en el router principal, toda persona que se conecta a mi red esta libre de anuncios
 

AlvaroLiveCL

Miembro Regular
Se incorporó
8 Mayo 2018
Mensajes
81
tengo en casa 2 pi3 y una pi4. la verdad son una maravilla. la pi4 la tenia con openmediavault para usarlo como NAS, dockers como plex,qbitorrent y otra raspberry la usaba con pihole para el bloqueo de publicidad.
ahora todo eso lo pase a proxmox y manejo containers y maquinas virtuales desde ahi.

la pi4 en verdad tiene mucho potencial
 
Subir