Raspberry Pi
¿Qué es?
es un computador de placa reducida, computador de placa única o computador de
placa simple de bajo costo desarrollado en Reino Unido por la Fundación
Raspberry Pi, con el objetivo de estimular la enseñanza de ciencias de la
computación en las escuelas.4567
Aunque no se indica expresamente si es hardware libre o con derechos de marca,
se entiende que es un producto con propiedad registrada, pero de uso libre,
manteniendo el control de la plataforma, pero permitiendo su uso libre tanto a nivel
educativo como particular.
Su sistema operativo es una versión adaptada de Debian, denominada Raspbian.
En todas sus versiones incluye un procesador Broadcom, una memoria RAM, una
GPU, puertos USB, HDMI, Ethernet (El primer modelo no lo tenía), 40 pines GPIO
y un conector para cámara. Ninguna de sus ediciones incluye memoria, siendo
esta en su primera versión una tarjeta SD y en ediciones posteriores una tarjeta
MicroSD
La fundación da soporte para las descargas de las distribuciones para arquitectura
ARM, Raspbian (derivada de Debian), RISC OS 5, Arch Linux ARM (derivado de
Arch Linux) y Pidora (derivado de Fedora);2 y promueve principalmente el
aprendizaje del lenguaje de programación Python.4 Otros lenguajes también
soportados son Tiny BASIC,11 C, Perl4 y Ruby.
Historia
En 2006, los primeros diseños de Raspberry Pi se basaban en el microcontrolador
Atmel ATmega644.
En mayo de 2009, la fundación Raspberry Pi fue fundada en Caldecote, South
Cambridgeshire, Reino Unido como una asociación caritativa que es regulada por
la comisión de caridad de Inglaterra y Gales.
El administrador de la fundación, Eben Upton, se puso en contacto con un grupo
de profesores, académicos y entusiastas de la informática para crear una
computadora con la intención de animar a los niños a aprender informática como
lo hizo en 1981 el computador Acorn BBC Micro. El primer prototipo basado en
ARM se montó en un módulo del mismo tamaño que una memoria USB. Tenía un
puerto USB en un extremo y un puerto HDMI en el otro.
Pre-lanzamiento
En agosto de 2011, se fabricaron cincuenta placas alfa, que tenían las mismas
características que el modelo B, pero eran un poco más grandes para integrar bien
unas interfaces para depuración. En algunas demostraciones se podía ver la placa
ejecutando el escritorio LXDE en Debian, Quake 3 a 1080p y vídeo Full HD H.264
a través de la salida HDMI.
En octubre de 2011, el logotipo se seleccionó entre varios diseños enviados por
miembros de la comunidad. Durante el mismo mes, se trabajó en una versión de
desarrollo de RISC OS 5 y se hizo una demostración en público.
En diciembre de 2011, 25 placas beta del modelo B fueron ensambladas y
probadas de un total de 100 placas vacías. El diagrama de componentes de las
placas finales sería el mismo que el de esas placas beta. Durante las pruebas a
las placas beta se encontró un error de diseño en los pines que suministraban
alimentación a la CPU que sería arreglado en la versión final. Se hizo una
demostración de la placa beta arrancando GNU, reproduciendo un tráiler de una
película a 1080p y ejecutando el benchmark Rightware Samurai OpenGL ES.
Durante la primera semana de diciembre de 2011, se pusieron a subasta diez
placas en eBay. Una de ellas fue comprada por una persona anónima y se donó
al Centro para la Historia de la informática en Suffolk, Inglaterra. En total se
consiguieron 16,336 £. La última placa, con número de serie No. 01 se vendió por
3.500 £.
Debido al anticipado anuncio de puesta a la venta a final de febrero de 2012, la
fundación sufrió colapso en sus servidores web debido a los refrescos de páginas
desde los navegadores de gente interesada en la compra de la placa.
Lanzamiento
El primer lote de 10.000 placas se fabricó en Taiwán y China, en vez de Reino
Unido. Esto fue en parte porque los impuestos de importación se pagan para los
componentes individuales, pero no para productos acabados, y porque los
fabricantes chinos ofrecían un plazo de entrega de 4 semanas y en el Reino Unido
de 12. Con este ahorro conseguido, la fundación podía invertir más dinero en
investigación y desarrollo.
Las primeras ventas comenzaron el 29 de febrero de 2012 a las 06:00 UTC; al
mismo tiempo se anunció que el modelo A, que originalmente iba a tener 128 MB
de RAM, tendría 256 MB. La página de la fundación también anunció que “Seis
años después del origen del proyecto, estamos cerca de finalizar el primer
arranque del proyecto - aunque esto es solo el principio de la historia de
Raspberry Pi”. Por otro lado, las dos tiendas que vendían las placas, Premier
Farnell y RS Components, tuvieron una gran carga en sus servidores
inmediatamente después del lanzamiento. La cuenta oficial de Raspberry Pi en
Twitter informó que Premier Farnell vendió toda su existencia de inventario a los
pocos minutos del momento de lanzamiento, mientras que RS Components tuvo
100.000 peticiones de interés el primer día. En los seis meses siguientes llegarían
a vender 500.000 unidades.
Post-lanzamiento
Durante marzo de 2012 se anunciaron futuros retrasos en los envíos, a causa del
ensamblaje de un puerto ethernet incorrecto. Por otro lado, la fundación esperaba
que se pudiera aumentar la fabricación de unidades en los lotes futuros, si fuera
necesario.
El 16 de abril de 2012 los primeros compradores empezaron a informar que
habían recibido su Raspberry Pi. El 22 de mayo de 2012 más de 20.000 unidades
habían sido enviadas. El 16 de julio se anunció que se fabricarían 4.000 unidades
cada día, permitiendo ser compradas las placas en lotes. El 5 de septiembre la
fundación anunció una segunda revisión del modelo B. El 6 de septiembre se
anunció que se llevaría la producción de placas al Reino Unido, a una fábrica de
Sony en Pencoed, Gales, y que en ella se producirían 30.000 unidades cada mes,
y se crearían 30 nuevos puestos de trabajo. En octubre de 2012, se informó que
clientes que habían hecho su pedido a través del distribuidor RS Components,
llevaban esperando hasta seis meses en recibir sus pedidos, a causa de
dificultades en la provisión de CPUs y una conservadora política de previsión de
ventas.
El 4 de febrero de 2013, se lanzó el modelo A, pero debido a temas burocráticos
los principales proveedores sólo lo pudieron poner a la venta ese día en Europa.
En diciembre de 2015 se pueden comprar modelos con mejores prestaciones;
Raspberry Pi 2 Model B. Este modelo se puede comprar en Amazon por. En
febrero de 2016 sale a la venta un nuevo modelo, la versión 3.
Ninguna Raspberry Pi tiene reloj en tiempo real, por lo que el sistema operativo
debe usar un servidor de hora en red, o pedir al usuario la hora en el momento de
arrancar el computador. Sin embargo, se podría añadir un reloj en tiempo real
(como el DS1307) con una batería mediante el uso de la interfaz I²C.
Modelos Versiones
Raspberry Pi 1 Modelo A
Este fue el primer modelo de Raspberry, sus ventas comenzaron en el año 2012.
Carecía de puerto Ethernet, por lo que para su conexión a Internet requería de un
adaptador Wi-Fi por USB. Poseía 26 conectores GPIO, salida de vídeo vía HDMI y
Video RCA, un conector Jack de 3.5 milímetros, un único conector USB,
MicroUSB (De alimentación) y un conector de cámara. Su procesador fue un
Broadcom BCM2835, Single-Core a 700MHz. También tuvo 256 MB de RAM y
una gráfica Broadcom VideoCore IV. Requería de una fuente de alimentación de 5
voltios y 2 amperios, elemento común al resto de versiones. Tuvo un coste inicial
de 40 euros.
Raspberry Pi 1 Modelo B y B+
También del año 2012, es una variante del Modelo A, trajo consigo diversas
mejoras, la inclusión del doble de memoria RAM, pasando de 256MB a 512MB.
Trajo consigo un puerto USB más, y, por fin, un conector Ethernet (RJ-45) Se
mantuvo tanto su tamaño como su coste. No hubo variaciones en el procesador ni
en la gráfica. Tiempo después se lanzó el Modelo B+, que incluyó 4 puertos USB y
pasó de usar una SD a una MicroSD.
Raspberry Pi 2 Modelo B
Lanzada en 2014 es el primer modelo que no incluye el mismo procesador usado
en los tres anteriores: se sustituye por uno de la misma marca, pero de modelo
BCM2836. Pasa de ser de un núcleo a cuatro, y de 700MHz a 900MHz. No
obstante, emplea la misma gráfica, la VideoCore IV. Dobla la cantidad de memoria
RAM, pasando de 512MB a 1GB (Algo menos en realidad) esta memoria está
compartida con la gráfica. También incluye 40 pines GPIO, y mantiene los cuatro
puertos USB. Suprime la conexión RCA.
Raspberry Pi 3 Modelo B
Sacada a la luz en el año 2016, renueva procesador, una vez más de la compañía
Broadcom, una vez más un Quad-Core, pero pasa de 900MHz a 1.20GHz.
Mantiene la RAM en 1GB. Su mayor novedad fue la inclusión de Wi-Fi y Bluetooth
(4.1 Low Energy) sin necesidad de adaptadores.
Tabla de especificaciones
Raspberr Raspbe
Raspberry
Raspberry Pi y Pi 1 rry Pi 2 Raspberry Pi
Pi 1 Modelo
1 Modelo A Modelo Modelo 3 Modelo B
B
B+ B
Broadco
m
BCM283 Broadcom
Broadcom BCM2835 6 (CPU BCM2837
SoC: (CPU + GPU + DSP + SDRAM + + GPU + (CPU + GPU +
puerto USB) DSP + DSP + SDRAM
SDRAM + Puerto USB)
+ Puerto
USB)
CPU: ARM 1176JZF-S a 700 MHz (familia 900 1.2GHz 64-bit
MHz
quad-
core quad-core
ARM11)
ARM ARMv8
Cortex
A7
Juego de
RISC de 32 bits
instrucciones:
Broadcom VideoCore IV, OpenGL ES 2.0, MPEG-2 y VC-1 (con
GPU:
licencia), 1080p30 H.264/MPEG-4 AVC
256 MiB (com 512 MiB (compartidos
Memoria 1 GB (compartidos con la
partidos con la con la GPU) desde el 15
(SDRAM): GPU)
GPU) de octubre de 2012
2 (vía hub
Puertos USB
1 USB integrad 4
2.0:
o)
Entradas de Conector MIPI CSI que permite instalar un módulo de cámara
vídeo: desarrollado por la RPF
Salidas de Conector RCA (PAL y NTSC), HDMI (rev1.3 y 1.4), Interfaz DSI para
vídeo: panel LCD
Salidas de
Conector de 3.5 mm, HDMI
audio:
Almacenamie
SD / MMC / ranura para SDIO MicroSD
nto integrado:
10/100 Ethern
et (RJ-45) vía
Conectividad 10/100 Ethernet (RJ-45) vía hub
Ninguna hub USB, Wifi
de red: USB
802.11n,
Bluetooth 4.1
Periféricos de 17 x GPIO y un bus HAT
8 x GPIO, SPI, I²C, UART
bajo nivel: ID
Reloj en
Ninguno
tiempo real:
Consumo 500 mA, 700 mA, (3.5 600 mA,
800 mA, (4.0 W)
energético: (2.5 W) W) (3.0 W)
Fuente de
5 V vía Micro USB o GPIO header
alimentación:
Dimensiones: 85.60mm × 53.98mm (3.370 × 2.125 inch)
GNU/Linux: Debian (Raspbian), Fedora (Pidora), Arch Linux (Arch
Sistemas Linux ARM), Slackware Linux, SUSE Linux Enterprise Server for
operativos so ARM.
portados:
RISC OS
Software
El Raspberry Pi usa mayoritariamente sistemas operativos GNU/Linux. Raspbian,
una distribución derivada de Debian que está optimizada para el hardware de
Raspberry Pi, se lanzó durante julio de 2012 y es la distribución recomendada por
la fundación para iniciarse.
Slackware ARM (también llamada ARMedslack) versión 13.37 y posteriores
arranca sin ninguna modificación. Los 128-496 MiB de memoria RAM disponible
en la Raspberry Pi, cubren los necesarios 64 MiB de RAM para arrancar esta
distribución en sistemas ARM y i386 sin usar interfaz gráfica (el administrador de
ventanas Fluxbox que funciona bajo X Window System requiere 48 MiB de
memoria RAM adicional). Por otro lado, se están creando distribuciones más
específicas y ligeras como IPfire (distribución para ser usada como firewall),81 u
OpenELEC y OSMC (distribuciones con el centro multimedia Kodi).
A la GPU se accede mediante una imagen del firmware de código cerrado (un blob
binario, en inglés), que se carga dentro de la GPU al arrancar desde la tarjeta SD.
El archivo está asociado a los controladores del núcleo Linux que también son de
código cerrado. Las aplicaciones hacen llamadas a las bibliotecas de tiempo de
ejecución que son de código abierto, y las mismas hacen llamadas a unos
controladores de código abierto en el núcleo Linux. La API del controlador del
núcleo es específica para estas bibliotecas. Las aplicaciones que usan vídeo
hacen uso de OpenMAX, las aplicaciones tridimensionales usan OpenGL ES y las
aplicaciones 2D usan OpenVG; OpenGL ES y OpenVG hacen uso de EGL y este
último, del controlador de código abierto del núcleo.
El 19 de febrero de 2012, la fundación lanzó un prototipo de imagen de tarjeta SD
que almacenaba un sistema operativo y que podía ser cargado en una tarjeta SD.
La imagen se basaba en Debian 6.0 (Squezze), con el escritorio LXDE y el
navegador Midori, más algunas herramientas de programación. La imagen
funcionaba bajo QEMU permitiendo que el Raspberry Pi pudiera ser emulado en
otros sistemas.85
El 8 de marzo de 2012, la fundación lanzó Raspberry Pi Fedora Remix
(actualmente llamada Pidora), que en el momento de era la distribución
recomendada por la fundación, y fue desarrollada en la universidad de Séneca,
en Canadá. También se propuso crear una tienda de aplicaciones para que la
gente intercambiara programas.
El 24 de octubre de 2012, Alex Bradbury, director de desarrollo Linux de la
fundación, anunció que todo el código del controlador de la GPU Videocore que se
ejecuta en ARM sería de código abierto, mediante licencia BSD modificada de 3
cláusulas. El código fuente está disponible en un repositorio de la fundación en
GitHub.
El 5 de noviembre de 2012, Eben Upton anunció el lanzamiento del sistema
operativo RISC OS 5 para Raspberry Pi a la comunidad, pudiéndose descargar la
imagen de forma gratuita desde la web de la fundación. Su relación con la
comunidad RISC OS se remontaba a julio de 2011, cuando habló en ella de una
hipotética versión. El sistema operativo incluye una gran cantidad de aplicaciones
como !NetSurf para la navegación web, !StrongED para editar texto, !Maestro para
editar música, !Packman para la gestión de paquetes o una tienda de aplicaciones
llamada !Store donde se puede encontrar aplicaciones gratuitas o de pago.
Además, se incluyen manuales para crear aplicaciones en BASIC para el sistema
operativo.
El 24 de noviembre de 2012, se anunció en la Minecon de París, el juego
Minecraft: Pi Edition para Raspberry Pi, basado en la versión Minecraft: Pocket
Edition para teléfonos inteligentes y tabletas. La descarga se hizo disponible de
forma oficial y gratuita por primera vez el 12 de febrero de 2013 desde el blog del
juego, como versión 0.1.1 alpha, junto a instrucciones para ejecutarlo en Raspbian
Wheezy. Una de las características principales de este lanzamiento es poder
interaccionar con el juego mediante programación, con la intención de motivar a
los niños a aprender a programar.
El 25 de mayo de 2013, la fundación informó de que se estaba trabajando en una
versión del servidor gráfico Wayland para Raspberry Pi, para sustituir al sistema
de ventanas X. Con este cambio se lograría suavidad al usar la interfaz gráfica del
escritorio, ya que el procesamiento lo realizaría el núcleo de video de la GPU y no
la CPU, sin interferir en el renderizado 3D.
El 3 de junio de 2013, fue lanzado en la web de la fundación para su descarga la
aplicación NOOBS (New Out of Box Software), utilidad que facilita la instalación de
diferentes sistemas operativos para Raspberry Pi. Se distribuye en forma de
archivo zip que se copia descomprimido a una tarjeta SD de 4 o más GB, y una
vez arrancada la placa con la tarjeta por primera vez, aparece un menú en que se
da la opción de instalar una de las diferentes distribuciones en el espacio libre de
la tarjeta de memoria, o acceder a internet con el navegador Arora integrado. Más
adelante si se desea, es posible acceder a este menú apretando la tecla shift
durante el arranque para reinstalar el sistema operativo, elegir otro, o editar el
archivo [Link]. NOOBS contiene las distribuciones GNU/Linux de carácter
general Raspbian, Arch Linux ARM y Pidora; las distribuciones para mediacenter
con Kodi Openelec y RaspBMC; y el sistema operativo Risc OS 5.95
El 26 de septiembre de 2013, se añadió a los repositorios de Raspbian una
versión oficial de Oracle Java JDK ARM con soporte para coma flotante por
hardware, que ofrece bastante más rendimiento que la versión OpenJDK ARM ya
existente hasta ese momento y más compatibilidad con aplicaciones. También se
anunció que esta versión de Oracle Java JDK se incluiría dentro de la distribución
en futuras versiones de Raspbian.
Sistemas operativos
Esta es una lista de sistemas operativos que funcionan, se han portado, o están
en proceso de ser portados a Raspberry Pi:
Sistemas operativos completos:
- AROS
- GNU/Linux para procesador ARM.
- Android97
- Arch Linux ARM
- Debian Whezzy Soft-Float, versión de Debian sin soporte para coma
flotante por hardware
- DietPi, distribución ligera basada en Raspbian y de sencilla
configuración mediante menús
- Firefox OS
- Gentoo Linux98
- Google Chromium OS
- Kali Linux
- Open webOS99
- PiBang Linux,100 distribución Linux derivada de Raspbian con
diferente escritorio y aplicaciones
- Pidora, versión Fedora Remix optimizada101
- QtonPi, distribución linux con un framework de aplicaciones
multiplataforma basado en Qt framework
- Raspbian,102 versión de Debian Wheezy para ARMv6 con soporte
para coma flotante por hardware
- Slackware ARM, también conocida como ARMedslack
- Ubuntu MATE
- Plan 9 from Bell Labs103104
- RISC OS 52
- Unix
- FreeBSD105
- NetBSD106107
- Windows 10
- Windows CE
Distribuciones ligeras multipropósito:
- Minibian, distribución ligera basada en Raspbian.
- Moebius, distribución ligera ARM HF basada en Debian que usa el
repositorio de Raspbian y que cabe en una tarjeta SD de 1GB, usa
pocos servicios y está optimizada para usar poca memoria
- Squeezed Arm Puppy, una versión de Puppy Linux (Puppi) para
ARMv6 (sap6) específicamente para Raspberry Pi108
Distribuciones ligeras de único propósito:
- Instant WebKiosk, sistema operativo con solo un navegador
- IPFire
- Micro Elastix, solución de código abierto para comunicaciones
unificadas109
- OpenELEC
- LibreELEC
- OSMC
- Raspbmc
- Xbian
Características
En mayo de 2012, la fundación informó acerca de que se estaba experimentando
con un módulo de cámara para Raspberry Pi, el prototipo usaba un sensor de 14
megapíxeles, y se conectaba al puerto CSI de la placa mediante un cable plano
flexible. En noviembre del mismo año, se presentó el prototipo final en la feria
Electrónica 2012 en Munich, y se dio a conocer que el sensor sería de 5
megapíxeles y que podría grabar vídeo a 1080p H.264 a 30 fotogramas por
segundo. Finalmente, el módulo se puso a la venta el 14 de mayo de 2013 en los
principales proveedores. Las dimensiones del módulo son 25 x 20 x 9 mm. Para
poder hacer uso de él, se tiene que activar en el menú raspi-config de Raspbian.
Más tarde, a finales de octubre de 2013 se puso a la venta un módulo de cámara
de infrarrojos.
Periféricos y carcasas son comercializados por empresas ajenas a la fundación.
Por ejemplo, la Gertboard, que ha sido creada con propósito educativo, sirve para
hacer uso del puerto GPIO y poder interaccionar con ledes, interruptores, señales
analógicas, sensores, y otros dispositivos. También incluye un controlador
opcional para Arduino para poder interaccionar con el Raspberry Pi.
Costo
Raspberry Pi 3 Model B - Mini PC, 1GB, 1.2GHz 64-bit ARM v8, 1x RCA, 1x HDMI,
4x USB, 1x RJ45, Bluetooth 4.1, 801.11n, MicroSD.
$49.90
Qué son y para que sirven todos los
Pines de las Raspberry Pi 3
Los tableros de Raspberry Pi 3 (todos los modelos: 3A+, 3B, 3B+) tienen
un cabezal GPIO con 40 pines. Esos pines tienen un nuevo conjunto de
características en la Raspberry Pi 3.
Le permiten usar fácilmente las características del hardware y la
comunicación, directamente desde un ordenador, el microprocesador
Raspberry Pi. Esto acerca mucho más a la Raspberry Pi 3 a las
aplicaciones de hardware, haciéndolo perfecta para ser incorporado en
una aplicación o producto de hardware: un robot, una aplicación de retro-
juegos, etc.
En esta completa guía de pines del Raspberry Pi 3 desglosaremos todos
los pines de la cabecera del GPIO, y aprenderás lo que puedes y no
puedes hacer con ellos.
A lo largo del tutorial veremos algunas comparaciones con los pines de
las tablas de Arduino. Descubrirás que los pines pueden ser bastante
similares para algunas funcionalidades. Al final os daremos más detalles
sobre las diferencias entre los pins de Arduino y los de Raspberry Pi.
Análisis de todos los PINS de la
Raspberry Pi 3
Aquí hay un cuadro completo con todos los GPIOs y su función principal.
Ahora, vamos a ver cada pin o grupo de pines, y ver lo que pueden
hacer.
Antes de conectar cualquier cosa a un a Raspberry Pi 3, tienes que saber
que puedes dañar fácilmente el tablero si haces algo mal.
Si conectas un pin de tierra (GND) a un pin de 3.3V directamente,
podrías destruir tu placa Raspberry Pi en el momento en que esos pines
se conecten juntos.
Así que, ten mucho cuidado cuando conectes algo o cuando crees un
circuito de prueba. Si tienes alguna duda, comprueba dos o tres veces, y
pide ayuda a alguien antes de quemar tu placa.
Pero si sigues algunas reglas básicas y el sentido común, no tendrás
nada de qué preocuparte.
Pines de toma de tierra
La toma de tierra es muy útil para hacer una referencia común entre
todos los componentes de tu circuito. Recuerda siempre conectar todos
los componentes a la tierra.
Si conectas 2 circuitos juntos, agrega un cable entre ambas tierras para
hacerlo común. Si agregas un nuevo sensor/actuador a un circuito
existente, conecta la tierra del componente a la tierra del circuito.
Eso es muy importante. Sin eso, puedes quemar algunas partes del
circuito, puedes tener componentes que no funcionan correctamente, dan
valores erróneos, etc.
8 de los 40 GPIOs están conectados a la toma tierra. Puedes
encontrarlos con las 3 letras GND.
Una advertencia adicional: ¡nunca conectes la tierra directamente a un
pin de la fuente de alimentación (3.3V o 5V)! Esto crea un cortocircuito y
puede quemar definitivamente tu placa Raspberry Pi 3.
Pines de alimentación
Puedes encontrar 2 pines que traen 3.3V y 2 pines que traen 5V.
Esos pines pueden ser usados para alimentar componentes como
sensores o pequeños actuadores. Ten en cuenta que no son lo
suficientemente potentes para accionar motores como servo o motores
paso a paso. Para eso necesitarás una fuente de energía externa.
Los pines de energía se usan como una fuente para alimentar
componentes externos, no para alimentar la Raspberry Pi en sí mismo
desde una fuente externa. (Bueno, hay una forma de alimentar la
Raspberry desde el cabezal del GPIO, pero tienes una alta probabilidad
de quemarlo, así que sólo usa el puerto micro-USB)
Y otra palabra de precaución: como se dijo anteriormente en la sección
de pines de tierra, no conectes nunca un pin de alimentación
directamente a uno de los GND de la Raspberry Pi 3.
Los pines reservados
Los pines 27 y 28 son pines reservados. Normalmente se usan para la
comunicación I2C con una EEPROM.
Si empiezas con los 3 pines de Raspberry Pi, no conectes algo a esos
pines. Hay muchos otros pines disponibles para que los uses.
Bueno, son 14 ranuras ya ocupadas para GND, fuente de alimentación y
pines reservados. Ahora veamos cómo se usan las otras 26 GPIOs para
la comunicación.
Raspberry Pi 3 GPIOs
GPIO significa Entrada/Salida de Propósito General. Básicamente es una
clavija que se puede usar para escribir datos en componentes externos
(salida), o leer datos de componentes externos (entrada).
Si usas tu placa Raspberry Pi con algunos componentes de hardware, el
encabezado GPIO será bastante útil.
Los GPIOs le permitirán leer algunos sensores básicos (ej: infrarrojos),
controlar algunos actuadores (los que funcionan en modo ON/OFF), y
comunicarse con otras placas de hardware, como la Raspberry Pi,
Arduino, Beaglebone, etc.
Ten en cuenta que los GPIOs son pines digitales. Los GPIO de una
Raspberry Pi 3 son bastante similares a lo que llamamos «pines
digitales» en un tablero de Arduino.
Primero tienes que elegir si quieres usarlos como entrada o como salida.
Si configuras un GPIO como entrada, podrás leer un valor de él: ALTO o
BAJO (1 o 0). Y si configuras un GPIO como salida, podrás escribir un
valor en él, también HIGH o LOW.
Un pin digital sólo tiene dos estados. BAJO normalmente significa 0V, y
ALTO significa 3.3V (con algunas tolerancias). Es muy simple, es como
un interruptor que se enciende y se apaga.
El voltaje de los GPIOs
Todos los GPIOs funcionan a 3.3V. Es importante que lo sepas en caso
de que necesites conectar un componente con un voltaje diferente.
A veces, encontrarás sensores que se alimentan con 5V, pero todos los
pines de comunicación funcionan con 3.3V. En este caso, no hay
problema: puedes usar el pin de alimentación de 5V de la Raspberry para
alimentar el componente, y luego usar cualquier GPIO de 3.3V para la
comunicación. Si no mezclas la señal de 5V con la de 3.3V, todo debería
estar bien.
Ahora, si necesitas hacer que los GPIOs de tu Raspberry Pi se
comuniquen con los pines de 5V directamente (ej: Arduino Uno o Mega),
necesitarás usar un cambiador de nivel de 3.3V a 5V. Puedes comprar
uno o construirlo tú mismo.
Si utilizas placas Arduino de 3.3V como Due, Zero o M0, no necesitarás
añadir un shifter de nivel de 3.3V a 5V, y puedes conectar los pines de
Arduino directamente a los GPIOs de la Raspberry Pi 3.
Cómo usar los GPIOs
Para usar un GPIO, primero necesitas saber su número.
Como puedes ver en la tabla de pines de más arriba, los números de pin
y los números GPIO son diferentes. Los números pin están en gris, y los
números GPIO en naranja. Dependiendo de la biblioteca que uses para
manipular los GPIOs, tendrás que usar el número del pin o el número
GPIO. Por ejemplo, el pin 29 corresponde a GPIO 5. En cualquier
momento que tengas una duda, sólo revisa el pin de nuevo y lo sabrás.
Así que, para usar cualquiera de esos GPIO, primero tienes que
configurarlo como entrada o salida, y después puedes escribir en él, o
leer de él.
Ahora, os preguntaréis: ¿cómo podéis configurar y usar las GPIOs de
vuestro código? ¿Necesitas sumergirte en cosas complejas de hardware
para hacer eso?
Hay al menos 2 librerías que te permitirán usar fácilmente esos pines.
Para Python, puedes usar [Link], y para Cpp puedes usar WiringPi.
Esas librerías fueron desarrolladas para que puedas usar los pines de
Raspberry Pi como si usaras pines de Arduino, lo que significa que todas
las cosas complejas están ocultas y puedes usarlas con solo unas pocas
líneas de código.
Por ejemplo, para establecer el GPIO 17 (pin 11) como salida/alto
puedes usar el siguiente código:
// With WiringPi (Cpp)
pinMode (17, OUTPUT);
digitalWrite(17, HIGH);
// With WiringPi (Cpp)
pinMode (17, OUTPUT);
digitalWrite(17, HIGH);
Para hacer que 2 placas se comuniquen entre sí, es bastante simple:
configurarás una GPIO como entrada en un lado, y como salida en el
otro. Entonces podrás usar más GPIOs para transferir más piezas de
información.
Los protocolos de comunicación a través
de los pines de la Raspberry Pi 3
Puedes usar algunos protocolos de comunicación de hardware
directamente con los GPIOs de Raspberry Pi 3. Esos protocolos de
comunicación son de hecho los mismos que puedes usar nativamente en
muchas placas Arduino.
Con esos protocolos podrás transferir mucha más información que con
un montón de GPIOs configuradas como pines digitales.
En los esquemas de pines de Raspberry Pi 3, puedes ver una columna
para funciones alternativas. Bueno, los protocolos de comunicación están
todos ahí.
De hecho, decir que un GPIO es un pin digital es una simplificación
demasiado exagerada. Es mucho más que eso. Por cada GPIO tienes al
menos una función alternativa, y a veces muchas más.
No necesitas saber todas las funciones alternativas para empezar y
desarrollar aplicaciones geniales. Sin embargo, si te interesa, puedes
echar un vistazo a la página 102 de la hoja de datos de bmc2835 (esta
es la hoja de datos de todo el encabezado de GPIO), donde verás una
tabla completa con todas las funciones alternativas para todos los
GPIOs.
UART
La UART es un protocolo de comunicación multimodal. Este protocolo es
bastante fácil de usar y muy conveniente para la comunicación entre
varios tableros: de Raspberry Pi a Raspberry Pi, o de Raspberry Pi a
Arduino, etc.
Para usar la UART se necesitan 3 pines:
GND que se conectará a la GND global de tu circuito.
RX para la recepción. Conectarás este pin al pin TX del otro
componente.
TX para Transmisión. Conectarás esta clavija a la RX del otro
componente.
Si el componente con el que te estás comunicando no está ya
alimentado, también tendrás que usar una clavija de alimentación (3.3V o
5V) para encender ese componente.
Usando un convertidor de UART a USB, puedes comunicarte entre tu
portátil y Raspberry Pi con UART.
Ahora, para usar UART en tu código, puedes usar la librería Serial en
Python, y WiringPi en Cpp.
I2C
I2C es un protocolo de bus maestro-esclavo (bueno, puede tener
múltiples maestros pero lo usarás principalmente con un maestro y
múltiples esclavos). El uso más común de I2C es leer los datos de los
sensores y activar algunos componentes.
El maestro es la Raspberry Pi, y los esclavos están todos conectados al
mismo bus. Cada esclavo tiene una identificación única, así que la
Raspberry Pi sabe con qué componente debe hablar.
Para usar I2C necesitarás 3 pines:
SCL: reloj del I2C. Conecta todos los esclavos SCL al bus SCL.
SDA: datos intercambiados. Conecta todos los esclavos SDA al
bus SDA.
Y como la mayor parte del tiempo necesitarás encender el componente,
también necesitarás una clavija de alimentación (3.3V o 5V), conectada a
la clavija Vcc del componente. Asegúrate de saber qué voltaje es
aceptado por el componente antes de enchufar nada. Pero no te
preocupes demasiado: normalmente, los componentes de afición
aceptan 3,3V y/o 5V.
Ten en cuenta que los pines SDA y SCL de la Raspberry Pi son
funciones alternativas para el GPIO 2 y 3. Cuando se utiliza una
biblioteca (Python, Cpp, etc) para I2C, esos dos GPIOs se configurarán
para que puedan utilizar su función alternativa.
Algunas de las mejores y más fáciles de usar librerías para I2C son
SMBus para Python y WiringPi para Cpp.
SPI
El SPI es otro protocolo de comunicación de hardware. Es un protocolo
de bus maestro-esclavo. Requiere más cables que el I2C, pero puede ser
configurado para funcionar más rápido.
Entonces, ¿cuándo usar I2C vs SPI en tu la Raspberry Pi 3? Bueno, la
respuesta es bastante simple. A veces encontrarás un sensor que sólo
es compatible con I2C o SPI. Y a veces, sólo querrás tener un equilibrio
entre esos protocolos, así que, por ejemplo, elegirás usar I2C si ya tienes
muchos componentes usando el SPI. A medida que progreses,
empezarás a conocer mejor las diferencias, y podrás elegir mejor entre
esos dos protocolos. Pero por ahora, mantengamos las cosas fáciles.
Como puedes ver, obtienes 2 SPIs por defecto: SPI0 y SPI1. Significa
que puedes usar la Raspberry Pi como maestro de SPI en dos buses SPI
diferentes al mismo tiempo.
Y, como en el caso de I2C, SPI utiliza las funciones alternativas de los
GPIOs.
Para usar SPI necesitarás 5 pines:
GND: Asegúrate de conectar todos los GND de todos tus
componentes esclavos y los de la Raspberry Pi juntos.
SCLK: reloj del SPI. Conecta todos los pines SCLK juntos.
MOSI: significa Master Out Slave In. Este es el pin para enviar
los datos del maestro al esclavo.
MISO: significa Master In Slave Out. Este es el pin para recibir
datos de un esclavo al maestro.
CS: significa Chip Select. Presta atención aquí: necesitarás un
CS por cada esclavo en tu circuito. Por defecto tienes dos pines
CS (CS0 – GPIO 8 y CS1 – GPIO 7). Puedes configurar más
pines CS de los otros GPIO disponibles.
En tu código, puedes usar la librería spidev para Python, y WiringPi para
Cpp.
La diferencia entre los pines de
Raspberry Pi 3 y los pines de Arduino
A menudo comparamos los pines de la Raspberry Pi 3 con los pines de
las tablas de Arduino. ¡Hasta el punto de que muchas bibliotecas usan el
mismo nombre de función para activar esos pines! Por ejemplo, WiringPi
usa el void digitalWrite(int pin, int value); para establecer el estado
de un GPIO, que es exactamente la misma función en Arduino para
establecer el estado de un pin digital. Pero no es exactamente lo mismo.
En primer lugar, Raspberry Pi tiene un microprocesador, a menudo
ejecutando un sistema Linux (por ejemplo Raspbian), mientras que
Arduino tiene un microcontrolador. Esto es una gran diferencia,
especialmente cuando se consideran las limitaciones del tiempo real.
Además, y eso es algo que no se puede ver en la placa directamente,
muchas funcionalidades de hardware de Arduino no están presentes en
una placa Raspberry Pi.
No tienes pines analógicos en una placa Raspberry Pi. Si quieres usar un
sensor analógico, tendrás que usar un ADC (Convertidor Analógico a
Digital) externo, y tal vez obtener el valor usando el protocolo I2C o SPI.
Además, no hay PWM nativo en la Raspberry Pi. Los PWM son bastante
útiles para controlar componentes con un comando no binario. Puedes
falsificar el PWM desde el software (ej. con WiringPi), pero está claro que
no es recomendable ya que requerirá mucha CPU y no será realmente
rápido.
No haremos la lista completa aquí, pero ya ves la idea. Arduino está
mucho más cerca del hardware que Raspberry Pi, y por lo tanto hay
muchas funcionalidades de hardware nativo que no puedes conseguir en
una placa Raspberry Pi.
Así que, antes de elegir entre esos dos tipos de placas para tu proyecto,
asegúrate de que sabes lo que necesitas: ¿más potencia de cálculo, la
necesidad de usar lenguajes de alto nivel (Raspberry Pi), o algo más
cercano al hardware, con recursos limitados (Arduino)?
Conclusión acerca de los pines de la
Raspberry Pi ·
Bueno, hay muchas cosas que puedes hacer con los pines de la
Raspberry Pi 3.
Lo repetire,ps aquí: nunca se puede ser demasiado cauteloso al
manipular los pines. Un error puede destruir tu tabla en menos de un
segundo. Pero si prestas atención y compruebas todo dos veces, no hay
razón para que quemes nada.
Ahora, si te sientes perdido con tanta información y no sabes por dónde
empezar, aquí tienes una lista de pasos que puedes seguir a partir de
aquí:
Busca algunos ejemplos simples y hazlos, como encender un
LED, leer el valor de un botón, etc. Para eso necesitarás crear
un pequeño circuito en una placa de circuitos, y usarás los
pines con su función principal (GPIO).
Una vez que estés familiarizado con el funcionamiento de los
circuitos básicos (GND, Vcc y pines de comunicación), intenta
conseguir un sensor más complejo, por ejemplo un
acelerómetro I2C, para que puedas medir si tu placa está en
una superficie plana o no.
Después de que sepas cómo comunicarte con un sensor, trata
de comunicarte entre tu placa Raspberry Pi y otra placa
Raspberry Pi/Arduino/Ordenador, usando los 3 protocolos:
UART, I2C, SPI. Aprenderás mucho haciendo eso.
Y entonces, ya no habrá ningún secreto. Búscate un proyecto personal, y
aprenderás más cosas en su desarrollo.