CENTRO DE INVESTIGACIÓN Y DE ESTUDIOS AVANZADOS DEL I.P.N DEPARTAMENTO DE INGENIERÍA ELÉCTRICA SECCIÓN MECATRÓNICA
ASIGNATURA:
TIEMPO REAL CATEDRÁTICO:
DR, GERARDO SILVA NAVARRO
“Raspberry Pi” ALUMNOS: ESCUDERO GÓMEZ ADRIANA PIEDAD HERNÁNDEZ FLORES EFRAÍN PONCE ROJAS FERNANDO HORACIO RODRÍGUEZ CARBAJAL LEONARDO
Contenido INTRODUCCIÓN ................................................................................................................................... 2 HISTORIA ............................................................................................................................................. 2 Pre-lanzamiento .............................................................................................................................. 3 Lanzamiento .................................................................................................................................... 3 HARDWARE ......................................................................................................................................... 4 SoC (ARM vs X86) ............................................................................................................................ 5 CPU .................................................................................................................................................. 5 GPU.................................................................................................................................................. 5 RAM ................................................................................................................................................. 6 Almacenamiento ............................................................................................................................. 6 Salidas Video ................................................................................................................................... 6 Salidas Audio ................................................................................................................................... 6 Bus USB ........................................................................................................................................... 7 Tarjeta de red .................................................................................................................................. 7 Pines de entrada y salida de propósito general (Conector GPIO) ................................................... 7 Energía y Alimentación.................................................................................................................... 7 (ARM vs X86) ................................................................................................................................... 7 S.O. soportados (Linux vs Windows/OS X) ...................................................................................... 8 PYTHON Y RASPBERRY....................................................................................................................... 10 RASPBERRY PI Y LA ELETRONICA DIGITAL ..................................................................................... 11 ACCESORIOS / PERIFERICOS .............................................................................................................. 12 ESPECIFICACIONES TÉCNICAS Y COMPARATIVA ENTRE VERSIONES ................................................. 14 EJEMPLOS BASICOS ........................................................................................................................... 16 Ejemplo 1. configuración de pines GPIO ....................................................................................... 16 Ejemplo 2. Modulación de ancho de pulso (PWM)....................................................................... 18 DIAGRAMAS ESQUEMÁTICOS DE ALGUNAS TARJETAS RASPBERRY PI. ............................................ 22 RASPBERRY PI 1 MODELO A Y B .................................................................................................... 22 RASPBERRY PI MODEL0 B+ ............................................................................................................ 26 RASPBERRY PI 3 MODEL0 B .......................................................................................................... 27
1
INTRODUCCIÓN Raspberry PI es una placa computadora (SBC) de bajo coste, se podría decir que es un ordenador de tamaño reducido, del orden de una tarjeta de crédito, desarrollado en el Reino Unido por la Fundación Raspberry PI (Universidad de Cambridge) en 2011, con el objetivo de estimular la enseñanza de la informática en las escuelas, aunque no empezó su comercialización sino hasta el año 2012. El concepto es el de un ordenador desnudo de todos los accesorios que se pueden eliminar sin que afecte al funcionamiento básico. Está formada por una placa que soporta varios componentes necesarios en un ordenador común y es capaz de comportarse como tal. A la raspberry Pi la han definido como una maravilla en miniatura, que guarda en su interior un importante poder de cómputo en un tamaño muy reducido. Es capaz de realizar cosas extraordinarias. Su sistema operativo oficial es una versión adaptada de Debian, denominada RaspBian, aunque permite otros sistemas operativos, incluido una versión de Windows 10.
HISTORIA Este proyecto fue ideado en 2006 pero no fue lanzado al mercado sino hasta febrero de 2012. Fue desarrollado por un grupo de la Universidad de Cambridge y su misión era fomentar la enseñanza de las ciencias de la computación a los niños. En enero de 2016 Google donó más de 15.000 Raspberry Pi para colegios en Reino Unido. La Raspberry Pi, es una excelente herramienta para aprender electrónica y programación Los primeros diseños de Raspberry Pi se basaban en el microcontrolador Atmel ATmega644. Sus esquemas y el diseño del circuito impreso están disponibles para su descarga pública. 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. La fundación Raspberry Pi surge con un objetivo en mente: Desarrollar el uso y entendimiento de los ordenadores en los niños. La idea es conseguir ordenadores portables y muy baratos que permitan a los niños usarlos sin miedo, abriendo su mentalidad y educándolos en la ética del “ábrelo y mira cómo funciona”. El ideólogo del proyecto, David Braven, un antiguo desarrollador de videojuegos, afirma que su objetivo es que los niños puedan llegar a entender el funcionamiento básico del ordenador de forma divertida, y sean ellos mismos los que desarrollen y amplíen sus dispositivos. El co-fundador de la fundación es Eben Upton, un antiguo trabajador de la empresa Broadcom, el cual es el responsable de la arquitectura de software y hardware de la raspberry pi se puso en contacto con un grupo de profesores, académicos y entusiastas de la informática para crear un ordenador con la intención de animar a los niños a aprender informática como lo hizo en 1981 el ordenador Acorn BBC Micro. La fundación da soporte para las descargas de las distribuciones para arquitectura ARM, Raspbian (derivada de Debian), RISC OS y Arch Linux; y promueve principalmente el aprendizaje del lenguaje de programación Python, y otros lenguajes como Tiny BASIC, C y Perl. 2
Ilustración 1 EBEN UPTON
El primer prototipo basado en ARM fue montado en un paquete 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 Alpha del modelo inicial, el Model A (o modelo A). En diciembre de 2011, 25 placas Beta del modelo B fueron ensambladas y probadas de un total de 100 placas vacías. 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 Linux. Durante la primera semana de diciembre de 2011, se pusieron a subasta diez placas en eBay. Debido al anticipado anuncio de puesta a la venta a final de febrero de 2012, la fundación sufrió un 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, con esto se conseguía un abaratamiento en los costes de producción y acortar el plazo de entrega del producto, ya que, 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 (Modelo B), al mismo tiempo se anunció que el modelo A, que originalmente iba a tener 128 MB de RAM, tendría 256 MB. 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. En los seis meses siguientes llegarían a vender 500.000 unidades. 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 6 de septiembre se anunció que se llevaría la producción de placas al Reino Unido, a una fábrica de Sony y que en ella se producirían 30.000 unidades cada mes, y se crearían 30 nuevos puestos de trabajo. El 4 de febrero de 2013, se lanzó el modelo A, que venía con solo 256Mb de RAM y sin puerto ethernet a un precio más asequible que el modelo B. 3
En diciembre de 2015 se pueden comprar modelos con mejores prestaciones; Raspberry Pi 2 Model B - Placa base (ARM Quad-Core 900 MHz, 1 GB RAM, 4 x USB, HDMI, RJ-45) de Raspberry Pi. Este modelo se puede comprar en Amazon por 41 euros. En febrero de 2016 sale a la venta un nuevo modelo, la versión 3 con las siguientes características: ARM QuadCore 1,2 GHz, 1 GB RAM, 4 x USB, HDMI, RJ-45 y una conectividad inalámbrica integrada de 802.11 b/g/n LAN y Bluetooth.
HARDWARE El diseño general de la Raspberry Pi incluye:
Un Chipset Broadcom BCM2835, que contiene un procesador central (CPU) ARM1176JZF-S a 700 MHz (el firmware incluye unos modos Turbo para que el usuario pueda hacerle overclock de hasta 1 GHz sin perder la garantía), Un procesador gráfico (GPU) VideoCore IV Un módulo de 512 MB de memoria RAM (aunque originalmente al ser lanzado eran 256 MB). Un conector de RJ45 conectado a un integrado lan9512 -jzx de SMSC que nos proporciona conectividad a 10/100 Mbps 2 buses USB 2.0 Una Salida analógica de audio estéreo por Jack de 3.5 mm. Salida digital de video + audio HDMI Salida analógica de video RCA Pines de entrada y salida de propósito general Conector de alimentación microUSB Lector de tarjetas SD
Ilustración 2 Diseño General
Actualmente existen 2 modelos diferentes de Raspberry Pi. El primero, el modelo A, se diferencia del modelo B, en que tiene un solo tiene un puerto USB, carece de controlador Ethernet, tiene 256MB de RAM por los 512MB del otro modelo y por supuesto cuesta menos que el modelo B, el cual tiene dos puertos USB y controlador Ethernet 10/100. A pesar que el Modelo A no tiene un 4
puerto RJ45, se puede conectar a una red usando un adaptador USB-Ethernet suministrado por el usuario. El Raspberry Pi no viene con 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 ordenador. 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.
Ilustración 3 Modelo A
Modelo B
SoC (ARM vs X86) El procesador en el interior de su Raspberry Pi es un procesador multimedia Broadcom BCM2835 system-on-chip (SoC). Esto quiere decir que la mayor parte de los componentes del sistema, incluidos la CPU y la GPU junto con el audio y el hardware de comunicaciones, se encuentran integrados dentro de aquel único componente oculto ubicado justo debajo del chip de la memoria de 512 MB en el centro de la placa. No es sólo el diseño del SoC lo que hace al BCM2835 diferente del procesador de un PC o portátil. Lo que lo hace también diferente es que utiliza una arquitectura de conjunto de instrucciones distinta, conocida como ARM.
CPU La CPU Contiene un ARM1176JZFS, con unidad de coma flotante, que funciona a 700Mhz y es capaz de soportar overclock a 1GHZ en modo “TURBO” que hace que el SoC de más rendimiento sin reducir el tiempo de vida de la placa y sin perder la garantía. La CPU está basada en la versión 6 de la arquitectura ARM, la cual no es soportada por una gran cantidad de distribuciones Linux, incluyendo Ubuntu.
GPU La GPU utilizada es una Dual Core VideoCore IV Multimedia Co-Processor. Es capaz de mover contenidos con calidad Bluray, usando H.264 hasta 40MBits/s. Dispone un núcleo 3D con soporte para las librerías OpenGL ES2.0 y OpenVG. Es capaz de decodificar 1080p30.
5
RAM La memoria RAM es de 512MB de SDRAM (en su modelo B), en un único módulo, el cual, funciona a 400Mhz en su modo normal y alcanzando los 600Mhz en su versión “TURBO”.
Almacenamiento La Raspberry Pi no tiene un disco duro tradicional, para ello dispone de un lector/ranura para memorias SD, un sistema de almacenamiento en estado sólido. El arranque del sistema se hará desde la propia tarjeta SD, con lo que debido a que tiene que albergar todo el sistema operativo, es necesario que la tarjeta sea de al menos 2 GB de capacidad para almacenar todos los archivos requeridos. Están disponibles Tarjetas SD con el sistema operativo precargado en la tienda oficial de la Raspberry Pi, si no es así para poder arrancar el S.O. será necesario primero instalar (flashear) un sistema operativo en la tarjeta antes de poder trabajar con ella. Tras el arranque inicial de la SD se puede trabajar con almacenamiento de algún dispositivo de disco por USB.
Salidas Video Para la salida de video la Raspberry posee un Conector RCA o Video Compuesto (PAL y NTSC), un conector HDMI (rev 1.3 y 1.4) y una Interfaz DSI para paneles LCD. El video compuesto está diseñado para conectar la Raspberry Pi a los antiguos dispositivos de pantalla. Como su nombre lo indica, el conector crea una compuesto de colores que se encuentran dentro de una imagen (rojo, verde y azul) y lo envía por un sólo cable al dispositivo de visualización, comúnmente las viejas TV de tubo de rayos catódicos (CRT). La calidad, sin embargo, no será la mejor. Las conexiones de video compuesto son significativamente más propensas a la interferencia, faltas de claridad y funcionan a una resolución limitada. Una mejor calidad de imagen puede obtenerse usando el conector HDMI (High Definition Multimedia Interface). A diferencia de la conexión analógica de video compuesto, el puerto HDMI proporciona una conexión digital de alta velocidad para mostrar imágenes de píxeles perfectos tanto en monitores de PC como en televisores de alta definición. Al utilizar el puerto HDMI, la Rasberry Pi puede desplegar imágenes a la resolución de 1920×1080 Full HD. A esta resolución, el detalle sobre la pantalla es significativamente superior. La última salida de video que tiene la Raspberry es la conocida como Display Serial Interface (DSI), que se utiliza en los monitores de pantalla plana de las tablets y los smartphones.
Salidas Audio Para la salida de audio posee un conector de audio Jack de 3,5mm, además del propio HDMI. Si se está usando el puerto HDMI de la Raspberry Pi, obtener el audio es sencillo: cuando está configurado apropiadamente, el puerto HDMI transporta ambas señales, la de video y la de audio. Esto significa que conectando un único cable a la pantalla es suficiente para sacar video y audio. Si el display no tiene entrada HDMI se tendría que utilizar la salida de audio Jack.
6
Bus USB El modelo B posee 2 puertos USB 2.0 (vía hub USB integrado), por 1 solo puerto del modelo A.
Tarjeta de red Tenemos a nuestra disposición un conector RJ-45 conectado a un integrado lan9512 -jzx de SMSC que nos proporciona conectividad a 10/100 Mbps. Es posible conectar la raspberry directamente a un PC sin pasar por un router conectando ambos equipos de manera directa con un cable RJ45, sin tener que utilizar un cable cruzado, ya que el conector de red incluye una característica conocida como auto-MDI, lo que le permite reconfigurarse automáticamente. Los modelos actuales de la Raspberry Pi no cuentan con la característica integrada para gestionar redes inalámbricas, pero (igual que con el cable Ethernet añadido en el Modelo A) es posible añadir soporte Wi-Fi a cualquier Raspberry utilizando un adaptador USB para red inalámbrica (incluyendo las del estándar 802.11n).
Pines de entrada y salida de propósito general (Conector GPIO) Posee un conector de GPIO de 8 pines, sin un propósito específico, cuyo comportamiento (incluyendo si es un pin de entrada o salida) se puede controlar (programar) por el usuario en tiempo de ejecución.
Energía y Alimentación La placa carece de botón de encendido y apagado, con lo que la energía le llega mediante un conector micro USB estándar de 5V. El consumo de la placa es de 700mA, (3,5W). Muchos cargadores diseñados para smartphones funcionarán con la Raspberry Pi, pero no todos, ya que, algunos solo suministran hasta 500mA y la Raspberry consume más energía que la mayoría de los dispositivos micro-USB y requiere de al menos 700mA para funcionar.
(ARM vs X86) Desarrollada por Acorn Computers años atrás a finales de 1980, la arquitectura ARM es relativamente poco conocida en el mundo de las computadoras de escritorio. En donde destaca, sin embargo, es en los dispositivos móviles: el teléfono de vuestro bolsillo es casi seguro que cuenta con al menos un núcleo de procesamiento basado en ARM escondido en su interior. La combinación de la arquitectura RISC (Simple Reduced Instruction Set) y su bajo consumo energético lo convierten en la opción perfecta frente a los chips de computadoras de escritorio que demandan altos consumos y arquitecturas CISC (Complex Instruction Set). El BCM2835 basado en ARM es el secreto que explica cómo la Raspberry Pi es capaz de funcionar con tan sólo una fuente de alimentación de 5V 1A suministrada por el puerto micro-USB a bordo. Es también la razón por la cual no hay ningún disipador térmico sobre el dispositivo: el bajo 7
consumo de energía del chip se traduce directamente en muy poco calor residual, incluso durante las tareas de procesamiento más complejas. Todo esto, sin embargo, significa que la Raspberry Pi no es compatible con el software de los PC tradicionales. La mayoría del software para ordenadores de escritorio y portátiles se construyen teniendo en cuenta la arquitectura de conjunto de instrucciones x86, presente en los procesadores como AMD, Intel y VIA. Por consiguiente, este software no funciona en la Raspberry Pi que se basa en la arquitectura ARM. El BCM2835 utiliza una generación del diseño del procesador ARM conocida como ARM11, que a su vez está diseñada en torno a una versión de la arquitectura de conjunto de instrucciones conocida como ARMv6. Vale la pena recordar que ARMv6 es una arquitectura ligera y potente, pero tiene un rival en la arquitectura más avanzada, el ARMv7 utilizada por la familia de procesadores ARM Cortex. El software desarrollado para la ARMv7, al igual que el desarrollado para la x86, es por desgracia incompatible con el BCM2835 de la Raspberry Pi, aunque los desarrolladores generalmente pueden convertir el software para adecuarlo. Esto no quiere decir que vaya a estar limitada en sus opciones. Como se descubrirá más adelante, hay un montón de software disponible para el conjunto de instrucciones ARMv6, y en tanto que la popularidad de la Raspberry Pi sigue aumentado, el software disponible va a seguir creciendo.
Ilustración 4 Procesador ARM
S.O. soportados (Linux vs Windows/OS X) Otra diferencia importante entre la Raspberry Pi y el PC de escritorio o portátiles, aparte de su tamaño y su coste, es el sistema operativo (el software que permite controlar el ordenador) que utiliza. La mayoría de los PCs y portátiles disponibles hoy en día funcionan con alguno de estos dos sistemas operativos: Microsoft Windows o Apple OS X. Ambas plataformas son de código cerrado, creados en un ambiente reservado utilizando técnicas patentadas. Estos sistemas operativos son conocidos como de código cerrado por la naturaleza de su código fuente, es decir, la receta en 8
lenguaje de computadora que le dice al sistema que hacer. En el software de código cerrado, esta receta es mantenida como un secreto muy bien guardado. Los usuarios pueden obtener el software terminado, pero nunca ver cómo está hecho. La Raspberry Pi, por el contrario, está diseñada para ejecutar el sistema operativo GNU/Linux. A diferencia de Windows u OS X, Linux es de código abierto. Esto quiere decir que es posible descargar el código fuente del sistema operativo por completo y hacer los cambios que uno desee. Nada es ocultado, y todos los cambios hechos están a la vista del público. Este espíritu de desarrollo de código abierto ha permitido a Linux rápidamente ser modificado para poder ejecutarse sobre la Raspberry Pi, un proceso conocido como portabilidad. Varias versiones de Linux (conocidas como distribuciones) han sido portadas al chip BCM2835 de la Raspberry Pi, incluyendo Debian, Fedora Remix y Arch Linux. Las distintas distribuciones atienden diferentes necesidades, pero todas ellas tienen algo en común: son de código abierto. Además, por lo general, todas son compatibles entre sí: el software escrito en un sistema Debian funcionará perfectamente bien en uno con Arch Linux y viceversa. Igual que con la diferencia entre la arquitectura ARM y la x86, hay un punto clave que hace la diferencia práctica entre Windows, OS X y Linux: el software escrito para Windows u OS X no funciona en Linux. Afortunadamente, hay un montón de alternativas compatibles para la gran mayoría de los productos de software comunes y lo mejor, casi todos son de libre uso y de código abierto como lo es el propio sistema operativo. Actualmente existen todos los siguientes S.O. compatibles, ya sean S.O. completos o versiones modificadas/portadas, que funcionan perfectamente en el dispositivo Raspberry Pi: Sistemas operativos completos: Linux : o Android97 o Arch Linux ARM o Debian Whezzy Soft-Float, versión de Debian sin soporte para coma flotante por hardware o Firefox OS o Gentoo Linux 98 o Google Chromium OS o Kali Linux o Open webOS99 o PiBang Linux100 , distribución Linux derivada de Raspbian con diferente escritorio y aplicaciones o Pidora, versión Fedora Remix optimizada101 o QtonPi, distribución linux con un framework de aplicaciones multiplataforma basado en Qt framework o Raspbian102 , versión de Debian Wheezy para ARMv6 con soporte para coma flotante por hardware o Slackware ARM, también conocida como ARMedslack o Plan 9 from Bell Labs103 104
9
RISC OS 52 Unix: o FreeBSD105 o NetBSD106 107
PYTHON Y RASPBERRY Python es el lenguaje de programación que es recomendado por los fundadores de la Raspberry Pi, ya que al ser un lenguaje de programación de alto nivel, es un lenguaje de sintaxis sencilla y clara que puede venir bien en los temas de educación. Otra de las razones, por las cuales fue adoptado como lenguaje de programación que utiliza la Raspberry Pi para aprender a programar, ha sido la gran documentación y herramientas que tiene, además como ya habíamos comentado es muy fácil de aprender. Es un lenguaje interpretado o de script, fuertemente tipado y dinámico, es multiplataforma y es orientado a objetos. Además, es un lenguaje bastante potente y con muchas librerías que nos ayudan a realizar casi cualquier cosa. Python viene instalado en la distribución Raspbian, al igual que IDLE, un entorno de desarrollo integrado para programar en lenguaje Python.
Ilustración 5 IDLE viene instalado en la mayoría de distribuciones para Raspberry
10
RASPBERRY PI Y LA ELETRONICA DIGITAL Una de las grandes bondades de la Raspberry PI, es su puerto GPIO, puertos de entrada-salida programables que pueden ser controlados por el usuario, vamos que podemos aplicar 0 ó 1 cuando nos plazca, además claro está, poder leer en qué estado se encuentran los mismos. Así pues es posible conectarle todo tipo de dispositivos para realizar pruebas y prácticas de electrónica digital, como pueden ser, diodos LED, displays, LCD, relés, etc.
Ilustración 6 Raspberry PI conectada a un display de 7 segmentos
Una de las formas de programar el puerto GPIO de la raspberry más utilizado y sencillo, es hacer por medio de QT creator. Qt es una biblioteca multiplataforma ampliamente usada para desarrollar aplicaciones con interfaz gráfica de usuario, como herramientas para la línea de comandos y consolas para servidores.
Ilustración 7 Interfaz de QT creator
Pero también es posible controlar el puerto GPIO por ejemplo, directamente con python si no necesitamos ninguna interfaz gráfica, las librerías (python) para el control del puerto GPIO vienen ya pre-instaladas en el sistema operativo Raspbian.
11
ACCESORIOS / PERIFERICOS Gracias al éxito y las ventas Raspberry PI, numerosos 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 LEDs, interruptores, señales analógicas, sensores, y otros dispositivos. También incluye un controlador opcional para Arduino para poder interaccionar con el Raspberry Pi. Muchos fabricantes ofrecen carcasas de todo tipo, que se pueden comprar en tiendas online por todo internet, para proteger la Raspberry y no dejarla como una placa desnuda.
Ilustración 8 Carcasa transparente para Raspberry PI
En noviembre del 2012, se presentó un módulo de cámara para Raspberry PI, con un sensor de 5 megapixels 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. Más tarde, a finales de octubre de 2013 se puso a la venta también, un módulo de cámara de infrarrojos. La cámara. Al igual que la placa, viene sin carcasa protectora.
Ilustración 9 Cámara para Raspberry PI
12
También es posible aumentar las capacidades de Raspberry PI comprando placas de expansión. Se conectan al socket de la Raspberry Pi. Una serie de pines en la placa se utilizan para configurar la placa según las necesidades, ya sea para detectar pulsadores, voltajes analógicos, controlar motores o relés por ejemplo. Estas placas ofrecen mucho potencial para sacarle más partido a Raspberry Pi.
Ilustración 10 PIaca de expansión Getboard para Raspberry PI
Además la reciente aparición de Raspberry Pi ha supuesto una auténtica revolución para proyectos que necesitan mucha potencia y complejidad, como puede ser hacer pequeños robots. La Raspberry dispone de un conector que permite conectarle hardware externo pero no permite conectar directamente motores. Eso es precisamente lo que hace esta placa, la RaspiRobot, permite conectar hasta 2 motores de corriente continua de forma fácil y rápida convirtiendo Raspberry Pi en una potente controladora de robots.
Ilustración 11 Placa RaspiRobot para Raspberry PI
13
ESPECIFICACIONES TÉCNICAS Y COMPARATIVA ENTRE VERSIONES Raspberry Pi 1
Raspberry
Raspberry
Raspberry Pi
Raspberry Pi 3 Modelo
Modelo A
Pi 1 Modelo
Pi 1 Modelo
2 Modelo B
B
B
B+
Broadcom BCM2835
Broadcom
Broadcom BCM2837
(CPU + GPU + DSP+ SDRAM + puerto USB)
BCM2836
(CPU + GPU + DSP +
(CPU + GPU +
SDRAM + Puerto USB
SoC
DSP + SDRAM + Puerto USB)
CPU:
ARM 1176JZF-S a 700 MHz (familia ARM11)
900 MHz
1.2GHz 64-bit quad-
quad-core
core ARMv8
ARM Cortex A7
Juego de
RISC de 32 bits
instrucciones:
GPU:
Broadcom VideoCore IV, OpenGL ES 2.0, MPEG-2 y VC-1 (con licencia), 1080p30 H.264/MPEG-4 AVC
Memoria
256 MiB(compartidos
512 MiB (compartidos con
(SDRAM):
con la GPU)
la GPU) desde el 15 de
1 GB (compartidos con la GPU)
octubre de 2012
Puertos USB2.0:
1
2 (vía hub
4
USB integrado)
Entradas de
Conector MIPI CSI que permite instalar un módulo de cámara desarrollado por la RPF
vídeo:
14
Salidas de vídeo:
Conector RCA (PAL y NTSC), HDMI (rev1.3 y 1.4), Interfaz DSI para panel LCD
Salidas de audio:
Conector de 3.5 mm, HDMI
Almacenamiento
SD / MMC / ranura para SDIO
MicroSD
integrado:
Conectividad de
Ninguna
10/100 Ethernet (RJ-45) via hub USB
10/100 Ethernet (RJ-45)
red:
vía hub USB, Wifi 802.11n, Bluetooth 4.1
Periféricos de
8 x GPIO, SPI, I²C, UART
17 x GPIO y un bus HAT ID
bajo nivel:
Reloj en tiempo
Ninguno
real:
Consumo energético:
Fuente de
500 mA, (2.5 W)
700 mA,
600 mA,
(3.5 W)
(3.0 W)
800 mA, (4.0 W)
5 V vía Micro USB o GPIO header
alimentación:
Dimensiones:
85.60mm × 53.98mm (3.370 × 2.125 inch)
Sistemas
GNU/Linux: Debian (Raspbian), Fedora (Pidora), Arch Linux (Arch Linux ARM), Slackware Linux.
operativos soportados:
RISC OS
15
EJEMPLOS BASICOS Ejemplo 1. configuración de pines GPIO El objetivo de este ejemplo es configurar los pines GPIO de Raspberry PI 3 modelo B; para ello es necesario instalar la librería RPi.GPIO y se utilizara Python para programar las salidas de los pines.
Los chips y circuito de la Raspberry PI 3 modelo B funcionan con 3.3 volts, si se llegara a conectar un sensor que envié una señal de 5v a través de los GPIO es probable que la tarjeta sufra una descompostura. Cada uno de los pines tiene dos nombres, según su sistema de numeración: BCM y Board. A continuación, se muestra un esquema de los puertos de la tarjeta.
Para poder ubicar cada uno de los pines se tiene que el pin 1 será el que esté más cerca de la tarjeta SD En especial para este ejemplo es necesario contar con
Una Raspberry PI 3 modelo B. Con Raspbian instalado o alguna versión de Linux. 16
Cable Ethernet o antena WiFi Adaptador de corriente LED, pulsadores y resistencia de 150 ohmios aproximadamente. Periféricos (cable, ratón, pantalla, etc.)
Como primer punto se tiene la comprobación de la instalación de la librería RPi.GPIO y saber que versión se tiene instalada, se tiene que abrir la terminal y escribir lo siguiente: Sudo Python Dentro de la consola de Python se comprueba la versión Import RPi.GPIO RPi.GPIO.VERSION Si no se tiene instalada la librería o se tiene una versión sin actualización se puede obtener la instalación de la siguiente manera sudo apt-get update sudo apt-get upgrade Para actualizar la versión de la librería Wget https://pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO-0.5.4.tar.gz tar zxf RPi.GPIO-0.5.4.tar.gz cd RPi.GPIO-0.5.4.tar.gz sudo python setup.py install Para interactuar con los pines se tiene el siguiente código y se necesita el montado del circuito mostrado en la ilustración, el código mostrado en la imagen encenderá y apagara LED.
Para ejecutar el programa tenemos que poner la siguiente instrucción 17
sudo python blink.py Si está todo bien, deberíamos ver como se apaga y se enciende el LED en intervalos de un segundo. Esto significa que la librería funciona correctamente y está todo preparado para realizar proyectos de mayor complejidad.
Ejemplo 2. Modulación de ancho de pulso (PWM)
En la figura anterior se muestra el circuito en el cual, si el interruptor está cerrado de forma continua durante un período de tiempo, el LED estará en ON durante este tiempo de forma continua. Si el interruptor está abierto por un segundo, entonces estará el LED estará en OFF. Ahora la proporción del tiempo en que el LED está encendido durante el tiempo total se denomina el ciclo de trabajo, y se puede calcular de la siguiente manera: 𝐶𝑖𝑐𝑙𝑜 𝑑𝑒 𝑡𝑟𝑎𝑏𝑎𝑗𝑜 = 𝑡𝑖𝑒𝑚𝑝𝑜 𝑑𝑒 𝑠𝑢𝑏𝑖𝑑𝑎 / (𝑡𝑖𝑒𝑚𝑝𝑜 𝑑𝑒 𝑠𝑢𝑏𝑖𝑑𝑎 + 𝑡𝑖𝑒𝑚𝑝𝑜 𝑑𝑒 𝑎𝑝𝑎𝑔𝑎𝑑𝑜) 𝐶𝑖𝑐𝑙𝑜 𝑑𝑒 𝑡𝑟𝑎𝑏𝑎𝑗𝑜 = (1 / (1 + 1)) = 50% Así la tensión de salida promedio será 50% de la tensión de la batería. Se va a programar en la Raspberry PI 3 modelo B un PWM y se conectará un LED para mostrar su trabajo.
Hay 40 pines de salida GPIO en la Raspberry PI 3 modelo B. Pero de los 40, sólo 26 pines GPIO (GPIO2 a GPIO27) se pueden programar. 18
Componentes necesarios para la implementación Aquí estamos utilizando Raspberry Pi 3 Modelo B con Raspbian. Todos los requisitos básicos de hardware y software se encuentran en la tarjeta, Aparte de la tarjeta solo se necesita
clavijas de conexión
220Ω o 1KΩresistor
LED
el tablero de pan
Como se muestra en el diagrama del circuito que se necesita conectar un LED entre el PIN35 (GPIO19) y PIN39 (tierra). Como se dijo anteriormente, no podemos llegar a más de 15 𝑚𝐴 de cualquiera de estos pines, por lo que para limitar la corriente estamos conectando una resistencia de 220Ω o 1 kW en serie con el LED.
Funcionamiento general del proyecto: Una vez que el circuito se encuentra cableado y la tarjeta conectada, se puede encenderla Raspberry Pi 3 Modelo B y se puede empezar a escribir el programa en pyhton y ejecutarlo. Para la ejecución del programa es necesario la aclaración de la implementación de algunos comandos que se van a utilizar en el programa en Python. De la misma forma que en el ejemplo anterior vamos a importar el archivo de la biblioteca de GPIO, por debajo de la función nos permite programar pines GPIO de la Frambuesa Pi 3 Modelo B. También está cambiando el nombre "GPIO" a "IO", por lo que en el programa cada vez que queremos hacer referencia a los pines GPIO que vamos a utilizar la palabra 'IO'.
Importación RPi.GPIO como IO Podemos referirnos a los pines GPIO de la Raspberry Pi 3 Modelo B, ya sea por el número de pin a bordo o por su número de función. En el diagrama pasador, se puede ver 'PIN 35' en el tablero es 'GPIO19'. Así que decimos aquí tampoco vamos a representar el pasador aquí por "35" o "19". 19
IO.setmode (IO.BCM) Estamos estableciendo GPIO19 (o PIN35) como pin de salida. Vamos a obtener una salida PWM de este pin. IO.setup (19, IO.IN)
Después de configurar el pin como salida tenemos que configurar el pin como pin de salida PWM,
p = IO.PWM (canal de salida, la frecuencia de la señal PWM) El comando anterior es para configurar el canal y también para establecer la frecuencia de la señal PWM. 'P' aquí es una variable que puede ser cualquier cosa. Estamos utilizando GPIO19 como el canal de salida PWM. 'Frecuencia de la señal PWM ha sido elegido 100, El siguiente comando se utiliza para iniciar la generación de la señal PWM, "ciclo de trabajo" se utiliza para configurar el giro en relación, 0 significa que el LED se encenderá el 0% del tiempo, el 30 significa que el LED se encenderá el 30% de las veces y 100 significa por completo en .
p.start (ciclo de trabajo) Este comando se ejecuta el bucle 50 veces, siendo X incrementado 0-49. for x in range (50): Mientras que 1: se utiliza para el bucle infinito. Con este comando las sentencias dentro de este bucle se ejecutarán de forma continua. Con el programa que está siendo ejecutado, el ciclo de trabajo de los aumentos de señal PWM. Y luego disminuye después de alcanzar el 100%. Con un LED conectado a este PIN, el brillo de los LED aumenta primero y luego disminuye.
20
Código: importación RPi.GPIO como IO #calling archivo de cabecera que nos ayuda a usar GPIO de PI tiempo de importación tiempo #calling para proporcionar los retrasos en el programa IO.setwarnings (Falso) #No no mostrar ninguna advertencia IO.setmode (IO.BCM) #we está programando el GPIO por números de pin de BCM. (PIN35 como 'GPIO19') IO.setup (19, IO.OUT) # inicializar GPIO19 como una salida. p = IO.PWM (19100) # GPIO19 como salida PWM, con frecuencia de 100 Hz p.start (0) #generate señal PWM con ciclo de trabajo 0% mientras que 1: #execute bucle infinito for x in range (50): #execute bucle de 50 veces, siendo X incrementado 0 a 49. ciclo de trabajo p.ChangeDutyCycle (x) #Cambiar para variar el brillo del LED. time.sleep (0,1) #sleep para la segunda 100m for x in range (50): #execute bucle de 50 veces, siendo X incrementado 0 a 49. p.ChangeDutyCycle (50-x) #Cambiar ciclo de trabajo para cambiar el brillo de los LED. time.sleep (0,1) #sleep para la segunda 100m
21
DIAGRAMAS ESQUEMÁTICOS DE ALGUNAS TARJETAS RASPBERRY PI. RASPBERRY PI 1 MODELO A Y B
22
23
24
25
RASPBERRY PI MODEL0 B+
26
RASPBERRY PI 3 MODEL0 B
27