Visión General
Una de las mejores cosas de Raspberry Pi es que tiene un conector GPIO al que se pueden conectar distintos tipos equipos, sensores y módulos externos.
El conector GPIO en realidad posee diferentes tipos de conexión, como por ejemplo:
- Pines GPIO reales (General Purpose Input Output) que se pueden utilizar para encender y apagar LED, leer estado de interruptores o botones, etc.
- Pines de interfaz I2C que permiten conectar módulos de hardware con sólo dos pines de control a través de direccionamiento.
- Interfaz SPI, un concepto similar a I2C pero con un estándar diferente de comunicación.
- Pines seriales Rx y Tx para la comunicación con periféricos seriales.
Además, algunos de los pines pueden ser utilizados con PWM (Pulse Width Modulation) para control de potencia y otro tipo de generación de pulsos para controlar servo motores llamados PPM (Pulse Position Modulation).
En este tutorial, no estás realmente construyendo nada, pero aprenderás cómo configurar la Raspberry Pi e instalar librerías que ya se encuentran listas para su uso y conectar algunos componentes electrónicos externos.
Este tutorial está escrito para el sistema operativo Raspbian y las instalaciones de origen Raspbian (como Occidentalis) solamente.
El Conector GPIO
El siguiente diagrama muestra los pines en el conector GPIO para una Raspberry Pi Versión 1 (que es lo que existía cuando este tutorial fue lanzado), la versión 2 tiene el pin 27 que reemplaza al pin 21 pero es prácticamente lo mismo.
Así como el suministro de energía (GND, 3.3V y 5V) todos los pines GPIO pueden utilizarse como entradas o salidas digitales. Los pines etiquetados SCL y SDA se pueden utilizar para I2C. Los pines etiquetados MOSI, MISO y SCKL se pueden utilizar para conectarse a dispositivos SPI de alta velocidad.
Todos los pines tienen niveles lógicos 3.3V por lo tanto, todos los niveles de voltaje de los pines GPIO en salida son 0-3.3V y las entradas no deben ser superiores a 3.3V. Si desea conectar una salida de 5V a una entrada Pi, utilice un conversor de nivel.
Una forma más sencilla de utilizar los pines GPIO de Raspberry Pi es utilizando un adaptador breakout Pi Cobbler.
Haz un chequeo extra de tus conexiones, asegurando que el indicador del pin 1 está en la esquina de la Pi. Si tienes un cable gris, es probable que el primer pin se señale con una raya roja, y si tienes un cable negro, tendrá una raya blanca. Ese pin GPIO 1 no debe estar al lado del conector de TV (RCA).
Este producto utiliza un cable plano para conectar el conector GPIO al protoboard, donde puedes agregar tus propios componentes.
Código Pi Adafruit
Para hacer la vida más fácil a aquellos que deseen experimentar conectando componentes electrónicos a su Pi, Adafruit ha producido una extensa y muy útil colección de códigos. Esta colección de códigos incluye simples librerías de Python, las cuales están pensadas para un gran número de módulos, incluyendo pantallas, sensores y controladores PWM etc.
Para extraer este código, es necesario utilizar un software llamado ‘Git’. Este viene preinstalado en Occidentalis, pero en Raspbian debes instalarlo mediante la introducción de los siguientes comandos en la Terminal LX.
Usted encontrará el icono de LX terminal en el escritorio.
Antes de que vayamos más lejos, emita el siguiente comando en LXTerminal. Esto asegurará que tu paquete pueda encontrarse y que obtengas la versión más reciente del software. No importa en qué directorio te encuentres.
sudo apt-get update
La actualización puede tomar tiempo, especialmente si es la primera vez que la estás ejecutando en tu RPi. Eventualmente debería darte otro símbolo ‘$’ y estará listo para que escribas el siguiente comando que es:
sudo apt-get install git
Una vez que git está instalado (si no está ya allí) puedes “revisar” el repositorio Adafruit Pi Python en tu Pi usando los siguientes comandos:
git clone http://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code.git
cd Adafruit-Raspberry-Pi-Python-Code
ls
Si existe algún problema durante cualquiera de los pasos anteriores, aparecerá un mensaje de error. Las razones más comunes por las que algo debe fallar en la instalación son:
- Un problema con tus conexiones a Internet
- Un comando mal ingresado. Recuerda que todo en Linux es sensible a mayúsculas. Lo mejor es abrir esta página en tu Raspberry Pi para que sólo puedas copiar y pegar los comandos.
Configuración de pines GPIO
Los pines GPIO se pueden usar tanto como salidas o entradas digitales. Como salidas digitales, puedes escribir un estado en un pin específico que puede ser HIGH o LOW. Si el estado del pin programado es HIGH, se establece una salida de 3.3V. . Si el estado del pin es LOW, se establece un voltaje de salida 0V. Para utilizar un LED con uno de estos pines, necesitas una resistencia de 1kohm en serie con el LED ya que los pines GPIO sólo pueden administrar una pequeña cantidad de energía.
Si utilizas un pin como entrada digital, puedes conectar interruptores y sensores simples y luego ser capaz de comprobar si está abierto o cerrado (es decir, activado o no)
Algunos proyectos Adafruit que utilizan simplemente GPIO:
- http://learn.adafruit.com/raspberry-pi-e-mail-notifier-using-leds
- http://learn.adafruit.com/playing-sounds-and-using-buttons-with-raspberry-pi
- http://learn.adafruit.com/basic-resistor-sensor-reading-on-raspberry-pi
Para programar los puertos GPIO en Python, es necesario instalar una librería para Python 2 llamada Rpi.GPIO. Esta librería de Python es simple de usar y nos permitirá controlar los pines GPIO.
El proceso de instalación de esta librería es el mismo si está utilizando Raspbian u Occidentalis. De hecho, algunas versiones de Raspbian incluyen esta librería, pero estas instrucciones también tendrán el efecto en la actualización a la última versión, la que vale la pena realizar.
sudo apt-get update
Para instalar RPi.GPIO, primero debes instalar el kit de herramientas de desarrollo de Python que RPi.GPIO requiere.
Para ello introduce el siguiente comando en LXTerminal:
sudo apt-get install python-dev
Entonces, para instalar Rpi.GPIO tipea:
sudo apt-get install python-rpi.gpio
Probablemente se te solicitará que confirmes mediante la introducción del caracter ‘Y’.
Eso es todo al respecto. Ya estás listo para probar algunos de los proyectos que he mencionado en la parte superior de esta sección.
Configuración I2C
I2C es un estándar de comunicación muy utilizado, diseñado para permitir que un chip pueda conversar con otro. Así que, ya que la Raspberry Pi puede utilizar I2C podemos conectarla a una variedad de chips y módulos capaces de soportar I2C.
Éstos son algunos de los proyectos Adafruit que hacen uso de dispositivos y módulos I2C:
- http://learn.adafruit.com/mcp230xx-gpio-expander-on-the-raspberry-pi
- http://learn.adafruit.com/adafruit-16×2-character-lcd-plus-keypad-for-raspberry-pi
- http://learn.adafruit.com/adding-a-real-time-clock-to-raspberry-pi
- http://learn.adafruit.com/matrix-7-segment-led-backpack-with-the-raspberry-pi
- http://learn.adafruit.com/mcp4725-12-bit-dac-with-raspberry-pi
- http://learn.adafruit.com/adafruit-16-channel-servo-driver-with-raspberry-pi
- http://learn.adafruit.com/using-the-bmp085-with-raspberry-pi
El bus I2C permite que varios dispositivos se conecten a tu Raspberry Pi, cada uno con una dirección única, que puede a menudo configurarse mediante jumpers del equipo. Es muy útil ver qué dispositivos están conectados a tu RPi como una forma de asegurarse de que todo está funcionando.
Para ello, hay que ejecutar los siguientes comandos en la terminal para instalar la utilidad i2c-tools.
sudo apt-get install python-smbus
sudo apt-get install i2c-tools
Instalación de Kernel Support (con Raspi-Config)
Ejecuta sudo Raspi-config y sigue las instrucciones para instalar el soporte i2c para el núcleo ARM y kernel linux
¡A continuación reinicia tu RPi!
¡También te recomendamos seguir los siguientes pasos, para comprobar manualmente que todo fue introducido por Raspi-config!
Instalación de Kernel Support (manualmente)
Si estás utilizando Occidentalis, entonces tu RPi está lista para utilizar I2C en la medida de que se active el hardware. Sin embargo, si estás usando Raspbian, tendrás que abrir LXTerminal o un terminal SSH y escribir el siguiente comando:
sudo nano /etc/modules
También debes añadir estas dos líneas al final del archivo:
i2c-bcm2708
i2c-dev
A continuación, guarda el archivo con Control-X y confirma su nombre con el carácter Y <return>.
Dependiendo de la distribución usada, es posible que también haya un archivo llamado /etc/modprobe.d/raspi-blacklist.conf
Si no tienes este archivo entonces no hay nada que hacer, sin embargo, si tienes este archivo, necesitas editar y comentar las líneas a continuación:
blacklist spi-bcm2708
blacklist i2c-bcm2708
.. Poniendo un # delante de ellos.
Abre un editor de texto para modificar en el archivo lo siguiente:
sudo nano /etc/modprobe.d/raspi-blacklist.conf
.. Luego edita el archivo para que aparezca como la siguiente imagen, guarda y sal del archivo usando CTRL-X y Y.
Si estás ejecutando una Raspberry Pi reciente (3.18 kernel o superior) también deberás actualizar el archivo /boot/config.txt. Editarlo con sudo nano /boot/config.txt y añade el texto
dtparam = i2c1 = en
dtparam = i2c_arm = en
¡Al final ten en cuenta que el “1” en “i2c1” es un número 1, no una letra L!
Una vez que todo esto fue hecho, ¡reinicia tu tarjeta!
Prueba I2C
Ahora al iniciar sesión, puedes escribir el siguiente comando para ver todos los dispositivos conectados:
sudo i2cdetect -y 1
Esto demuestra que dos direcciones I2C están en uso – 0x40 y 0x70.
Ten en cuenta que si estás utilizando una de las primeras Raspberry Pi (Raspberry Pi Modelo B), entonces tendrás que cambiar el comando a:
sudo i2cdetect -y 0
Los diseñadores de Raspberry Pi intercambiaron los puertos I2C entre versiones de tarjeta. Sólo recuerda: la RPi de 512Mb usa el puerto i2c 1, la RPi de 256Mb utiliza el puerto i2c 0!
Configuración de SPI
Comienza por la eliminación de cualquier lista negra para el módulo SPI ejecutando:
sudo nano /etc/modprobe.d/raspi-blacklist.conf
A continuación busca la línea:
blacklist spi-bcm2708
Finalmente, pon un # delante, tal como se muestra en la siguiente imagen:
Ahora ingresa control-X, posteriormente ingresa el carácter Y y dale a Return para guardar el archivo.
Reinicia con el comando sudo reboot
La próxima vez que ingreses, podrás ver los dispositivos con:
ls -l /dev/spidev*
Con esto ya terminado, deberías ver dos ‘dispositivos’, uno para cada bus SPI.