Raspberry Pi 3 Pins, Tutorial para conocerlos a todos
Qué son y para que sirven todos los Pines de las Raspberry Pi 3
Los tableros de Raspberry Pi 3 (todos los modelos: 3A+, 3B, 3B+) tienen un cabezal GPIO con 40 pines. Esos pines tienen un nuevo conjunto de características en la Raspberry Pi 3.
Le permiten usar fácilmente las características del hardware y la comunicación, directamente desde un ordenador, el microprocesador Raspberry Pi. Esto acerca mucho más a la Raspberry Pi 3 a las aplicaciones de hardware, haciéndolo perfecta para ser incorporado en una aplicación o producto de hardware: un robot, una aplicación de retro-juegos, etc.
En esta completa guía de pines del Raspberry Pi 3 desglosaremos todos los pines de la cabecera del GPIO, y aprenderás lo que puedes y no puedes hacer con ellos.
A lo largo del tutorial veremos algunas comparaciones con los pines de las tablas de Arduino. Descubrirás que los pines pueden ser bastante similares para algunas funcionalidades. Al final os daremos más detalles sobre las diferencias entre los pins de Arduino y los de Raspberry Pi.
Análisis de todos los PINS de la Raspberry Pi 3
Aquí hay un cuadro completo con todos los GPIOs y su función principal.
Ahora, vamos a ver cada pin o grupo de pines, y ver lo que pueden hacer.
Antes de conectar cualquier cosa a un a Raspberry Pi 3, tienes que saber que puedes dañar fácilmente el tablero si haces algo mal.
Si conectas un pin de tierra (GND) a un pin de 3.3V directamente, podrías destruir tu placa Raspberry Pi en el momento en que esos pines se conecten juntos.
Así que, ten mucho cuidado cuando conectes algo o cuando crees un circuito de prueba. Si tienes alguna duda, comprueba dos o tres veces, y pide ayuda a alguien antes de quemar tu placa.
Pero si sigues algunas reglas básicas y el sentido común, no tendrás nada de qué preocuparte.
Pines de toma de tierra
La toma de tierra es muy útil para hacer una referencia común entre todos los componentes de tu circuito. Recuerda siempre conectar todos los componentes a la tierra.
Si conectas 2 circuitos juntos, agrega un cable entre ambas tierras para hacerlo común. Si agregas un nuevo sensor/actuador a un circuito existente, conecta la tierra del componente a la tierra del circuito.
Eso es muy importante. Sin eso, puedes quemar algunas partes del circuito, puedes tener componentes que no funcionan correctamente, dan valores erróneos, etc.
8 de los 40 GPIOs están conectados a la toma tierra. Puedes encontrarlos con las 3 letras GND.
Una advertencia adicional: ¡nunca conectes la tierra directamente a un pin de la fuente de alimentación (3.3V o 5V)! Esto crea un cortocircuito y puede quemar definitivamente tu placa Raspberry Pi 3.
Pines de alimentación
Puedes encontrar 2 pines que traen 3.3V y 2 pines que traen 5V.
Esos pines pueden ser usados para alimentar componentes como sensores o pequeños actuadores. Ten en cuenta que no son lo suficientemente potentes para accionar motores como servo o motores paso a paso. Para eso necesitarás una fuente de energía externa.
Los pines de energía se usan como una fuente para alimentar componentes externos, no para alimentar la Raspberry Pi en sí mismo desde una fuente externa. (Bueno, hay una forma de alimentar la Raspberry desde el cabezal del GPIO, pero tienes una alta probabilidad de quemarlo, así que sólo usa el puerto micro-USB)
Y otra palabra de precaución: como se dijo anteriormente en la sección de pines de tierra, no conectes nunca un pin de alimentación directamente a uno de los GND de la Raspberry Pi 3.
Los pines reservados
Los pines 27 y 28 son pines reservados. Normalmente se usan para la comunicación I2C con una EEPROM.
Si empiezas con los 3 pines de Raspberry Pi, no conectes algo a esos pines. Hay muchos otros pines disponibles para que los uses.
Bueno, son 14 ranuras ya ocupadas para GND, fuente de alimentación y pines reservados. Ahora veamos cómo se usan las otras 26 GPIOs para la comunicación.
Raspberry Pi 3 GPIOs
GPIO significa Entrada/Salida de Propósito General. Básicamente es una clavija que se puede usar para escribir datos en componentes externos (salida), o leer datos de componentes externos (entrada).
Si usas tu placa Raspberry Pi con algunos componentes de hardware, el encabezado GPIO será bastante útil.
Los GPIOs le permitirán leer algunos sensores básicos (ej: infrarrojos), controlar algunos actuadores (los que funcionan en modo ON/OFF), y comunicarse con otras placas de hardware, como la Raspberry Pi, Arduino, Beaglebone, etc.
Ten en cuenta que los GPIOs son pines digitales. Los GPIO de una Raspberry Pi 3 son bastante similares a lo que llamamos «pines digitales» en un tablero de Arduino.
Primero tienes que elegir si quieres usarlos como entrada o como salida. Si configuras un GPIO como entrada, podrás leer un valor de él: ALTO o BAJO (1 o 0). Y si configuras un GPIO como salida, podrás escribir un valor en él, también HIGH o LOW.
Un pin digital sólo tiene dos estados. BAJO normalmente significa 0V, y ALTO significa 3.3V (con algunas tolerancias). Es muy simple, es como un interruptor que se enciende y se apaga.
El voltaje de los GPIOs
Todos los GPIOs funcionan a 3.3V. Es importante que lo sepas en caso de que necesites conectar un componente con un voltaje diferente.
A veces, encontrarás sensores que se alimentan con 5V, pero todos los pines de comunicación funcionan con 3.3V. En este caso, no hay problema: puedes usar el pin de alimentación de 5V de la Raspberry para alimentar el componente, y luego usar cualquier GPIO de 3.3V para la comunicación. Si no mezclas la señal de 5V con la de 3.3V, todo debería estar bien.
Ahora, si necesitas hacer que los GPIOs de tu Raspberry Pi se comuniquen con los pines de 5V directamente (ej: Arduino Uno o Mega), necesitarás usar un cambiador de nivel de 3.3V a 5V. Puedes comprar uno o construirlo tú mismo.
Si utilizas placas Arduino de 3.3V como Due, Zero o M0, no necesitarás añadir un shifter de nivel de 3.3V a 5V, y puedes conectar los pines de Arduino directamente a los GPIOs de la Raspberry Pi 3.
Cómo usar los GPIOs
Para usar un GPIO, primero necesitas saber su número.
Como puedes ver en la tabla de pines de más arriba, los números de pin y los números GPIO son diferentes. Los números pin están en gris, y los números GPIO en naranja. Dependiendo de la biblioteca que uses para manipular los GPIOs, tendrás que usar el número del pin o el número GPIO. Por ejemplo, el pin 29 corresponde a GPIO 5. En cualquier momento que tengas una duda, sólo revisa el pin de nuevo y lo sabrás.
Así que, para usar cualquiera de esos GPIO, primero tienes que configurarlo como entrada o salida, y después puedes escribir en él, o leer de él.
Ahora, os preguntaréis: ¿cómo podéis configurar y usar las GPIOs de vuestro código? ¿Necesitas sumergirte en cosas complejas de hardware para hacer eso?
Hay al menos 2 librerías que te permitirán usar fácilmente esos pines. Para Python, puedes usar RPi.GPIO, y para Cpp puedes usar WiringPi.
Esas librerías fueron desarrolladas para que puedas usar los pines de Raspberry Pi como si usaras pines de Arduino, lo que significa que todas las cosas complejas están ocultas y puedes usarlas con solo unas pocas líneas de código.
Por ejemplo, para establecer el GPIO 17 (pin 11) como salida/alto puedes usar el siguiente código:
// With WiringPi (Cpp) pinMode (17, OUTPUT); digitalWrite(17, HIGH);
// With WiringPi (Cpp) pinMode (17, OUTPUT); digitalWrite(17, HIGH);
Para hacer que 2 placas se comuniquen entre sí, es bastante simple: configurarás una GPIO como entrada en un lado, y como salida en el otro. Entonces podrás usar más GPIOs para transferir más piezas de información.
Los protocolos de comunicación a través de los pines de la Raspberry Pi 3
Puedes usar algunos protocolos de comunicación de hardware directamente con los GPIOs de Raspberry Pi 3. Esos protocolos de comunicación son de hecho los mismos que puedes usar nativamente en muchas placas Arduino.
Con esos protocolos podrás transferir mucha más información que con un montón de GPIOs configuradas como pines digitales.
En los esquemas de pines de Raspberry Pi 3, puedes ver una columna para funciones alternativas. Bueno, los protocolos de comunicación están todos ahí.
De hecho, decir que un GPIO es un pin digital es una simplificación demasiado exagerada. Es mucho más que eso. Por cada GPIO tienes al menos una función alternativa, y a veces muchas más.
No necesitas saber todas las funciones alternativas para empezar y desarrollar aplicaciones geniales. Sin embargo, si te interesa, puedes echar un vistazo a la página 102 de la hoja de datos de bmc2835 (esta es la hoja de datos de todo el encabezado de GPIO), donde verás una tabla completa con todas las funciones alternativas para todos los GPIOs.
UART
La UART es un protocolo de comunicación multimodal. Este protocolo es bastante fácil de usar y muy conveniente para la comunicación entre varios tableros: de Raspberry Pi a Raspberry Pi, o de Raspberry Pi a Arduino, etc.
Para usar la UART se necesitan 3 pines:
- GND que se conectará a la GND global de tu circuito.
- RX para la recepción. Conectarás este pin al pin TX del otro componente.
- TX para Transmisión. Conectarás esta clavija a la RX del otro componente.
Si el componente con el que te estás comunicando no está ya alimentado, también tendrás que usar una clavija de alimentación (3.3V o 5V) para encender ese componente.
Usando un convertidor de UART a USB, puedes comunicarte entre tu portátil y Raspberry Pi con UART.
Ahora, para usar UART en tu código, puedes usar la librería Serial en Python, y WiringPi en Cpp.
I2C
I2C es un protocolo de bus maestro-esclavo (bueno, puede tener múltiples maestros pero lo usarás principalmente con un maestro y múltiples esclavos). El uso más común de I2C es leer los datos de los sensores y activar algunos componentes.
El maestro es la Raspberry Pi, y los esclavos están todos conectados al mismo bus. Cada esclavo tiene una identificación única, así que la Raspberry Pi sabe con qué componente debe hablar.
Para usar I2C necesitarás 3 pines:
- SCL: reloj del I2C. Conecta todos los esclavos SCL al bus SCL.
- SDA: datos intercambiados. Conecta todos los esclavos SDA al bus SDA.
Y como la mayor parte del tiempo necesitarás encender el componente, también necesitarás una clavija de alimentación (3.3V o 5V), conectada a la clavija Vcc del componente. Asegúrate de saber qué voltaje es aceptado por el componente antes de enchufar nada. Pero no te preocupes demasiado: normalmente, los componentes de afición aceptan 3,3V y/o 5V.
Ten en cuenta que los pines SDA y SCL de la Raspberry Pi son funciones alternativas para el GPIO 2 y 3. Cuando se utiliza una biblioteca (Python, Cpp, etc) para I2C, esos dos GPIOs se configurarán para que puedan utilizar su función alternativa.
Algunas de las mejores y más fáciles de usar librerías para I2C son SMBus para Python y WiringPi para Cpp.
SPI
El SPI es otro protocolo de comunicación de hardware. Es un protocolo de bus maestro-esclavo. Requiere más cables que el I2C, pero puede ser configurado para funcionar más rápido.
Entonces, ¿cuándo usar I2C vs SPI en tu la Raspberry Pi 3? Bueno, la respuesta es bastante simple. A veces encontrarás un sensor que sólo es compatible con I2C o SPI. Y a veces, sólo querrás tener un equilibrio entre esos protocolos, así que, por ejemplo, elegirás usar I2C si ya tienes muchos componentes usando el SPI. A medida que progreses, empezarás a conocer mejor las diferencias, y podrás elegir mejor entre esos dos protocolos. Pero por ahora, mantengamos las cosas fáciles.
Como puedes ver, obtienes 2 SPIs por defecto: SPI0 y SPI1. Significa que puedes usar la Raspberry Pi como maestro de SPI en dos buses SPI diferentes al mismo tiempo.
Y, como en el caso de I2C, SPI utiliza las funciones alternativas de los GPIOs.
Para usar SPI necesitarás 5 pines:
- GND: Asegúrate de conectar todos los GND de todos tus componentes esclavos y los de la Raspberry Pi juntos.
- SCLK: reloj del SPI. Conecta todos los pines SCLK juntos.
- MOSI: significa Master Out Slave In. Este es el pin para enviar los datos del maestro al esclavo.
- MISO: significa Master In Slave Out. Este es el pin para recibir datos de un esclavo al maestro.
- CS: significa Chip Select. Presta atención aquí: necesitarás un CS por cada esclavo en tu circuito. Por defecto tienes dos pines CS (CS0 – GPIO 8 y CS1 – GPIO 7). Puedes configurar más pines CS de los otros GPIO disponibles.
En tu código, puedes usar la librería spidev para Python, y WiringPi para Cpp.
La diferencia entre los pines de Raspberry Pi 3 y los pines de Arduino
A menudo comparamos los pines de la Raspberry Pi 3 con los pines de las tablas de Arduino. ¡Hasta el punto de que muchas bibliotecas usan el mismo nombre de función para activar esos pines! Por ejemplo, WiringPi usa el void digitalWrite(int pin, int value); para establecer el estado de un GPIO, que es exactamente la misma función en Arduino para establecer el estado de un pin digital. Pero no es exactamente lo mismo.
En primer lugar, Raspberry Pi tiene un microprocesador, a menudo ejecutando un sistema Linux (por ejemplo Raspbian), mientras que Arduino tiene un microcontrolador. Esto es una gran diferencia, especialmente cuando se consideran las limitaciones del tiempo real.
Además, y eso es algo que no se puede ver en la placa directamente, muchas funcionalidades de hardware de Arduino no están presentes en una placa Raspberry Pi.
No tienes pines analógicos en una placa Raspberry Pi. Si quieres usar un sensor analógico, tendrás que usar un ADC (Convertidor Analógico a Digital) externo, y tal vez obtener el valor usando el protocolo I2C o SPI.
Además, no hay PWM nativo en la Raspberry Pi. Los PWM son bastante útiles para controlar componentes con un comando no binario. Puedes falsificar el PWM desde el software (ej. con WiringPi), pero está claro que no es recomendable ya que requerirá mucha CPU y no será realmente rápido.
No haremos la lista completa aquí, pero ya ves la idea. Arduino está mucho más cerca del hardware que Raspberry Pi, y por lo tanto hay muchas funcionalidades de hardware nativo que no puedes conseguir en una placa Raspberry Pi.
Así que, antes de elegir entre esos dos tipos de placas para tu proyecto, asegúrate de que sabes lo que necesitas: ¿más potencia de cálculo, la necesidad de usar lenguajes de alto nivel (Raspberry Pi), o algo más cercano al hardware, con recursos limitados (Arduino)?
Conclusión acerca de los pines de la Raspberry Pi ·
Bueno, hay muchas cosas que puedes hacer con los pines de la Raspberry Pi 3.
Lo repetire,ps aquí: nunca se puede ser demasiado cauteloso al manipular los pines. Un error puede destruir tu tabla en menos de un segundo. Pero si prestas atención y compruebas todo dos veces, no hay razón para que quemes nada.
Ahora, si te sientes perdido con tanta información y no sabes por dónde empezar, aquí tienes una lista de pasos que puedes seguir a partir de aquí:
- Busca algunos ejemplos simples y hazlos, como encender un LED, leer el valor de un botón, etc. Para eso necesitarás crear un pequeño circuito en una placa de circuitos, y usarás los pines con su función principal (GPIO).
- Una vez que estés familiarizado con el funcionamiento de los circuitos básicos (GND, Vcc y pines de comunicación), intenta conseguir un sensor más complejo, por ejemplo un acelerómetro I2C, para que puedas medir si tu placa está en una superficie plana o no.
- Después de que sepas cómo comunicarte con un sensor, trata de comunicarte entre tu placa Raspberry Pi y otra placa Raspberry Pi/Arduino/Ordenador, usando los 3 protocolos: UART, I2C, SPI. Aprenderás mucho haciendo eso.
Y entonces, ya no habrá ningún secreto. Búscate un proyecto personal, y aprenderás más cosas en su desarrollo.
Debe estar conectado para enviar un comentario.