Introducción al GPIO de Raspberry Pi 5


Aprende los pines GPIO de Raspberrty PI, identifica pines GPIO, I2C, SPI, UART, PWM

oscar Escrito por oscar 13 July 2026 287 0

Los pines GPIO (General Purpose Input/Output) de la Raspberry Pi son conexiones físicas que permiten a la placa interactuar con el mundo exterior. Funcionan como interruptores programables para leer entradas (como pulsar un botón o los datos de un sensor) y controlar salidas (encender un LED o un motor) enviando o recibiendo señales de 3.3 V.

GPIO de Raspberry Pi 4 y Raspberry Pi 5

La Raspberry Pi 4 Model B y la Raspberry Pi 5 utilizan el mismo conector GPIO de 40 pines (J8), por lo que son completamente compatibles con la mayoría de HATs y accesorios diseñados para Raspberry Pi. Todos los GPIO funcionan con lógica de 3.3 V (no son tolerantes a 5 V). La Raspberry Pi 5 incorpora un nuevo controlador GPIO (RP1), pero mantiene el mismo pinout físico que la Raspberry Pi 4.

¿Hay diferencias entre Raspberry Pi 4 y Raspberry Pi 5?

En cuanto al conector GPIO, no existen diferencias físicas. El encabezado de 40 pines es exactamente el mismo, por lo que el cableado y los proyectos electrónicos son compatibles entre ambos modelos.

La principal diferencia es interna:

 A continuación, localizamos cada pin

      Nombre # # Nombre      
      3v3 1 2 5v      
    SDA I2C1 GPIO 2 3 4 5v      
    SCL I2C1 GPIO 3 5 6 GND      
    GPCLK0 GPIO 4 7 8 GPIO 14 TX UART0    
      GND 9 10 GPIO 15 RX UART0    
    CE1 SPI1 GPIO 17 11 12 GPIO 18 PCM CLK PWM0 CE0 SPI1
      GPIO 27 13 14 GND      
      GPIO 22 15 16 GPIO 23      
      3v3 17 18 GPIO 24      
    MOSI SPI0 GPIO 10 19 20 GND      
    MISO SPI0 GPIO 9 21 22 GPIO 25      
    SCLK SPI0 GPIO 11 23 24 GPIO 8 CE0 SPI0    
      GND 25 26 GPIO 7 CD1SPI0    
    SDA EEPROM GPIO 0 27 28 GPIO 1 SCL EEPROM    
    GPLCLK1 GPIO 5 29 30 GND      
    GPLCLK2 GPIO 6 31 32 GPIO 12   PWM0  
  PWM1   GPIO 13 33 34 GND      
MISO SPI1 PWM1 PCM FS GPIO 19 35 36 GPIO 16   CE2 SPI1  
      GPIO 26 37 38 GPIO 20 PCM DIN MOSI SPI1  
      GND 39 40 GPIO 21 PCM DOUT SCLK SPI1  

Interfaces disponibles

Interfaz GPIO utilizados
I²C GPIO2 (SDA), GPIO3 (SCL)
UART GPIO14 (TX), GPIO15 (RX)
SPI0 GPIO7, GPIO8, GPIO9, GPIO10, GPIO11
PWM GPIO12, GPIO13, GPIO18, GPIO19
PCM / I2S GPIO18, GPIO19, GPIO20, GPIO21

GPIO de Raspberry Pi 3 Model B y Raspberry Pi 3 Model B+

La Raspberry Pi 3 Model B y la Raspberry Pi 3 Model B+ incorporan un conector GPIO (J8) de 40 pines. Este conector es compatible con las Raspberry Pi 2, Raspberry Pi 4 y Raspberry Pi 5, por lo que la mayoría de los módulos HAT y accesorios pueden utilizarse sin modificaciones.

Todos los GPIO trabajan con un nivel lógico de 3.3 V. Ningún pin GPIO admite señales de 5 V, ya que esto podría dañar permanentemente el procesador Broadcom BCM2837.

Compatibilidad con otras Raspberry Pi

La Raspberry Pi 3 Model B y Raspberry Pi 3 Model B+ utilizan exactamente el mismo pinout GPIO que la Raspberry Pi 2, Raspberry Pi 4 y Raspberry Pi 5. Esto significa que los programas desarrollados utilizando la numeración BCM y los accesorios HAT compatibles con el conector de 40 pines pueden utilizarse indistintamente en estos modelos.

La diferencia principal entre estos modelos no está en el conector GPIO, sino en el procesador, la memoria, el rendimiento y el controlador interno encargado de gestionar los GPIO. Mientras la Raspberry Pi 3 utiliza el SoC Broadcom BCM2837 para controlar directamente los GPIO, la Raspberry Pi 5 emplea el chip RP1 como controlador de entrada/salida, aunque mantiene la misma distribución física de los pines.

Lenguajes para usar con GPIO

¿Qué librerías son las recomendadas actualmente?

Lenguaje Librería recomendada Estado
Python GPIO Zero + lgpio ⭐ Muy recomendada
C libgpiod ⭐ Oficial en Linux moderno
C++ libgpiod ⭐ Recomendada
Java Pi4J ⭐ Muy madura
Node.js onoff ⭐ Muy utilizada
Go periph.io ⭐ Recomendada
Rust rppal ⭐ Excelente
C# System.Device.Gpio ⭐ Oficial de .NET
Bash gpiod (gpioset, gpioget) ⭐ Oficial

Python (Recomendado para comenzar)

Es el lenguaje más utilizado en Raspberry Pi.

GPIO Zero

Es la librería oficial de alto nivel.

Instalación

sudo apt install python3-gpiozero

Ejemplo

from gpiozero import LED
from time import sleep

led = LED(17)

while True:
    led.on()
    sleep(1)
    led.off()
    sleep(1)

lgpio (Nueva recomendación)

Las versiones recientes de Raspberry Pi OS utilizan lgpio como backend.

sudo apt install python3-lgpio

Ejemplo:

import lgpio
import time

h = lgpio.gpiochip_open(0)

lgpio.gpio_claim_output(h, 17)

while True:
    lgpio.gpio_write(h, 17, 1)
    time.sleep(1)
    lgpio.gpio_write(h, 17, 0)
    time.sleep(1)

C

Ideal para aplicaciones donde el rendimiento es importante.

libgpiod

Actualmente es la librería recomendada en Linux moderno.

Instalación

sudo apt install libgpiod-dev gpiod

Ejemplo

#include <gpiod.h>

struct gpiod_chip *chip;
struct gpiod_line *line;

chip = gpiod_chip_open("/dev/gpiochip0");
line = gpiod_chip_get_line(chip, 17);

gpiod_line_request_output(line, "app", 0);

gpiod_line_set_value(line, 1);

C++

Puede utilizar exactamente libgpiod.

También existen wrappers como:

Java

Muy buena opción si ya trabajas con Java y Micronaut.

Pi4J

Es la librería más conocida para Raspberry Pi.

Características

Ejemplo

Context pi4j = Pi4J.newAutoContext();

DigitalOutput led = pi4j.create(
    DigitalOutput.newConfigBuilder(pi4j)
        .address(17)
        .build()
);

led.high();
led.low();

Node.js / JavaScript / TypeScript

Muy utilizado para proyectos IoT.

onoff

npm install onoff

Ejemplo

const Gpio = require('onoff').Gpio;

const led = new Gpio(17, 'out');

led.writeSync(1);

rpi-gpio

npm install rpi-gpio

pigpio

Muy buena para PWM.

npm install pigpio

Go

Cada vez más popular para servidores IoT.

Bibliotecas

Ejemplo

rpio.Open()

pin := rpio.Pin(17)
pin.Output()
pin.High()

Rust

Muy rápida y segura.

Bibliotecas

Ejemplo

use rppal::gpio::Gpio;

let gpio = Gpio::new()?;
let mut pin = gpio.get(17)?.into_output();

pin.set_high();

C#

Con .NET

Biblioteca

System.Device.Gpio

Ejemplo

using System.Device.Gpio;

var controller = new GpioController();

controller.OpenPin(17, PinMode.Output);

controller.Write(17, PinValue.High);

Shell (Bash)

Con herramientas de gpiod.

gpioset gpiochip0 17=1

gpioget gpiochip0 17

Comentario

Debe aceptar antes de enviar