Proyectos Raspberry Pi • HARDWARE
• un punto de acceso inalámb acceso inalámbrico rico y • una unidad unidad empot empotrrada para controla para controlarr la tem te mperatu peraturra. El pri primer proy proyecto es un ejemplo ejemplo de com como el sist sistema de Raspberr aspberry y Pi sirve para sirve para sus sustituir un un ordenador ordenador de so sobremes bremesa a estánd estánda ar. Los dos dos últimos últimos ejemplos ejemplos muestran muestran a Raspb Rasp berry Pi co como siste sistema empotrado, empotrado, lo que req requerirá uns uns mínimos mínimos conocimiento conocimientoss de prog programació ramación, n, pero, pero, también también,, nos da da una idea idea de la versa versatilidad de este pequeño pequeñ o y pode poderoso min mini-orden i-ordena ador. Tal Tal vez los tres ejemplos ejemplos nos ayuden a imaginar otros otros proyectos proyectos DIY que se pueden crear con nuestro con nuestro propio Raspberry Raspberry P Pi. i.
E v g e n i y a U v a r o v a , 1 2 3 R F . c o m
La lista lista d de e la co com mpra
Explorando el Raspberry Pi a través de proyectos reales
2
Pi
El ordenador Raspberry Pi, formado por una única placa del tamaño de una tarjeta de crédito, facilita la experimentación en sistemas Linux empotrados. Mostraremos algunos ejemplos prácticos de cómo utilizar el Raspberry Pi en un entorno cotidiano. POR WERNER HEIN l ingeniero británico Eben Upton y su equipo de hackers de hardware iniciaron el proyecto Raspberry Pi como un medio para poner tecnología informática al alcance de jóvenes interesados en estos temas [1]. El objetivo era desarrollar y comercializar un ordenador de una sola placa del tamaño de una tarjeta de crédito y compatible con el, a menudo escaso, presupuesto del grupo objetivo (véase el cuadro “Historia”). Si te ves a ti mismo recordando los primeros equipos caseros de los 80, puede que formes parte del público al que va dirigido. El objetivo explícito de los fundadores era volver a colonizar los sótanos, garajes y aulas con el espíritu de la generación que creció con c on el Atari 400/800, ZX80/8 ZX80/ 81 o VIC20/C64. VIC20/ C64. Casi un año después de que apareciese Raspberry Pi, podemos echar la vista atrás para repasar lo que ha pasado entre la primera serie de aproximadamente 10.000 dispositivoss y la situación actual, en la que dispositivo
E
se acerca al millón de dispositivos adquiridos: ¿qué hace que este proyecto sea tan exitoso? ¿Qué capacidades ofrece a través de su hardware? ¿Qué es posible y qué no es (todavía) posible? Este artículo explora el sistema Raspberry Pi a través de tres proyectos reales: • un sistema sistema multimedia multimedia de reproduc reproducción ción de vídeo.
En un pri principio, los diseñadores diseñadores habían previsto dos dos modelos modelos A y B, que se se diferencian re ncian pr principalm incipalmente ente en el número número de puertos pu ertos USB USB (uno o dos), la d la disponib isponibiilidad de un puerto puerto Ethern Ethernet y, por por supues supuestto, el precio pre cio (25/3 (25/35 $). En En este mo momento, sólo está est á disponi disponible el modelo modelo B. B. Podéis consulttar la Tabla sul Tabla 1 para para ver un resume resumen n de los compone omponen ntes del Raspberr aspberry y Pi Pi.. Para poner en march marcha el Raspberry Raspberry Pi Pi (o Raspii para abr Rasp abreviar), es es necesar necesariio hacer una una lista de los com component ponentees básicos. básicos. En Inte Internet hay hay más consejos sobre operacion operaciones es avanza avanz adas [2] [3]. En la actualida actualidad, d, sólo do dos distribuidores distrib uidores globales tienen la tarjeta en en su catálogo catálogo [4] [5]. Lo habitual habitual es que ahora ahora sólo haya haya que esperar esperar un un par de semanas semanas,, aunque en la primaver aunque primavera a de 2012 2012 no era extraño un plazo de entreg entrega de unos unos meses. Además Adem ás de la propia pl placa, se necesitan necesitan los siguie siguientes component componentees: • Una fuente fuente de aliment alimenta ación USB USB de al menos 700 mA. mA. Si deseas dese as añadi añadir hardware ad adicional a través de de USB, se se debe planear por lo menos menos 1 am amp. • Una tarj tarjeta SD (H (HC) con al menos menos 2 GB de capac capacidad, sin sin embarg embargo, o, sería mejor
Historia En 2006, Eben Upton y su equipo desa rrollaron los primeros conceptos para el Raspberry Pi basado en el ATmega de Atmel. La idea de conseguir que los jóvenes se interesaran por el mini-ordenador ya formaba parte del programa. En 2009, los miembros establecieron oficialmente la Raspberry Pi Foundation. En agosto de 2011, salió de producción la serie alfa, alrededor de 50 tarjetas. Sirvieron principalmente como plataforma para los desarrolladores, para la depuración y para fines demostrativos. En
W W W . L I N U X - M A G A Z I N E . E S
diciembre de 2011, le siguieron la serie beta de 25 tarjetas, que ya se basaban en el diseño de producción. Los desarrolladores eliminaron los defectos anteriores. En enero de 2012 se vendieron en una subasta en línea 10 tarjetas de esta serie beta por un importe de 16.336 £. El 29 de febrero de 2012, a las 7:00 am, CET, los servidores web de la fundación y de las dos distribuidoras se bloquearon en pocos minutos por el aluvión de solicitudes. Muchos clientes esperaron durante horas para realizar una preorden.
Número 91
61
HARDWARE • Proyectos Raspberry Pi
Tabla 1: Datos Técnicos de Raspberry Pi
Comenzando
Existe una distribución Linux basada Broadcom BCM2835 (sistema en un chip) SoC en Debian conocida ARM1176JZF-S, 700 MHz CPU como Raspbian que Broadcom VideoCore IV (OpenGL ES 2.0, GPU está diseñada para OpenVG, 1080p30, H.264 codificado/decodificador perfil alto) Raspberry Pi para dar servicio como RAM 256 MByte SDRAM sistema operativo Puertos 2 x USB 2.0 USB de a bordo. La funEthernet 1 x 10/100 Mbit/s dación Raspberry Pi SD/MMC 1 x slot recomienda la verAudio 1 x salida estereo analógica sión Raspbian 1 x salida compuesta, 1 x salida HDMI Vídeo “Wheezy” [7], que es la utilizada en este taller. Listado 1: Configurar el Reproductor de Vamos a comenVídeo zar por descargar $ sudo apt-get sshfs $ sudo adduser pi fuse el archivo de ima$ mkdir myVideos gen Raspbian $ sshfs username@host_name:/directory_name myVideos “Wheezy”, que es una imagen del sis4GB. Dependiendo de lo que pienses tema completo que consta de una partihacer, todavía podría ser insuficiente. ción de arranque de 60 MB y un sistema Debido a que el sistema también se de archivos raíz de alrededor de 2 GB. encuentra en la tarjeta SD, es aconsejaDescomprimimos el archivo y lo movemos ble elegir una tarjeta con una velocidad a una tarjeta SD con el siguiente comando: de lectura y escritura alta. $ sudo dd bs = 1M U • Para el acceso inalámbrico sería práctico if=2012-08-16-U un adaptador WLAN en forma de stick wheezy-raspbian.img U USB. Pero en la práctica, un adaptador of=SD_card_device_U WLAN USB es a menudo un factor sigfilename nificativo en el consumo de energía. Si estás considerando el uso de un adaptador USB, asegúrate de que el controlaAhora, conectamos la tarjeta SD, el dor es compatible y elige un diseño delteclado, el ratón y el monitor al sistema gado que no bloquee el segundo puerto Raspberry Pi y lo iniciamos, conectando la USB. fuente de alimentación USB. Aparece • Teniendo en cuenta el bajo número de entonces el menú de configuración y si no puertos USB, un teclado y un ratón estás usando un teclado estándar inglés, lo inalámbricos son una inversión que mejor es cambiar primero las valores del merece la pena y que también ahorraría menú configure-key-board y change_locale una carga innecesaria sobre los limitapara el teclado y el idioma que prefieras, dos recursos del adaptador de corriente ya que, de lo contrario, surgirán problemas USB. tan pronto como se solicite el inicio de Además de estos elementos, también se sesión. El nombre de usuario por defecto necesitan diferentes cables en función es pi, la contraseña es raspberry. del uso previsto, tales como HDMI o Otros elementos útiles del menú son Ethernet. En cuanto al cable HDMI, el change_timezone , para establecer la zona mejor es el más corto. Tienes la opción horaria correcta; ssh para permitir el de aumentar la salida del driver, pero acceso seguro a la terminal a través de la también aumentará el consumo de enerred y expand_rootfs, para cambiar el gía. Si planeas escuchar música o ver tamaño del sistema de archivos raíz de vídeos, también necesitarás auriculares o 2GB por el tamaño real de la tarjeta SD. altavoces. Por último, debemos actualizar el sistema El tercer proyecto (un controlador de a la típica manera de Debian: temperatura empotrado) utiliza una tarjeta $ sudo apt-get update de expansión que requiere algún hardware $ sudo apt-get upgrade adicional [6]. Componente
62
Número 91
Tipo
W W W . L I N U X - M A G A Z I N E . E S
Podemos iniciar la herramienta de configuración en cualquier momento usando sudo raspi-config .
Proyecto 1: Reproducción de vídeo Al teclear startx aparecerá el escritorio gráfico LXDE, que está optimizado para los sistemas ligeros. Reproducir un vídeo de alta definición es sin duda la prueba definitiva para el hardware. Los reproductores de vídeo habituales, sin embargo, no son de ayuda, porque la GPU de la tarjeta está optimizada para decodificar datos de audio y vídeo. En consecuencia, se necesita un reproductor que utilice la propia biblioteca de programas de Broadcom (que se encuentra en /opt/vc ). En la actualidad, el único que hace eso es el programa pre-instalado de línea de comandos omxplayer [8]. Si es posible, basta con montar el directorio que contiene los archivos a través de la red. NFS ofrece un acceso más rápido a su colección de vídeo, pero SSHFS es menos complicado. Los paquetes apropiados, se instalan como se muestra en el Listado 1. A continuación, iniciamos la reproducción con la orden omxplayer . Tras una breve sacudida de la imagen y el sonido, el software reproduce el vídeo de prueba de alta definición en formato 720p con una pista de audio Dolby Digital 5.1 –, mezclado a dos canales, por supuesto – sin sobresaltos. Y eso es todo sobre el espartano Omxplayer. El programa demuestra tener unas capacidades impresionantes para decodificar audio y vídeo, pero nada más. También hay dos inconvenientes más: la biblioteca de vídeo mencionada anteriormente no es software libre y se deben comprar licencias para los formatos MPEG-2 y VC-1. Por otro lado, el consumo de energía, es sorprendentemente bajo: la carga media, mientras se renderizaba el vídeo HD, fue de sólo 3,8 vatios, a pesar de la difícil tarea de transmitir a través de la red. Los programas Omxplayer, SSH y SSHFS representan la mayor carga para la CPU y la memoria, mientras que el reproductor por si solo acapara el mayor consumo. Sin embargo, si deseamos reproducir vídeo HD con 1080i o 1080p, es importante conectar la unidad de red a través de NFS.
Los sistemas empotrados El segundo y tercer proyecto emplean Raspberry Pi como un sistema empotrado conectado a una red local, sin teclado,
Proyectos Raspberry Pi • HARDWARE
Habilitación de la interfaz serie Para equipar al Raspberry Pi con una interfaz serie, es necesario primero realizar unos cuantos retoques. Las señales TXD y RXD del UART del SoC se envían a los pines 8 y 10 de la P1 del conector de dos filas entre la salida de TV y la ranura para tarjeta SD (Figura 1). Sin embargo, las señales se encuentran todavía con un nivel de E/S de la SoC a 3,3 voltios. Con un cambiador de nivel, se puede modificar al estándar serie RS232. Para ello, podemos utilizar, por ejemplo, el IC MAX3232CP. Como programa de terminal se puede utilizar Minicom en el PC. Con el
comando minicom-s , podemos realizar los mínimos cambios necesarios en la configuración. Por ejemplo, el puerto serie puede ser representado por cualquiera de los archivos de dispositivo /dev/ttySnumber o /dev/tty-USBnumber . La velocidad de datos (115200 bps) y el formato de datos (8N1) están predefinidos. Asegúrate de que el software no use el control de flujo de hardware ni control de flujo de software. El comando minicom-o impide que el programa de ejecución presente las secuencias de inicialización en el arranque y se conecta directamente a la consola.
ratón o monitor, pero con acceso a través de LAN/WLAN. En tales sistemas, se pueden leer los mensajes de inicio a través de una terminal conectada al puerto serie. Si se produce un error en la configuración de red, no se podrá acceder al sistema a través de SSH, así que conectarse directamente a través de un monitor y un teclado es la única manera de iniciar sesión en el sistema y corregir el error. Por tanto, haríamos bien en activar la interfaz serie (véase el cuadro titulado “Habilitación de la interfaz serie “). El acceso a través de la red con SSH debe ser siempre la primera elección, ya que el acceso a través de la interfaz serie sólo se debe utilizar como una puerta trasera para emergencias. El siguiente paso en la construcción del sistema empotrado es la creación de una conexión de red. En este ejemplo, voy a la ranura salida de TV y conectar a través de WLAN. La instalación Figura 1: Entre la para la tarjeta SD, se encuentra el conector predeterminada de Raspbian ya contiene por el que la placa envía las señales TXD y los paquetes de firmware de los stick RXD por una interfaz serie. WLAN más populares, así como el programa cliente wpa_supplicant . Para ver si el stick WLAN está activo, conectamos el hardware y buscamos la correspondiente reacción del kernel en el syslog. Ahora lo único que queda por hacer es configurar wpa_supplicant para punto de acceso. En una red con un servidor DHCP en el router, encontraremos los datos esenciales en el informe proFigura 2: El Raspberry Pi funcionando como punto de acceso, con porcionado por los escaneos con iwlist . A un consumo de tan sólo 3,5 vatios.
W W W . L I N U X - M A G A Z I N E . E S
continuación, modificamos el archivo de configuración /etc/wpa_supplicant/wpa_supplicant.conf , como se muestra en el Listado 2, y /etc/network/interfaces, como se muestra en el Listado 3. Finalmente, iniciamos la conexión con sudo ifup wlan0.
Proyecto 2: Punto de acceso Raspberry Pi también puede servir como un punto de acceso por si mismo (figura 2). En ese caso, simplemente enviamos todo lo que reciba el stick WLAN directamente al puerto LAN, como una especie de puente. Es por eso que esta configuración se denomina “modo puente”. De esta manera, podemos aumentar el alcance de una red inalámbrica existente. La configuración se realiza en dos pasos. En el primer paso, se configura el acceso directo WLAN con el demonio hostapd. Sin embargo, hay que tener en cuenta que hostapd no es totalmente compatible con todos los sticks WLAN. Habrá que consultar los recursos en línea [9] para obtener una lista del hardware compatible. A continuación, en el segundo paso, debemos configurar el reenvío de paquetes entre las dos interfaces. Para instalar los paquetes, es necesario teclear: $ sudo apt-get installU hostapd bridge-utils
Configuramos el punto de acceso WLAN en tres pasos: primero, insertamos la siguiente línea en /etc/default/hostap: DAEMON_CONF=U /etc/hostapd/hostapd.conf
A continuación, añadimos el contenido del listado 4 en el archivo /etc/hostapd/hos-
Listado 2: Modificar el archivo de Configuración ctrl_interface=/var/run/wpa_supplicant eapol_version=1 ap_scan=1 network={ ssid=”(E)SSID” scan_ssid=1 proto=WPA (or RSN for WPA2) key_mgmt=WPA-PSK pairwise=TKIP (or CCMP) group=TKIP (or CCMP) psk=”key” }
Número 91
63
HARDWARE • Proyectos Raspberry Pi
fue de entre 3,5 y 4 vatios.
Proyecto 3: Controlador de temperatura Además de servir como un punto de acceso flexible, Raspberry Pi también es excelente para el control de procesos sencillos. En el siguiente ejemplo se toman mediciones cíclicas de la temperatura ambiente y, en Figura 3: El Raspberry Pi con una tarjeta de expansión como con- función del valor, se trol de temperatura. La luz verde de la tarjeta de expansión con- señala el resultado firma que la temperatura está por debajo de 22 grados centígra- visualmente con dos dos. El IC LM75 sobresale de la placa del sensor de cuatro cables. LED. A temperaturas El chip de 16-pines es el transceptor serie RS232 MAX-3232CPE. superiores de 25 grados centígrados, el contapd.conf , si es necesario, modificándolo trolador enciende el LED rojo, a menos de para que se ajuste al entorno local. Un 22 grados centígrados, se enciende el LED ejemplo de configuración para el archivo verde. Ambas luces se encienden si el /etc/network/interfaces se encuentra en el valor está entre las dos (Figura 3). Por Listado 5. El Listado 6 muestra cómo inisupuesto, este proyecto solamente preciar el punto de acceso y el puente de red. tende ser un experimento como prueba de El consumo de energía operando la LAN concepto. En una verdadera aplicación del es menor. Dependiendo de la distancia mundo real, el controlador podría realizar entre los puntos de acceso WLAN y el alguna otra acción más, como encender la volumen de datos transferido, el consumo calefacción o cerrar las cortinas, en vez de de energía para un cliente WLAN o punto encender solamente un LED. de acceso fluctúa entre 3,3 y 3,8 vatios, La unidad de control de temperatura mientras que en la operación LAN, el conrequiere algo de hardware adicional, que sumo fue de alrededor de 2,9 vatios. Si ocupa una tarjeta de expansión aparte. ambas interfaces estaban activas, el valor Necesitaremos los siguientes componentes: el IC LM75 como sensor de temperaListado 3: Modificar /etc/network/ tura y el IC MAXinterfaces 3232CPE, además de auto wlan0 iface wlan0 inet dhcp cuatro condensadowpa-conf /etc/wpa_supplicant/wpa_supplicant. conf res electrolíticos de 0.47mF, como un transmisor-receptor Listado 4: Añadir a hostapd.conf para la interfaz serie ctrl_interface=/var/run/hostapd (UART), junto con ctrl_interface_group=0 driver=nl80211 # according to driver support un conector sub-D macaddr_acl=0 de nueve pines o un auth_algs=3 zócalo para montaje ignore_broadcast_ssid=0 en PCB y un cable de wpa=2 # for WPA2 with PSK wpa_key_mgmt=WPA-PSK interfaz. Además, se rsn_preauth=1 necesitan dos LEDs, rsn_preauth_interfaces=wlan0 rojo y verde, cada rsn_pairwise=CCMP uno con una resiswpa_passphrase=password interface=wlan0 tencia en serie de hw_mode=g 22Ω y un transistor channel=11 # a free or weak channel NPN (por ejemplo, ssid=(E)SSID el BC237) como con-
64
Número 91
W W W . L I N U X - M A G A Z I N E . E S
Listado 5: Interfaces de red auto wlan0 iface wlan0 inet static address 192.168.128.1 netmask 255.255.255.0 broadcast 192.168.128.255
Listado 6: Iniciar el Punto de Acceso $ sudo service hostapd start $ sudo brctl addbr myBridge $ sudo brctl addif myBridge eth0 $ sudo brctl addif myBridge wlan0 $ sudo ifconfig myBridge up
trolador, así como dos resistencias en pullup de 10k para el bus I2C. Otros materiales, como por ejemplo una placa, regleta de alimentación, cable de cinta plana y los condensadores de desacoplamiento, son elementos básicos. El popular módulo LM75 sirve como sensor de temperatura y está conectado al bus I2C. La máquina controla los dos LED a través de dos pines GPIO y una etapa de transistor. El cableado es simple y puede obtener una plantilla de referencia en la Web. En realidad, el SOC tiene dos interfaces master en el bus I2C, cuya salida se encuentra también en el syslog, pero sólo uno de los dos está disponible en el conector de doble hilera (P1-03 y P1-05), el único con el bus-ID 0. Puede habilitar el bus I2C mediante la instalación de los dos controladores i2c-bcm2708 y i2c-dev. Para ello, eliminamos el controlador i2c-bcm2708 de la lista de controladores que no se deben cargar en /etc/mod probe.d/raspi-blacklist.conf . Especificamos el controlador i2c-dev, que crea la interfaz de dispositivo en el directorio /dev/etc/modules. El bus se activa una vez que el sistema se ha reiniciado. Para activar el bus sin necesidad de reiniciar, ejecutamos la orden modprobe i2c-bcm2708 I2C-dev. Para poder realizar transacciones en el bus I2C como un usuario normal, primero tendremos que instalar las herramientas correspondientes y establecer permisos de grupo: $ sudo apt-get install i2c-tools $ sudo addgroup pi i2c
Las direcciones en las que se encuentran los módulos están indicadas por los valores encontrados en la salida devuelta por
Proyectos Raspberry Pi • HARDWARE
Entonces, en concordancia, $ sudo apt-get install el programa git python3 python-pip python-virtualenv enciende o $ git clone apaga cada https://github.com/quick2wire/quick2wire-gpio-admin.git $ git clone uno de los dos https://github.com/quick2wire/quick2wire-python-api.git LED. $ cd quick2wire-gpio-admin Las denomi$ make naciones para $ sudo make install $ sudo adduser pi gpio los diferentes $ virtualenv TEMPCONTROL pines GPIO $ source TEMPCONTROL/bin/activate son algo confu$ cd quick2wire-python-api sas. Los LED $ sudo python3 setup.py install rojo y verde son GPIO23/GPIO24, de acuerdo con el i2cdetect -y 0 conector, pero también están conectados a P1-16/P1-18. La primera designación Dependiendo de cómo hayamos coneccorresponde a la documentación de tado los tres pines de direccionamiento del BCM2835 y los valores del núcleo. Sin LM75, la salida contendrá exactamente un embargo, las bibliotecas de Python siguen valor en el rango hexadecimal de 0x48 a la segunda nomenclatura. Tendremos que 0x4f. Después leemos la palabra de 2 bytes proporcionar la secuencia de comandos con la temperatura del LM75 en el registro con los permisos necesarios para su ejecudireccionando 0 con el comando: ción. Después del arranque, la salida dará continuamente por consola los valores medidos con cada actualización de los $ I2cget -y 0 I2C bus_address U LEDs. register_address w
Listado 7: Paquetes y Librerías Python
La hoja de datos del módulo será de gran ayuda para convertir el críptico valor devuelto (por ejemplo: 0x8015) a la temperatura correspondiente. Python es un entorno de software adecuado para el controlador, ya que existen bibliotecas de clases para la Raspberry Pi para acceder al bus I2C y los pines GPIO. Este ejemplo utiliza dos bibliotecas [10] [11]. El Listado 7 muestra la instalación de los paquetes y bibliotecas. El programa en sí es muy simple (Listado 8): se lee el valor del sensor (línea 15) en un ciclo de cinco segundos y convierte la lectura del sensor en el valor de la temperatura (línea 16).
Conclusiones Evidentemente Raspberry Pi no es un equipo de sobremesa. Si utilizar la terminal te parece demasiado extraño y enigmático, debes comenzar con el escritorio para pasar gradualmente a la línea de comandos. Desde su concepción, el Raspi fue concebido como un PC de bajo consumo para aplicaciones multimedia y está claramente destinado a ser utilizado como un sistema empotrado. El hardware es ideal para su uso como servidor u ordenador de control de procesos, o para el control de las tareas en proyectos que no exijan demasiada potencia. La configuración per-
mite conectar los periféricos necesarios y el conector casi suplica que juntes características adicionales para adaptarse a tus propias necesidades. Una distribución especializada de Linux ayudará a los principiantes a que sus primeros pasos sean más fáciles. Los desarrolladores han logrado su objetivo original de hacer tangible la tecnología informática para las personas interesadas y en especial, para los ■ jóvenes. RECURSOS [1] Raspberry Pi: http://www.raspberrypi.org/ [2] Guía de compras de Hardware: http://elinux.org/RPi_Hardware_ Basic_Setup#Typical_Hardware_You _Will_Need [3] Más ayuda eligiendo hardware: http://elinux.org/ RPi_VerifiedPeripherals [4] Farnell element14 (Europa)/Newark element14 (Norteamérica): http://uk.farnell.com/ http://www.newark.com/ [5] RS Components (R.U.)/Allied Electronics (Norteamérica): http://uk.rs-online.com/ http://www. alliedelec.com/ [6] Para respuestas a preguntas, visita: http://elinux.org/RaspberryPiBoard [7] Raspbian “Wheezy”: http://www.raspbian.org/ [8] Reproductor de audio/video Omxplayer: https://github.com/huceke/ omxplayer [9] Hostapd: http://hostap.epitest.fi/hostapd [10] API Python Quick2Wire: https://github.com/quick2wire/ quick2wire-python-api [11] GPIO Admin: https://github.com/quick2wire/ quick2wire-gpio-admin
Listado 8: Programa Controlador 01 01 #!/usr/bin/env python3 02 import quick2wire.i2c as i2c 03 import time 04 from quick2wire.gpio import Pin, exported 05 06 busaddr = 0x48 07 regaddr = 0x00 08 redLED = Pin(16, Pin.Out) 09 greenLED = Pin(18, Pin.Out) 10 11 with exported(Pin(16, Pin.Out)) as redLED, \ 12 exported(Pin(18, Pin.Out)) as greenLED, \ 13 i2c.I2CMaster() as bus: 14 while True: 15 temp_hib, temp_lob = bus.transaction( 16 i2c.writing_bytes(busaddr, regaddr),
17 i2c.reading(busaddress, 2))[0] 18 temp = (temp_hib << 1 | temp_lob >> 7) / 2. 19 if temp > 25: 20 redLED.value = 1 21 greenLED.value = 0 22 elif temp < 22: 23 redLED.value = 0 24 greenLED.value = 1 25 else: 26 redLED.value = 1 27 greenLED.value = 1 28 print (“%02.01f” % temp) 29 redLED.value = 0 30 greenLED.value = 0 31 time.sleep(5)
W W W . L I N U X - M A G A Z I N E . E S
Número 91
65