Skip to main content

4.2 Haciendo uso del pinout

Llegó el momento de mancharnos las manos

Todos los montajes deben hacerse con la Raspberry Pi apagada.

Cuestiones previas

Antes de comenzar a trabajar con la raspberry Pi necesitamos tener claras algunas cuestiones como el pinout del modelo con el que estemos trabajando. Así, el pinout del modelo 4 es el siguiente:

GPIO-diagram-Raspberry-Pi-4.png

Imagen obtenida de https://www.raspberrypi.com/documentation/computers/raspberry-pi.html

Una cosa que han hecho muy bien desde Raspberry Pi es mantener la retrocompatibilidad entre modelos así el pinout del modelo 2 B es el mismo que es de este modelo.

Para las prácticas que realizaré a continuación utilizaré una Raspberry Pi modelo 2 B. Las mismas deberían ser totalmente compatibles con modelos actuales.

Vamos a hacer uso de resistencias para algunos montajes por ello te dejo a mano el código de colores de las resistencias:

pinout-cod-colores.jpg

Imagen obtenida de https://i.ytimg.com/vi/ox8Su0lyFXo/maxresdefault.jpg

También necesitaremos conocer los diferentes segmentos de un display

pinout-display.png

Imagen obtenida de https://mvelectronica.com/storage/app/OPTOELECTRONICA/DISPLAY/D7S3A/2.png

Lo último que tenemos que tener claro es el patillaje de un diodo LED

pinout-anodo-catodo.png

Imagen obtenida de https://ebotics.com/es/actividad/proyecto-no-2-controlar-el-brillo-del-led/

También recuerda:

  • Ley de Ohm: V = R * I (Tensión es igual a Resistencia por Intensidad) en sus respectivas unidades:
    • Tensión se mide en Voltios (V)
    • Resistencia se mide en Ohmios (Ω)
    • Intensidad se mide en amperios (A)
  • Un diodo sólo deja pasar la corriente en un determinado sentido por ello verifica que si no se enciende está conectado en la posición correcta (si no luce también puede ser que esté quemado)

Ejemplo de cálculo

Si queremos actuar sobre algún dispositivo lo haremos a través de los pines que podemos encender y apagar a través del software. Si recurrimos a la documentación de Raspberry Pi indican "A GPIO pin designated as an output pin can be set to high (3.3V) or low (0V)." Es decir, cuando establezcamos que un pin está encendido (a HIGH, a 1, son todo sinónimos) significa que estaremos estableciendo que en ese pin hay 3,3V mientras que si establecemos que un pin está apagado (a LOW, a 0, son todo sinónimos) significa que estamos estableciendo que en ese pin hay 0V. Además la corriente máxima con la que pueden funcionar un GPIO en la Raspberry es 16mA.

Así, si queremos utilizar un diodo LED rojo que funciona con 1,7 V y 20mA tendremos un exceso de 1,6V (los 3,3V que genera la salida de la Raspberry menos los 1,7V que requiere el LED rojo) ese exceso de tensión tendremos que dárselos a otro componente para que no se queme el LED por ello en nuestro diseño meteremos una resistencia, que no tendrá mas objetivo que ser ella la que consuma ese exceso de 1,6V. ¿Y de cuánto tendrá que ser esa resistencia? Sabemos que en esa resistencia tiene que haber 1,6V y que por ella van a circular 16mA =0,016A (lo ideal sería 20mA pero la Raspberry nos lo limita a 16mA), usamos la Ley de Ohm R=V/I=1,6/0,016 = 100 Ω. Por lo que junto a nuestro led rojo deberemos usar una resistencia de 100 Ω que coincide con un valor standard comercial. Si el valor calculado no coincide con un valor comercial, hay que elegir el inmediato superior (el inferior proporcionaría más corriente y tenemos la limitación de los 16mA de la Raspberry que no queremos quemarlo).

La potencia que "sufrirá" esa resistencia será P= VI = 1.6Vx16mA=27mW por lo tanto cualquier resistencia comercial es válida pues lo mínimo es 1/8W la más común son las 1/4W.

De la misma forma podemos hacer los cálculos para otros colores de Leds, (aquí para descargar la hoja de cálculo) pero como podemos ver, algunos colores no funcionarían con la Raspberry pues necesitan más tensión de la que proporciona la Raspberry

2023-04-17 14_09_29-Microsoft Excel - calculo-resistencia-led.xlsx.jpg

Fuente de datos Wikipedia https://es.wikipedia.org/wiki/Circuito_de_LED

Normalmente en placas como Arduino trabaja a 5V por lo que las resistencias son mayores :

led_1.png

Imagen de https://todotecnologia-eso.blogspot.com/ Licencia CC-BY-SA-NC 

Encender y apagar un led

Materiales

  • 1 led
  • 1 resistencia de 100Ω / 1/4W
  • 2 cables
  • placa de conexiones

Conexiones

  1. Resistencia al cátodo del led
  2. ánodo del led a pin 7 (pin, no GPIO)
  3. Resistencia a pin 25 (tierra)

Programa

Nos dirigiremos a la terminal y allí escribiremos

nano led.py

con ello se abrirá el editor nano y estaremos trabajando sobre el fichero led.py que si no existe se creará y si existe trabajaremos sobre el existente. A continuación escribiremos el código python que aparece a continuación:

# Importamos la biblioteca que nos permite pausar la ejecución del programa
import time
# Importamos la biblioteca que nos permite conectar a los GPIO pins
# otros dispositivos. GPIO -> General Purpose Input Output
import RPi.GPIO as GPIO
# A partir de aquí configuramos la plcada
# 1ero: borramos cualquier configuración previa
GPIO.cleanup()
# 2ndo: establecemos el modo de trabajo de la raspi
GPIO.setmode(GPIO.BOARD)
# 3ero: Indicamos que el pin 7 actuará como salida
GPIO.setup(7,GPIO.OUT)
# Bucle infinito
while True:
  # Escribo en el terminal el texto enciendo
  print("enciendo")
  # Pongo tensión en el pin 7
  GPIO.output(7,GPIO.HIGH)
  # Detengo la ejecución del programa 2 segundos
  time.sleep(2)
  # Escribo en el terminal
  print("apago")
  # Quito la tensión del pin 7
  GPIO.output(7,GPIO.LOW)
  # Pauso la ejecución del programa 2 segundos
  time.sleep(2)

para salir del editor pulsaremos control + x y aceptaremos los cambios. Tras ello, si ejecutamos ls -l veremos listado el directorio en el que nos encontramos y ahí veremos nuestro fichero. Lo ejecutaremos escribiendo python led.py

En el terminal veremos algo similar a 

led-working-terminal.png

Elaboración propia

Si las conexiones que hemos realizado son correctas veremos como el led va encendiéndose y apagándose. Para detener la ejecución del programa pulsaremos control + c. Dejo a continuación alguna foto del programa funcionando:

conexiones-placa.jpg

Conexiones en la protoboard. Elaboración propia

conexiones-raspy.jpg

Conexiones en la Raspberry Pi. Elaboración propia

led-on.jpg

Mensaje de led encendido y led encendido. Elaboración propia

led-off.jpg

Mensaje de led apagado y led apagado. Elaboración propia

Semáforo

Materiales

  • 1 led rojo
  • 1 led amarillo
  • 1 led verde
  • 1 resistencia de 100 Ω y dos de 82 Ω pero si se utilizan todos de  100 Ω no pasa nada.
  • 4 cables
  • placa de conexiones

Conexiones

  1. Una resistencia al cátodo de cada led
  2. ánodo del led rojo a pin 3 (pin, no GPIO)
  3. ánodo del led amarillo a pin 5 (pin, no GPIO)
  4. ánodo del led verde a pin 7 (pin, no GPIO)
  5. Resistencias a pin 25 (tierra)

Programa

Al igual que en el caso anterior crearemos el fichero con nano y lo ejecutaremos con python. Esa parte no varía por lo que no me repito. El nombre que le pongáis al programa no es importante.

pinout-programa2.png

Elaboración propia

Display de 7 segmentos

Esta práctica variará en función de si usamos un display de cátodo común o de ánodo común, tenlo en cuenta.

Materiales

  • Display de 7 segmentos
  • 4 resistencias de 82 Ω o 100 Ω
  • 5 cables
  • placa de conexiones

Conexiones

Si utilizas un display de cátodo común serán las siguientes:

  • Cátodo del display a pin 25 (tierra)
  • Pin 3 a resistencia y esta a segmento f.
  • Pin 5 a resistencia y esta a segmento e.
  • Pin 7 a resistencia y esta a segmento b.
  • Pin 11 a resistencia y esta a segmento c.

Si utilizas un display de ánodo común serán las siguientes:

  • Ánodo del display a pin 1 (3,3V)
  • Pin 3 a resistencia y esta a segmento f.
  • Pin 5 a resistencia y esta a segmento e.
  • Pin 7 a resistencia y esta a segmento b.
  • Pin 11 a resistencia y esta a segmento c.

Programa

Al igual que en el caso anterior crearemos el fichero con nano y lo ejecutaremos con python. Esa parte no varía por lo que no me repito. El nombre que le pongáis al programa no es importante.

El programa encenderá un lateral del display y luego otro de modo infinito. Te propongo que modifiques el programa y las conexiones para convertir esta práctica en una cuenta atrás.

pinout-programa3.png

Elaboración propia

Otras prácticas

Con mi alumnado de FP básica otras prácticas que he llevado a cabo han sido:

  • encender el led cuando no hay luz (haciendo uso del LDR)
  • un detector de humedad (que suene un sonido y/o se enciende una luz cuando el circuito se cierra con la humedad)

En internet existen multitud de prácticas para realizar con la Raspberry Pi.