Actualizado el 25 de Junio del 2020 (Publicado el 25 de Abril del 2019)
1.671 visualizaciones desde el 25 de Abril del 2019
3,4 MB
23 paginas
Creado hace 7a (27/09/2017)
Manejando el mundo con la Raspberry Pi (RPi)
2017/9/27
Àngel Perles
Contenido
● Objetivo
● Opciones de conexión
● bajo nivel: GPIO, SPI, I2C, UART
● CSI
● DSI
● USB
● Un caso práctico
● El problema
● El montaje
● El software
● WiringPi
● Probando
armpower.blogs.upv.es
2
Objetivo
● Tener criterio para seleccionar el tipo de dispositivos adecuado a cada
interfaz de la RPi
● Conocer básicamente software para acceder al subsistema de bajo
nivel
● Practicar con un ejemplo hardware + software
armpower.blogs.upv.es
3
Opciones de conexión
● Estos son las opciones y sus conectores para una RPi 2 modelo B
● Veamos qué podemos conectar. De “low-level” a “high-level”
armpower.blogs.upv.es
4
Opciones de conexión: bajo nivel
● El conector P1 incorpora las interfaces de bajo nivel
● General Pourpose Input/Out (GPIO)
● SPI e I2C
● UART
pin 2
pin 1
Ver http://elinux.org/RPi_Low-level_peripherals
armpower.blogs.upv.es
5
Opciones de conexión: bajo nivel
● Función asociada a los pines
armpower.blogs.upv.es
6
Opciones de conexión: bajo nivel
● GPIO
● Para hacer entrada/salida digital: abierto/cerrado, blanco/negro, grande/pequeño
● Nivel “0” -> 0 voltios, Nivel “1” -> 3,3 voltios
● Pines configurables como salida o como entrada
● Pull-up, pull-down programable
Ideal para
● Leer (sensar) botones, sensores de presencia, finales de carrera, ...
● Escribir (actuar) LEDs, relés, electroválvulas, motores ...
●
armpower.blogs.upv.es
7
Opciones de conexión: bajo nivel
● GPIO
● PEGA: poca corriente de salida, unos 15 mA por pin
● Hace falta algún tipo de amplificación para las cargas grandes
● NO PROBLEM: montones de plaquitas en el mercado
Placa de relés por 4 Eur.
armpower.blogs.upv.es
8
Opciones de conexión: bajo nivel
● GPIO
Vamos a trastear saltando al
“Ejemplo práctico”.
Después seguimos con las opciones
armpower.blogs.upv.es
9
Opciones de conexión: bajo nivel
●
I2C
●
“Inter-integrated circuit” es un bus de datos serie
● Pines: SCL (serial clock), SDA (serial data) y GND
●
Ideal para tener un chorro de sensores/actuadores sin requisitos de alta
velocidad
– Sensores digitales de temperatura, posición, magnetómetros, corriente
– Actuadores digitales sencillos
– Memorias donde se guardan pocas cosas (incluyendo tipo DNIe)
– Conversores anológico-digitales, digitales-analógicos lentos
– Reloj de tiempo real
● O lo montas tu o compras uno hecho. Miles en el mercado
Pantallita
armpower.blogs.upv.es
RTC
Memoria FRAM
10
Opciones de conexión: bajo nivel
● SPI
● Serial Peripheral Interconnect
● Pines: MOSI, MISO (master-slave input-output), CEx (chip enable), SCK (serial
clock) y GND
● Pretende reemplazar buses paralelos con la ventaja de un serie sencillo
●
Ideal para chips con relativa alta tasa de transferencia
– Conversores analógico-digitales, digitales-analógicos rápidos,
acelerómetros, giróscopos, memoria serie (las SD son memorias serie)
– Pantallas TFT sencillas
– Extensores de puertos. CAPES
● O lo montas tu o lo compras hecho. Miles en el mercado
IMU
armpower.blogs.upv.es
TFT
Extensor PIFACE
¡Perfecto para
trastear!
11
Opciones de conexión: bajo nivel
● UART
● Universal Asynchronous Receiver Transmiter
● El bus serie de toda la vida (RS-232, RS-485, ...)
● Desplazado por USB en el área de consumo
● Pero muy vivo en el área industrial
Ideal para dispositivos industriales
– GPS
– Básculas industriales
– Módulos GSM
– Monederos electrónicos
●
GPS
armpower.blogs.upv.es
BÁSCULA
12
Opciones de conexión: CSI
● MIPI Camera Serial Interface
● Otro estándar del MIPI
● http://mipi.org/specifications/camera-interface
● Hay cámara oficial por 25 Eur. (Camera module v2)
● 8 megapixels
● hasta 1080p
● driver V4L (Video for Linux) siiiiiií. Perfecto para OpenCV, ...
● Pi Noir: versión infrarroja
(es la misma sin filtro IR)
armpower.blogs.upv.es
13
Opciones de conexión: DSI
● MIPI Display Serial Interface
● Una interfaz para paneles LCD estandarizada por MIPI
● http://mipi.org/specifications/display-interface
● Ha costado, pero ya hay una versión oficial
● Conseguir una pantalla económica y compatible es muy problemático
Típico de paneles
de móviles y tablets.
armpower.blogs.upv.es
14
Opciones de conexión: USB
● Universal Serial Bus 2.0 tipo host
● Universalmente conocido por la enorme diversidad de opciones
● Recordad lo del HUB
●
Ideal para dispositivos “complejos”: módem 3G, impresoras, Wi-Fi, Bluetooth,
cámaras, etc.
● Y no tan complejos: discos duros, teclados, ratones, conversores USB a RS-232,
RS-485, 1-wire, ...
● La PEGA son los drivers:
● Asegurarse antes de que hay driver para el Linux “mainstream”
● El driver debe ser de código abierto para que se pueda recompilar en la RPi
NOTA: Las marcas de estos dispositivos no se han elegido porque sí.
COMPRA productos que soporten oficialmente Linux: HP, Logitech, Transcend, ...
armpower.blogs.upv.es
15
Un caso práctico: el problema
● Quiero gestionar el llenado de un depósito. Tengo un sensor de
llenado que hay que leer y una válvula que hay que controlar
● Parece lógico usar la GPIO
armpower.blogs.upv.es
16
Un caso práctico: el montaje
● Ahora montamos las cosas (sustituyendo por componentes
desnudos y baratos para ver fluir electrones)
● LED, pulsador, 2 resistencias de 220 Ohms y cables
armpower.blogs.upv.es
17
Un caso práctico: el montaje
APAGAR LA PI. QUITAR ALIMENTACIÓN. MONTAR CON CAUTELA
BCM_GPIO 17
BCM_GPIO 18
NOTA IMPORTANTE: Se monta así por motivos didácticos.
Mala manera de hacer las cosas, pues se deberían proteger los pines.
armpower.blogs.upv.es
18
Un caso práctico: el software
● Vale ya he comprado, montado y conectado el cacharro
● MAL: primero nos aseguramos de que hay software para usarlos
● O son drivers que ya vienen en Linux “mainstream”
● O vienen en los repositorios generales o adicionales
● O están en código fuente y hay que compilarlos
● En Linux, los dispositivos suelen mostrarse en /dev/*
armpower.blogs.upv.es
19
Un caso práctico: software/wiringPi
● Primero nos debemos preocupar de la parte software
● Opción “a pelo”. Acceso como archivos
●
/sys/class/gpio/gpio
● $ echo 1 > /sys/class/gpio/gpio17/value
●
... y a complicarse la vida
● Opción “alguien ya se lo ha currado”.
●
recomendable la biblioteca “wiringPi”
● http://wiringpi.com/
armpower.blogs.upv.es
20
Un caso práctico: wiringPi
● wiringPi
●
●
●
funciones para la GPIO, I2C, SPI
soporta además las placas de extensión más populares: piface, gertboard, ...
y viene listo para algunos chips típicos: sensores de temperatura, conversores
AD, ...
● Viene en código fuente y está en un repositorio git
● ¿pega? ¡no!
● $ sudo apt-get install gcc
● $ sudo apt-get install git-core
● $ git clone git://git.drogon.net/wiringPi
● $ cd wiringPi
● $ ./build
NOTA: En la última Raspbian de fecha February 2016 ya está
instalado gcc, git y wiringPi. Estas usando esa, pero lo vamos a hacer
como pone aquí por didáctica
armpower.blogs.upv.es
21
Un caso práctico: probando
● Veamos si va. Probad:
● pi@raspberrypi ~ $ gpio -g mode 17 out
● pi@raspberrypi ~ $ gpio -g write 17 1
● pi@raspberrypi ~ $ gpio -g write 17 0
● Si va, pues hacemos un pequeño script
● pi@raspberrypi ~ $ cd
● pi@raspberrypi ~ $ mkdir test_pin
● pi@raspberrypi ~ $ cd test_pin
● pi@raspberrypi ~ $ leafpad test_pin & (suponemos terminal dentro X o
entubado X)
● guardar como “test_pin”
● pi@raspberrypi ~ $ chmod 700 ./test_pin
● pi@raspberrypi ~ $ ./test_pin
armpower.blogs.upv.es
22
Un caso práctico:probando
● Veamos el pulsador:
● pi@raspberrypi ~ $ gpio -g mode 18 up
● pi@raspberrypi ~ $ gpio -g read 18
●
y probar con el pulsador presionado o no
armpower.blogs.upv.es
23
Comentarios de: Manejando el mundo con la Raspberry Pi (0)
No hay comentarios