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í.
 

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
Se incorporó
2 Octubre 2005
Mensajes
13.601
Hola! Sip, está en estos momentos haciendo muuuuchas otras cosas de las cuales saldrán guías pronto!

b19aaded17b7d669b6105c602b2cd4aa.jpg
 

hashimoto

Gold Member
Se incorporó
30 Julio 2006
Mensajes
2.416
que tan cierto es que no funciona con todos los conectores usb tipo c? que versiones tienes? para la primera cambiaron el bootlader ya que no permitia el wake on por gpio
 

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
Se incorporó
2 Octubre 2005
Mensajes
13.601
que tan cierto es que no funciona con todos los conectores usb tipo c? que versiones tienes? para la primera cambiaron el bootlader ya que no permitia el wake on por gpio

Hola, si es cierto que no funciona con ciertos cables, en la "guía" salen bajo cuáles condiciones.

Yo tengo la rpi4 de 4gb y una rpi 3b en la casa.

WOG no lo he usado ya que está siempre prendido, no podría comentarte al respecto.

Saludos.


Sent from my iPhone using Tapatalk
 

hashimoto

Gold Member
Se incorporó
30 Julio 2006
Mensajes
2.416
Hola, si es cierto que no funciona con ciertos cables, en la "guía" salen bajo cuáles condiciones.

Yo tengo la rpi4 de 4gb y una rpi 3b en la casa.

WOG no lo he usado ya que está siempre prendido, no podría comentarte al respecto.

Saludos.


Sent from my iPhone using Tapatalk

ahhh si es la primera version dijeron ke ni era dificil de cambiar
 

Cosme

Gold Member
Se incorporó
27 Febrero 2005
Mensajes
8.281
esta guia me empujó un poco a documentar el proceso que estaré realizando este mes:
volver inteligente un filtro de aire que no lo es.

Gracias por el aporte @unreal4u
 

galansinchance

enajenao
Se incorporó
3 Enero 2006
Mensajes
7.425
grande vikingo!!

Pucha nosotros acá estamos bien entretenidos haciendo cosas con la Rpi, me gustaba más la beaglebone black que venía llegar y usar, pero no la renovaron.

Saludos
 

bobolu

Experimentado
Se incorporó
21 Octubre 2007
Mensajes
1.134
Editado por la administración: Intento de venta en foro técnico.
 
Última modificación por un moderador:

yakko

pingüino mal genio
Se incorporó
24 Agosto 2004
Mensajes
16.883
no deja de impresionarme lo bien que funcionan las rpi, soportan mucha más carga de la que me imaginé y son muy estables y duraderas.
 

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
Se incorporó
2 Octubre 2005
Mensajes
13.601
no deja de impresionarme lo bien que funcionan las rpi, soportan mucha más carga de la que me imaginé y son muy estables y duraderas.

Lamentablemente tuve que quitarle un poco de carga a una de las rpi, era una que sólo le tenía una SSD conectada (sin MicroSD) pero corriendo cerca de 15 imágenes al mismo tiempo: a veces el controlador USB simplemente se quedaba pegado y no hacía nada más: se congelaba el sistema por completo.

Hice de todo pero nada funcionó: no era que tenía poca RAM, de hecho me sobraba todavía un poco y tampoco era falta de CPU: tenía un avg. load de 2 aprox., lo cual significaba que todavía tenía holgura.

Al final, reduciendo a aprox. 9 imágenes dejó de pegarse a cada rato.

Lo que sí, con el tiempo fui ocupando más y más las imágenes que corro, voi a tener que aplicar el cambio de 4GB a la versión de 8GB:
Código:
ubuntu@unifi:~ $ free -h
              total        used        free      shared  buff/cache   available
Mem:          3.7Gi       2.7Gi       101Mi        29Mi       950Mi       1.2Gi
Swap:         4.0Gi       4.0Gi       0.0Ki

Podría ver si con ese cambio le puedo mandar algunas imágenes adicionales, para que la pobre rpi3b+ (apenas 1GB en RAM) pueda tener un poco de respiro jajajaj

Saludos.
 

yakko

pingüino mal genio
Se incorporó
24 Agosto 2004
Mensajes
16.883
Lamentablemente tuve que quitarle un poco de carga a una de las rpi, era una que sólo le tenía una SSD conectada (sin MicroSD) pero corriendo cerca de 15 imágenes al mismo tiempo: a veces el controlador USB simplemente se quedaba pegado y no hacía nada más: se congelaba el sistema por completo.

Hice de todo pero nada funcionó: no era que tenía poca RAM, de hecho me sobraba todavía un poco y tampoco era falta de CPU: tenía un avg. load de 2 aprox., lo cual significaba que todavía tenía holgura.

Al final, reduciendo a aprox. 9 imágenes dejó de pegarse a cada rato.

Lo que sí, con el tiempo fui ocupando más y más las imágenes que corro, voi a tener que aplicar el cambio de 4GB a la versión de 8GB:
Código:
ubuntu@unifi:~ $ free -h
              total        used        free      shared  buff/cache   available
Mem:          3.7Gi       2.7Gi       101Mi        29Mi       950Mi       1.2Gi
Swap:         4.0Gi       4.0Gi       0.0Ki

Podría ver si con ese cambio le puedo mandar algunas imágenes adicionales, para que la pobre rpi3b+ (apenas 1GB en RAM) pueda tener un poco de respiro jajajaj

Saludos.
Imágenes de que? Que corres?


Yo estoy usando una pi3 que es de 1gb ram si mal no recuerdo (funciona tan bien que hace más de un año que no me conecto a verla) corre raspbian y un software que hice yo que se comunica con varios sensores por modbus rs485 y modbus tcp para leer variables eléctricas y ambientales (en promedio 25 por segundo) , las almacena en una mysql local (encriptada y la sd de la PI también está encriptada) y se comunica por 4g o wifi o ethernet (depende de donde esté instalada la PI) con un delay de un par de milisegundos con el equipo que recibe todas las mediciones (un server en un datacenter).

El load promedio es de 0. Y la ram usada creo que no llega a 100m
 

ricm

Se incorporó
28 Agosto 2005
Mensajes
7.590
Que tal anda la reproducción de video en la pi4? Onda como para ver youtube y cosas asi
 

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
Se incorporó
2 Octubre 2005
Mensajes
13.601
Imágenes de que? Que corres?


Yo estoy usando una pi3 que es de 1gb ram si mal no recuerdo (funciona tan bien que hace más de un año que no me conecto a verla) corre raspbian y un software que hice yo que se comunica con varios sensores por modbus rs485 y modbus tcp para leer variables eléctricas y ambientales (en promedio 25 por segundo) , las almacena en una mysql local (encriptada y la sd de la PI también está encriptada) y se comunica por 4g o wifi o ethernet (depende de donde esté instalada la PI) con un delay de un par de milisegundos con el equipo que recibe todas las mediciones (un server en un datacenter).

El load promedio es de 0. Y la ram usada creo que no llega a 100m

De memoria pq no toi en la casa ahora:

rpi4 (4GB RAM):
- Home Assistant
- Zigbee2MQTT (opcional el assistant cuando necesito la UI)
- unifi controller
- Telegraf
- Influxdb
- MongoDB
- Grafana
- nginx (proxy transparente y SSL terminator)

rpi3b+ (1GB RAM):
- NodeRed
- mqtt
- Diversas apps en php
- Telegraf
- magic mirror (server)

odroid (4GB RAM):
- bazarr
- radarr
- sonarr
- plex media server

Demás se me olvidan algunos, pero esos son los más importantes.

Cuando corría bazarr, radarr, sonarr, nodered y el magic mirror en la rpi4, experimentaba el problema de que la I/O a veces se condoreaba, pero ni siquiera era durante una bajada de una película o serie (lo que podría explicar el aumento en I/O a través del bus), así que lo asigné a quizás una falta de recursos.

A la rpi3 voi a tener que dejarlo sólo con MQTT, estoy mandando tantos mensajes que sólo MQTT me está comiendo ya un ~30% de la RAM. 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.

En fin, buena excusa para upgradear 😅

Saludos.
 

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
Se incorporó
2 Octubre 2005
Mensajes
13.601
Que tal anda la reproducción de video en la pi4? Onda como para ver youtube y cosas asi
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.
 
Subir