Académique Documents
Professionnel Documents
Culture Documents
3
Tema:
Introduccin a GPIO
I
I
OBJETIVO:
I (Entrada/Salida) de proposito general que presentan los
Aprender y operar el sistema de E/S
GPIO (General Purpose Input/Ouput) en la Raspberry Pi II.
OBJETIVOS ESPECIFICOS:
1. Aprender o conocer los diferentes pines que se presentan en la GPIO de la raspberry.
2. Conocer los diferentes programas y medios por el cual se puede lograr una conexion
con la raspberry pi.
3. Identificar los elementos necesarios para poder realizar una practica con la raspberry.
REQUISITOS:
Conocer los conceptos generales de programacin bsica.
EQUIPOS Y HERRAMIENTAS
1.- Computador con python.
2.-Raspberry Pi II y accesorios
INTRODUCCIN
Una de las caractersticas de gran alcance de la Frambuesa Pi es la fila de GPIO (propsito
general de entrada / salida) pasadores a lo largo del borde superior del tablero. Estos pines
estn incluidos en todos los modelos de Raspberry Pi, para que puedas realizar proyectos
interesantes como lo haras con Arduino.
Estos pines son una interfaz fsica entre el Pi y el mundo exterior. Al nivel ms simple, se puede
pensar en ellos como interruptores que se pueden activar o desactivar (entrada) o que el Pi se
puede encender o apagar (salida). De los 40 pines, 26 son pines GPIO y los otros son elctricas
o de tierra pasadores (ms dos pasadores de EEPROM de ID que no se debe jugar a menos que
sepa su materia!)
Todos los pines son de tipo unbuffered, es decir, no disponen de buffers de proteccin, as que
debers tener cuidado con las magnitudes (voltajes, intensidad,) cuando conectes
componentes a ellos para no daar la placa.
Al igual que Arduino emplea su entorno Arduino IDE para crear sketchs o cdigos fuente para programar los
proyectos, la Raspberry Pi permite tambin programar sus GPIO, pero con mayor flexibilidad. Se puede realizar
desde tu distribucin utilizando multitud de herramientas con diversos lenguajes de programacin (Python, Java,
C,), o desde la consola utilizando sencillos scripts y comandos.
Por lo general, la Raspberry Pi utiliza distribuciones Linux. Como buen UNIX, el sistema operativo tratar a todos
los elementos, incluido el hardware, como un fichero.
Una de las mejores maneras de crear programas en lenguaje de programacin C es utilizando la biblioteca wiringPI
(si tu distro no la tiene instalada, lo primero que debes hacer es descargarla e instalarla, al igual que el compilador
gcc u otro que prefieras). Yo utilizar gcc y la librera wiringPI. Para crear nuestro cdigo fuente debemos enlazar
la biblioteca.
Si no los tienes instalados, instala GCC:
1
1
2
3
4
5
6
7
cd wiringPi
git pull origin
cd wiringPi
./build
Si por ejemplo queremos seguir con nuestro ejemplo de LED que titila, y lo denominamos LED.c. En un editor de
texto que prefieras, como por ejemplo gedit, puedes escribir el cdigo fuente y luego guardarlo con el nombre que
hemos elegido. El contenido de nuestro programa en C contendr las siguientes lneas:
/*Cdigo fuente para hacer titilar un LED desde los GPIO*/
#include <stdio.h>
#include <wiringPi.h>
int main (void)
{
printf (Titilando LED\N);
if (wiringPiSetup () == -1)
return 1;
pinMode (0, OUTPUT); //0 es el correspondiente del chip al pin 17
for (;;)
{
digitalWrite (0, 1); //Poner en ON o encenderlo
delay (1300); //Retraso de 1.3 segundos
digitalWrite (0, 0); //Poner en Off o apagar
delay (1300); //Retraso para volver a encender...
}
return 0;
}
Para compilarlo, desde el directorio donde se encuentra el cdigo fuente guardado, podemos teclear lo siguiente:
1
Si te has decidido por la librera pigpio, utiliza -lpigpio. Y para ejecutar el programa que hemos compilado, se
har de forma similar al script. Pero necesitaremos privilegios para iniciar la ejecucin del binario llamado LED
que hemos generado:
1
sudo ./LED
NOTA: Para mas informacion de demas programas que se pueden utilizar para programacion de la GPIO de la
Raspberry PI II visitar el siguiente link: http://comohacer.eu/gpio-raspberry-pi/
Circuito de conexin
Por default Raspberry Pi tiene deshabilitado el mdulo de comunicacin SPI, as que lo primero
es habilitar la interfaz para poder comunicarnos con nuestro MCP3008.
Para poder transmitir datos va SPI con un script en Python vamos a utilizar la librera SpiDev,
la librera funciona con Python Versin 2 y 3. Todos los pasos de habilitacin e instalacin los
puedes seguir en este link http://bot-boss.com/habilitar-spi-raspberry-pi-2/ .
Tambin
puedes
consultar
la
librera http://tightdev.net/SpiDev_Doc.pdf .
documentacin
relacionada
con
la
El ADC del chip MCP3008 tiene resolucin de 10 bits, lo que significa que el voltaje ledo es
representado por un valor en el rango de 0 1023 (2 elevado a la potencia N, dnde N = 10 es la
resolucin del adc).
Para realizar le conversin del valor del ADC a su correspondiente voltaje usamos la siguiente
formula:
Voltaje = (adc * Vref)/1023
Vref = Voltaje de referencia
El script en Python para la lectura de voltaje es el siguiente:
import spidev
import time
import os
# SPI bus
spi = spidev.SpiDev()
spi.open(0,0)
# Function to read SPI data from
MCP3008 chip
# Channel must be an integer 0-7
def ReadChannel(channel):
adc
=
spi.xfer2([1,(8+channel)<<4,0])
data = ((adc[1]&3) << 8) + adc[2]
return data
# Function to convert data to voltage
level,
# rounded to specified number of
decimal places.
def ConvertVolts(data,places):
volts = (data * 5.0) / float(1023)
volts = round(volts,places)
return volts
BIBLIOGRAFIA
1)
https://www.raspberrypi.or
g/documentation/usage/gpi
o-plus-and-raspi2/
2)
http://comohacer.eu/gpioraspberry-pi/
3)
https://geekytheory.com/tu
torial-raspberry-pi-gpioparte-2-control-de-ledscon-python/