Vous êtes sur la page 1sur 6

UNIVERSIDAD DE PAMPLONA

Unidad de Ingeniera Mecatrnica


Facultad de Ingenieras. Programa de Ingeniera Mecatrnica.
Laboratorio III
Raspberry Pi II
CODIFICACIN Lab

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.

Programacin avanzada de los GPIO


C y wiringPi

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

sudo apt-get install gcc

Y luego haz lo mismo para la biblioteca wiringPI:

1
2
3

sudo apt-get install git-coresudo apt-get update


sudo apt-get upgrade
git clone git://git.drogon.net/wiringPi

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

gcc -o LED LED.c -lwiringPi

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/

Lectura de seales analgicas con Raspberry Pi 2 Y MCP3008


MCP3008
El chip MCP3008 fabricado por Microchip es un convertidor analgico-digital con 8 canales de
10 bits de resolucin e interfaz SPI, adems de su bajo precio es fcil de utilizar ya que no
necesita componentes adicionales.

Circuito de conexin

Interfaz SPI en Raspberry Pi 2

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

Lectura de voltaje con Python

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

# Define sensor channels


pot = 0
# Define delay between readings
delay = 3
while True:
# Read the light sensor data
adc = ReadChannel(pot)
pot_volts = ConvertVolts(adc,2)
# Print out results
print ("-------------------------------------------")
print ("Lectura ADC: ", adc)
print("Voltaje:
{}V".format(pot_volts))

# Wait before repeating loop


time.sleep(delay)

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/

Vous aimerez peut-être aussi