Raspberry PI y los pines GPIO: ¿Que son y que usos prácticos les podemos dar?

Los pines GPIO (General Purpose Input Output) de la Raspberry PI nos permiten trabajar con electrónica de una forma fácil como lo podríamos hacer también con Arduino.

P8120164

Primeros pasos con el GPIO.

Son 26 pines organizados en dos filas de 13, y cada uno de los pines o bien tiene su función específica o es de propósito general, yo voy a mostrar la distribución de los pines de la Raspberry PI Rev 2.0, ya que es la que tengo.

Como podemos ver en la siguiente imagen comparativa de las dos revisiones, en la segunda revisión de la PI disponemos de dos pines +5V, cinco de GROUND (toma de tierra), dos de +3,3V, ocho pines GPIO de propósito general, cinco SP10, dos UART, y dos pines I2C1.

Comparando los diferentes pinouts de las dos versiones de RPI.

Comparando los diferentes pinout de las dos revisiones de RPI.

En las nuevas Raspberry PI A+ y B+ disponemos de 14 pines GPIO más, ID_SD, ID_SC, tres pins GND, y nueve GPIO de propósito general; lo que nos permitirá desarrollar proyectos mas grandes.

Pinout de Raspberry PI A+ y B+, idéntico al de la Rev. 2 pero con mas GPIO.

Pinout de Raspberry PI A+ y B+, idéntico al de la Rev. 2 pero con mas GPIO.

Con ellos podemos controlar circuitos electrónicos, por ejemplo para mover motores o controlar el encendido y apagado de relés que actuarán como interruptores para circuitos de 220V.

Estos pines los podemos configurar y controlar directamente desde el interprete de ordenes Bash, o desde lenguajes de programación como C o Python, gracias a las librerías GPIO que se han implementado para ellos.

gpioprogramarEn mi caso he escogido Python, ya que a pesar de no haber programado nunca en este lenguaje, lo que me va a permitir aprenderlo sobre la marcha junto a vosotros, es uno de los recomendados para iniciarse en la programación.

Hello World en Python.

Hello World en Python.

Además me resulta muy interesante la posibilidad de ejecutar los Scripts en Python que escribamos mediante un botón HTML, que al ser presionado ejecuta una función en PHP, que a su vez llama a ejecutarse al Script en Python

gpioprogramar0pngEsto nos va a permitir manejar nuestros proyectos desde el navegador de cualquier dispositivo mediante una aplicación Web, pudiendo así llegar a implementar soluciones domóticas muy económicas, por ejemplo.

Aplicación Web en HTML + PHP + Python para manejar unos Leds a través del GPIO.

Aplicación Web en HTML + PHP + Python para manejar unos Leds a través del GPIO.

Ahora que ya sabemos que son los pines GPIO y para que sirven, en la siguiente entrega veremos una ligera introducción a la electrónica básica para finalmente montar un circuito como el del siguiente esquema, para encender un diodo Led y comprobar que todo está listo y funciona correctamente, a lo que yo he llamado Hello World versión GPIO.

Circuito necesario para controlar el encendido de un diodo LED.

Circuito necesario para controlar el encendido/apagado de un diodo LED.

Si te ha gustado puedes seguirme en Twitter, Facebook, Google+, Linkedin, o compartirlo con los botones ubicados debajo de esta publicación, si tienes cualquier pregunta o sugerencia no dudes en comentar.

Ayudanos a llegar a más lectores Share on LinkedIn
Linkedin
Share on Facebook
Facebook
Tweet about this on Twitter
Twitter
Share on Google+
Google+
Email this to someone
email

10 thoughts on “Raspberry PI y los pines GPIO: ¿Que son y que usos prácticos les podemos dar?

  1. Hola

    En la primera versión de la RPi creo que sólo tiene un pin para +5v, otro para +3.3V y otro para GND. Y los que sobran quedan como no utilizados.

    También creo que los pines GPIO trabajan a 3.3V.

    Si lo puedes confirmar…

    • Hola Juan, muchas gracias por tu comentario.

      A que versión te refieres? Yo he añadido los diagramas de pinout a partir de los modelos A y B rev 1.0; como explico en este artículo y en muchos otros tutoriales, todos los pines GPIO que pueden actuar como entradas o salidas trabajan a 3.3V y si les añades mas voltaje puedes quemar tu Raspberry.

      Luego están los de alimentación que ofrecen 3.3V, 5V y GND; y debes tener en cuenta que hay algunos pines GPIO con funciones específicas como buses SPI, I2C…

      Espero haber despejado tus dudas, hasta pronto.

  2. Hola y gracias por tu post, mi pregunta es la siguiente…la raspberry permite el mismo control de sensores que un ardruino por ejemplo, el sensor de luz, el sensor ultrasonico, el sensor de temperatura y humedad, el sensor de presencia o que sensores pueden funcionar con rasberry?

    • Hola Andrés,

      Con Raspberry PI puedes utilizar todo tipo de sensores digitales que trabajen a 3,3V.

      Con Arduino puedes utilizar todo tipo de sensores digitales y analógicos que trabajen a 5V.

      La diferencia básicamente es la precisión de los sensores, pues los analógicos son mas precisos, ya que el voltaje siempre se podría adaptar.

  3. hola, tengo la raspberry pi b+ y quiero un motor pero no me funciona el codigo del gpio con la b+ y con la b si, usando los mismos pines

  4. La disposición de los pines GPIO en ambas versiones no es la misma, por lo que no funcionará si no conectas cada cable en el GPIO correspondiente del modelo B+.

    Puedes revisar la numeración en los esquemas de este artículo, y una vez lo adaptes para el modelo B+ también funcionará con Raspberry PI 2 ya que se ha mantenido la posición.

    • Hola Alex, gracias por tu comentario.

      Para posibles usos reales de este sistema o similares, es evidente que debería securizarse al máximo posible.

      Lo mínimo sería configurar en Apache un password para acceder a la página web, securizar todos los servicios de cada máquina que componga el sistema, con medidas como firewall basado en IPTables, un IDS/NIDS, Port Knocking, Fail2Ban… tunelizar el flujo de streaming para que no vaya en claro, e infinidad de medidas que están a tu disposición.

      La seguridad total no existe, pero cuanto más difícil lo ponemos mas posibilidades tenemos de no ser el blanco escogido.

Leave a Reply

Your email address will not be published. Required fields are marked *

*