0% encontró este documento útil (0 votos)
31 vistas31 páginas

Programación GPIO en Raspberry Pi

Cargado por

chasquealo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
31 vistas31 páginas

Programación GPIO en Raspberry Pi

Cargado por

chasquealo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd

Unidad 1 - Introducción al computador de placa reducida

(Single Board Computer – SBC)

Semana 3 (S1) – SBC y su programación GPIO


Usando scripts de shell de LINUX

Curso: Sistemas Embebidos


Profesor: Mag. Ing. Rubén Acosta UPC - Universidad Peruana de Ciencias Aplicadas
Temario
1.- Instalación de una cámara en Raspberry PI
2.- Instalación monitor de temperatura de CPU
3.- Acceso al GPIO usando SYSFS
1.-Instalación de una cámara en Raspberry PI

o Para la instalación de una cámara WEB por USB debemos revisar la


relación de cámaras soportadas para Raspberry PI:
[Link]

o En primer lugar conectamos la webcam USB a nuestra Raspberry Pi


para comprobar que el sistema operativo la reconoce correctamente.

o Una vez conectada, abrimos un terminal para listar todos los


dispositivos USB que ha reconocido mediante el comando lsusb.

o lsbusb: Muestra información referente a los dispositivos conectados a


los puertos USB
1.-Instalación de una cámara en Raspberry PI

o En nuestro caso se puede observar que nos ha reconocido una webcam


o BUS 001 Device 005: ID 046d:08c5 Logitech, Inc. QuickCam Pro 5000
o Instalar LUVCVIEW.
o Recuerda que antes de instalar un programa es recomendable actualizar
el sistema de operativo con:
o sudo apt-get update, sudo apt-get upgrade
o Una vez actualizada la lista de paquetes del repositorio, podemos instalar
Luvcview mediante el comando sudo apt-get install luvcview.
1.-Instalación de una cámara en Raspberry PI

o Para comprobar que se ha instalado correctamente ejecutamos la aplicación a través de un terminal utilizando
el comando luvcview y se deberá abrir una ventana nueva con la webcam, como se observa en la siguiente
imagen.
2.-Instalación monitor de temperatura de CPU
o Instalar
pi@raspberrypi:~ $ vcgencmd measure_temp
pi@raspberrypi:~ $ watch -n 1 "vcgencmd measure_clock arm; vcgencmd measure_temp"

o Añadir
Es posible crear una gráfica en la barra de tareas. Para esto, damos clic secundario en la barra y seleccionamos «Añadir/quitar elementos del
panel» Clic en añadir.
3.- Acceso al GPIO usando SYSFS
3.1 Comandos de información del sistema
o El comando uname imprime información sobre el sistema y su kernel. En la tabla 1 se observan todas las opciones para uname.

Tabla 1

o Comando relacionados a ejecución y suspensión de procesos del sistema

o Ctrl+z: suspende la ejecución del proceso que se está ejecutando y lo pone en segundo plano, con el comando fg podremos
volver a continuar su ejecución. Para volver a ejecutarlo utilizamos fg (foregroung/primer plano)
o Ctrl+d: sale de la terminal, similar al comando exit
o Ctrl+c: termina el proceso que se esté ejecutando, útil para recuperar el control del sistema.
o Ctrl+l: limpia la terminal, similar a lo que hace el comando clear.
3.- Acceso al GPIO usando SYSFS
3.2 Controladores de dispositivos en Linux en SoC
o Las aplicaciones de usuario no pueden comunicarse directamente con el hardware porque Linux no lo permite.
o Linux divide la memoria RAM en dos regiones: espacio del núcleo y espacio de usuario.
o El espacio del núcleo (Kernel Space) es donde se ejecuta Linux y proporciona sus servicios y dónde residen los
controladores de dispositivos.
o El espacio de usuario (User Space) es el área de memoria donde se ejecutan los procesos de usuario.
3.- Acceso al GPIO usando SYSFS
3.2 Controladores de dispositivos en Linux en SoC

o Los procesos del usuario solo pueden acceder al espacio del núcleo mediante el uso de llamadas (IOCTL)
del sistema
o IOCTL es una llamada de sistema en Unix que permite a una aplicación controlar o comunicarse con un driver de
dispositivo
o Los procesos en el espacio del núcleo (kernel Space) pueden comunicarse con el hardware y acceder a los
periféricos.
o También puede utilizar controladores de espacio de usuario (User space) para acceder al hardware.
3.- Acceso al GPIO usando SYSFS
3.3 Sysfs

o Sys es un sistema de archivos o ficheros virtual que exporta información sobre el dispositivo y sus drivers desde el
espacio del núcleo (kernel space) al de usuario (user space).
o La interfaz sysfs es para GPIO se encuentra en el kernel en /sys/class/gpio.
o La interfaz para gestionar las líneas GPIO en el espacio de usuario es en sysfs a través de archivos exportados a
/sys/class/gpio.
3.- Acceso al GPIO usando SYSFS
3.3 Sysfs
o A través de los comandos export y unexport se puede interactuar con los pines GPIO del Raspberry PI.
o export: solicita al kernel exportar el control de un determinado PIN del GPIO escribiendo su nombre en el archivo.
o unexport: Restituye el control del PIN del GPIO escribiendo su número al archivo.

1.- Encontrando el directorio GPIO


3.- Acceso al GPIO usando SYSFS
3.4 Controlador GPIO
o Habilita los controladores GPIO (General Port Input Output) disponibles en el dispositivo.
o Configura el hardware GPIO y las interfaces y las pone a disposición de la interfaz sysfs para la interacción del
espacio de usuario u otros controladores de dispositivo que necesitan tener acceso a los pines
3.- Acceso al GPIO usando SYSFS
3.5 Hardware GPIO- Distribución pines
o Después del reinicio los pines GPIO se configuran como entradas de acuerdo a la tabla 2.
o En la figura se muestra la disposición de los pines GPIO.

Tabla 2
3.- Acceso al GPIO usando SYSFS
3.6 Hardware GPIO – Consumo corriente
o La polarización de circuitos internos para activar cargas en el Raspberry PI son:

Figura a) Salida alta. Figura b) Salida baja.

o La entrega de corriente por pin GPIO, se muestra en la tabla 3.

Tabla 3
3.- Acceso al GPIO usando SYSFS
3.7 Creando el puerto GPIO 18
o Para crear el puerto GPIO 18 nos debemos de dirigir a la carpeta GPIO. Si nos ubicamos en la carpeta de usuario PI,
escribiremos:
$cd /sys/class/gpio
o Luego realizamos un listado con el comando: ls

o Estando en la carpeta gpio, escribimos:


o $echo 18>/sys/class/gpio/export y luego dar <enter>

Nota: debe de haber espacio en blanco entre echo y 18 y signo mayor


3.- Acceso al GPIO usando SYSFS
3.8 Configurando GPIO 18 como salida
o Debe de ingresar a la carpeta GPIO18

3.9 Escribir el pin GPIO 18 con 1 lógico


3.- Acceso al GPIO usando SYSFS
3.10 Configurando GPIO 21 como entrada
o Nos situamos en la carpeta gpio:
o $echo 21>/sys/class/gpio/export y luego dar <enter>
Botón con Rpullup
3.- Acceso al GPIO usando SYSFS
3.11 Para cerrar un puerto GPIO creado

o Nos situamos en la carpeta gpio:

o Es importante cerrar los puertos cada vez que son abiertos


3.- Acceso al GPIO usando SYSFS
Ejercicios GPIO

1.- Programar através de script de linux (Bash) que permita encender y apagar un LED conectado al pin GPIO 17
del Raspberry PI, durante un segundo.
Solución
3.- Acceso al GPIO usando SYSFS
Ejercicios GPIO
2.- Programar através de script de linux (Bash) que permita encender y apagar un LED conectado al pin GPIO 17
del Raspberry PI, durante un segundo dentro de un bucle while.
Solución
3.- Acceso al GPIO usando SYSFS
Ejercicios GPIO
3.- Programar através de script de linux (Bash) el encendido y apagado de LEDs conectados a GPIOs 17,27,22 del Raspberry PI, durante un
segundo dentro de un bucle while.
3.- Acceso al GPIO usando SYSFS
Ejercicios GPIO
4.- Programar a través de script de Linux (Bash) la lectura de un pulsador conectado al pin GPIO 3 del Raspberry PI, considerar que el pin
GPIO 3 tiene incluido en resistor Pull-up interno, genera una lectura inicial de nivel lógico alto (3.3V)
3.- Acceso al GPIO usando SYSFS
Ejercicios GPIO
5.- Programar através de script de linux (Bash) el encendido y apagado de un LED. El programa debe contemplar que cada vez que se pulse debe
de encender el LED y si se deja de pulsar debe estar apagado el LED. Usar el pin GPIO3 para el pulsador y GPIO17 para el LED.
3.- Acceso al GPIO usando SYSFS
Ejercicios GPIO
6.- Programar a través de un script de Linux el encendido y apagado de un LED. El programa debe contemplar que cada vez que se pulse, el
estado del LED debe cambiar. Usar los pines GPIO convenientes para el LED y pulsador.
3.- Acceso al GPIO usando SYSFS
Ejercicios GPIO
7.- Programar a través de un script de Linux (Bash) la ejecución de un contador binario de 8 combinaciones usando tres LEDs, se debe usar un
segundo de tiempo para los aumentos de la cuenta. Usar los pines GPIO convenientes.
3.- Acceso al GPIO usando SYSFS
Ejercicios GPIO
8.- Programar a través de un script de Linux (Bash) que ejecute una cuenta hasta 10. La impresión de la cuenta debe darse en consola (terminal).
Usar los pines GPIO convenientes.
3.- Acceso al GPIO usando SYSFS
Ejercicios GPIO
9.- Programar a través de un script de Linux (Bash) que detecte número pares e impares. la impresión debe darse en consola.
3.- Acceso al GPIO usando SYSFS
Ejercicios GPIO
10.- Programar a través de un script de Linux (Bash) que detecte si es un número primo. la impresión debe darse en consola.
3.- Acceso al GPIO usando SYSFS
Ejercicios propuestos usando scripts usando GPIO
1.- Programar un script en Shell de Linux que permita ingresar el valor de un
tiempo en ms de 4 posibles para el parpadeo de un LED.

Para lograr ello se deberá tener las siguientes consideraciones:

o Implementar la conexión del Raspberry PI usando el pines GIPO3 y GND


para conectar un LED.
o Los 4 tiempos en ms son: 0.2, 0.6, 1.2 y 2.
o Cada valor de tiempo ingresado = Ton = Toff
o Al iniciar el programa el LED está apagado y espera el ingreso del valor de
tiempo.
o Se espera el valor por teclado y al final digitar la tecla <i> para que el valor
sea aceptado y enseguida el programa empieza a ser ejecutado.
o Si desea ingresar otro valor de tiempo. Se deberá primero parar el proceso
digitando la tecla <s>. Luego se ingresará el valor deseado + la tecla <i>.

Entregar 03 archivos con código de alumno_Apellidos_Nombres.

01 archivo en *word con la copia del código del programa *sh


01 archivo *jpeg con la fotografía del circuito implementado
01 archivo *jpeg con la fotografía de la conexión de Anydesk donde se indica el
código del alumno remoto.
(Sólo para el alumno que tiene el Raspberry pi no es necesario que envíe la foto
del Anydesk)
3.- Acceso al GPIO usando SYSFS
Ejercicios propuestos usando scripts usando GPIO
2.- Programar un script en Shell de Linux que permita realizar la acción de 4
eventos generados por las teclas D, I P y S y para las indicaciones de salida se
usarán 3 pines GPIOs conectados a LEDs respectivamente.
Para lograr ello se deberá tener las siguientes consideraciones:

o Implementar la conexión del Raspberry PI usando los pines GPIOs GIPO4,


GPIO17, GPIO27 y GND para conectar 3 LEDs.
o Los tiempos Ton=Toff = 1s serán usados por igual para los 3 eventos.
o Al iniciar el programa los 3 LEDs estarán apagados
o En los desplazamientos sólo deberá estar encendido un LED a la vez.
o El programa deberá tener un menú que indique las acciones:
o [Desplazamiento de encendido de Izquierda a Derecha: Digite tecla D]
o [Desplazamiento de encendido de Derecha a Izquierda: Digite tecla I]
o [Parpadeo : Digite tecla P]
o [Salir del programa: Digite la tecla S]
o Cada acción ingresará a un bucle de valor 5 y después se saldrá del programa.

Entregar 03 archivos con código de alumno_Apellidos_Nombres.

01 archivo en *word con la copia del código del programa *sh


01 archivo *jpeg con la fotografía del circuito implementado
01 archivo *jpeg con la fotografía de la conexión de Anydesk donde se indica el
código del alumno remoto.
(Sólo para el alumno que tiene el Raspberry pi no es necesario que envíe la foto
del Anydesk)
Preguntas ?

También podría gustarte