Especial Hardware
Especial Hardware
HARDWARE
Incluye:
Índice temático
Recursos útiles
Manual practico de iniciación y proyectos Guía de compra
ABRIL 2013
Península
y Baleares 6,95 €
PROYECTOS
8 ARDUINO
COMPLETOS
Canarias 7,05 €
MANERAS DE
5 APROVECHAR TU
RASPBERRY PI
l
Especia
wn
l Bro
Pau
00007
WWW.LINUX- MAGAZINE.ES
OpenSUSE 12.2 DVD/EDITORIAL
¡Revolución!
Ya he perdido la cuenta de por qué revolución industrial vamos.
Creo que formalmente la tercera. La primera sería la industriali-
zación británica de finales del XIX, a base de aparatos de
vapor y una industria textil y minera servida por niños.
La segunda, la de las cadenas de montajes, producción
en masa automatizada de Henry Ford et al, en los 70
y 80 llegó la tercera ola con el comienzo de la popu-
larización de los ordenadores, tanto a nivel parti-
cular, como empresarial e institucional.
La cuarta revolución es la que estamos
viviendo ahora y es la que casi completa el
círculo. Del artesanado preindustrial, hemos
pasado a la industrialización. De ahí, evolu-
cionamos hacia la informatización industrial.
Y ahora volvemos al artesanado, esta vez
informático. Gracias a los movimientos del
software y hardware libres, cualquiera, sea
empresa grande, mediana o pequeña, grupo
de desarrollo independiente, o un único indivi-
duo a solas en su sótano, tiene acceso y puede
modificar y explotar herramientas informáticas,
ya sean lógicas o físicas, que antaño sólo eran
accesibles a grandes corporaciones.
El tema del software ya lo tratamos en profundidad
en nuestra revista mensual Linux Magazine, pero si
quieres formar parte del otro brazo de la revolución, el del
hardware libre, el especial que sostienes entre las manos es
un buen sitio para empezar.
Nos vemos en la quinta revolución industrial, que a saber que
aspecto tendrá. ■
W W W. L I N U X - M A G A Z I N E . E S HARDWARE 3
CONTENIDO Hardware
Plataformas Arduino
Arduino
20 Electrónica Diferente
Arduino es una manera sencilla y
divertida de iniciarse en el mundo de
la electrónica y una oportunidad de
llevar tus ideas al mundo real.
4 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
Hardware CONTENIDO
Arduino Raspeberry Pi
Raspeberry Pi
59 Pi Perfecto
Os mostramos cómo comenzar a
cacharrear con el asequible Raspberry
Pi y Linux. 74 Combinados
Lo que se puede crear a partir de la
63 Pi2 unión de estas dos placas open hard-
El Raspberry Pi facilita la experimen- ware es algo que se está empezando a
tación en sistemas Linux empotrados. explorar ahora. Explicamos cómo
Mostraremos algunos ejemplos prácti- abrir un canal de comunicación desde
cos de cómo utilizar el Raspberry Pi la Raspberry Pi directamente a un
en un entorno cotidiano. Arduino.
RECURSOS
Descubre lo que hay más
allá de este especial con
nuestra guía.
Tiendas 77
.3
Sitios 78 en pág
n
rmació
Editoriales y Publicaciones 79 info
Ver
Indice Temático 80
W W W. L I N U X - M A G A Z I N E . E S HARDWARE 5
PLATAFORMAS Arduino
Introducción a Arduino
Contacto
Físico
Fantasista - 123RF.com
La tarjeta Arduino es ideal para experimentar con ordenadores físicos. Mostramos como ejemplo cómo crear un simple temporizador.
El sitio web del proyecto describe a dor de a bordo para llevar a cabo distin- más que simplemente una herramienta
Arduino como “una plataforma de elec- tas acciones con los actuadores conecta- educativa. Podemos usar la tarjeta para
trónica abierta para la creación de proto- dos a los pines digitales de salida de la crear todo tipo de soluciones inteligen-
tipos basada en software y hardware fle- tarjeta. tes, desde una alarma activada por movi-
xibles y fáciles de usar”, lo cual no suena La parte de programación se lleva a miento, hasta un disparador de fotos
muy excitante. A pesar de ello, esta dimi- cabo en el entorno de desarrollo inte- activado por rayos (de los de “rayos y
nuta y barata plataforma nos permite grado (IDE) de Arduino, el cual usa un truenos”) para nuestra cámara DSLR.
construir todo tipo de proyectos increí- lenguaje de programación basado en Existe la posibilidad de comprar dife-
bles – y sin la necesidad de saber soldar. Processing [2] relativamente fácil de rentes modelos de Arduino, siendo el
Arduino [1] es básicamente una tarjeta aprender. De modo que, aún sin tener más pequeño también el más abarato,
que puede ser programada para contro- ninguna experiencia en programación, con un coste de unos 30 dólares, de
lar diferentes actuadores (motores, luces, podemos aprender rápidamente lo modo que no nos va a costar un ojo de la
etc.) según la entrada que recibe de sen- básico. La sección Referencia del sitio cara iniciarnos en el excitante mundo de
sores conectados a ella. Prácticamente web de Arduino contiene una detallada la computación física. Es probable que
cualquier sensor puede conectarse a la referencia del lenguaje para poder también deseemos añadir a nuestra lista
tarjeta/placa Arduino – una fotoresisten- comenzar, pudiéndose usar la versión de la compra una placa protoboard, un
cia, un sensor de movimiento, un sensor PDF libre del Arduino Programming conjunto de cables puente, un par de
de temperatura o un sensor de presión – Notebook [3] como otra referencia rápida LEDs y resistencias. Usando una proto-
y se puede programar el microcontrola- y práctica. board, podemos crear proyectos basados
Los programas de Arduino reciben el en Arduino sin la soldadura de compo-
El Autor nombre de bocetos y podemos escribir, nentes – una solución perfecta para
Dmitri Popov es licenciado en Lengua depurar y cargarlos a la tarjeta usando el experimentar.
Rusa y en lenguajes de computación. Ha entorno de desarrollo gráfico. Arduino se
estado escribiendo sobre Linux y soft- desarrolló como una solución para intro- Preparativos
ware de código abierto durante años y ducir a la gente en el mundo de la com- Lo primero es instalar el entorno de
sus artículos han aparecido en revistas y putación física (creación de sistemas físi- desarrollo en nuestro sistema para escri-
sitios web daneses, británicos, norteam- cos interactivos que pueden detectar y bir bocetos y subirlos a Arduino. Si esta-
ericanos, alemanes y rusos. responder al mundo analógico), pero es mos ejecutando Ubuntu o alguna de sus
6 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
Arduino PLATAFORMAS
derivadas, instalar el software requerido (cualquiera entre Figura 2: Gnoduino proporciona una alternativa muy lograda al IDE
es tan fácil como ejecutar: los 200 y 680 ohms) estándar de Arduino.
y dos cables conec-
sudo apt-get install arduino tores. La resistencia es opcional y se uti- componentes en ella y cableándolos
liza para limitar y prevenir daños al LED. (Figura 3). La colección central de com-
Este comando instala el IDE estándar de ponentes en la paleta Parts incluye los
Arduino escrito en Java (Figura 1). Este Esquemas con Fritzing numerosos componentes esenciales:
IDE sirve, pero no se integra muy bien Antes de colocar los componentes en el desde resistencias e interruptores, hasta
con el escritorio Linux. Afortunada- protoboard y conectarlos, es buena idea LEDs y varios sensores. Fritzing también
mente, el proyecto Gnoduino [4] propor- dibujar un esquema para usarlo como nos permite importar colecciones de
ciona una alternativa muy eficiente y de referencia. Aunque podemos usar lápiz y componentes de terceros al cubo de
peso ligero diseñada específicamente papel, existe una herramienta mejor lla- componentes. Para hacerlo, elegimos
para el entorno de escritorio Gnome mada Fritzing [7]. Este software ofrece File | Parts Bin | Open y seleccionamos la
(Figura 2). un entorno gráfico completo para pro- colección que deseemos. Incluso pode-
Gnoduino ofrece soporte para diálogos yectos Arduino, y podemos usarlo para mos diseñar nuestros propios compo-
nativos y una renderización de fuente diseñar trazados de placa, esquemas y nentes en Fritzing. La página Creating
mejorada, junto con una práctica funcio- tarjetas de circuito impresas (PCBs). Custom Parts [8] del sitio web ofrece
nalidad de numeración de líneas. Gno- Usar Fritzing para este simple proyecto varios recursos para ayudarnos con esto.
duino está escrito en Python, y los usua- puede parecer exagerado, pero cuando Una vez que hayamos situado un com-
rios de Ubuntu pueden instalarlo nuestros diseños Arduino sean más avan- ponente en la placa, podemos modificar
mediante su PPA dedicada [5], usando zados, apreciare-
los siguientes comandos: mos las capacida-
des y herramientas
sudo add-apt-repository U de Fritzing. No
ppa:pmjdebruijn/gnoduino-release requiere instala-
sudo apt-get update ción. Para hacernos
sudo apt-get install goduino con la última ver-
sión, vamos al sitio
A continuación conectamos la tarjeta web del proyecto,
Arduino a nuestra máquina, y ya esta- desempaquetamos
mos listos para comenzar a trabajar en el archivo descar-
nuestro primer proyecto. gado y ejecutamos
Podemos crear todo tipo de artilugios el script Bash Frit-
con Arduino, pero para entender cómo zing.sh en el direc-
funciona todo, lo más sensato es empe- torio resultante
zar por algo simple. De modo que, des- para iniciar la apli-
cribiré cómo crear un temporizador sin cación.
lujos para practicar la técnica Pomodoro La vista placa en
[6] de gestión del tiempo. Fritzing nos per-
Para este proyecto necesitaremos tres mite crear diseños Figura 3: Fritzing ofrece un entorno gráfico para la creación de dise-
componentes: un LED, una resistencia de placa situando ños para Arduino.
sus propiedades en la paleta Inspector. y cogiendo y arrastrando con el ratón Fritzing para diseñar un PCB para nues-
Por ejemplo, podemos especificar la tole- para doblarlos. tro proyecto. De esta manera, podemos
rancia, resistencia y espaciado de pines Mientras trabajamos en el diseño de la convertir nuestro prototipo en un pro-
para resistencias, y color y tamaño para placa, Fritzing genera en el fondo un ducto de verdad o en una placa Arduino
LEDs. Para conectar los componentes esquema de cableado de nuestro pro- (Figura 5). Mejor aún: el servicio Fritzing
usando cables conectores, pulsamos con yecto, que podemos ver cambiando a la Fab [9] puede fabricar PCBs listos para
el botón derecho del ratón sobre el soc- vista Schematic (Figura 4). Todas las usar basados en nuestro diseño.
ket de la placa deseada, luego arrastra- conexiones entre componentes se consi- Por ahora, sin embargo, nos limitare-
mos el ratón al socket de destino mien- deran provisionales y se muestran como mos a usar Fritzing para crear un diseño
tras mantenemos pulsado el botón dere- finas líneas, siendo necesario usar el de placa para el temporizador similar al
cho del ratón. Después, podemos cam- ratón para cablear los componentes. que aparece en la Figura 3. Luego, pode-
biar el color del cable añadido en la Hacer esto manualmente puede ser un mos usarlo como una guía para cablear
paleta Inspector para hacer que el diseño poco (o muy) arduo, especialmente los componentes en un placa real y
de la placa sea más claro. Por defecto, cuando trabajamos en un diseño com- conectarlos a Arduino para completar el
Fritzing añade cables rectos, lo cual plejo. Afortunadamente, Fritzing propor- proyecto de hardware.
puede ser bastante frustrante cuando se ciona una buena solución: la funcionali-
trabaja con diseños complejos. Podemos dad Autoroute puede cablear componen- Escribir un Boceto
doblar los cables pulsando la tecla [Ctrl] tes automáticamente para nosotros. El paso siguiente es escribir un esquema
Los resultados para el temporizador. Necesitamos pro-
pueden no ser gramar Arduino para poner en marcha
correctos a veces, un LED cada 25 minutos para que nos
pero en la mayo- indique que es hora de descansar. Para
ría de las ocasio- hacer que las cosas sean un poco más
nes, la funcionali- interesantes, podemos hacer que el LED
dad lo hace bien. parpadee cinco veces antes de que se
Además, pode- ponga en marcha para atraer nuestra
mos ajustar y atención. Para comenzar, ponemos en
optimizar el marcha el IDE Arduino o Gnoduino e
cableado gene- introducimos el boceto del Listado 1.
rado automática- ¿Cómo funciona este esquema? Como
mente de forma cualquier programa o script, el primer
manual si fuera asunto es definir variables para usarlas
necesario. Frit- en el programa. En este caso, la declara-
zing también nos ción int var = 0 define la variable var (la
permite exportar cual actuará como un contador) y pone
el esquema de su valor a cero. Adicionalmente, cual-
cableado a distin- quier boceto Arduino ha de contener dos
Figura 4: Fritzing también genera un esquema de cableado basado en el tos formatos. bloques. La función setup() contiene el
diseño de la placa. Podemos guar- código que se ha de ejecutar una vez al
darlo como un principio del programa, mientras que la
fichero de imagen función loop() contiene el programa en
con File | Export | sí, el cual se ejecuta una y otra vez.
As image, que A diferencia de un ordenador regular,
soporta PNG, Arduino no puede ejecutar múltiples
SVG, PDF y otros programas y los programas no pueden
formatos. Tam- cerrarse. Cuando encendemos Arduino,
bién podemos éste ejecuta el código, deteniéndose sola-
usar File | Export mente cuando desenchufamos la tarjeta.
| List of parts (Bill En este caso, la función setup() inicializa
of Materials) para el pin digital número 13 como salida
generar una lista usando la declaración pinMode(13, OUT-
de la compra bien PUT). Esto permite al boceto controlar el
formateada de LED conectado al pin 13.
todos los compo- La función loop() contiene el pro-
nentes usados en grama en sí, el cual se puede dividir en
el proyecto. más o menos dos partes. La primera
Por si esto no parte es el bucle while, que enciende el
fuera suficiente, LED (la instrucción digitalWrite(13,
Figura 5: Usando Fritzing, podemos diseñar trazados para PCB. podemos usar HIGH), espera un segundo (instrucción
8 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
Arduino PLATAFORMAS
Más Allá
Listado 1: Temporizador Aunque el temporizador basado en
01 int var = 0; Arduino mostrado aquí es bastante
02
simple, podemos mejorarlo. Por ejem-
03 void setup() {
04 pinMode(13, OUTPUT);
plo, añadiendo un segundo LED al pin
05 } digital 9 y volviendo a escribir el
06 esquema de modo que haga que el pri-
07 void loop() { mer LED parpadee antes de encender el
08 while(var < 5){ segundo LED (véase el Listado 2). En
09 digitalWrite(13, HIGH); vez de usar un segundo LED, podemos
10 delay(1000); conectar un altavoz y programar
11 digitalWrite(13, LOW);
Arduino para que reproduzca un tono o
12 delay(1000);
una simple melodía. En resumen, tene-
13 var++;
14 } mos muchas opciones para ajustar y
15 digitalWrite(13, HIGH); mejorar este simple temporizador. Y,
16 delay(15000); una vez que hayamos dominado lo
17 var = 0; básico, podemos trabajar en proyectos
18 digitalWrite(13, LOW); basados en Arduino más complejos y
19 delay(1500000); excitantes. ■
20 }
Recursos
delay (1000)), apaga el LED (instrucción
[1] Sitio web oficial de Arduino en espa-
digitalWrite(13, LOW)), espera otro ñol: http://www.arduino.cc/es/
segundo y luego incrementa el contador
[2] Lenguaje de programación de pro-
en 1 (instrucción var++). El bucle se
ceso: http://processing.org
ejecuta hasta que el valor de var es 5 (lo
[3] Notebook de programación de
que significa que el LED parpadea cinco
Arduino:
veces). Una vez que el valor de var
http://www.lulu.com/product/
alcanza 5, entra en acción la segunda file-download/arduino-programming-
parte del programa, enciende el LED, notebook/3524028
espera 15 segundos, apaga el LED y
[4] Gnoduino:
espera durante 25 minutos. http://gnome.eu.org/evo/index.php/
Para comprobar si el boceto contiene Gnoduino
errores, pulsamos el botón Verify en el
[5] PPA Gnoduino:
IDE de Arduino. Si todo ha ido sin pro- http://launchpad.net/~pmjdebruijn/
blemas, deberemos ver Binary scheme +archive/gnoduino-release
size: 1086 bytes (of a 32256 mazimum)
[6] Técnica Pomodoro:
(el tamaño del boceto puede variar) en el http://www.pomodorotechnique.com
panel de la consola. En caso contrario,
[7] Fritzing:
veremos un mensaje de aviso indicando http://fritzing.org
los errores en el boceto. Finalmente,
[8] Partes a medida de Fritzing:
podemos pulsar Upload para cargar el
http://fritzing.org/learning/tutorials/
boceto en Arduino. La tarjeta comenzará creating-custom-parts
a ejecutar el código inmediatamente.
[9] Fritzing Fab:
Felicidades, nuestro primer proyecto
http://fab.fritzing.org/fritzing-fab
Arduino está funcionando.
W W W. L I N U X - M A G A Z I N E . E S HARDWARE 9
PLATAFORMAS Raspberry PI
Deliciosa
tenimiento, los sistemas embebidos e incluso de la alta computación de bajo coste. Por Paul C. Brown
El aparato vino en un sobre ligeramente Lo acompañaban dos hojas de papel, (teclado, ratón, cable de red y pantalla a
acolchado que el cartero embutió a pre- una que describía el hardware y la través del puerto HDMI – que soporta
sión en nuestro buzón. No conociendo configuración por defecto del usuario sonido por HDMI), se enciende enchu-
las feas costumbres de los funcionarios (pi) y contraseña (raspberry), y la otra fando la alimentación a su puerto
de correos españoles, los remitentes no con la descripción del software. También microUSB. Este puerto es idéntico a los
habían pensado en adornar el sobre con venía con una tarjeta SD que contenía el que se encuentran en muchos móviles y
pegatinas y advertencias sobre la fragili- sistema operativo, una Debian compi- no es el único parecido que comparte el
dad del contenido. lada para ARM del aparato, con el escri- RP con un smartphone, como después
Tampoco es que hubiera servido de torio LXDE y varias aplicaciones para veremos. Para desconectar el RP, se des-
mucho, pero afortunadamente, cuando pruebas. conecta el cable USB del alimentador y
abrimos el envoltorio, el Raspberry Pi [1] listo.
que nos enviaron para su evaluación Zumo de Frambuesa El software suministrado demuestra
estaba entero y aparentemente sin nin- El Raspberry Pi viene pelado, sin caja ni que el RP es extraordinariamente respon-
gún tipo de daño. alimentador de corriente. Por no traer, ni sivo en tareas de procesamiento de vídeo
El dispositivo suministrado por la Fun- siquiera trae un botón de encendido. Una y renderizado 3D. Probamos reproducir
dación Raspberry Pi es el denominado vez conectados todos los periféricos una película en XBMC y jugar a Quake 3,
Modelo B, que cuenta con 2 puertos USB
(frente a 1 del Modelo A) y un puerto Tabla 1: Características Técnicas
RJ45 de red (el Modelo A no cuenta con Procesador (CPU) ARM1176JZF—S a 700 MHz
conector de red). En la Tabla 1 se puede Chip gráfico (GPU) Broadcom VideoCore IV,OpenGL ES 2.0, decodificador de alto perfil
ver un resumen de sus especificaciones 1080p h.264/MPEG—4 AVC
técnicas. RAM 256 MBs (compartido con GPU)
Puertos USB 2.0 2 (hub USB integrado)
Salidas de vídeo RCA Compuesto (PAL y NTSC), HDMI (rev 1.3 y 1.4), y paneles LCD a a
través de DSI, resoluciones HDMI desde 640x350 hasta 1920x1200 más
varios estándares PAL y NTSC
Salidas de audio jack de 3.5 mm, HDMI
Almacenamiento a través de lector tarjetas SD / MMC / SDIO
Conector de red 10/100 Ethernet (RJ45)
Fuente de energía 5 voltios a través de MicroUSB
Tamaño 85.60 x 53.98 mm
Peso 45 g (1.6 oz)
Figura 1: Contenido del “pack” de evaluación Sistemas operativos Debian GNU/Linux (incluido en tarjeta SD de 4Gbs), Fedora, Arch Linux,
de Raspberry Pi remitido a Linux Magazine. RISC OS
10 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
Raspberry PI PLATAFORMAS
Figura 2: El RP utiliza tecnología System on Figura 3: El RP arranca una versión de Figura 4: En primer plano el conector HDMI,
a Chip con CPU, GPU y RAM en un solo chip. Debian compilada para ARM 11. que soporta audio sobre HDMI.
y RP fue capaz de proyectar “Big Buck un NDA (Non Disclosure Agreement – Conclusiones
Bunny” en HD de 1080p (lo que se Acuerdo de Confidencialidad) y explicar Por 35 $ / 27 € el Raspberry Pi es una
conoce como Alta Definición Verdadero, cómo vas a utilizar el hardware y cuán- ganga y el aparato cumple totalmente
es decir, no entrelazado) y de ejecutar el tos miles vas a encargar. Es decir, las con las expectativas que ha creado. Si
juego a un buen número de frames por especificaciones sólo se distribuyen a bien es un poco decepcionante el hecho
segundo sin saltos ni ningún tipo de fallo fabricantes de hardware. de que no todo el hardware estará docu-
[2]. Más adelante se planea publicar un mentado, no hay que perder de vista lo
Es evidente que el RP podrá servir datasheet de lo revelable del chip y que es: una prueba de concepto, un pro-
excelentemente como base de un centro esquemas del resto del dispositivo, pero, totipo para desarrolladores e investigado-
de entretenimiento doméstico y para el aunque el coste y rendimiento del hard- res. El hecho de que venga sin ningún
cometido original para el cual fue conce- ware de Broadcom es el que se necesita tipo de protección así lo indica y, como
bido, es decir, como máquina educativa para el proyecto, su naturaleza cerrada concepto, esperamos que inicie una ten-
en centros escolares. impedirá crear clones de manera inme- dencia en la computación de bolsillo de
diata. muy bajo coste e incluso una nueva área,
No Todo es Color de Mora Otra limitación, esta vez técnica, es la de la alta micro-computación (ya tene-
El RP, de nuevo de manera muy similar que el Raspberry Pi comparte la memo- mos al menos un colaborador de Linux
a mucho móviles, embebe todos los ria entre la RAM convencional (para Magazine deseoso de montar un clúster
componentes esenciales (CPU, GPU y aplicaciones y datos) y RAM para vídeo. con 16 RP en una caja de zapatos). Ade-
RAM) en un sólo chip, una tecnología Ésta es una limitación necesaria en un más creemos que pronto veremos imita-
conocida como SoC o System on a Chip. hardware tan compacto, pero tiene el dores, algunos de los cuales sin duda se
Es una manera muy eficiente de ahorrar inconveniente de que, según la aplica- decantarán por hardware totalmente
espacio, pero tiene la desventaja de que ción que se vaya a utilizar y, depen- abierto.
la mayoría de los chips con estas carac- diendo de si necesita más espacio para el Mientras eso ocurra, el Raspberry Pi es
terísticas son privativos. El chip del RP renderizado de gráficos o para la compu- un excelente y sorprendente aparato,
no es una excepción. El Broadcom tación tradicional, hay que asignar dife- pionero en su formato. ■
BCM2835 de la placa contiene un rentes cantidades de RAM al GPU y al
ARM1176JZFS con soporte para aritmé- CPU. Esto de momento se hace a mano, Recursos
tica de punto flotante nativa; un GPU aunque ya hay scripts que ayudan en
[1] Sitio web de Raspberry Pi:
Videocore 4 capaz de reproducir vídeo esta tarea [3]. http://www.raspberrypi.org
con calidad BluRay y de aceleración grá- Por cuestiones de espacio, no vamos a
[2] Vídeo demostrativo de Raspberry Pi:
fica 3D utilizando librerías OpenGL entrar en este artículo a examinar los
http://youtu.be/LOhCtW5F_Pc
ES2.0 y OpenVG; y 256 Mbs de RAM, detalles de cómo se reparte la RAM, pero
[3] Script facilitador de la asignación de
pero si quieres conocer las especificacio- sí tocaremos el tema en siguientes núme-
RAM: http://sirlagz.net/?p=445
nes exactas del chip, tendrás que firmar ros de Linux Magazine.
Figura 5: Un conector de red (RJ45) a la Figura 6: A la izquierda (negro) conector de Figura 7: A la derecha, el microUSB que sirve
izquierda y dos puertos USB en el centro. audio. El conector amarillo es un RCA vídeo. para la alimentación eléctrica del RP.
PLACA DE
APRENDIZAJE Tim
ur Arbae
v-1
23R
F.co
m
Para aprender sistemas Linux empotrados no necesitas ser un genio, como demuestra claramente la placa Gnublin. Si estás interesado en
aprender a leer sensores, conmutar interruptores y LEDs en un ARM Linux, esta pequeña máquina es perfecta para tu investigación.
La placa Gnublin [1] es una plataforma Linux pre-instalado. El conector mini- blin. Si somos lo suficientemente rápi-
de aprendizaje y entrenamiento para sis- USB a la izquierda alimenta al pequeño dos, incluso se pueden ver los últimos
temas Linux empotrados. ordenador y lo conecta con nuestro PC, mensajes de la puesta en marcha del sis-
Ha sido creada por los especialistas en en el que instalamos el programa de con- tema en pantalla. A continuación, un
ARM Embedded Projects [2], en colabo- sola (por ejemplo Picocom) y lo inicia- gestor de arranque APEX [4] en la tarjeta
ración con la Cátedra de Técnicas Infor- mos así: SD carga el kernel Linux, que monta el
máticas de Augsburgo [3]. Todos los sistema de raíz antes de mostrar un men-
datos, planos, programas y especificacio- sudo picocom -b 115200U saje de login y queda a la espera de
nes de la placa están disponibles con /dev/ttyUSB0 nuestra entrada (véase la Figura 3,
licencias libres en Internet. Por unos 50 izquierda):
euros, Gnublin (acrónimo de GNU Board Antes de iniciar
Linux) comprende un kernel 2.6.33 en Picocom y crear la Tabla 1: Especificaciones de Gnublin
una CPU ARM9, con numerosos interfa- interfaz serial vir- Elemento Descripción
ces y programas de ejemplo (véase la tual (/dev/ Nombre Gnublin LPC3131
Tabla 1). La documentación invita a los ttyUSB0), debemos Procesador ARM9 con 180MHz (NXP LPC3131)
usuarios a experimentar y aprender más asegurarnos de Memoria principal 8MB de SDRAM móvil (más swap de 64
acerca de las aplicaciones empotradas. esperar un par de MB)
Las numerosas extensiones añaden valor segundos tras Almacenamiento masivo Tarjetas microSD, ranura para bootloader,
a los usuarios más experimentados y los conectar el cable kernel, sistema de archivos, swap
desarrolladores de Gnublin han acumu- USB para que Interfaces Dispositivo USB o puerto USB host (selec-
lado gradualmente más hardware y arranque el sistema cionable por jumper), 3xGPIO y 4x canales
AD, 1x SPI, 1x I2C, 1x convertidor USB-RS-
herramientas para el dispositivo (véase operativo. 232 como consola para Linux, 1x LED con-
la Figura 1). Dependiendo de tu campo trolable, 1x power LED
de interés, también están disponibles cir- Tiempo de Opciones de arranque Tarjeta SD (test de 1 GB), USB o RS 232
cuitos integrados, LEDs y sensores. Arranque Fuente de alimentación USB o terminal 5V
Comenzar con la placa de 7x7 cm. Si todo sale bien, Sistema operativo Gnublin ELDK, versión 201105202151
(véase la Figura 2) es sencillo. La nuestro PC se con-
Kernel 2.633 armv5tejl
configuración incluye un cable USB a vierte en la consola
Precio 50 euros (aproximado)
juego y una tarjeta de memoria con para la placa Gnu-
12 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
Gnublin PLATAFORMAS
ELDK
Después de completar con éxito el ini-
Figura 1: (1) placa Gnublin-LPC3131, (2) tarjeta Micro SD (1 a 4 GB), (3) Adaptador de Mini USB cio de sesión, tenemos acceso a un sis-
a USB macho para conectar dispositivos USB al host USB On-the-Go (OTG), (4) adaptador de tema Linux con muchas herramientas
USB a Ethernet con chip Pegasus, (5) pilas/baterías recargables, (6) adaptador USB Blueto- que ocupan unos 600 MB, incluyendo
oth D-Link DBT-120, (7) adaptador USB a puerto serie con chip FTDI FT2232, (8) adaptador programas que tienen poca probabili-
USB a puerto serie con SILabs CP2102, (9) unidad USB Flash, (10) adaptador de audio USB dad de funcionar en este tipo de hard-
Speedlink VIGO (ALSA y Ogg Vorbis-), (11) y (12) concentradores USB, (13) display DOG con ware (por ejemplo, X Window o herra-
conector SPI, (14) lector de tarjetas USB para MicroSD, (15) adaptador USB A a USB B, (16) mientas como el compilador de C). La
destornillador. distribución que se utiliza aquí,
Embedded Linux Development Kit
EDLK (Built by Poky 5.0) U el sistema. Cuando hayamos terminado, (ELDK) versión 5.0 [6], está basada en
5.0 armv5te ttyS0 pulsamos Ctrl+A, Ctrl+X para inte- el exhaustivo kit empotrado Yocto [7],
armv5te login: rrumpir la conexión. Si queremos hacer que a su vez se basa en la plataforma
esto en Windows, es necesario cargar el de compilador Poky [8] con el entorno
Al igual que en un shell remoto, ahora controlador USB RS-232 [5] y una cone- de trabajo OpenEmbedded, para siste-
podemos acceder al sistema como root xión de terminal adecuada antes de mas empotrados Linux [9] como
(sin contraseña) y empezar a trabajar en conectar la placa. núcleo.
Figura 3: La consola Picocom (izquierda) en la placa Gnublin con los últimos mensajes de arranque de ELDK Linux. En la parte derecha, abajo,
está el control de configuración de red del PC, y arriba a la derecha, la ventana del navegador muestra el acceso con éxito al servidor web
Lighttpd que se ejecuta en la placa Gnublin.
Si te gusta Python, pronto te sentirás al LED rojo de la placa a través de echo in > direction
como en casa: el lenguaje de scripting GPIO3. En /sys/class/gpio, el comando cat value
aporta herramientas como Bitbake [10]
para el proceso de compilación de echo 3 > export Después de esto, encontraremos bien
paquetes. El comando un 1 o un 0 en el archivo value. 1
habilita el subdirectorio gpio3, donde corresponde a un voltaje de 3.3V en la
alien -t encontraremos los archivos direction y entrada. Para más detalles de las entra-
value. El comando das, podemos echar un vistazo a las
convierte paquetes Debian ARM a .tgz, Notas de Aplicación [13]. Con el hard-
que tenemos que descomprimir en el sis- cat out > direction ware incorporado, también se pueden
tema de archivos raíz. hacer trucos mucho más complejos,
El profesor Hubert Högl de la Universi- especifica GPIO3 como la salida, mien- como la modulación por ancho de pulso
dad Técnica de Augsburgo usa este tras que (PWM), [14], que nos ayuda a crear
método para conseguir que RRDtool, tensiones analógicas o accionar servo-
Gnuplot, Alsa, Ogg Vorbis y otros se eje- echo 1 > value motores.
cuten sin ningún problema en la placa.
En lugar de ELDK en realidad se podría enciende el LED. echo 0 lo vuelve a apagar. Pseudo Red a través de USB
utilizar Debian como base y ejecutar Los scripts sencillos que controlan el Si queremos, podemos crear un pseudo-
apt-get para instalar algún paquete que parpadeo del LED están disponibles red a través de USB en la placa Gnublin
falte. Högl señala que existen variantes como ejemplos en el directorio de inicio sin necesidad de utilizar un cable USB a
ARM para casi todas las distribuciones. del administrador. El Listado 1 muestra Ethernet. Para ello, en primer lugar aisla-
un programa Bash y el Listado 2 es su mos la placa de la fuente de alimenta-
Sensores y Entradas contraparte Lua. Existen más programas ción y configuramos los jumpers USB
Una ventaja de la placa Gnublin, en y ejemplos disponibles en la página web OTG PWR y USB OTG ID a Device (Dev,
comparación con otras plataformas, es la de Gnublin [12]. véase la Figura 4). Las placas de genera-
selección de interfaces a las que se ciones anteriores 1.2 no tienen jumper
puede acceder con sencillez en Linux a GPIO11 como Entrada Conmutador USB OTG ID para forzar al puerto USB
través del sistema de archivos. Dispone GPIO11 es una opción útil si estamos que asuma el rol de host (ID 0) en el
de varios pins GPIO (General Purpose interesados en un test similar de una arranque. A partir de la versión 1.3 se
Input/Output, [11]) y están bien docu- entrada: pueden utilizar cables adaptadores USB
mentados. Por ejemplo, es fácil acceder que no cambian el pin ID gracias a este
echo 11 > export jumper. De hecho, la mayoría de los
Listado 1: Bash blink.sh cd gpio11 cables tienen esta función, que se puede
01 #!/bin/sh
02 Listado 2: Lua blink.lua
03 # Parpadea el LED incorporado 01 -- blink.lua
04 # http://blog.makezine.com/archive/2009/02/ 02 GPIO = 3
blinking- leds-with-the-beagle-board.html
03
05
04 function wait(n)
06 GPIO=3
05 os.execute(“sleep “ .. tonumber(n))
07
06 end
08 cleanup() { # Libera el puerto GPIO
07
09 echo $GPIO > /sys/class/gpio/unexport
08 function cmd(c)
10 exit
09 print(c)
11 }
10 os.execute(c)
12
11 end
13 # Abre el puerto GPIO
12
14 #
13 cmd(“echo “ .. GPIO .. “ > /sys/class/gpio/export”)
15 echo $GPIO > /sys/class/gpio/export
14 cmd(“echo out > /sys/class/gpio/gpio” .. GPIO ..
16 echo “high” > /sys/class/gpio/gpio$GPIO/direction “/direction”)
17 15 n = 0
18 trap cleanup SIGINT # llama al cleanup con Ctrl-C 16 while n < 2 do
19 # Parpadeo continuo 17 cmd(“echo 1 > /sys/class/gpio/gpio” .. GPIO ..
20 while [ “1” = “1” ]; do “/value”)
21 echo 1 > /sys/class/gpio/gpio$GPIO/value 18 wait(1)
22 sleep 1 19 cmd(“echo 0 > /sys/class/gpio/gpio” .. GPIO ..
23 echo 0 > /sys/class/gpio/gpio$GPIO/value “/value”)
24 sleep 1 20 wait(1)
25 done 21 n = n + 1
26 22 end
27 cleanup # llama a la rutina cleanup 23 cmd(“echo “.. GPIO ..” > /sys/class/gpio/unexport”)
14 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
Gnublin PLATAFORMAS
una dirección IP a
Listado 3: Salida de modprobe g_ether la interfaz usb0
Listado 4: lighttpd-init.sh
root@desktop-pc:~# picocom -b 115200 /dev/ttyUSB0 con ifconfig. 01 #!/bin/sh
root@armv5te:~# modprobe g_ether Ya podemos 02 if [ ! -d /var/log/lighttpd ] ;
then
g_ether gadget: using random self ethernet address cambiar a nuestro 03 mkdir /var/log/lighttpd
g_ether gadget: using random host ethernet address escritorio para ver 04 chmod 777 /var/log/lighttpd/
usb0: MAC 2e:dd:9a:ed:d2:48 si se ha encontrado 05 touch
usb0: HOST MAC 56:e5:4d:4b:18:84 /var/log/lighttpd/error.log
el nuevo disposi-
g_ether gadget: Ethernet Gadget, version: Memorial Day 06 fi
2008 tivo de red (en el
segundo cable 07 chmod 666
g_ether gadget: g_ether ready /var/log/lighttpd/error.log
fsl-usb2-udc: bind to driver g_ether USB) y se pueden
08 /etc/init.d/lighttpd start
g_ether gadget: high speed config #1: CDC Ethernet (ECM) usar comandos
como
así puede actuar como servidor SSH o
identificar por el color blanco del interior ifconfig usb0 local_ip servidor web gracias a Dropbear o
del conector. Lighttpd. Todo lo que necesitamos para
Después de conectar la fuente de ali- y Lighttpd es el script de ejemplo lighttpd-
mentación, conectamos los dos puertos init.sh del Listado 4. La pantalla de nave-
USB de la placa al PC, iniciamos la ping Gnublin_board_address gador de la Figura 3 demuestra que ha
sesión en la consola y tecleamos funcionado. La placa necesita hardware
para configurarlo de red USB para acceder a la LAN. ■
modprobe g_ether
Lighttpd Recursos
para cargar el módulo Ethernet (véase el El pequeño equipo ARM puede no ser un
[1] Proyecto Gnublin:
Listado 3). A continuación, asignamos monstruo de alto rendimiento, pero aún http://www.gnublin.org
[2] Embedded Projects GmbH:
http://www.embedded-projects.net
[3] Augsburg Technical University, Cáte-
dra de Técnicas Informáticas, Profesor
Högl:
http://www.hs-augsburg.de/~hhoegl
[4] Gestor de arranque APEX:
http://elinux.org/APEX_Bootloader
[5] Controladores Windows:
http://www.silabs.com/products/mcu/
Pages/USBtoUARTBridgeVCPDrivers.
aspx
[6] ELDK Linux:
http://www.denx.de/wiki/DULG/ELDK
[7] Proyecto Yocto:
http://www.yoctoproject.org
[8] Poky: http://www.pokylinux.org
[9] Open Embedded:
http://www.openembedded.org
[10] Bitbake:
http://bitbake.berlios.de
[11] GPIO:
http://en.wikipedia.org/wiki/
General_Purpose_Input/Output
[12] Programas y scripts:
http://www.gnublin.org/index.
php?title=ApplicationNotes
[13] Entradas ADC de Gnublin:
http://www.gnublin.org/index.
php?title=AppNote-AP0018
[14] Modulación PWM con Gnublin:
Figura 4: Para usar una pseudo-red necesitamos configurar al menos el jumper USB OTG PWR http://www.gnublin.org/index.
y si existe, el jumper USB OTG ID a “Dev”. php?title=AppNote-AP0019
W W W. L I N U X - M A G A Z I N E . E S HARDWARE 15
PLATAFORMAS Hummingbird
Colibrí
El Hummingbird combina las ideas de Arduino con los juguetes de
m
RF.co
- 123
sign
ktde
16 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
Hummingbird PLATAFORMAS
Figura 1: Los bloques terminal están etiquetados para indicar qué componente se puede Figura 2: Los bloques terminal facilitan la
conectar dónde. conexión de componentes.
También podemos descargar el fichero Una vez hayamos logrado arrancar el podemos hacer con motores, servos y
jnlp del PV desde [3] y ejecutarlo simple- entorno, veremos un ventana similar a la LEDs monocromos.
mente abriéndolo en un navegador. Esto nos que se ve en la Figura 3. Éste es el Cons- Esto en sí ya es bastante divertido y
permitirá usar el entorno sin tener que visi- tructor de Expresiones. En el panel de la puede proporcionar a un niño horas de
tar el sitio de Hummingbird. Sin embargo, izquierda, tenemos un diagrama de la diversión, pero lo mejor es que, juguete-
seguiremos necesitando conexión a Internet, placa. Cada uno de los grupos de bloques ando con el Constructor de Expresiones,
ya que el programador enlaza a varios terminal vienen etiquetados igual que en estamos iniciándonos en la creación de los
módulos que descarga en el arranque. la placa física y cada bloque terminal tiene bloques para la programación de la placa
Y aquí nos topamos con el primer pro- al lado una casilla de verificación. Mar- y sus componentes.
blema de este entorno: la primera vez que cando la casilla, se activa el bloque y se Me explico. La programación con PV
arranca es muy lento, precisamente por nos permite establecer valores para consta de dos partes: la creación de expre-
tener que descargar tantos módulos. Hay interactuar con los componentes. siones, que se realiza en el Constructor de
que indicar que los arranques subsiguien- Por ejemplo, si tenemos conectado un Expresiones que hemos visto, y lo que es
tes son algo más veloces, pero no mucho, LED RGB al bloque 1 del grupo de los Tri- la programación propiamente de scripts
por tanto: paciencia. Color LEDs y marcamos la casilla corres- (denominados “Secuencias”), cosa que se
En el caso de que el PV no identifique la pondiente en el programador, aparece un realiza en el Constructor de Secuencias
placa durante el arranque, comprobare- panel con deslizadores para cada uno de encadenando las expresiones.
mos que ésta está conectada a la corriente los colores que el LED puede mostrar. Para ilustrar cómo se hace, vamos a
con el cargador y al ordenador a través del Moviendo los deslizadores (o escribiendo crear un script que haga parpadear tres
cable USB. Igualmente tenemos que com- un valor entre 0 y 255 en la casilla a la veces el componente verde de un LED
probar el estado de los permisos del bus derecha de cada deslizador) podemos RGB con una cadencia de un segundo, es
USB al cual se conecta la placa (véase el establecer la intensidad de la luz roja, decir, se ilumina el componente verde
cuadro Permisos, permisos, permisos). verde y azul que emite el LED. Lo mismo durante un segundo, luego se apaga
Figura 3: Estado inicial del Programador Visual. Figura 4: Secuencia que hace parpadear el componente verde del LED.
durante un segundo y así hasta tres derecho, escogeremos un Counter y lo Snap [4], una implementación de Scratch
veces. colocaremos en el espacio de trabajo (un [5] para web. Para quien no esté familiari-
El primer paso, como hemos mencio- counter hace las veces de bucle). Una vez zado con este tipo de interfaces (ver
nado, consiste en crear las expresiones. colocado, pulsamos en el candado y podre- Figura 5), ayudan a iniciarse en la progra-
Conectamos un LED RGB al bloque 1 del mos desbloquear el número de iteraciones mación proporcionando una serie de blo-
grupo Tri-Color LEDs y marcamos la casi- del bucle. Cambiamos el uno por tres. ques similares a la de los juegos de cons-
lla correspondiente en el Constructor de Ahora arrastramos las expresiones trucción que pueden interconectarse entre
Expresiones. Con todos los deslizadores “Verde” y “Apagado” al interior del bucle sí.
en cero, pulsamos en el botón Save en el para que quede como en la Figura 4. Por ejemplo, para realizar un script que
ángulo superior del panel. Le damos un Para probar nuestro programa, pulsa- hiciese lo que vimos en el apartado ante-
nombre a nuestra expresión (por ejemplo, mos en botón Play en la parte superior rior, es decir, hacer parpadear el elemento
“Apagado”) y aparecerá la expresión en la derecha del panel principal. verde de un LED RGB tres veces con una
lista a la derecha del panel principal. Así que parece Navidad. Enhorabuena. cadencia de un segundo, conectaríamos
Ahora pulsamos en el botón New, con- Naturalmente, podemos guardar nues- bloques de la siguiente manera:
firmamos que queremos crear una nueva tro trabajo utilizando el botón Save y
expresión y la representación de la placa empezar otro proyecto con el botón New.
vuelve a su estado original. De nuevo pul- A pesar de sus buenas ideas, el Progra-
samos en la casilla de nuestro LED y mador Visual se queda bastante corto. El
movemos el deslizador del color verde al tener que arrancarlo estando conectado a
máximo. Pulsamos en Save y guardamos Internet y su lentísima carga son otras dos
la expresión con el nombre “Verde”. desventajas de este entorno. Está bien
Ahora pulsamos en la pestaña Sequence para experimentar y comprobar que todo Como se puede ver, el resultado es bas-
Builder para empezar a construir nuestro funciona, pero poco más. tante más compacto y legible que con el
programa. Veremos que también en esta Ahora bien, Snap para Hummingbird es Programador Visual, además de que Snap
pestaña disponemos de nuestras expresio- otra historia… proporciona muchas más herramientas y
nes, que podemos arrastrar hasta el espa- es más responsivo.
cio de trabajo para crear una “secuencia”. Snap Sin embargo, para poder utilizar esta
Para lo que nosotros queremos hacer, Además del programador visual, Hum- interfaz, hay que hacer unas cuantas
del cajetín Structures del ángulo inferior mingbird puede programarse utilizando cosas antes.
18 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
Hummingbird PLATAFORMAS
W W W. L I N U X - M A G A Z I N E . E S HARDWARE 19
ARDUINO E/S Digitales
Electrónica Diferente
Arduino es una manera sencilla y divertida de iniciarse en el mundo de la electrónica y una oportunidad de llevar tus ideas al mundo real.
Arduino es una plataforma de hardware primera toma de contacto con la progra- necesitar una serie de componentes elec-
libre basada en una placa con microcon- mación, por lo que una vez ya realizado trónicos aparte del Arduino [2]: un pul-
trolador y un entorno de desarrollo, dise- el “Hola Mundo” de Arduino, el cual sador, una resistencia de 10K y una pro-
ñada para facilitar el uso de la electró- consiste en hacer parpadear un LED, nos toboard para el montaje. Todos estos
nica en proyectos multidisciplinares. centraremos en el estudio y prueba de componentes (y algunos más) los encon-
Arduino también es una oportunidad. las distintas entradas/salidas digitales traremos en el Arduino Starter Kit de
Una oportunidad para llevar a cabo que nos ofrece Arduino. Cooking Hacks [3] (Figura 2 y Tabla 1).
todas esas ideas que os rondan por la Para realizar un primer diseño del cir-
cabeza. A quién no se le ha ocurrido la Preparación y Puesta a Punto cuito, como en el anterior artículo [1],
típica idea de: ¿Y si pudiera encender la Para comenzar a trabajar es necesario nos serviremos de la herramienta Frit-
luz de mi cuarto dando una palmada? descargar desde la página oficial de zing [4]. Fritzing contiene numerosos
¿Podría encender la calefacción de mi Arduino [2] el software necesario para circuitos de ejemplo ya diseñados,
casa con el móvil?… pues con Arduino crear los programas y transferirlos a pudiéndonos servir de base para otros
todo esto y mucho más es posible. Puede nuestro Arduino (Figura 1). Para ello proyectos, pero en este caso lo utilizare-
que suene a anuncio de teletienda, pero seguiremos los pasos y consejos del artí- mos únicamente para realizar unos dia-
lo cierto es que este dispositivo abre las culo Introducción al Arduino: Contacto gramas sencillos de conexionado, aun-
puertas a un mundo de aplicaciones y físico [1] de Dmitri Popov. que tiene otras muchas funciones
posibilidades, en el que puedes realizar Una vez que hemos instalado correcta- (Figura 3).
distintos proyectos sin tener que ser un mente el IDE y conocemos los conceptos Conectaremos el LED al pin digital 13,
experto electrónico o programador. básicos para utilizarlo y programar en él, el cual ya tiene incorporada una resis-
Utilizando programas sencillos pode- podemos comenzar a realizar el diseño tencia limitadora de corriente (impide
mos dar instrucciones al microcontrola- del hardware. Una vez que tengamos el que el diodo se queme por un exceso de
dor para que trabaje como cerebro de hardware y el programa listos, sólo tene- corriente). Lo mas complicado del hard-
nuestro sistema, recibiendo datos por mos que conectar el Arduino al ordena- ware será el circuito del pulsador. Los
medio de sus numerosas entradas (ana- dor, cargarle el código y observar el pulsadores conectan dos puntos de un
lógicas y digitales), las cuales le permi- resultado de nuestro proyecto. circuito al ser pulsados. Como se puede
ten leer parámetros del entorno, y observar (Figura 4), los pulsadores elec-
enviando datos al medio para poder Diseño del Hardware trónicos parecen llevar cuatro patillas,
actuar sobre él gracias a una serie de En este proyecto, vamos a leer una pero en realidad sólo son dos muy largas
salidas (digitales). entrada digital por medio del Arduino y que salen por los laterales del pulsador
Como ya se vio en el artículo anterior en función de esa entrada, actuaremos para facilitar las conexiones, de manera
[1], es necesario comenzar con ejemplos sobre otro pin digital como salida, donde que si lo colocamos y el LED se
muy básicos con el fin de familiarizarnos estará conectado un diodo LED. Para rea- enciende continuamente, es muy posi-
con el entorno de trabajo y como una lizar este pequeño proyecto vamos a ble que lo hayamos conectado mal; si
20 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
E/S Digitales ARDUINO
En el primer programa de
ejemplo, sólo queremos leer
el estado del pulsador y mos-
trarlo por el monitor serie del
que dispone el IDE de
Arduino. Para ello, en el
bucle setup configuraremos el
pin al que hemos conectado
el pulsador como una
Figura 4: Resistencias pull-up y pull-down. entrada, para así poder leer
su estado, e inicializaremos
Asimismo, podemos utilizar dos barras la comunicación serie entre el
(//) al inicio de una línea para realizar Arduino y el ordenador a una
anotaciones o comentarios para facilitar velocidad de 9600 (existen Figura 5: Fritzing nos permite plasmar nuestro diseño en
la comprensión de nuestro programa. varias velocidades, pero en una imagen.
nuestro caso elegimos una
//Esto es un comentario de una estándar). En el bucle loop realizamos anterior. Primero tomamos el valor del
línea tres instrucciones: primero almacenamos pulsador y lo almacenamos en una varia-
el valor de la entrada en la que se ble que previamente hemos definido. A
De cara a la utilización del circuito que encuentra conectado el pulsador (si es partir de aquí debemos utilizar una
hemos montado, vamos a realizar dos un 1 o un 0), después imprimimos este nueva estructura de código, el bucle
ejemplos: en el primero monitorizare- valor en el monitor serie, y por último if/else, la cual cumple una función con-
mos el estado del pulsador. En el esperamos 1 segundo para evitar tomar dicional básica, indicando que, si se
segundo, en función de ese estado, una nueva medida hasta que hayamos cumple una condición, se realiza la pri-
encenderemos o no un LED. leído la actual. Una vez que escribamos mera parte del bucle, y si no se cumple
En ambos programas, en primer lugar, el código, es necesario cargarlo en el la segunda. En nuestro caso, si el pulsa-
debemos declarar las variables globales Arduino, y una vez cargado, pulsar el dor está presionado, enciende el LED, y
que vayamos a utilizar antes del setup. botón de Serial Monitor para poder ver si no lo está, hace lo contrario.
Estas variables las organizaremos como las lecturas del estado del pulsador Una vez acabados de teclear los pro-
estáticas (las que no van a cambiar de (Figura 7). gramas, podemos comprobar si existe
valor a lo largo del programa) y dinámi- En el segundo programa, la única dife- algún error antes de cargarlo en Arduino.
cas (en las que vamos a almacenar un rencia es que en vez de mostrar el estado El programa os avisará por medio de la
valor que puede ir cambiando a lo largo del pulsador, lo utilizamos, y, en función consola inferior si hay errores de progra-
del programa). En nuestro caso, definire- de dicho estado, encendemos o apaga- mación o sintaxis. Una vez que nos avise
mos un tipo de variable int (que alma- mos un LED. La parte de definición de que compila correctamente, podemos
cena números enteros entre -32768 y variables y el setup se realizará de cargarlo en Arduino sin mayor preocupa-
32767), aunque existen otros muchos manera semejante al anterior ejemplo. ción.
tipos que iremos conociendo en función Sólo tendremos que definir todos los Ambos códigos se encuentran comen-
de las necesidades de cada momento. A parámetros necesarios para trabajar con tados con el fin de facilitar su compren-
partir de aquí, siempre que utilicemos el LED que se encuentra integrado en el sión, y poder entender paso a paso lo
una de estas variables, únicamente ten- pin 13 digital. La parte del loop es un que va ocurriendo en el programa.
dremos que llamarla por el nombre que poco más compleja, pero podemos Para la realización de más ejemplos
le hemos asignado. basarnos nuevamente en el ejemplo básicos, podéis echar un vistazo a la web
22 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
E/S Digitales ARDUINO
W W W. L I N U X - M A G A Z I N E . E S HARDWARE 23
ARDUINO E/S Analógicas
Controlando el Entorno
Aprendemos a monitorizar e interactuar sobre el entorno con Arduino. Por Luis Martín
Desde tiempos remotos, el ser humano tenemos que ir tan lejos en el tiempo Naturalmente, ambas cosas son con-
siempre ha buscado la manera de con- para encontrar este tipo de necesidades trolables por Arduino. Y el sistema de
trolar todo lo que le rodea. Ejemplos de humanas. En la actualidad, el fuego se hardware libre nos lo permite de
esto son el control del fuego y el agua ha cambiado por la calefacción de nues- manera autónoma, tomando informa-
pretendido por las civilizaciones anti- tra casa y el agua, por el riego automá- ción del entorno a través de sus pines
guas. Sin embargo, nosotros no nos tico de las plantas. de entrada para multitud de sensores.
Con la información extraída, puede
Listado 1: Lectura Entrada Analógica afectar sobre aquello que le rodea, con-
trolando luces, motores y otros actuado-
01 // Variables estáticas potenciometro y lo almacena
res. También puede trabajar como un
02 int potenciometro = A0; // 14 // en la variable valorPoten-
“puente” entre un dispositivo electró-
Entrada para el potenciómetro ciometro
nico y el mundo real, haciendo que un
03 15 valorPotenciometro = analo-
ordenador pueda sentir y controlar el
04 // Variables dinámicas gRead(potenciometro);
mundo físico.
05 int valorPotenciometro = 0; // 16 // Imprime por el monitor serie
Variable para el valor del sensor el valor
06 17 // de la señal del potenciometro
07 void setup() { 18 Serial.print(“Valor sensor = “
08 // Inicializa el puerto serie: );
09 Serial.begin(9600); 19 Serial.println(valorPoten-
10 } ciometro);
11 20 // Pequeño retardo de tiempo:
12 void loop() { 21 delay(1000);
13 // Lee el valor del pin del 22 }
Figura 1: Entradas analógicas de Arduino.
24 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
E/S Analógicas ARDUINO
26 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
E/S Analógicas ARDUINO
W W W. L I N U X - M A G A Z I N E . E S HARDWARE 27
ARDUINO E/S Analógicas
28 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
E/S Analógicas ARDUINO
W W W. L I N U X - M A G A Z I N E . E S HARDWARE 29
ARDUINO Domótica (I)
Hogar en Red
El concepto de “Internet de las cosas”, a pesar de tener un ligero tono futurista, está vivo en nuestro entorno creciendo cada día más…
30 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
Domótica (I) ARDUINO
inversamente
proporcional. Si
colocamos la
resistencia a
masa y utiliza-
mos la LDR
como resistencia
superior, obten-
dremos la ten-
sión máxima
cuando la lumi-
Figura 4: Arduino Ethernet Shield conec- nosidad sea
tado. máxima (será
directamente
nosotros nos interesa para poder conec- proporcional).
tarla a una entrada analógica de Arduino, En nuestro caso,
es necesario utilizar el divisor de tensión, lo vamos a colo- Figura 5: Circuito conexión del pulsador.
con el que ya hemos trabajado con anterio- car al revés, por
ridad (Figura 6). lo que será necesario por medio de código de una resistencia limitadora. Esto se reali-
La tensión que apliquemos sobre las dos adaptar los valores analógicos, al igual zará así debido a que el Arduino Ethernet
resistencias (tomando la LDR como una que en el artículo anterior adaptamos los Shield se sirve de los pines 10, 11, 12 y 13
resistencia) se verá repartida entre ambas, valores de lectura analógica para el poten- para comunicación con el Arduino vía SPI.
de manera que, si varía la resistencia de la ciómetro (Figura 7). Para trabajar en mayor profundidad
LDR debido a un cambio de luminosidad, Tras trabajar con dos sensores (analó- estos ejemplos, podéis acceder a la página
variará en consecuencia de manera pro- gico y digital), para el tercer ejemplo, mon- web oficial de Arduino [5] y conviene que
porcional la tensión sobre ella. taremos un circuito simple con un LED, tengáis la documentación sobre la librería
Podemos conectar la LDR en dos posi- con el fin de controlar su estado. El LED lo Ethernet donde se detalla el funciona-
ciones y, en función de donde la coloque- conectaremos de manera similar a los miento de las funciones usadas.
mos, obtendremos una tensión directa- anteriores ejemplos aunque en el pin digi- Ya que para el último de los ejemplos no
mente proporcional a la luminosidad o tal 2, por lo que es necesario la colocación es necesario ningún tipo de montaje, sola-
32 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
Domótica (I) ARDUINO
W W W. L I N U X - M A G A Z I N E . E S HARDWARE 33
ARDUINO Domótica (I)
// Inicializa el modo
// de trabajo
EthernetClient client;
Figura 8: Lecturas web del estado del pul-
sador. Una vez que tenemos esta configuración Figura 9: Lecturas web del estado de lumi-
básica para todos los ejemplos, podemos nosidad.
servidor web, necesitaremos configurar el entrar más en profundidad en cada uno de
puerto asignado para el protocolo a utili- ellos. Los programas son más complejos módulo Ethernet Ethernet.begin(mac, ip) e
zar, en nuestro caso el puerto 80, ya que es que los que hemos visto en anteriores artí- iniciamos la conexión del servidor web por
el puerto para trabajar con el protocolo culo, pero no hay que asustarse, ya que no medio de la función server.begin(), que es
HTTP. Podemos definir en esta parte todas es necesario entender cada línea y función muy similar a la que se usa para iniciar el
las variables que vayamos a utilizar en el del código. Sólo tenemos que entender la puerto serie de Arduino. Una vez acabado
código. estructura general del ejemplo y lo que este bucle y habiendo configurado en él
debemos cambiar para trabajar con ellos. todo lo que se va a trabajar en nuestros
// Inicializa el modo de Además, las funciones se encuentran expli- programas, pasaremos al bucle loop(), en
//trabajo y el puerto a usar cadas en la página web oficial de Arduino el que primero colocaremos una variable
EthernetServer server(80); [5]. cliente que se encargará de escuchar si hay
En los tres primeros ejemplos trabajare- algún cliente conectado al servidor Ether-
Asimismo, en el caso de trabajar con el mos con el módulo como servidor web y la netClient client = server.available(). Una
módulo como cliente, lo configuraremos estructura del código va a ser bastante vez que sabemos si hay alguien conectado,
de la siguiente forma: similar. En el bucle setup() inicializamos el por medio de un bucle if entramos en la
34 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
Domótica (I) ARDUINO
W W W. L I N U X - M A G A Z I N E . E S HARDWARE 35
ARDUINO Domótica (II)
Centro de Control
Podemos manejar casi cualquier dispositivo eléctrico/electró-
Así que vamos a comenzar a domotizar similares (del que queramos controlar su Podemos encontrar numerosos tipos de
nuestra casa en serio, pero de la manera encendido y apagado): control de la cale- relés o módulos que trabajan con ellos y
más sencilla y a la vez más vistosa que facción o aire acondicionado, control son compatibles con Arduino en la página
podamos implementar. Como seres huma- paterno de la televisión/ordenador, etc. web de Cooking Hacks. Pero para este pro-
nos, somos vagos por naturaleza y lo que yecto únicamente presentaremos dos de
buscamos es siempre llegar a una meta El relé ellos por su sencillez y utilidad.
con el menor esfuerzo posible. Es algo Para poder controlar las luces de nuestra El módulo con el que principalmente
innato y más en los que nos dedicamos a casa, debemos saber que este tipo de apa- vamos a trabajar es el Relay Module
estas ramas de la electrónica e informá- ratos eléctricos están conectados y se ali- (Arduino Compatible) (Figura 1) [1]: una
tica. mentan por medio de la red eléctrica (el pequeña placa que nos permite controlar
Sólo hay que ver por ejemplo, ese gran típico enchufe de nuestro hogar). Igual un equipo eléctrico actuando sobre su
invento que ha revolucionado la manera esto ya lo sabéis y os parece un comenta- línea de alimentación. Al ser modular, se
de ver y sentir en esta sociedad, el mando rio innecesario, pero con 230 voltios de conecta de manera sencilla a Arduino y se
a distancia. Quién no recuerda, el como a corriente alterna nunca está de más: puede controlar con una simple salida
la orden de tu padre, te sentías orgulloso nunca manipuléis ningún dispositivo digital.
de ser el “elegido” de levantarte a cambiar conectado a la corriente, trabajar siem- Si tuviéramos que controlar numerosos
el canal de la televisión y suerte si no te pre y cercioraros de que está desconec- dispositivos podríamos recurrir al Relay
tocaba sintonizar la imagen con la tado. Shield (Figura 2) [2]. Se trata de un
ruleta… Para poder trabajar con la red, y en vista módulo, muy similar al anterior, que
Pero ahora esto ha cambiado, cuanto de que tiene unas características distintas incluye cuatro relés para aplicaciones de
menos te cueste en dinero y en esfuerzo, a los típicos circuitos de 5 voltios que utili-
mejor. Y por ello vamos a aprender en este zamos con Arduino, debemos presentar
artículo cómo controlar los dispositivos un nuevo componente electrónico: el relé.
eléctricos de nuestro hogar, ya sea vía El relé es un dispositivo electromecá-
Internet o bien, utilizando comunicación nico. Esto quiere decir que es como un
inalámbrica Xbee, ambas formas utiliza- interruptor típico de nuestra casa pero
das ya en anteriores artículos. controlado de manera eléctrica, gracias a
Nos centraremos únicamente en el con- la ayuda de un electroimán. Es un disposi-
trol de las luces, ya que es el caso más tivo muy útil, ya que nos permite con una
conocido, pero se puede aplicar a cual- tensión baja (5 voltios), controlar tensio-
quier tipo de dispositivo de características nes y potencias mucho mayores. Figura 1: Relay module (Arduino Compatible).
36 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
Domótica (II) ARDUINO
tensión como un
simple interruptor,
de manera que si lo
colocamos en un
cable, cuando no
apliquemos tensión,
el cable estará cor-
tado, pero si aplica-
mos tensión en el
Figura 2: Relay Shield. relé, el cable condu-
cirá la electricidad.
control en baja y alta tensión. Especial- (Figura 3)
mente diseñado para aplicaciones de En el módulo con
robótica, control industrial o domótica. el relé podemos Figura 3: Esquema conexión relé.
Podéis encontrar también un tutorial en encontrar dos
Arduteka [3], con un ejemplo en el que se conectores, uno de ellos blanco con un recibe señal de encendido, está el inte-
utiliza el relé con otras tensiones de ali- conector especial que servirá para enviar rruptor abierto, por lo tanto no hay
mentación, desconectando un Arduino en la señal de control del relé y otro verde conexión eléctrica y la lámpara está
función de la temperatura. atornillable, que es el que vamos a utilizar apagada.
para trabajar con la corriente alterna. Para el caso general, como podemos ver
Diseño del Hardware En el conector verde encontraremos en la Figura 3, utilizaremos COM con la
Como nos hemos decidido a trabajar úni- cuatro posibles conexiones con distintos señal que viene de la red y NO al disposi-
camente para estos ejemplos con un sólo nombres: tivo eléctrico (de manera que si no aplica-
relé, vamos a explicar cómo debemos 1. COM: la entrada positiva del cable. mos señal de control, la lampara estará
conectarlos tanto en el lado de baja ten- 2. N/A: no conectado / no se utiliza. apagada).
sión, como en el de la red. De manera 3. NC: Normalmente Cerrado, lo que sig- Por otro lado está el conector blanco, en
similar podemos conectar varios relés en nifica que cuando el relé no recibe señal el que encontramos la señal de control, la
el Relay Shield. de encendido, está el interruptor alimentación (5voltios) y la masa (GND).
Comenzaremos explicando la parte cerrado, por lo tanto hay conexión eléc- Conectaremos entonces alimentación y
común para cualquiera de los ejemplos, trica y la lámpara está encendida. masa en sus respectivos pines de Arduino
que es la conexión del dispositivo eléctrico 4. NO: Normalmente Abierto (Open), lo y la señal de control en una salida digital
a la red. Debemos tratar la parte de alta que significa que cuando el relé no libre (ver Figura 4).
Para el
segundo ejem-
plo, necesitare-
mos modificar
de manera simi-
lar el circuito del
ejemplo que
vimos en el artí-
culo citado en el
párrafo anterior
en el que inter-
actuábamos con
Twitter. (Figura
6).
Vistos estos
Figura 4: Conexión relé. dos sencillos Figura 5: Circuito control de luces
ejemplos, pasa- inalámbrico .
Los ejemplos que vamos a trabajar son remos a la parte del código, que tampoco
muy similares a otros que ya hemos visto es complicada. tweet realizado por una cuenta de Twitter
en anteriores artículos, la única diferen- [5]. En este caso, en función del mensaje
cia es que en esos casos actuábamos Programación twitteado, realizaremos la acción de
sobre un LED y en este caso, sobre el Es tan sencilla en este caso la parte de pro- encender las luces o apagarlas.
relé. gramación que, para el primer ejemplo de Para empezar aumentaremos el retardo
Debemos utilizar pines I/O de Arduino control de la luz vía inalámbrica, única- que existe entre cada vez que enviamos
que no estén ocupados por los otros mente debemos utilizar el mismo código una petición de lectura a Twitter, para así
módulos que vamos a utilizar. que utilizamos para controlar el LED, tener un control casi inmediato de las
El primer ejemplo es prácticamente cambiando si es necesario la salida digital luces.
idéntico al de control de un LED por asignada al LED por la nueva del relé.
medio de un pulsador de manera inalám- De esta manera tan sencilla podemos // Delay entre peticiones
brica que vimos en el artículo “Hogar en activar distintos dispositivos de nuestra const unsigned long U
Red” [4], con la única diferencia de que, casa, sin tener que movernos del sitio, requestInterval = 10000;
en este caso, lo que controlaremos será el pulsando un botón.
estado de la luz de nuestro hogar, desde El segundo ejemplo, sí que supone un Para saber si el tweet realizado se corres-
otra habitación y sin tener que levantar- poco más de trabajo. Partiremos del ejem- ponde con la orden que enciende o apaga
nos (ver Figura 5), plo que ya hicimos, en el que leíamos un las luces, almacenaremos las “palabras
38 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
Domótica (II) ARDUINO
El Autor
Luis Martín, Ingeniero Industrial en el
departamento de I+D de Cooking Hacks
en Libelium.
Figura 8: “Tweets” de control de las luces.
W W W. L I N U X - M A G A Z I N E . E S HARDWARE 39
ARDUINO Domótica (III)
Seguridad
No es difícil ni caro proteger nuestro mente, como novedad, presentaremos vuestra madre o pareja, reciba una lla-
hogar de intrusos y robos. Si bien en un módulo extra que nos permita crear mada perdida en su móvil de unos
algunos casos no podemos evitarlos, hay sistemas de alimentación independiente, segundos. Esto evitaría que pudiera
formas para tratar de minimizar el no vaya a ocurrir que los ladrones corten seguir cotilleando y tuviera que contes-
riesgo. Precisamente, el tema principal el suministro eléctrico antes del robo. tar el teléfono. Posiblemente, cono-
de este artículo es la seguridad. Común- ciendo a mi madre, se quedaría en un
mente, nos referimos a seguridad como Haz de Arduino un móvil: bucle infinito de intento de intrusión en
a la ausencia de riesgo o también a la módulo GPRS mi cuarto y contestar al teléfono…
confianza en algo o alguien. Sin Vamos a comenzar presentando un Antes de utilizar el módulo debemos
embargo, el término puede tomar diver- nuevo módulo con el que trabajar junto conocer que es necesario alimentar el
sos sentidos según el área o campo a la a Arduino. Como en artículos anteriores, Arduino con una fuente de alimentación
que haga referencia. En nuestro caso, lo podemos encontrar junto a todos los externa (el USB no da la corriente sufi-
vamos a enfocarla a la protección y vigi- componentes utilizados en los ejemplos, ciente), por ejemplo una de 12v/2A y
lancia de nuestra casa y nuestros ense- en la página de Cooking Hacks [1]. En colocar el jumper de alimentación en la
res personales, porque como dice el este caso, se trata del módulo GPRS/ posición correcta (si alimentas el
refrán: en lo material, la seguridad es GSM Quadband para Arduino, SIM900 Arduino con la fuente de alimentación,
primordial. [2], el cual se muestra en la Figura 1. en posición Arduino 5V position, y si ali-
Rara es la familia que invierte dema- El módulo GPRS dispone de múltiples mentas directamente el módulo GPRS,
siado dinero en sistemas de seguridad funcionalidades: envío/recepción de en Vext position).
para el hogar. Por esto, vamos a ofrecer mensajes, llamadas perdidas, conexiones Trabajar con este módulo es muy sen-
en este tutorial dos montajes: un senci- TCP y UDP… Gracias a él vamos a poder cillo y parecido a como hemos trabajado
llo y barato sistema de detección de pre- enviar un mensaje de aviso de robo, o
sencia y otro sistema para la alerta ante realizar una llamada perdida cuando
apertura de puertas o ventanas. alguien entre en nuestra habitación.
Ejemplos muy recurridos que pueden Estas acciones por si solas no llevan a
utilizarse desde como sistema de seguri- cabo ninguna tarea de vigilancia, por lo
dad básico para tu casa ante ladrones, que necesitaremos unirlas con otros sen-
hasta como dispositivo detector de sores y actuadores para conformar un
incursiones de tu madre/padre en tu sistema de seguridad. En el apartado de
cuarto. hardware conoceremos los que vamos a
Los ejemplos que vamos a ver en este utilizar para nuestros ejemplos.
artículo pueden combinarse con los Pensar lo divertido que puede resultar
módulos y ejemplos realizados en artícu- el conseguir que cada vez que alguien Figura 1: Módulo GPRS/GSM Quadband para
los anteriores: XBee y Ethernet. Única- entre a tu cuarto, pongamos por ejemplo Arduino (SIM900).
40 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
Domótica (III) ARDUINO
Figura 2: PIR: sensor de presencia para Figura 3: Fundamentos básicos del fun- Figura 4: Esquema del los principales ele-
detección de ladrones. cionamiento del PIR. mentos del PIR.
con otros módulos anteriormente [3], tenemos que pulsar durante unos segun- breve esquema del principio de funcio-
por lo que nos saltaremos la explicación dos. En la Tabla 1 podéis ver una serie namiento del sensor.
de utilizar el módulo en modo gateway, de comandos básicos de ejemplo. En cuanto al hardware del sensor, gra-
modo en el que podéis enviar comandos No os olvidéis de utilizar una tarjeta cias al esquema de la Figura 4, hay que
directamente al módulo vía monitor SIM para poder enviar mensajes o lla- observar que tiene accesibles tres pines
serie. Para trabajar en cualquiera de los madas. Y es que el módulo no tiene (alimentación, masa y la señal digital) y
modos de funcionamiento del módulo, conectividad a una operadora por sí un jumper con dos posiciones que indi-
normal o USB gateway, recordar que es solo. can los distintos modos de trigger:
necesario colocar los jumpers en la posi- • L: la señal envía pulsos, variaciones
ción correcta. Diseño del Hardware entre estado alto y bajo, cuando
Para enviar peticiones o realizar tareas El primer ejemplo que vamos a realizar, detecta presencia y un valor bajo
con el módulo, es necesario enviar dis- sin necesidad de utilizar el módulo cuando no detecta.
tintos comandos llamados comandos GPRS, es el de un sistema que nos per- • H: la señal digital se mantiene en
AT. Son una serie de palabras clave que mita detectar la presencia de un intruso valor alto cuando detecta presencia y
el dispositivo reconoce y realiza accio- en un lugar. Es un montaje muy econó- en valor bajo cuando no.
nes preestablecidas con cada una de mico, pero con unos resultados franca- Para este ejemplo lo dejaremos en modo
ellas. Es necesario enviar el comando en mente interesantes. Resumiendo, L, pero dependiendo de nuestras necesi-
mayúsculas y con un retorno de carro y cuando alguien entre a nuestro cuarto, dades, podemos elegir una u otra
fin de línea tras él (CR y NL). empezará a sonar un pitido. opción.
Por lo que para utilizarlo junto a Para ello necesitamos presentar el Conectaremos la señal digital del sen-
Arduino sólo es necesario configurar la sensor de presencia o PIR [4], similar al sor al pin 2, por lo que trabajaremos con
comunicación serie a la velocidad de tra- que se ve en la Figura 2. Se trata de un ella como si fuera el estado de un pulsa-
bajo del módulo a 115200 bps y enviar el sensor que cuando detecta presencia en dor. Para la señal acústica, que nos avi-
comando que queramos. Para encender su rango de alcance, una vez alimentado sará de la presencia de alguien, utiliza-
el módulo, tenemos un pulsador aso- a 5 voltios con el Arduino, activa una remos un zumbador [5], parecido al de
ciado a la salida digital 2 para poder señal en uno de sus pines. En el dia- la Figura 5, en el pin 12, que emite un
encenderlo por software también, que grama de la Figura 3 podemos ver un sonido bastante repelente cuando le
Figura 5: Zumbador utilizado en el montaje Figura 6: Esquema ejemplo “Sensor de pres- Figura 7: Sensor magnético de puerta uti-
“low-cost”. encia y zumbador”. lizado para monitorizar estado del cajón.
aplicamos tensión. Por si el zumbador esto cuando ocurra. El sensor que utili- pulsadores en artículos anteriores. La
falla, colocaremos en el pin 13 un LED zaremos es uno de efecto Hall [6], aun- señal de apertura o no del cajón la colo-
que indique visualmente lo mismo. En que implementado para su utilización caremos en el pin 8, ya que el módulo
la Figura 6 disponemos de una imagen en puerta y ventanas como muestra la GPRS utiliza los pines digitales 0 y 1
del montaje completo. Figura 7. Se trata de un sencillo disposi- para comunicarse vía serie, y el pin 2
En el segundo ejemplo que vamos a tivo que trabaja como un pulsador, aun- para encendido. La figura 8 muestra el
realizar sí que utilizaremos el módulo que en vez de pulsarlo con el dedo, se montaje de este segundo ejemplo.
GPRS. Queremos enviar un mensaje de activará con un imán, que cuando lo
texto a nuestro móvil cuando alguien acercamos se pulsa y cuando lo aleja- Programación
entre a nuestra habitación o abra nues- mos, ya no. La programación del primer ejemplo es
tro cajón secreto, por lo que necesitare- Es necesario utilizar una resistencia muy sencilla, ya que se trata de un
mos utilizar un sensor que nos avise de de 10k, al igual que en ejemplos con ejemplo muy similar al de la monitoriza-
42 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
Domótica (III) ARDUINO
Figura 8: Esquema ejemplo “Sensor mag- void encenderModulo(){ que hemos presentado en este artículo,
nético y GPRS”. digitalWrite(pinModuloOn,HIGH); por ejemplo, realizando una fotografía
delay(2000); al ladrón, gracias a la posibilidad de
ción del estado de un pulsador. Es nece- digitalWrite(pinModuloOn, LOW); conectar la cámara que incorpora este
sario declarar e inicializar todos los } módulo y subirla en tiempo real a Inter-
pines y variables a utilizar al principio, net.
leer el pin donde está conectado el sen- El resto del código únicamente establece Pero no os asustéis, ya que gracias a
sor de presencia y en función de su el envío de los comandos necesarios Arduteka, tenemos un magnífico tutorial
estado, controlar el zumbador y el LED. para mandar el mensaje cuando detecte- [9] y ejemplo de uso a disposición de
En la Figura 9 vemos un ejemplo de este mos que el cajón está abierto. Esto ocu- todos los usuarios. ■
montaje funcionando. rrirá cuando la lectura del sensor mag-
Este sistema, que así presentado nético dé un 0, ya que será cuando el Recursos
parece muy sencillo, se puede combinar imán se separe del sensor y éste deje de
[1] Cooking Hacks:
con los ejemplos de módulos de comu- estar pulsado. En la Figura 10 podéis
http://www.cooking-hacks.com
nicación inalámbrica XBee, para poder verme, con el móvil en la mano, reci-
[2] Módulo GPRS/GSM Quadband para
colocar la señal acústica y el sensor en biendo el mensaje tras la apertura de mi
Arduino (SIM900):
partes distintas de la casa. cajón de Arduino.
El segundo ejemplo puede resultar un En este caso, hemos utilizado el http://www.cooking-hacks.com/index.
poco más difícil de entender, pero tam- módulo GPRS con el fin de presentar un php/shop/arduino/exclusive-products/
bién es bastante simple. Es necesario sistema, que pudiera seguir funcio- gprs-quadband-module-sim900-for-ar
definir el número de teléfono al que vais nando por medio de baterías, frente a duino.html
a enviar el mensaje, cambiando los un corte del suministro eléctrico. Este [3] Artículo “Centro de Control”, de Luis
“ *” por el número real. mismo ejemplo se podría implementar Martín, ver página 36 de este Especial.
con el módulo Ethernet, que ya conoce- [4] Sensor de presencia PIR:
// Variables dinámicas mos, enviando un aviso vía Internet http://www.cooking-hacks.com/index.
char numero_telefono[]=U [7]. php/pir-sensor.html
“*********”;
[5] Zumbador:
Haz de Arduino un “Smartphone”: http://www.cooking-hacks.com/index.
El código está implementado para una Módulo 3G/GPS php/buzzer-pc-mount-12mm-2-
tarjeta SIM sin código pin, por lo que si Si os habéis quedado con ganas de 048khz.html
utilizáramos una con el código pin habi- más, os propongo un nuevo módulo
[6] Sensor magnético de puerta:
litado, deberíamos utilizar el comando con muchas más prestaciones que el
http://www.cooking-hacks.com/index.
AT+CPIN=” ”. GPRS. Se trata del módulo 3G/GPS [8]
php/shop/sensors/magnetic-door-
Para evitar tener que presionar el pul- que nos permite hacer con nuestro
switch.html
sador cada vez que encendamos el Arduino casi cualquier tarea que reali-
módulo, podemos encontrar en el zaríamos con nuestro móvil de última [7] Artículo “Hogar en red”, de Luis Mar-
código una función que se encarga de generación. tín, ver página 30 de este Especial.
esto. Con llamarla en el setup, nos olvi- Con este módulo podéis mejorar nota- [8] Shield 3G/GPRS para Arduino:
daremos de tener que pulsarlo. blemente las aplicaciones de seguridad http://www.cooking-hacks.com/index.
php/3g-gprs-shield-for-arduino-3g-
Tabla 1: Comandos básicos de configuración gps.html
Comando Respuesta Descripción [9] Tutorial Arduteka :
AT OK Hay conexión con el módulo http://www.arduteka.com/2012/05/
AT+CPIN=” ” OK Desbloquear la SIM (es el pin) tutorial-arduino-0010-modulo-3g-ultra
AT+COPS? OK Información del operador sonidos-teclado-matricial-led-rgb
W W W. L I N U X - M A G A Z I N E . E S HARDWARE 43
ARDUINO Domótica (IV)
parte para sobrevivir. Con unos sensores Arduino y un poco de programación, se los podemos proporcionar. Por Luis Martín
En la ciudad, mucha gente buscamos un la vez que hacemos de la jardinería una un DeLorean, pero vamos a poder con-
pequeño rincón de paz y tranquilidad labor más sencilla. trolar qué día y a qué hora queremos rea-
que nos recuerde al campo, o simple- lizar una determinada acción. Esto nos
mente utilizamos una planta para dar un Controlando el
matiz más alegre a una habitación. Sin tiempo: RTC
embargo, al sacar las plantas de su En anteriores artí-
ambiente natural, éstas necesitan de culos hemos traba-
cierta ayuda para poder sobrevivir y jado con numero-
mantenerse sanas: riego, iluminación, sos juguetes para
nutrientes, etc. Arduino, desde
Con el fin de evitar que nuestra planta sencillos sensores
muera por falta de cuidados o simple- hasta actuadores
mente porque nos olvidemos de regarla, sobre la red eléc-
vamos a centrar este artículo en diseñar trica. Pero ahora
sistemas que permitan dotar a nuestras toca ponernos con
plantas de lo que les hemos privado al algo más serio: el
sacarlas de su entorno: autosuficiencia. control del tiempo.
Usando la tecnología, podemos entender No vamos a lograr
mejor lo que nuestras plantas sienten, a viajar al pasado en Figura 1: Módulo RTC utilizado para conocer la fecha y la hora.
44 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
Domótica (IV) ARDUINO
Vigilando la
temperatura
Para un segundo ejem-
plo en este artículo,
vamos a necesitar el
uso de sensores que
nos proporcionen datos
sobre el estado de
nuestras plantas. Sin
embargo, no podemos
recurrir a los sensores
de temperatura o
Figura 2: Sonda para medir la temperatura humedad clásicos, con
de la tierra por medio del protocolo 1-Wire. los que ya hemos tra-
bajado en otros artícu- Figura 4: Montaje del ejemplo de riego a una determinada hora.
servirá para poder establecer un determi- los.
nado horario para regar nuestro jardín. Debemos tener en cuenta que vamos a protocolo es que nos permite utilizar
Para ello vamos a recurrir a un disposi- trabajar en unas condiciones especiales, múltiples sensores conectados a la vez
tivo que permita a nuestro Arduino ya que mediremos estos parámetros en en un único pin digital.
conocer el día en que está y la hora a la el interior de la maceta o bajo tierra. Para Nosotros vamos a usar únicamente
que está haciendo funcionar un código. ello vamos a utilizar la sonda que podéis un sensor, el cual tiene 3 pines: alimen-
Su nombre es RTC [2], Real Time Clock, ver en la Figura 2, una sonda de tempe- tación, señal y masa. En cuanto al
un reloj en tiempo real que se comunica ratura digital [2] especialmente diseñada hardware lo conectaremos como si se
con nuestro Arduino por medio de un para trabajar en estas condiciones adver- tratara de un sensor digital más, ali-
protocolo hasta ahora no utilizado en sas. mentándolo a 5 voltios y con la señal
este proyecto. Gracias a una pequeña La única pega de este sensor es que no conectada a un pin digital de Arduino.
pila de botón y por unos pocos euros, funciona como un sensor digital normal La única diferencia es que va a ser
tenemos a nuestro Arduino en hora aún sino que utiliza un protocolo llamado 1- necesario colocar una resistencia de
cuando no lo tengamos alimentado. Wire. Para no ser demasiado pesimistas, pull-up, entre 5 voltios y señal, de 4k7
Como podemos ver en la Figura 1, úni- podemos verlo como algo nuevo que para alimentar correctamente el dispo-
camente necesita 4 cables para conec- vamos a aprender. Lo interesante de este sitivo.
tarlo a Arduino. I2C es un protocolo de
comunicaciones de bus serie, accesible Listado 1: Medir temperatura con protocolo 1-Wire
en Arduino en los pines 4 y 5 analógicos,
01 // Incluimos la librería para 16 Serial.begin(9600);
correspondientes con los pines SCL,
establecer comunicación 17 // Mensaje de inicio
linea de reloj, y SDA, linea de datos. Los
mediante el protocolo 1-Wire 18 Serial.println(“Ejemplo
otros dos pines del dispositivo son ali-
02 #include <OneWire.h> solicitud temperatura”);
mentación y masa.
03 // Incluimos la librería para 19
Gracias a la librería Wire de Arduino,
comunicarnos con los sensores de 20 // Inicializa el protocolo
no nos va a resultar difícil trabajar con el
manera sencilla 1-Wire y el sensor
protocolo I2C. No necesitamos compren-
04 #include <DallasTemperature.h> 21 sensores.begin();
der en profundidad este protocolo, ya
05 // Definimos el pin de Arduino 22 }
que se trata de un sencillo bus serie
que se usará con el protocolo 23
basado en la estructura maestro/esclavo,
1-Wire 24 void loop() {
pero cuando empecemos con la progra-
06 #define ONE_WIRE_BUS 8 25 // Solicitamos la temperatura
mación veremos en mayor profundidad
07 al dispositivo
su funcionamiento.
08 // Creamos una clase “oneWire” 26 Serial.print(“Solicitando
para trabajar en el pin elegido Temperatura...”);
09 OneWire oneWire(ONE_WIRE_BUS); 27 sensores.
10 requestTemperatures();
11 // Pasamos los datos del 28 Serial.println(“”);
protocolo 1-Wire a la libreria 29 // Imprimimos el valor de la
de Dallas en una nueva clase temperatura
12 DallasTemperature 30 Serial.print(“La temperatura
sensores(&oneWire); de la planta es: “);
13 31 Serial.println
14 void setup() { (sensores.getTempCByIndex(0));
Figura 3: Bomba sumergida para el sistema
15 // Inicializa el puerto serie 32 }
de riego.
46 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
Domótica (IV) ARDUINO
Programación
La parte de programación
para estos ejemplos va a ser
bastante breve, debido a la
utilización de librerías prede-
Figura 7: Esquema del ejemplo de control del finidas ya que los códigos se
estado de nuestra planta. encuentran densamente
comentados. Sin embargo
Figura 5, además del de temperatura. caben desatacar y aclarar Figura 8: Montaje del ejemplo de control del estado de
Este sensor trabaja como un sensor ana- algunas funciones y concep- nuestra planta.
lógico resistivo. En función de la hume- tos del código.
dad nos proporciona un valor de 0 a En el primer ejemplo hemos definido riego. El resultado de este primer mon-
1023, con valores de: 500 con tierra dos funciones para comunicarnos con el taje se puede ver en la Figura 9.
húmeda, 100 con tierra seca o 1000 en RTC. La primera para poner en hora el El segundo ejemplo no necesita nin-
agua. dispositivo y la segunda para solicitar la guna aclaración, ya que únicamente
Para colocar estos sensores en nuestro hora. Como es de esperar, sólo es nece- medimos el valor de los dos sensores y
jardín no vamos a encontrar mucho pro- sario poner en hora una vez nuestro realizamos una llamada cuando se van
blema, ya que el de temperatura viene reloj, ya que sino, cada vez que se eje- de un rango determinado.
en formato sonda y lo único que debe- cute el código reiniciaríamos la hora. Obtenemos como resultado, algo bas-
mos hacer es enterrarlo en la tierra, y el Para ello una vez que ejecutemos el pro- tante peculiar: a nuestras plantas hacién-
de humedad viene en forma de V para grama por primera vez, es necesario car- donos una perdida al móvil para avisar-
clavarse en la zona superficial de la tie- garle el código de nuevo con la función nos que necesitan ser regadas.
rra cercana a la planta, como se puede de puesta en hora comentada.
ver en la Figura 6. Siguientes pasos
Para avisar cuando llega a ser peli- // configurarTiempo(); Para este último ejemplo hemos utilizado
groso el valor de esos parámetros, vamos el aviso mediante llamada perdida, que
a utilizar el módulo GPRS, aprovechando El resto del código únicamente sirve para nos permite realizar el módulo GPRS,
que ha sido el último módulo de comu- solicitar la hora y comparar con una hora para que sea un sistema sin coste alguno.
nicaciones con el que hemos trabajado establecida en el programa, para que Sin embargo, utilizando como base el
[8] (ver Figura 7). cuando coincida, se active el sistema de código, podemos utilizar cualquier otro
W W W. L I N U X - M A G A Z I N E . E S HARDWARE 47
ARDUINO Domótica (IV)
parte del código en la que utilizamos el hemos utilizado en los ejemplos del artí-
GPRS, por la del módulo Ethernet que culo “Hogar en red” [9]. ■
Recursos
[1] RTC: http://www.cooking-hacks.com/index.php/twig-grove-rtc.html
[2] Sonda de temperatura:
http://www.cooking-hacks.com/index.php/temperature-sensor-waterproof-ds18b20.
html
[3] Librería 1-Wire: http://www.pjrc.com/teensy/arduino_libraries/OneWire.zip
Figura 9: Impresiones en el monitor serie de
la fecha/hora hasta que se activa el sistema [4] Librería DallasTemperature:
http://download.milesburton.com/Arduino/MaximTemperature/
de riego.
DallasTemperature_372Beta.zip
48 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
ARDUINO Domótica (V)
Prevención
Utilizamos Arduino para alertarnos de peligros de accidentes en el hogar. Con Arduino podemos saber de manera inmediata y remota si hay
Una vez más partimos de una situa- fuego. Acto seguido, debido a mi inex- El fuego es uno de los peligros más
ción o posible problema en nuestro periencia en la cocina, intente apagarlo importantes que necesitamos medir y
hogar que queremos solucionar. En con agua metiéndolo debajo del grifo… para ello vamos a recurrir a una gama
este caso, nace de mi propia experien- pero esa es otra historia. de dispositivos muy variada y con un
cia personal durante mi infancia, ya Lo que a nosotros nos importa, es evi- pequeño tamaño: los sensores de gases.
que por un despiste dejé la sartén con tar ese tipo de situaciones si a alguno de Para un primer ejemplo, en el que
el fuego encendido gracias a esos vosotros todavía no os han pasado. Para fabricaremos una alarma casera de
maravillosos mandos táctiles de las ello nos centraremos en monitorizar detección de incendios, hemos elegido
cocinas vitrocerámicas modernas. Al nuestra cocina, tanto en cuanto a gases un sensor de humos [1]. Se trata de un
internar bajar a 0 el valor de uno de los presentes como a otros posibles peli- dispositivo muy pequeño, como pode-
fogones, ya fuese por azar, por el des- gros. Fundamentalmente intentaremos mos observar en la figura 2, con 6 pati-
tino o porque soy un poco torpe, se imitar las alarmas de incendios comer- llas que nos permite medir la presencia
puso al valor máximo y yo, despreocu- ciales, que podemos encontrar en algu- de varios tipos de gases, pero básica-
pado, me fui a ver la televisión. Cual nos edificios, aunque de manera casera mente nos indica la presencia de humo
fue mi sorpresa al ver que tras unos (Figura 1). También podemos medir debido a la combustión.
pocos minutos mi salón se estaba lle- multitud de parámetros peligrosos con Su funcionamiento es bastante senci-
nando de una ligera neblina, como si el fin de evitar fugas. llo y similar al de otros muchos sensores
de un concierto se tratara, y peor aún, Este artículo tiene especial importan- de gases. En la figura 3 podemos ver un
el aceite de la sartén se había prendido cia, ya que con una pequeña inversión esquema de la asignación de pines y el
podemos evitar grandes riesgos. Porque
como todo el mundo sabe, más vale pre-
venir que curar.
50 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
Domótica (V) ARDUINO
pequeños talleres, y su
configuración es idéntica
a la del sensor de humo.
Podemos utilizar otros
muchos sensores de
gases de similares carac-
terísticas. En las hojas de
características de cada
uno [3] podemos obser-
var los circuitos básicos Figura 4: Sensor de CO2 como ejemplo de los
Figura 3: Esquema básico de conexión y patillaje del sensor de de cada uno de ellos, por muchos tipos de sensores de gases exis-
humo que vamos a utilizar en los distintos montajes para la lo que no nos resultará tentes.
medida de gases. difícil. Como podemos
ver en el sensor de CO2 manera casera. Todo dependerá de las
montaje básico para funcionar. Única- de la figura 4, todos ellos tienen tamaño exigencias de nuestro diseño.
mente tenemos que alimentar con 5 vol- y encapsulado similar por lo que pode-
tios entre las patillas H (5V y GND) y en mos desarrollar un sistema muy modular. Activando la alarma: el transistor
A poner 5 voltios también, obteniendo Otro de los principales peligros en En nuestro primer ejemplo vamos a
la señal analógica proporcional a la can- nuestra casa, son las posibles fugas o necesitar un dispositivo de indicación
tidad de humo en B. Como adaptación roturas en las cañerías. Para detectarlo que nos avise cuando estamos en posi-
sólo necesitamos colocar una resistencia vamos a utilizar un sistema que nos ble peligro. En el montaje, utilizaremos
RL de entre 3K y 30K, entre la señal en B permita saber si hay fluidos cerca o si por simplicidad, un zumbador como con
y masa. En nuestro montaje hemos utili- hemos sufrido una inundación. El el que ya hemos trabajado anterior-
zado una de 4K7. fluido que nos importa en este caso es mente, pero de cara a un sistema real
En un segundo montaje en este artí- el agua, por lo que recurriremos a este vamos a explicar cómo se implementa-
culo, vamos a utilizar un sensor de dispositivo digital que detecta la presen- ría el control de una sirena de 12v.
metano [2], para detectar posibles fugas cia del agua [4], gracias la propiedad de Seguro que con esa alarma no se me
en nuestra cocina. Nos permite detectar ésta de conducir la electricidad. En la habría quemado la sartén.
fuego o escapes de este gas para casas o parte superior, como podemos observar Vamos a utilizar un dispositivo que ya
en la figura 5, hay una serie de tiras hemos utilizado en el control del relé del
conductoras que ante la presencia de artículo “Centro de control” [5], pero del
agua lo activan, poniendo su señal de cuál no habíamos explicado su funciona-
salida a 1. Por esto mismo y como vere- miento, el transistor [6]. Cuando contro-
mos en el código, tomaremos el valor 0 lábamos el relé por medio de una señal
como que no hay fuga de agua.
Puede ser utilizado también
como sensor analógico, para
medir la cantidad de agua que
hay en contacto con él, aunque a
nosotros no nos interesa esa
Figura 5: Sensor digital encargado de la forma de medida.
detección de presencia basado simplemente Como estos sensores, podemos
en el hecho de que el agua conduce la electri- encontrar muchos otros, o Figura 6: Transistor NPN que podemos utilizar para
cidad. incluso fabricarlos nosotros de activar una sirena de 12v: conexionado y patillaje.
digital, estábamos utilizando un transis- Está compuesto por tres zonas llama- Al estar trabajando con 12 voltios, no
tor integrado en el módulo similar al de das Colector, Base y Emisor. Y depen- es necesario en principio trabajar con el
la figura 6 para activarlo o desactivarlo. diendo de cómo se sitúen cada una de relé, ya que éste lo utilizaremos para
Un transistor es un dispositivo electró- ellas tenemos 2 tipos de transistores. tensiones más elevadas. Por ello, pode-
nico semiconductor que puede cumplir Nosotros utilizaremos un transistor mos utilizar el transistor como se indica
funciones de amplificador, oscilador, NPN, ya que su emisor va a ir conec- en la figura 7, para conmutar la tensión
conmutador o rectificador dependiendo tado a tierra. Para mas información y activar la sirena, utilizando sólo una
de su configuración, pero lo que a noso- acerca del funcionamiento del transistor resistencia para limitar la corriente por
tros nos interesa es la de conmutar una podéis recurrir al tutorial sobre este la base del transistor. Nuestro transistor
tensión sobre un dispositivo, en nuestro componente que nos facilita Arduteka funcionará como un interruptor. Si acti-
caso una sirena. [7]. vamos la señal digital del pin 13, acti-
52 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
Domótica (V) ARDUINO
W W W. L I N U X - M A G A Z I N E . E S HARDWARE 53
ARDUINO Automóvil
Electrónica en el automóvil
Cuida tu
com
23RF.
zov- 1
coche
Chere
Kirill
No todos tenemos un coche de última generación con el que deleitarnos, pero podemos modernizarnos con la ayuda de nuestro Arduino.
Con una casa más que monitorizada y este artículo, en el que vamos a dotar a darle un toque mas moderno y futurista?
controlada gracias a los montajes que nuestras antiguallas de sensores y pres- Eso mismo vamos a conseguir hoy.
hemos ido viendo a lo largo de esta serie taciones inimaginables en la época en la Realizaremos dos pequeños ejemplos
de artículos sobre domótica, vamos a que se fabricaron, para ser la envidia para solucionar dos de los problemas
centrarnos ahora en el control de nuestro entre todos los vehículos con más de 10 más frecuentes cuando se utiliza un
coche. años de nuestro barrio. coche.
Desde que empecé la carrera, obtuve Buscaremos la realización de ejemplos El primero de ellos consistirá en un
el privilegio y el regalo de un magnífico sencillos y asequibles, con los que facili- sistema de aparcamiento asistido, al
bólido de carreras heredado de mi her- tar la conducción o la localización de estilo de los pitidos que emiten los nue-
mana que a su vez lo heredó de mi nuestro vehículo, centrándonos en los vos vehículos a medida que se aproxi-
padre, un Ford Orion. Una preciosa principales problemas que aparecen man a obstáculos, pero enfocado única-
máquina con motor de color rojo pasión cuando utilizamos un coche: el aparca- mente a la parte trasera de nuestro
que recorre las calles de Zaragoza con miento y el robo. coche, ya que es la que más problemas
paso lento pero seguro…o como otros lo causa. Se basará en un sensor de aproxi-
verán, un tastarro. Vehículos modernos mación, en nuestro caso un sensor de
Lo confieso, siempre he tenido envi- En esta época de crisis es difícil embar- ultrasonidos básico, muy similar al sen-
dia de esos coches recién salidos de carse en la compra de un coche, incluso sor de la Figura 1 que tenemos disponi-
fábrica con todos los extras, y que pre- es algo impensable para mucha gente. ble en la página web de Cooking Hacks
sumen de características como “me Pero, ¿y si tuviéramos la posibilidad de [1]. El uso de un tipo de sensor u otro,
aparco solo”. Y por ello he planteado añadir unos extras a nuestro coche para únicamente nos influirá en cómo tratar
Figura 1: Sensor de ultrasonidos utilizado Figura 2: Módulo GPS utilizado para obtener Figura 3: Esquema básico de conexión y
para medir la distancia a los obstáculos. la posición del vehículo. patillaje del módulo GPS.
54 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
Automóvil ARDUINO
Figura 4: Esquema del conexionado del ejem- Figura 5: Esquema del conexionado del ejem-
plo de aparcamiento asistido – Sensor ultra- plo de aparcamiento asistido – Indicación Figura 6: Esquema de los dos nodos XBee
sonidos. visual de LEDs. para aparcamiento asistido.
los datos de la medida, pero como ya plo únicamente es la de un sistema de de los módulos más sencillos de entre
hemos trabajado con muchos tipos de posicionamiento de nuestro vehículo, y todos con los que hemos trabajado, ya
sensores, esto no nos supondrá ningún la funcionalidad final la tendremos que que sólo es necesario conectarlo, y el
problema. elegir nosotros como usuarios. Para el modulo ya comienza a mandarnos su
Para nuestro coche, en vez de utilizar artículo, lo que haremos será enviar la posición.
una señal acústica, que en ocasiones posición del vehículo a nuestro teléfono El módulo GPS es un pequeño circuito
puede resultar molesta, utilizaremos una móvil, ya que es algo que todo el mundo electrónico que se puede conectar a la
indicación visual basada en varios LEDs tiene a mano en la actualidad. placa Arduino y obtener los datos exac-
que nos indicarán la proximidad de los Al igual que estos dos ejemplos, exis- tos de posición y altitud, además de
obstáculos encendiéndose progresiva- ten otras muchas posibles aplicaciones velocidad, fecha y hora UTC. Necesita
mente. para nuestro coche, así que como siem- una antena, estar colocado en el exterior
Para un segundo diseño, nos plantea- pre lo único que tenemos que hacer es y un poco de tiempo para obtener señal
remos una solución a la pérdida de nues- buscar un problema que solucionar. de los satélites y comenzar a dar la posi-
tro vehículo, pudiendo ser por un robo o ción. El módulo GPS es el complemento
porque simplemente no sabemos dónde ¿Dónde está mi coche? perfecto para el desarrollo de aplicacio-
hemos aparcado. La misión de este ejem- El principal punto sobre el que debemos nes de geolocalización.
aprender algo nuevo en este artículo es
el de cómo saber donde hemos dejado
aparcado el coche. O como se diría en
términos más técnicos, cuáles son sus
datos de posicionamiento (altitud, lati-
tud…) GPS.
Para obtener estas medidas vamos a
Figura 7: Montaje del sensor de ultrasonidos servirnos del módulo GPS [2] que pode- Figura 8: Montaje de la indicación visual
en la parte trasera del vehículo. mos ver en la Figura 2. Se trata de uno como ayuda al aparcamiento.
Como podemos ver en el esquema de Arduino, que nos permite crear una [4]. Una sección dedicada a la comuni-
la Figura 3, el módulo utiliza los dos UART virtual en dos pines digitales cual- dad en la que cualquier usuario puede
pines de comunicaciones Rx y Tx, junto quiera. Lo veremos más en profundidad presentar sus proyectos.
a la alimentación. Y al ver esto y pensar en los apartados de hardware y software.
que queremos utilizar este módulo junto Para cualquier duda o problema con Diseño del Hardware
al GPRS, se nos plantea el problema de este módulo, podemos recurrir al En el caso del montaje para estos ejem-
que Arduino sólo dispone de una UART siguiente tutorial de Cooking Hacks plos, observamos que el del dispositivo
y tenemos dos dispositivos que la necesi- sobre GPS[3]. de aparcamiento asistido tiene una nota-
tan. Para solucionar esto utilizaremos la Estos ejemplos han sido sacados de la ble mayor dificultad, ya que el de posi-
librería SoftwareSerial disponible en sección de Cooking Hacks “Let’s Cook!” cionamiento de su vehículo supone
Listado 2: Ejemplo del sistema de aparcamiento asistido – Indicación visual con LEDs
001 // Variables 043 digitalWrite(LED2,LOW); 091 digitalWrite(LED3,LOW);
002 int LED0 = 12; 044 digitalWrite(LED3,LOW); 092 digitalWrite(LED4,LOW);
003 int LED1 = 11; 045 digitalWrite(LED4,LOW); 093 digitalWrite(LED5,LOW);
004 int LED2 = 10; 046 digitalWrite(LED5,LOW); 094 digitalWrite(LED6,LOW);
005 int LED3 = 9; 047 digitalWrite(LED6,LOW); 095 estadoLED = 0;
006 int LED4 = 8; 048 delay(500); 096 break;
007 int LED5 = 7; 049 } 097 case 4:
008 int LED6 = 6; 050 // Pequeño retardo de tiempo 098 digitalWrite(LED0,HIGH);
009 051 delay(5000); 099 digitalWrite(LED1,HIGH);
010 int estadoLED = 0; 052 } 100 digitalWrite(LED2,HIGH);
011 int valorAparcamiento = 0; 053 101 digitalWrite(LED3,HIGH);
012 054 // Función encargada de encen- 102 digitalWrite(LED4,LOW);
013 void setup(){ der los LEDs en función de la 103 digitalWrite(LED5,LOW);
014 // Inicializamos el puerto medida del sensor 104 digitalWrite(LED6,LOW);
serie (UART baudrate) a la 055 void nivelLED(int valor){ 105 estadoLED = 0;
velocidad de comunicación de 056 switch (valor){ 106 break;
los XBee 057 case 0: 107 case 5:
015 Serial.begin(9600); 058 digitalWrite(LED0,LOW); 108 digitalWrite(LED0,HIGH);
016 // Configuramos los pines de 059 digitalWrite(LED1,LOW); 109 digitalWrite(LED1,HIGH);
los LEDs como salidas digitales 060 digitalWrite(LED2,LOW); 110 digitalWrite(LED2,HIGH);
017 pinMode(LED0,OUTPUT); 061 digitalWrite(LED3,LOW); 111 digitalWrite(LED3,HIGH);
018 pinMode(LED1,OUTPUT); 062 digitalWrite(LED4,LOW); 112 digitalWrite(LED4,HIGH);
019 pinMode(LED2,OUTPUT); 063 digitalWrite(LED5,LOW); 113 digitalWrite(LED5,LOW);
020 pinMode(LED3,OUTPUT); 064 digitalWrite(LED6,LOW); 114 digitalWrite(LED6,LOW);
021 pinMode(LED4,OUTPUT); 065 estadoLED = 0; 115 estadoLED = 0;
022 pinMode(LED5,OUTPUT); 066 break; 116 break;
023 pinMode(LED6,OUTPUT); 067 case 1: 117 case 6:
024 // Avisamos al sensor de ultra- 068 digitalWrite(LED0,HIGH); 118 digitalWrite(LED0,HIGH);
sonidos de que empezamos a 069 digitalWrite(LED1,LOW); 119 digitalWrite(LED1,HIGH);
aparcar 070 digitalWrite(LED2,LOW); 120 digitalWrite(LED2,HIGH);
025 delay(2000); 071 digitalWrite(LED3,LOW); 121 digitalWrite(LED3,HIGH);
026 Serial.print(“s”); 072 digitalWrite(LED4,LOW); 122 digitalWrite(LED4,HIGH);
027 } 073 digitalWrite(LED5,LOW); 123 digitalWrite(LED5,HIGH);
028 074 digitalWrite(LED6,LOW); 124 digitalWrite(LED6,LOW);
029 void loop(){ 075 estadoLED = 0; 125 estadoLED = 0;
030 valorAparcamiento = 076 break; 126 break;
Serial.read(); 077 case 2: 127 case 7:
031 nivelLED(valo- 078 digitalWrite(LED0,HIGH); 128 digitalWrite(LED0,HIGH);
rAparcamiento-48); 079 digitalWrite(LED1,HIGH); 129 digitalWrite(LED1,HIGH);
032 if (estadoLED == 1){ 080 digitalWrite(LED2,LOW); 130 digitalWrite(LED2,HIGH);
033 digitalWrite(LED0,HIGH); 081 digitalWrite(LED3,LOW); 131 digitalWrite(LED3,HIGH);
034 digitalWrite(LED1,HIGH); 082 digitalWrite(LED4,LOW); 132 digitalWrite(LED4,HIGH);
035 digitalWrite(LED2,HIGH); 083 digitalWrite(LED5,LOW); 133 digitalWrite(LED5,HIGH);
036 digitalWrite(LED3,HIGH); 084 digitalWrite(LED6,LOW); 134 digitalWrite(LED6,HIGH);
037 digitalWrite(LED4,HIGH); 085 estadoLED = 0; 135 estadoLED = 0;
038 digitalWrite(LED5,HIGH); 086 break; 136 break;
039 digitalWrite(LED6,HIGH); 087 case 3: 137 case 8:
040 delay(500); 088 digitalWrite(LED0,HIGH); 138 estadoLED = 1;
041 digitalWrite(LED0,LOW); 089 digitalWrite(LED1,HIGH); 139 }
042 digitalWrite(LED1,LOW); 090 digitalWrite(LED2,HIGH); 140 }
56 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
Automóvil ARDUINO
W W W. L I N U X - M A G A Z I N E . E S HARDWARE 57
ARDUINO Automóvil
Recursos
[1] Sensor de ultrasonidos: http://www.cooking-hacks.com/index.php/shop/sensors/proximity/ultra-sonic-range-module.html
[2] Módulo GPS: http://www.cooking-hacks.com/index.php/shop/arduino/exclusive-products/gps-module-for-arduino.html
[3] Tutorial módulo GPS: http://www.cooking-hacks.com/index.php/documentation/tutorials/arduino-gps
[4] Let’s Cook!: http://www.cooking-hacks.com/index.php/let-s-cook.html
[5] Artículo “Centro de control”, de Luis Martín, ver página 36 de este especial.
[6] Artículo “Seguridad en el hogar”, de Luis Martín, ver página 40 de este especial.
[7] Tutorial Mobile Navigator Pack: http://www.cooking-hacks.com/index.php/blog/tutorial_arduino_quadband_mobile_navigator_pack
58 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
Primeros Pasos RASPBERRY PI
Pi Perfecto
Os mostramos cómo comenzar a cocinar con el asequible Raspberry Pi y Linux. Por otro lado, podemos obtener una
carcasa para nuestro Raspberry Pi.
Por Dimitri Popov ModMyPi [3] ofrece carcasas para Ras-
pberry Pi baratas, robustas y en varios
Después de una larga e insoportable adaptadores Edimax WiFi EW-7811UN, colores (Figura 1). Si no queremos gastar
espera, hemos recibido nuestro nuevo y Belkin F7D1102, Netgear WNA1000M, D- dinero en una carcasa, podemos cons-
brillante Raspberry Pi [1]. Hay muchas Link DWA-121 y TRENDnet TEW- truir la nuestra propia de cartón, utili-
cosas que podemos hacer con este ARM 648UBM. zando la plantilla en PDF de Punnet [4].
GNU/Linux pero, ¿por dónde empezar?. Estos adaptadores son perfectos para
En este artículo, proporcionaremos algu- utilizarlos con Raspberry Pi, no sólo por Preparar, Iniciar, Configurar
nos consejos para ayudarte a configurar su tamaño, sino también debido a que A continuación, necesitaremos preparar
este excelente dispositivo basado en pueden obtener energía directamente una tarjeta SD que pueda arrancar el sis-
Linux y de paso, darle algún uso prác- desde el puerto USB de Raspberry Pi. tema. En primer lugar, descargaremos
tico. Otros dispositivos de USB puede que una de las distribuciones oficiales de
requieran un USB con energía para poder Linux desde el sitio web de Raspberry Pi.
Complementando funcionar. Más importante aún, un script Aunque existen varias distribuciones
Raspberry Pi viene sin accesorios, por lo por consola puede ayudarnos a activar y para elegir, la distribución Raspbian,
que necesitamos obtener ciertos objetos configurar un adaptador inalámbrico basada en Debian, es la mejor elección.
para empezar a trabajar. En primer lugar, basado en RTL8188CUS con el mínimo Para continuar, hay que desempaquetar
necesitamos un adaptador de corriente. esfuerzo. el archivo descargado, insertarlo en la
Las buenas noticias son que Raspberry Para el método de entrada, podemos tarjeta SD, ejecutar el comando mount y
Pi puede usar cualquier adaptador de utilizar cualquier combinación de tecla- anotar el nombre la tarjeta SD activada
corriente de 5V con un conector dos con cable o inalámbricos y un ratón, (p.ej., sdb1, sdc2, etc.). Después, hay
microUSB. Hay que tener presente, que aunque para ciertos escenarios, habría que ejecutar el siguiente comando como
si estamos utilizando un Modelo B de que considerar invertir en algo como el root, reemplazando raspian.img y sdb
RBi, necesitaremos un adaptador de teclado inalámbrico Rii Mini [2] o un con el nombre del fichero de la imagen y
corriente que pueda proporcionar modelo similar. Este mini teclado tiene el dispositivo a utilizar:
700mA. un touchpad integrado, una batería
El Modelo B trae un conector de Ether- recargable incorporada e incluso un pun- dd bs=1M if=~/raspbian.img U
net, aunque para conseguir red por wifi tero láser. Además, la iluminación de of=/dev/sdb
necesitaremos añadir un adaptador USB fondo hace que este teclado sea perfecto
inalámbrico. Con algún esfuerzo, pode- para su uso en condiciones con poca luz. Para completar el proceso, ejecutaremos
mos hacer funcionar prácticamente cual- El teclado no está libre de fallos, pero si el comando sync como root, con lo que
quier dispositivo USB inalámbrico con planeamos utilizar Raspberry Pi como nuestra tarjeta SD estará casi preparada
Raspberry Pi. Sin embargo, lo ideal sería un servidor para transmitir elementos para comenzar. Si nuestra idea es utilizar
seleccionar un adaptador que utilice el multimedia, el teclado inalámbrico Rii un adaptador inalámbrico basado en el
chipset Realtek RTL8188CUS, como los Mini puede ser muy útil. chipset de Realtek RTL8188CUS, debería-
60 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
Primeros Pasos RASPBERRY PI
W W W. L I N U X - M A G A Z I N E . E S HARDWARE 61
RASPBERRY PI Primeros Pasos
62 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
Proyectos RASPBERRY PI
Pi 2
El ordenador Raspberry Pi, formado por una única placa del tamaño de una tarjeta de crédito,
puertos USB (uno o dos), la disponibili-
dad de un puerto Ethernet y, por
supuesto, el precio (25/35 $). En este
momento, sólo está disponible el modelo
B. Podéis consultar la Tabla 1 para ver un
resumen de los componentes del Rasp-
berry Pi.
facilita la experimentación en sistemas Linux empotrados. Mostraremos algunos ejemplos Para poner en marcha el Raspberry Pi
(o Raspi para abreviar), es necesario
prácticos de cómo utilizar el Raspberry Pi en un entorno cotidiano. Por Werner Hein
hacer una lista de los componentes bási-
cos. En Internet hay más consejos sobre
El ingeniero británico Eben Upton y su mente 10.000 dispositivos y la situación operaciones avanzadas [2] [3]. En la
equipo de hackers de hardware iniciaron actual, en la que se acerca al 1.000.000 actualidad, sólo dos distribuidores globa-
el proyecto Raspberry Pi como un medio dispositivos adquiridos: ¿qué hace que les tienen la tarjeta en su catálogo [4] [5].
para poner tecnología informática al este proyecto sea tan exitoso? ¿Qué Lo habitual es que ahora sólo tengas que
alcance de jóvenes interesados en estos capacidades ofrece a través de su hard- esperar un par de semanas, aunque en la
temas [1]. El objetivo era desarrollar y ware? ¿Qué es posible y qué no es (toda- primavera de 2012 no era extraño un
comercializar un ordenador de una sola vía) posible? Este artículo explora el sis- plazo de entrega de unos meses.
placa del tamaño de una tarjeta de cré-
dito y compatible con el, a menudo Historia
escaso, presupuesto del grupo objetivo
En 2006, Eben Upton y su equipo desa- beta de 25 tarjetas, que ya se basaban
(véase el cuadro “Historia”). rrollaron los primeros conceptos para el en el diseño de producción. Los desa-
Si te ves a ti mismo recordando los pri- Raspberry Pi basado en el ATmega de rrolladores eliminaron los defectos
meros equipos caseros de los 80, puede Atmel. La idea de conseguir que los anteriores. En enero de 2012 se vendie-
que formes parte del público al que va jóvenes se interesaran por el mini-orde- ron en una subasta en línea 10 tarjetas
dirigido. El objetivo explícito de los fun- nador ya formaba parte del programa. de esta serie beta por un importe de
dadores era volver a colonizar los sóta- En 2009, los miembros establecieron ofi- 16.336 £.
nos, garajes y aulas con el espíritu de la cialmente la Raspberry Pi Foundation. El 29 de febrero de 2012, a las 7:00 am,
generación que creció con el Atari 400/ En agosto de 2011, salió de producción CET, los servidores web de la fundación
800, ZX80/81 o VIC20/C64. la serie alfa, alrededor de 50 tarjetas. Sir- y de las dos distribuidoras se bloquea-
Casi un año después de que apare- vieron principalmente como plataforma ron en pocos minutos por el aluvión de
ciese Raspberry Pi, podemos echar la para los desarrolladores, para la depura- solicitudes. Muchos clientes esperaron
ción y para fines demostrativos. En durante horas para realizar una pre-
vista atrás para repasar lo que ha pasado
diciembre de 2011, le siguieron la serie orden.
entre la primera serie de aproximada-
Además de la propia placa, se necesi- neas escuchar música o ver vídeos, tam- actualizar el sistema a la típica manera
tan los siguientes componentes: bién necesitarás auriculares o altavoces. de Debian:
• Una fuente de alimentación USB de al El tercer proyecto (un controlador de
menos 700 mA. Si deseas añadir hard- temperatura empotrado) utiliza una tar- $ sudo apt-get update
ware adicional a través de USB, se debe jeta de expansión que requiere algún $ sudo apt-get upgrade
planear por lo menos 1 amp. hardware adicional [6].
• Una tarjeta SD (HC) con al menos 2 GB Podemos iniciar la herramienta de
de capacidad, sin embargo, sería mejor Comenzando configuración en cualquier momento
4GB. Dependiendo de lo que pienses Existe una distribución Linux basada en usando sudo raspi-config.
hacer, todavía podría ser insuficiente. Debian conocida como Raspbian que está
Debido a que el sistema también se diseñada para Raspberry Pi para dar ser- Proyecto 1: Reproducción de vídeo
encuentra en la tarjeta SD, es aconseja- vicio como sistema operativo de a bordo. Al teclear startx aparecerá el escritorio
ble elegir una tarjeta con una velocidad La fundación Raspberry Pi recomienda la gráfico LXDE, que está optimizado para
de lectura y escritura alta. versión Raspbian “Wheezy” [7], que es los sistemas ligeros. Reproducir un vídeo
• Para el acceso inalámbrico sería prác- la utilizada en este taller. de alta definición es sin duda la prueba
tico un adaptador WLAN en forma de Vamos a comenzar por descargar el definitiva para el hardware. Los repro-
stick USB. Pero en la práctica, un adap- archivo de imagen Raspbian “Wheezy”, ductores de vídeo habituales, sin
tador WLAN USB es a menudo un fac- que es una imagen del sistema completo embargo, no son de ayuda, porque la
tor significativo en el consumo de ener- que consta de una partición de arranque GPU de la tarjeta está optimizada para
gía. Si estás considerando el uso de un de 60 MB y un sistema de archivos raíz decodificar datos de audio y vídeo. En
adaptador USB, asegúrate de que el de alrededor de 2 GB. Descomprimimos consecuencia, se necesita un reproductor
controlador es compatible y elige un el archivo y lo movemos a una tarjeta SD que utilice la propia biblioteca de progra-
diseño delgado que no bloquee el con el siguiente comando: mas de Broadcom (que se encuentra en
segundo puerto USB. /opt/vc). En la actualidad, el único que
• Teniendo en cuenta el bajo número de $ sudo dd bs = 1M U hace eso es el programa pre-instalado de
puertos USB, un teclado y un ratón if=2012-08-16-U línea de comandos omxplayer [8].
inalámbricos son una inversión que wheezy-raspbian.img U Si es posible, basta con montar el direc-
merece la pena y que también ahorra- of=SD_card_device_U torio que contiene los archivos a través
ría una carga innecesaria sobre los filename de la red. NFS ofrece un acceso más
limitados recursos del adaptador de rápido a su colección de vídeo, pero
corriente USB. Ahora, conectamos la tarjeta SD, el SSHFS es menos complicado. Los paque-
Además de estos elementos, también se teclado, el ratón y el monitor al sistema tes apropiados, se instalan como se
necesitan diferentes cables en función del Raspberry Pi y lo iniciamos, conectando muestra en el Listado 1. A continuación,
uso previsto, tales como HDMI o Ether- la fuente de alimentación USB. Aparece iniciamos la reproducción con la orden
net. En cuanto al cable HDMI, el mejor es entonces el menú de configuración y si omxplayer .
el más corto. Tienes la opción de aumen- no estás usando un teclado estándar Tras una breve sacudida de la imagen y
tar la salida del driver, pero también inglés, lo mejor es cambiar primero las el sonido, el software reproduce el vídeo
aumentará el consumo de energía. Si pla- valores del menú configure-key-board y de prueba de alta definición en formato
change_locale para el 720p con una pista de audio Dolby Digi-
Tabla 1: Datos Técnicos de Raspberry Pi teclado y el idioma que pre- tal 5.1 –, mezclado a dos canales, por
Componente Tipo fieras, ya que, de lo contra- supuesto – sin sobresaltos. Y eso es todo
SoC Broadcom BCM2835 (sistema en un chip) rio, surgirán problemas tan sobre el espartano Omxplayer. El pro-
CPU ARM1176JZF-S, 700 MHz pronto como se solicite el grama demuestra tener unas capacidades
GPU Broadcom VideoCore IV (OpenGL ES 2.0, inicio de sesión. El nombre impresionantes para decodificar audio y
OpenVG, 1080p30, H.264 codificado/ de usuario por defecto es vídeo, pero nada más. También hay dos
decodificador perfil alto) pi, la contraseña es rasp- inconvenientes más: la biblioteca de
RAM 256 MByte SDRAM berry. vídeo mencionada anteriormente no es
Puertos Otros elementos útiles software libre y se deben comprar licen-
USB 2 x USB 2.0
del menú son change_time- cias para los formatos MPEG-2 y VC-1.
Ethernet 1 x 10/100 Mbit/s
zone, para establecer la Por otro lado, el consumo de energía,
SD/MMC 1 x slot
zona horaria correcta; ssh es sorprendentemente bajo: la carga
Audio 1 x salida estereo analógica
para permitir el acceso media, mientras se renderizaba el vídeo
Vídeo 1 x salida compuesta, 1 x salida HDMI
seguro a la terminal a tra- HD, fue de sólo 3,8 vatios, a pesar de la
vés de la red y difícil tarea de transmitir a través de la
Listado 1: Configurar el Reproductor de Vídeo expand_rootfs, para cam- red. Los programas Omxplayer, SSH y
$ sudo apt-get sshfs biar el tamaño del sistema SSHFS representan la mayor carga para la
$ sudo adduser pi fuse de archivos raíz de 2GB por CPU y la memoria, mientras que el repro-
$ mkdir myVideos el tamaño real de la tarjeta ductor por si solo acapara el mayor con-
$ sshfs username@host_name:/directory_name myVideos SD. Por último, debemos sumo. Sin embargo, si deseamos repro-
64 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
Proyectos RASPBERRY PI
W W W. L I N U X - M A G A Z I N E . E S HARDWARE 65
RASPBERRY PI Proyectos
66 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
Proyectos RASPBERRY PI
que el sistema se ha reiniciado. Para acti- valor del sensor (línea 15) en
var el bus sin necesidad de reiniciar, eje- un ciclo de cinco segundos y
Listado 7: Paquetes y Librerías Python
$ sudo apt-get install
cutamos la orden modprobe i2c-bcm2708 convierte la lectura del sen-
git python3 python-pip python-virtualenv
I2C-dev. sor en el valor de la tempera- $ git clone
Para poder realizar transacciones en el tura (línea 16). Entonces, en https://github.com/quick2wire/quick2wire-gpio-admin.git
bus I2C como un usuario normal, pri- concordancia, el programa $ git clone
mero tendremos que instalar las herra- enciende o apaga cada uno https://github.com/quick2wire/quick2wire-python-api.git
$ cd quick2wire-gpio-admin
mientas correspondientes y establecer de los dos LED.
$ make
permisos de grupo: Las denominaciones para $ sudo make install
los diferentes pines GPIO $ sudo adduser pi gpio
$ sudo apt-get install i2c-tools son algo confusas. Los LED $ virtualenv TEMPCONTROL
$ sudo addgroup pi i2c rojo y verde son GPIO23/ $ source TEMPCONTROL/bin/activate
$ cd quick2wire-python-api
GPIO24, de acuerdo con el
$ sudo python3 setup.py install
Las direcciones en las que se encuentran conector, pero también están
los módulos están indicadas por los valo- conectados a P1-16/P1-18.
res encontrados en la salida devuelta por La primera designación corresponde a la que juntes características adicionales
documentación de BCM2835 y los valo- para adaptarse a tus propias necesidades.
i2cdetect -y 0 res del núcleo. Sin embargo, las bibliote- Una distribución especializada de Linux
cas de Python siguen la segunda nomen- ayudará a los principiantes a que sus pri-
Dependiendo de cómo hayamos conec- clatura. Tendremos que proporcionar la meros pasos sean más fáciles. Los desa-
tado los tres pines de direccionamiento secuencia de comandos con los permisos rrolladores han logrado su objetivo origi-
del LM75, la salida contendrá exacta- necesarios para su ejecución. Después nal de hacer tangible la tecnología infor-
mente un valor en el rango hexadecimal del arranque, la salida dará continua- mática para la personas interesadas y en
de 0x48 a 0x4f. Después leemos la pala- mente por consola los valores medidos especial, para los jóvenes. ■
bra de 2 bytes con la temperatura del con cada actualización de los LEDs.
LM75 en el registro direccionando 0 con Recursos
el comando: Conclusiones
[1] Raspberry Pi:
Evidentemente Raspberry Pi no es un
http://www.raspberrypi.org/
$ I2cget -y 0 I2C bus_address U equipo de sobremesa. Si utilizar la termi-
register_address w nal te parece demasiado extraño y enig- [2] Guía de compras de Hardware:
http://elinux.org/RPi_Hardware_
mático, debes comenzar con el escritorio
Basic_Setup#Typical_Hardware_You_
La hoja de datos del módulo será de gran para pasar gradualmente a la línea de
Will_Need
ayuda para convertir el críptico valor comandos. Desde su concepción, el Raspi
[3] Más ayuda eligiendo hardware:
devuelto (por ejemplo: 0x8015) a la tem- fue concebido como un PC de bajo con-
http://elinux.org/RPi_Verified Periphe-
peratura correspondiente. sumo para aplicaciones multimedia y
rals
Python es un entorno de software ade- está claramente destinado a ser utilizado
[4] Farnell element14 (Europa)/Newark
cuado para el controlador, ya que existen como un sistema empotrado. El hardware
element14 (Norteamérica):
bibliotecas de clases para la Raspberry Pi es ideal para su uso como servidor u
http://uk.farnell.com/
para acceder al bus I2C y los pines GPIO. ordenador de control de procesos, o para http://www.newark.com/
Este ejemplo utiliza dos bibliotecas [10] el control de las tareas en proyectos que
[5] RS Components (R.U.)/Allied Electro-
[11]. El Listado 7 muestra la instalación no exijan demasiada potencia. La
nics (Norteamérica):
de los paquetes y bibliotecas. El programa configuración permite conectar los perifé- http://uk.rs-online.com/
en sí es muy simple (Listado 8): se lee el ricos necesarios y el conector casi suplica http://www.alliedelec.com/
[6] Para respuestas a preguntas, visita:
Listado 8: Programa Controlador http://elinux.org/RaspberryPiBoard
01 #!/usr/bin/env python3 i2c.reading(busaddress, 2))[0]
[7] Raspbian “Wheezy”:
02 import quick2wire.i2c as i2c 16 temp = (temp_hib << 1 | temp_lob >> 7) / 2.
http://www.raspbian.org/
03 import time 17 if temp > 25:
04 from quick2wire.gpio import Pin, exported 18 redLED.value = 1 [8] Reproductor de audio/vídeo Omxpla-
05 19 greenLED.value = 0 yer:
06 busaddr = 0x48 20 elif temp < 22: https://github.com/huceke/omxplayer
07 regaddr = 0x00 21 redLED.value = 0
[9] Hostapd:
08 redLED = Pin(16, Pin.Out) 22 greenLED.value = 1
http://hostap.epitest.fi/hostapd
09 greenLED = Pin(18, Pin.Out) 23 else:
10 24 redLED.value = 1 [10] API Python Quick2Wire:
11 with exported(Pin(16, Pin.Out)) as redLED, \ 25 greenLED.value = 1 https://github.com/quick2wire/
12 exported(Pin(18, Pin.Out)) as greenLED, \ 26 print (“%02.01f” % temp) quick2wire-python-api
13 i2c.I2CMaster() as bus: 27 redLED.value = 0
[11] GPIO Admin:
14 while True: 28 greenLED.value = 0
https://github.com/quick2wire/
15 temp_hib, temp_lob = bus.transaction( 29 time.sleep(5)
quick2wire-gpio-admin
i2c.writing_bytes(busaddr, regaddr),
W W W. L I N U X - M A G A Z I N E . E S HARDWARE 67
RASPBERRY Pi Server
Ser-Pi-dor
Con la ayuda de las aplicaciones descritas aquí, el Raspberry Pi puede llevar a cabo una amplia variedad de tareas como servidor.
Al ser pequeño, silencioso y barato, el distribución Raspbian basada en Si quieres administrar el servidor RP
Raspberry Pi (RP) es un perfecto can- Debian, puedes instalar los paquetes por SSH, es buena idea también insta-
didato para desarrollar tareas de servi- necesarios utilizando las siguientes lar la herramienta Deny Hosts con
dor. A pesar de que se pueden instalar instrucciones:
aplicaciones pesadas como WordPress sudo apt-get install U
o Gallery en un RP, puede que eso no sudo apt-get update denyhosts
sea lo más sensato dadas las modestas sudo apt-get install apache2 U
prestaciones de su hardware. En vez php5 Esta herramienta protege al servidor
de ello, puede que quieras optar por de ataques SSH de fuerza bruta al
alternativas ligeras. De hecho, hay Las aplicaciones que abordamos en meter en una lista negra las direccio-
unas cuantas aplicaciones servidor este artículo no requieren un servidor nes IP atacantes después de un
que son ideales para esta pequeña de bases de datos, pero si planeas número determinado de intentos de
máquina. implementar software que utiliza acceso fallidos. Para modificar la
MySQL o SQLite, tendrás que instalar configuración predeterminada de Dny
Preparando al RP estos motores de bases de datos en tu Hosts, abre el fichero de configuración
Lo primero que tenemos que hacer es RP: en un editor de textos, por ejemplo
transformar el RP en un servidor insta- nano:
lándole los componentes necesarios, y sudo apt-get install U
eso incluye el servidor Apache y PHP. mysql-server mysql-client U sudo nano U
Suponiendo que estás utilizando la php5-mysql sqlite3 php5-sqlite /etc/denyhosts.conf
68 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
Pi Server RASPBERRY
Para localizar todas las tareas que con- Finalmente, crea un fichero .htaccess
tengan una etiqueta específica, haz en el directorio taskpaperweb:
Figura 3: Puedes monitorizar tu servidor RPi clic en la etiqueta deseada. TPw tam-
desde un dispositivo Android con la app bién soporta etiquetas especiales cd /var/www/taskpaperweb
PSIAndroid. @due, que permite especificar una sudo nano .htaccess
70 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
Pi Server RASPBERRY
y añade la siguiente configuración al (“USERNAME”, “”); y define(“PASS- y rearranca Apache con la instrucción
fichero WORD”, “”);. Para habilitar inicio de
sesión persistente, establece el valor sudo /etc/init.d/apache2 U
AuthType Basic de $ft[“settings”][“REMEMBERME”]; restart
AuthName “Password Required” como TRUE. Guarda el fichero y
AusUserFile /etc/.passwords/U apunta tu navegador a http:// 127. 0. 0. File Thingie también puede ser utili-
htpasswd 1/ filethingie/ ft2. php e inicia sesión zado como una aplicación multiusua-
Require user NOMBREUSUARIO con los credenciales preestablecidos. rio. Puedes añadir tantos usuarios nece-
Gracias a su espartana interfaz, File sites y organizarlos por grupos con dife-
Finalmente, abre TPw en tu navegador Thingie es veloz como un rayo y muy rentes privilegios. Para añadir un nuevo
y usa el nombre de usuario y contra- sencillo de utilizar. La configuración usuario, abre el fichero config.php y
seña para iniciar sesión. PHP predeterminada limita el tamaño edita y descomenta el siguiente frag-
de los ficheros subidos a 2MBs, lo que mento, eliminando las cadenas /* y */:
Administrar Ficheros puede ser problemático si piensas usar
Si instalas File Thingie [5] en tu RPi, ficheros grandes. Para incrementar el /*
puedes utilizar el servidor como un límite, abre el fichero php.ini en un $ft[‘users’]U
sencillo Dropbox web para ficheros editor: [‘REPLACE_WITH_USERNAME’] = U
(Figura 5). File Thingie está escrito en array(
PHP y es bastante sencillo de instalar: sudo nano /etc/php5/U ‘password’ => U
se descarga y desempaqueta la ver- apache2/php.ini ‘REPLACE_WITH_PASSWORD’,
sión más reciente y se mueve el direc- ‘group’ => U
torio filethingie resultante a /var/ Y ajusta los parámetros upload_max_ ‘REPLACE_WITH_GROUPNAME’
www. filsesize y post_max_size a tus necesi- );
Renombra el fichero config.sample. dades, por ejemplo: */
php a config.php y ábrelo con un edi-
tor de textos. Especifica el nombre de upload_max_filesize = 10M Y se sustituyen los comodines por
usuario y contraseña en las líneas post_max_size = 10M valores verdaderos, por ejemplo:
RASPBERRY Pi Server
mkdir sitio_poole
cd sitio_poole
poole.py --init
poole.py --build
poole.py --serve
Servir Contenido
Si buscas una manera rápida de servir
contenido desde tu RPi, Poole [7] es
un candidato ideal para esa tarea
(Figura 6). Esta herramienta basada en
Python puede convertir ficheros de
texto en páginas web estáticas. Lo que
es más, Poole tiene integrado su pro-
pio servidor, por lo que no tiene pro-
blema para servirte los sitios web. Para
hacer funcionar Poole en el servidor
RPi, hazte con la última versión del Figura 5: Con File Thingie puedes utilizar el RPi como un dropbox para tus ficheros.
72 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
Pi Server RASPBERRY
poole.py --build
W W W. L I N U X - M A G A Z I N E . E S HARDWARE 73
RASPBERRY PI Raspberry Pi + Arduino
Combinados
Lo que se puede crear a partir de la unión de estas dos placas open hardware es algo que se
Arduino Serial
Abrimos el IDE de Arduino en nuestro orde-
nador habitual y escribimos el código del
Listado 1. Este sketch lee una entrada serial
(a través del conector USB) y realiza una de
tres acciones, según lo que recibe: hacer
está empezando a explorar ahora. Por ello, en las siguientes líneas explicaremos cómo abrir parpadear un LED 2, 5 ó 7 veces. Para ello,
utilizamos una estructura switch ... case .
un canal de comunicación desde la Raspberry Pi directamente a un Arduino. Una vez que escribamos el código para
nuestra placa Arduino, es hora de reunir
Por Hiram Zuñiga Romero los componentes electrónicos, ya que en el
siguiente paso armaremos el circuito.
En artículos anteriores de este especial es bastante más poderosa que la suma de
[1][2] hemos visto cómo funcionan los dos sus partes. Por ello, vamos a enseñar cómo Circuito
dispositivos por separado, así que ninguno conectar ambas plataformas a nivel de El circuito que necesitamos es muy básico
de los dos necesita una especial introduc- hardware, de la manera más sencilla posi- (ver Figura 3) y ya debes tener todo el
ción. Pero si conectamos un Arduino, que ble y cómo podemos hacer para que se material a mano. Como se puede observar,
es prácticamente un microcontrolador plug comuniquen. obtenemos por el pin 8 de la placa Arduino
& play, al Raspberry Pi, ese ordenador casi un valor alto (HIGH), el cual va conectado
tan pequeño como el Arduino y desde el Piezas directamente a un extremo de la resisten-
cual podemos desarrollar todos nuestros Para realizar la comunicación entre el cia de 220 ohms. El otro extremo de la
proyectos, obtenemos una plataforma que Arduino y un Raspberry Pi y probar la resistencia va conectada al ánodo (pata
conexión utilizaremos los
siguientes componentes
hardware (Véase Figura
1):
• Raspberry Pi modelo B
• Memoria SD con Rasp-
bian instalado
• Arduino Uno R3
• LED 3.5mm de color
rojo
• Resistencia de 220
ohms
• Cable de red (para el
Raspberry Pi)
• Cable USB (Arduino)
Figura 1: Componentes necesarios: Raspberry Pi modelo B, • Tres cables para reali-
Memoria SD con Raspbian instalado, Arduino Uno R3, LED 3.5 zar las conexiones.
mm color rojo, resistencia de 220 ohms, cable de red (para el En lo que se refiere al soft- Figura 2: IDE Arduino mostrando parte del
Rapeberry Pi), cable USB (Arduino), tres cables para realizar las ware que necesita el Ras- código que necesitaremos para la comunica-
conexiones. pberry Pi, lo primero que ción Raspberry – Arduino.
74 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
Raspberry Pi + Arduino RASPBERRY PI
Listado 1: RaspberryPi-Arduino.ino
01 const int ledPin = 8; 24 break;
02 25 case 5:
03 void setup() 26 for (int i = 0; i < 5; i++)
04 { 27 {
05 pinMode(ledPin, OUTPUT); 28 digitalWrite(ledPin, HIGH);
06 Serial.begin(9600); 29 delay(300);
07 } 30 digitalWrite(ledPin, LOW);
08 31 delay(300);
09 void loop() 32 }
10 { 33 break;
11 if (Serial.available()) 34 case 7:
12 { 35 for (int i = 0; i < 7; i++)
13 int num = Serial.read() - ‘0’; 36 {
14 switch(num) 37 digitalWrite(ledPin, HIGH);
15 { 38 delay(300);
16 case 2: 39 digitalWrite(ledPin, LOW);
17 for (int i = 0; i < 2; i++) 40 delay(300);
18 { 41 }
19 digitalWrite(ledPin, HIGH); 42 break;
20 delay(300); 43 }
21 digitalWrite(ledPin, LOW); 44 }
22 delay(300); 45 delay(1000);
23 } 46 }
Listado 2: arduPi.py
01 #!/usr/bin/python 20 from Tkinter import * 39 return
02 # -*- coding: iso-8859-15 -*- 21 import time 40
03 22 41 root.title(“Probando Arduino”)
04 #################### 23 DEVICE = ‘/dev/ttyACM’+str(com) 42 Label(text=”Linux Magazine: Especial
05 # Detección de puerto 24 BAUD = 9600 Hardware”, fg=”#0A116B”).pack()
Listado 3: dondeEsta.py
01 #!/usr/bin/python
02
03 import serial
04
Figura 5: Mensaje al ejecutar dondeEsta.py, el cual nos indica si está conectado el hardware 05 for com in range(0,4):
en el puerto que se esté probando. Justo después de conectar el Arduino, el sistema no 06 try:
detecta la tarjeta. Pero al cabo de unos segundos, el Arduino aparece en /dev/ttyACM0. 07 PORT = ‘/dev/ttyACM’+str(com)
08 BAUD = 9600
09 board = serial.Serial(PORT,BAUD)
problemas más habituales es que, al des- 2, para que te informe sobre el puerto que
10 print ‘Tarjeta detectado en
enchufar y enchufar el Arduino, la ruta a la puede utilizarse para la comunicación con /dev/ttyACM’+str(com)
conexión del mismo haya cambiado, el Arduino. Cabe mencionar que, durante 11 print ‘Hardware: %s’ % board.__str__()
pasando de, por ejemplo, /dev/ttyACM0 a mis pruebas, intercambié el Arduino en los 12 board.close()
Por ello, cada vez que se desenchufa y los dos casos me funcionó en el puerto 14 except:
15 print ‘Ninguna tarjeta detectada en
se vuelve a enchufar el Arduino a la Rasp- /dev/ttyACM0. /dev/ttyACM’+str(com)
berry Pi, hay que parar el programa
arduPi.py, esperar unos segundos a que el Conclusiones
kernel de Linux de la RP detecte correcta- ¡Listo! Los dos dispositivos ya se comuni- Sin embargo, si te interesa utilizar una
mente al Arduino y luego, volver a ejecutar can. Las posibilidades para nuevos proyec- solución de hardware, échale un vistazo al
el programa. tos son inmensas, ya que tenemos todo el shield Raspberry Pi to Arduino [5] de Coo-
Para otros proyectos, puedes utilizar el poder que nos brinda Arduino unido con king Hacks, que hace que todo el ecosis-
código del Listado 3, adaptado del Listado todas las posibilidades que nos ofrece este tema de shields, entornos y sketches de
nanoPC de moda. De Arduino funcionen con el Rapsberry Pi de
ahora en adelante sólo manera directa. ■
estarás limitado por tu
imaginación. Recursos
Hoy en día el Raspberry
[1] Hardware Diferente: Ver página 20.
Pi no es 100% compatible
[2] Deliciosa Baya: Ver página 10.
con Arduino, existiendo
diferentes shields y otras [3] Artículo Introducción a Arduino: Ver
página 6.
soluciones de hardware
para compensar esta falta [4] Pyserial:
de compatibilidad. Pero http://pypi.python.org/pypi/pyserial
gracias a la librería [5] Raspberry Pi to Arduino Shield:
python-serial, podremos http://www.cooking-hacks.com/index.
desarrollar nuestros pro- php/raspberry-pi-to-arduino-shield-
connection-bridge.html
yectos sin necesidad de
Figura 6: Vista del montaje del circuito. En la imagen se obser- añadir más cacharros a la [6] Fritzing:
http://fritzing.org/
van las conexiones necesarias para probar la comunicación. mezcla.
76 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
Tiendas, Sitios y Publicaciones RECURSOS
Recursos
Tiendas
BricoGeek
Distribuidor oficial para SparkFun, Pololu, Makerbe-
Beam, Arduino, Adafruit y Parallax, que ofrece un
impresionante abanico de dispositivos y complemen-
tos. Especialistas en gadgets y electrónica recreativa, es
el mejor sitio para el aficionado a los quadcopters,
robots y demás cachivaches, que vuelan, reptan o zum-
ban. http://bricogeek.com
Cooking Hacks
Tienda que, junto a un amplio abanico de hardware
estándar, ofrece su propia línea de dispositivos y com-
ponentes, diseñada y creada por sus propios ingenie-
ros. A este respecto destacan su shield puente entre
Raspberry Pi y Arduino y su completo kit de sensores
sanitarios (electrocardiogramas, temperatura corporal,
flujo de aire, etc.). También comercializan unos comple-
http://cooking-hacks.com
tos kits con todo lo que necesitas para iniciarte en el
desarrollo con hardware libre.
I Ray
El factor diferencial de I Ray es que, aparte de comercia-
lizar todos los dispositivos Arduino estándar, te convier-
ten tu proyecto, una vez prototipado, en un sólo
módulo, listo para producción. Así, si tienes un proyecto
con múltiples shields y placas enganchados, puedes
encargar un módulo de I Ray mucho más compacto y
resistente. http://tienda.ray-ie.com/
OpenDomo
OpenDomo se especializa en la investigación y comer-
cialización de productos y servicios de control inteli-
gente, basados en tecnología libre. Es decir: domótica.
Si estás buscando módulos especializados para un pro-
yecto de control de corriente, entorno y electrodomésti-
cos para tu hogar o centro de trabajo, éste es el lugar
donde encontrarás lo que necesitas y cuidadosamente http://opendomo.com
paquetizado.
Picaxe
Picaxe es el proyecto de comercio de un grupo de inge-
nieros apasionados de la robótica. En su tienda puedes
encontrar productos Arduino, Pololu y complementos
especializados para Lego Mindstorms. Pero lo más inte-
resante tal vez sea su línea de productos propia, que
complementa y expande lo disponible por ahí. La línea
Picaxe incluye placas, sensores, kits de robótica comple- http://picaxe.es
tos y mucho más.
W W W. L I N U X - M A G A Z I N E . E S HARDWARE 77
RECURSOS Tiendas, Sitios y Publicaciones
RaspiPC
Tienda dedicada exclusivamente a la comercialización
de Raspberry Pis y sus complementos. Entre sus pro-
ductos estrella destaca su completo kit de iniciación de
Raspberry Pi, que incluye en la caja todo lo necesario
para empezar (caja protectora, alimentador de corriente,
SD con Raspbian, etc.). Pero tienen mucho más y vale la
pena examinar su tienda en busca de complementos http://raspipc.es
para tu RPi.
RS Components
Uno de los mayores distribuidores de componentes
electrónicos al por menor del mundo, con sedes y servi-
cios en decenas de países. Si son componentes, herra-
mientas, máquinas e instrumentos lo que necesitas,
sería raro que no los encontrases aquí. Tienen desde
tuberías y canalizaciones para el montaje de infraestruc-
turas, hasta el Raspberry Pi (siendo RS uno de los distri- http://es.rs-online.com
buidores oficiales de este popular nano-ordenador).
Sitios
Arduino
La primera parada ¡cómo no! No sólo es el cuartel gene-
ral en Internet de la fundación tras la creación de
Arduino, sino que contiene una gran cantidad de recur-
sos, en la forma de tutoriales, referencias de hardware,
lugares donde adquirir dispositivos y shields, software
(tanto IDEs para el desarrollo, como librerías y ejem-
plos) y un largo etcétera. Parada obligatoria. http://arduino.cc
Clone Wars
No directamente relacionado con Arduino o Raspberry
Pi, este proyecto hispano si es muy apto para su men-
ción por su fuerte cariz “maker”. La comunidad Clone
Wars construye y ayuda a construir impresoras 3D
domésticas de bajo precio. Los miembros ofrecen abun-
dante documentación y te imprimen las piezas que te
hacen falta, aunque esperan que tú hagas lo mismo una http://reprap.org/wiki/
vez tengas tu impresora en marcha. Proyecto_Clone_Wars
Design Spark
El sitio para el diseño profesional de proyectos. Reúne
un amplio abanico de herramientas y recursos útiles
para ingenieros, incluyendo diseños ya realizados, soft-
ware de diseño, foros, blogs y noticias. El sitio es parte
de la red RS, uno de los distribuidores oficiales del RPi y,
por tanto, hay una importante cantidad de recursos
dedicada al nano-ordenador de moda. http://designspark.com
78 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
Tiendas, Sitios y Publicaciones RECURSOS
Hack A Day
Trae exactamente lo que dice en el paquete: un hack,
habitualmente de hardware, al día. Aunque puedes
encontrar cómo hacer un separador de Oreos (ya sabes,
para separar el relleno de la galleta), una útil lista des-
plegable de categorías te permite filtrar y encontrar las
abundantes y muy interesantes hacks hechas con
Arduino, RPis y impresión 3D. Combustible para tu ima- http://hackaday.com/
ginación.
Raspberry Pi
Otra parada obligatoria, esta vez en la sede oficial en
Internet del nano-ordenador educativo. En el sitio de la
fundación RPi podemos encontrar sobre todo referen-
cias a desarrollos y proyectos creados por otros que sir-
ven como ejemplos de casos de éxito de lo que puede
hacerse con Pi. Pero también encontraremos tutoriales
básicos, foros y FAQs que ayudarán a iniciarse en el http://raspberrypi.org/
desarrollo de proyectos en esta plataforma.
Shield List
Aunque no están todos los que son, si son todos los que
están. Shield List es, como su nombre indica, una
impresionante lista de shields compatibles con Arduino,
con detalles como el fabricante, la licencia bajo el que se
comercializa (sobre todo si se trata de hardware libre o
no) y los pins del Arduino que utiliza, todo ello en una
web sencilla, que raya en lo espartano y con una buena http://shieldlist.org/
función de búsqueda.
Editoriales y Publicaciones
The MagPi
Revista con hincapié en el uso del Raspberry Pi como
herramienta educativa. No muy orientado al movi-
miento maker, centrándose sobre todo en el software
didáctico (Scratch y Python) y orientado a profesores,
aunque también toca proyectos didácticos de hardware.
Un buen recurso para empezar a aprender sobre las
posibilidades del RPi. http://themagpi.com/
Make
Tal vez la revista pionera del movimiento maker, puedes
encontrar entre la portada y contraportada desde cómo
crear un globo estratosférico (con un smartphone como
ordenador de abordo), hasta la manera de construir una
guitarra eléctrica a partir de una caja de puros. Pero,
entre todo ello, puedes encontrar excelentes proyectos
basados en Arduino y esta publicación también ha http://makezine.com/
generado muchos volúmenes monográficos muy útiles
para el aficionado a estas cosas.
W W W. L I N U X - M A G A Z I N E . E S HARDWARE 79
ÍNDICE Temas
Índice Temático
A L
Arduino 06, 24, 27, 30, 36, 40, 44, 50, 74 LDR 31, 32, 38
Ethernet Shield 30 LED 06, 15, 18, 26, 28, 30, 32, 54, 62, 67, 74
IDE 06 lighthttp 13, 15
módulo GPRS/GSM 40, 47 lsusb 18
módulo GPS 54
módulo Relay 36 M
módulo RTC 44
Relay Shield 37 motor 15, 19
sketch 09 de vibración 19
servo 15, 19, 26, 27, 28
C
P
conversor A/D 25
Placas Circuitos Impresos, PCBs 06
D potenciómetro 26, 27
Processing 19
domótica 30, 36, 40, 44, 50 protoboard 26
PWM, Pulse Width Modulation 25, 27, 28
E Python 14, 62, 74
I T
J U
Java 19 udev 18
80 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
SERVICIO Autores / Contacto
Linux Magazine
Linux New Media Spain, S.L.
Edfco. Hevimar, Planta 2, Ofic. 16
C/Graham Bell nº 6
29590 - Málaga
ESPAÑA
[email protected]
Tel.: (+34) 952 020 242
(+34) 951 235 904
Fax.: (+34) 951 235 905
www.linux-magazine.es - España
www.linux-magazine.com - Mundo
www.linux-magazine.co.uk - Reino Unido
www.linux-magazine.com.br - Brasil
www.linux-magazine.pl - Polonia
Si bien se toman todas las medidas posibles para
garantizar la precisión del contenido de los artículos
publicados en Linux Magazine, la editorial no se
hace responsable de imprecisiones aparecidas en la
revista. Asimismo, Linux Magazine no comparte
necesariamente las opiniones vertidas por sus
colaboradores en sus artículos. El riesgo derivado
del uso del DVD y el material que contiene corren
por cuenta del lector. El DVD es estudiado escrupu-
losamente para confirmar que está libre de virus y
errores.
Copyright y Marcas Registradas © 2013 Linux New
Media Spain, S.L. Linux New Media Spain S.L.
prohíbe la reproducción total o parcial de los con-
tenidos de Linux Magazine sin su permiso previo y
por escrito. Linux es una Marca Registrada de Linus
Torvalds.
82 HARDWARE W W W. L I N U X - M A G A Z I N E . E S
DESIGNSPARK
NUEVOS Y EXCELENTES
RECURSOS PARA DISEÑOS
MÁS RÁPIDOS
NUEVO Y GRATUITO.
DESIGNSPARK PCB VERSION 4
NUEVAS LIBRERÍAS AHORA MÁS EXTENSAS,
CON UNA SELECCIÓN DE COMPONENTES MÁS FÁCIL
Y POSIBILIDAD DE SOLICITAR PRESUPUESTOS.
NUEVO Y GRATUITO.
MODEL SOURCE
MÁS DE 80.000 ESQUEMAS
Y SÍMBOLOS DE PCB GRATUITOS EN MÁS DE 20 FORMATOS,
INCLUYENDO PADS, ORCAD, ALTIUM Y CADSTAR.
Descúbralo ahora en
www.designspark.com UNIQUE RESOURCES BY