100% encontró este documento útil (1 voto)
56 vistas12 páginas

Pines GPIO en Raspberry Pi 4 y 3

El documento describe los pines GPIO en la Raspberry Pi. Los GPIO permiten configurar pines de entrada y salida para conectar dispositivos electrónicos. Las versiones más recientes de Raspberry Pi tienen 40 pines GPIO. Los pines se pueden usar para proyectos como hacer titilar un LED conectado a un pin GPIO y tierra.

Cargado por

Victor Mora Romo
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
56 vistas12 páginas

Pines GPIO en Raspberry Pi 4 y 3

El documento describe los pines GPIO en la Raspberry Pi. Los GPIO permiten configurar pines de entrada y salida para conectar dispositivos electrónicos. Las versiones más recientes de Raspberry Pi tienen 40 pines GPIO. Los pines se pueden usar para proyectos como hacer titilar un LED conectado a un pin GPIO y tierra.

Cargado por

Victor Mora Romo
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Diplomado Visión Artificial e

Inteligencia Artificial

Modulo II: Raspberry y Python

Pines GPIO en Raspberry Pi

M.C.I. Victor Manuel Mora Romo


Hay que tener en cuenta que dependiendo del modelo de la Raspberry Pi encontramos
una cantidad de pines diferentes, por ejemplo, en la versión 1 de Raspberry Pi se tienen 26
pines GPIO mientras que a partir de la versión 2 de Raspberry Pi el número de pines aumentó
a 40. Sin embargo la compatibilidad es total, puesto que los 26 primeros pines mantienen su
función original.

Primeramente hay que actualizar el sistema por si no llegara a leer el GPIO:

sudo apt update

sudo apt full-upgrade

¿Qué es GPIO?

GPIO son las siglas de General Purpose Input/Output, es decir, Entrada/Salida de propósito general. Lo
pueden tener diferentes productos electrónicos, como los propios chips o ciertas placas PCB como es el
caso de esta Raspberry Pi. Como su propio nombre indica, son pines que se pueden configurar para
realizar distintas funciones, de ahí que sean de propósito general y no para un uso específico.

Será el usuario en tiempo de ejecución el que pueda configurar estos pines GPIO para que hagan lo que
él quiere. Se puede hacer de diferentes formas, como con ciertos códigos o scripts desde la consola o
con el programa Python, que es una de las formas más sencillas y preferidas por la cantidad de
opciones que tienes a tu disposición.
De esta forma, la Raspberry Pi no solo dispone de una serie de puertos e interfaces para conectar varios
dispositivos estándar, sino que agrega estos pines GPIO para que puedas agregar otros dispositivos
electrónicos o proyectos makers que tú mismo hayas creado. De la misma forma que lo harías con
Arduino y sus pines E/S para el control.
Y no es exclusividad de Arduino o la Raspberry Pi, también lo tienen otras placas SBC similares y
productos embebidos.
Funciones de los GPIO
Y entre sus características más destacadas:
M.C.I. Victor Manuel Mora Romo
 Pueden ser configurados tanto como entrada como de salida. Tienen esa dualidad como les ocurre a los
de Arduino.
 Los pines GPIO también pueden ser activados y desactivados mediante código. Es decir, pueden ponerse
a 1 (alto nivel de voltaje) o a 0 (bajo nivel de voltaje).
 Por supuesto pueden leer datos binarios, como los unos y ceros, es decir, señal de voltaje o ausencia de
ella.
 Valores de salida de lectura y escritura.
 Los valores de entrada pueden ser configurados en algunos casos como eventos para que generen algún
tipo de acción sobre la placa o sistema. Algunos sistemas embebidos los usan como IRQ. Otro caso es
configurar que cuando uno o varios pines estén activos por ciertos sensores realice alguna acción…
 En cuanto al voltaje e intensidad, debes saber bien las capacidades máximas aceptables por la placa, en
este caso la Raspberry Pi 4 o la 3. No debes pasarlos para no dañarla.
Por cierto, cuando se agrupa un grupo de pines GPIO, como es el caso de la Raspberry Pi, se conoce al
conjunto como puerto GPIO.
Los pines GPIO de la Raspberry Pi

Esquema válido para la versión 4, 3, Zero

Las nuevas placas Raspberry Pi 4 y la versión 3 están dotadas con un gran número de pines GPIO. No
todas las versiones ofrecen la misma cantidad, ni están numerados de la misma forma, así que hay que
tener cuidado con esto para saber bien cómo debes realizar la conexión según el modelo y revisión que
tengas.
Pero lo que sí es más genérico es los tipos de GPIO que puedes encontrar en el puerto de las placas
Raspberry Pi. Y eso será lo primero que me gustaría dejar claro, ya que así conocerás los tipos de
pines con los que puedes contar para tus proyectos:

M.C.I. Victor Manuel Mora Romo


 Alimentación: estos pines sirven para poder conectar las líneas o cableado de alimentación para tus
proyectos electrónicos. Se corresponden a pines similares a los que tiene la placa Arduino, y que proveen
de voltajes de 5v y 3v3 (3.3v limitados a 50mA de carga). Además, también encontrarás los de tierra
(GND o Ground). Si no usas fuentes externas de alimentación como pilas, baterías, o adaptadores, estos
pines te pueden servir de gran ayuda para alimentar tu circuito.
 DNC (Do Not Connect): son pines que hay en algunas versiones y que no tienen función, pero que en las
nuevas placas sí que se les ha dado otro fin. Estos solos los encontrarás en modelos más primitivos de la
Pi. En las nuevas 3 y 4 estarán marcados como GND por lo general, pudiéndose integrar en el grupo
anterior.
 Pines configurables: son los GPIO normales, y se pueden programar mediante códigos como luego
explicaré para hacer lo que necesites.
 Pines especiales: son algunas conexiones que están destinados a conexiones o interfaces especiales
como UART, conexiones serie TXD y RXD, etc., como ocurre con Arduino.  Incluso vas a encontrar algunos
como SDA, SCL, MOSI, MISO, SCLK, CE0, CE1, etc. Entre ellos destacan:
o PWM, que pueden regular el ancho del pulso como ya vimos en un artículo previo. En la
Raspberry Pi 3 y 4 son los GPIO12, GPIO13, GPIO18 y GPIO19.
o SPI es otra interfaz de comunicación que también analicé en otro artículo. E el caso de las nuevas
placas de 40-pin, son los pines (con diferentes canales de comunicación como ves):
 SPI0: MOSI (GPIO10), MISO (GPIO9), SCLK (GPIO11), CE0 (GPIO8), CE1 (GPIO7)
 SPI1: MOSI (GPIO20); MISO (GPIO19); SCLK (GPIO21); CE0 (GPIO18); CE1 (GPIO17); CE2
(GPIO16)
o I2C es otra conexión que también he explicado en este blog. Este bus está compuesto por la
señal de datos (GPIO2) y el reloj (GPIO3). Además de EEPROM Data (GPIO0) y EEPROM Clock
(GPIO1).
o Serial, otra comunicación muy práctica con pines TX (GPIO14) y RX (GPIO15) como los que
puedes encontrar en la placa Arduino UNO.

Recuerda que los GPIO son la interfaz entre la Raspberry Pi y el mundo exterior, pero que tienen sus
limitaciones, especialmente eléctricas. Algo que debes tener muy en cuenta para no estropear la placa
es recordar que estos pines GPIO suelen ser unbuffered, es decir, sin buffer. Esto quiere decir que no
disponen de protección, por lo que debes vigilar las magnitudes de voltaje e intensidad aplicada para no
terminar con una placa inservible…

M.C.I. Victor Manuel Mora Romo


Diferencias de los GPIO entre versiones

No en todos los modelos son los mismos pines, aquí se puede ver las diferencias entre modelos y así
poder centrarme en los de la Raspberry Pi 4 y 3, que son las más nuevas y la que probablemente tengan
en su poder. Se diferencia entre (todas las de cada grupo comparten los mismos pines):
 Raspberry Pi 1 Model B Rev 1.0, con 26-pin ligeramente diferente al de la Rev2.
 Raspberry Pi 1 Model A y B Rev 2.0, ambos modelos con 26-pin.
 Rapsberry Pi Model A+, B+, 2B, 3B, 3B+, Zero y Zero W, y también los modelos de 4. Todos ellos con un
cabezal de 40-pin GPIO.

M.C.I. Victor Manuel Mora Romo


¿Qué puedo conectar en los GPIO?

No solo se podrá conectar dispositivos electrónicos como transistores, sensores de


humedad/temperatura, termistores, motores paso a paso, LEDs, etc. También se pueden conectar
componentes o módulos creados específicamente para la Raspberry Pi y que extienden las capacidades
de la placa más allá de lo que incluye de base.
Como los hats o sombreros y plates. Los hay de muchos tipos, desde los que sirven para controlar
motores con drivers, hasta otros para crear un cluster de cómputo, con panel de LEDs controlable, para
agregar capacidad de TV DVB, pantalla LCD, etc.
Estos hats van montados sobre la placa Raspberry Pi, coincidiendo con los GPIO necesarios para que
pueda funcionar. Por tanto, su montaje es bastante simple y rápido. Eso sí, hay que asegurar la versión
de placa compatible con cada hat, ya que el puerto GPIO es diferente.

Introducción al uso de GPIO en la Raspberry Pi

M.C.I. Victor Manuel Mora Romo


Fuente: Raspberry Pi

Para comenzar, en Raspbian, se puede abrir la consola y teclear el comando pinout, lo que va a


devolver es una imagen en el terminal con los pines GPIO disponibles en tu placa y para qué sirve cada

M.C.I. Victor Manuel Mora Romo


uno. Algo muy práctico para tenerlo siempre presente en el momento de trabajo para que no te
confundas.
Primer proyecto: hacer (blink )titilar un LED con los GPIO

La forma más básica de hacer una especie de «hello world» con los GPIO es usar un simple LED
conectado a los pines de la Raspberry Pi para que se pueda ver cómo funcionan. En este caso, se ha
conectado a GND y el otro al pin 17, aunque se puede elegir otro de los pines normales.
Nota de caracteres
Para usarlos en Linux es bastante sencillo, solo se debe presionar Ctrl+Shift y la tecla U
seguida del código ASCII pero en Hexadecimal, al comienzo con estos códigos se nos puede
complicar el uso porque estamos acostumbrados a la combinación de teclas Alt + (número
decimal) en Windows, pero todo es cuestión de costumbre, y pues teniendo las tablas a la
mano realmente se puede ahorrar tiempo valioso al momento de requerir símbolos
especiales.

A continuación, Les dejo la tabla ASCII:

M.C.I. Victor Manuel Mora Romo


Una vez conectados, se puede controlar desde Raspbian haciendo uso del terminal. En Linux, se usan
unos ficheros específicos como los que hay en el directorio /sys/class/gpio/. Por ejemplo, para crear un
fichero con la estructura necesaria para comenzar a trabajar:

echo 17 > /sys/class/gpio/export

Luego lo puedes configurar como una entrada (in) o como una salida (out) ese pin 17 elegido para
nuestro ejemplo. Puedes hacerlo muy fácilmente con:
echo out > /sys/class/gpio/gpio17/direction
En este caso como salida, ya que queremos enviar un pulso eléctrico al LED para encenderlo, pero si se
tratase de un sensor, etc., podrías usar in. Ahora, para encender (1) o apagar (0) el LED puedes usar:
echo 1 > /sys/class/gpio/gpio17/value

echo 0 > /sys/class/gpio/gpio17/value

M.C.I. Victor Manuel Mora Romo


Si quieres pasar a otro proyecto y borrar la entrada creada, puedes hacerlo de esta manera:
echo 17 > /sys/class/gpio/unexport

Programación en Python
En primer lugar, se importa la librería GPIO y time. Vamos a utilizar el pin situado en su posición
de la placa 7. La siguiente instrucción será la inicialización del pin, es decir, los pines pueden ser
utilizados como entradas o salidas. Por último, solamente nos quedará activar (True) o desactivar
(False) el pin seleccionado. Para ello, se va a situar el código dentro de un bucle infinito.

import [Link] as GPIO


import time

[Link]([Link])
[Link](11, [Link])

while True:
[Link](11, True)
[Link](1)
[Link](11, False)
[Link](1)

NOTA: se hace referencia al pin del gpio no del nombre del gpio.

M.C.I. Victor Manuel Mora Romo


Entradas digitales
El interruptor lo declaramos de tipo entrada y en la condición se puede observar que al pulsar
sobre el botón se encenderá el led situado en la posición 7 de nuestro pin GPIO y en caso contrario se
apagará.

import [Link] as GPIO


import time

[Link]([Link])
[Link](3, [Link])
[Link](7, [Link])

while True:
if [Link](3):
[Link](7, False)
else:
[Link](7, True)

M.C.I. Victor Manuel Mora Romo


M.C.I. Victor Manuel Mora Romo

Common questions

Con tecnología de IA

General-purpose GPIO pins are highly versatile and can be configured by the user for a variety of input and output tasks, such as toggling LEDs or reading sensors. They can be programmed to operate at digital high or low states, offering flexibility for virtually any general digital control or monitoring application . In contrast, pins dedicated to specific communication protocols like I2C and SPI have predefined roles, such as data and clock lines for synchronous data transfer. These pins are optimized for their specific protocols, often providing better efficiency and higher speed communications for data exchange between microcontrollers and peripheral devices compared to using general-purpose pins .

PWM (Pulse Width Modulation) pins are used to provide varying power outputs, which is useful for controlling devices like servo motors and dimming LEDs. Specific GPIO pins like GPIO12, GPIO13, GPIO18, and GPIO19 are designated for PWM on the Raspberry Pi 3 and 4, enabling precise control of devices requiring variable voltage levels . SPI (Serial Peripheral Interface) is another special function supported via GPIO pins, facilitating high-speed data transfer between microcontrollers and peripherals like sensors and SD cards using multiple data lines for improved efficiency over protocols like I2C .

When connecting external devices to GPIO pins, important considerations include understanding the voltage and current limits to ensure you do not exceed the maximum ratings of the pins, which is crucial to prevent damaging the Raspberry Pi. You should also account for the fact that GPIO pins are unbuffered and unprotected, which means they do not inherently regulate voltage and current, so external protection circuits may be necessary . Additionally, understanding the specific configuration for different device types, such as sensors or output devices, ensures proper functionality and safety .

Using GPIO pins for serial communication (UART) on Raspberry Pi allows for a straightforward, asynchronous data exchange with only two pins (TX and RX), making it less hardware-intensive than SPI or I2C. SPI, however, supports significantly higher data rates and is well-suited for high-speed synchronous communication, although it requires more pins for data and clock signals. I2C, while slower, allows multiple devices to be connected to the same two-pin bus, simplifying the circuit for complex systems .

Unbuffered GPIO pins on Raspberry Pi mean there is no internal circuitry focusing on protection or stabilization, making the pins more susceptible to damage from voltage spikes and static electricity. This design requires users to carefully manage input and output levels and implement external protection circuits for devices connected to these pins. While unbuffered design maximizes GPIO flexibility and performance without firmware interference, it increases risks and requires additional user diligence for safety, possibly impacting project reliability if not carefully managed .

To use GPIO pins to control an LED, you first import the necessary libraries, such as RPi.GPIO and time. You set up the GPIO mode to GPIO.BOARD and choose a pin to control output, e.g., pin 11. You then put the switching logic inside a loop, using GPIO.output to toggle the LED on (using True) and off (using False) with a time.sleep interval to create a blink effect. This demonstrates simple on-off control through software .

One of the key differences between Raspberry Pi version 1 and later versions, such as 2, 3, and 4, is the number of GPIO (General Purpose Input/Output) pins. The Raspberry Pi version 1 has 26 GPIO pins, whereas versions 2 and later have 40 GPIO pins. However, the first 26 pins are identical in functionality across these versions, ensuring compatibility. This increase allows for more potential connections and functionality in newer Raspberry Pi models .

Hats and plates are expansion modules that attach via GPIO pins, extending the capabilities of a Raspberry Pi. They allow for the simple addition of functionality such as motor control, display interfaces, or networking capabilities without the need for extensive circuitry redesigns. Hats and plates often come pre-configured for specific functions, reducing design complexity, and ensuring compatibility with different Raspberry Pi models as long as the GPIO layout matches .

To set a GPIO pin as an input to detect a button press using Python on a Raspberry Pi, first, import the libraries RPi.GPIO and time. Then set the GPIO mode with GPIO.setmode(GPIO.BOARD). Configure the pin connected to the button using GPIO.setup(pin_number, GPIO.IN). Within a loop, use GPIO.input(pin_number) to read the button state. If the function returns True, it means the button is pressed (in this example, the LED could be turned off as a response if connected).

To set up GPIO pins in Raspbian OS on a Raspberry Pi, you first update the system using the commands 'sudo apt update' and 'sudo apt full-upgrade' to ensure all software is current. By executing 'pinout' in the console, you can view a diagram showing the GPIO layout for your particular Raspberry Pi model, which helps prevent wiring errors. Using scripts or Python, you can set a chosen GPIO pin to act as either an input or an output, depending on the needs of your project .

También podría gustarte