Proyecto Wall e

download Proyecto Wall e

of 33

Transcript of Proyecto Wall e

  • 8/17/2019 Proyecto Wall e

    1/33

    El APK de Android • Juegos SEGA en tu ODROID • Juegos Linux

    Año UnoNum. #9Sep 2014

    FUNDAMENTOS DE BASH

    FREEDOMOTIC

    PARTE METEOROLOGICO

    CLUSTER U3 DE 10-NODOS

    ODROID-SHOW

    IMPRIME EN 3D UNSISTEMA DE JARDINERIABASADO EN ODROID

    MagazineODROID

    Magazine

    CONSTRUYE TU

    PROPIO WALL-EEL ADORABLE ROBOT DE PIXAR

    VUELVE A LA VIDA CON ODROID-U3

    3DPONICS

    UN ORDENADOR PORTA Y ADEMAS

  • 8/17/2019 Proyecto Wall e

    2/33

    Qué defendemos.Nos esmeramos en presentar una tecnología punta,futura, joven, técnica y para la sociedad de hoy.

    Nuestra losofía se basa en los desarrolladores.Continuamente nos esforzamos por mantenerestrechas relaciones con éstos en todo el mundo.

    Por eso, siempre podrás conar en la calidad yexperiencia que representa la marca distintiva denuestros productos.

    Simple, moderno y único.De modo que tienes a tu alcance lo mejor

    Ahora estamos enviando losdispositivos ODROID U3 a lospaíses de la UE! Ven y visitanuestra tienda online!

    Dirección: Max-Pollin-Straße 185104 Pförring Alemania

    Teléfono & Fax

    telf : +49 (0) 8403 / 920-920email : [email protected]

    Nuestros productos ODROID se pueden encontrar en:http://bit.ly/1tXPXwe

  • 8/17/2019 Proyecto Wall e

    3/33ODROID MAGAZINE

    EDITORIACon la introducción de ODROID-W y la placa meteorológica

    ODROID, se han llevado a cabo varios proyectos publicados reciente-mente en los foros ODROID que implican domótica, iluminación am-biental y robótica. Este mes, presentamos varios de estos proyec-tos, como son la posibilidad de poder ir a pescar el n de semana,

    la construcción de una caja a medidapara un portátil, el cuidado del jardínde forma remota y la construcción deuna el reproducción del robot fa -

    vorito de todo del mundo, ¡Wall-E! Hardkernel hará una demos-

    tración del nuevo XU3 en ARM Techcondel 1 al 3 de octubre de 2014 en San José, Cali-fornia. Visite el stand si desea conversar con

    algunos de los miembros del equipo Hardkernel yde ODROID Magazine. El coste de la entrada para la exposición es

    actualmente de 59$ disponible en www.armtechcon.comLa reciente publicación del XU3 octa-core ya cuenta con varios sistemas op-

    erativos modernos disponibles, incluyendo Android y Ubuntu. El grupo de Arch-Linux ya ha publicado las instrucciones para la elaboración de ArchLinux paraARM (ALARM) y para el XU3 en http://bit.ly/1tS2xNs. Hardkernel ofrece Android4.4 para su descarga en http://bit.ly/1qMA6Oq, El uruario @voodik de los forosODROID publicó CyanogenMod 11 en http://bit.ly/1qMA6Oq y Ubuntu 14.04 estádisponible en http://bit.ly/ 1s06GZW.

    Si todavía no has encargado uno, la XU3 es el ordenador más rápido que Hard-kernel ha hecho nunca, ya que es capaz de usar los ocho núcleos al mismo tiempo,mejorando el diseño del clúster del XU original alternando entre la alta e cienciade los núcleos A7 y el rendimiento de los núcleos A15. También es compatible conUSB 3.0 y eMMC 5.0, y ofrece lo última GPU Mali T-628 MP6 con OpenGLES3.0 y OpenCL 1.1. Está disponible en la tienda Hardkernel en http://bit.ly/YGEnc2.

    ODROID Magazine, que se publica mensualmente en http://magazine.odroid.com/, es la fuente de todas las cosasODROIDianas. • Hard Kernel, Ltd. • 704 Anyang K-Center, Gwanyang, Dongan, Anyang, Gyeonggi, South Korea,431-815 • fabricantes de la familia ODROID de placas de desarrollo quad-core y la primera arquitectura ARM “big.LITTLE” del mundo basada en una única placa.Únete a la comunidad ODROID con miembros en más de 135 países en http://forum.odroid.com/ y explora lasnuevas tecnologías que te ofrece Hardkernel en http://www.hardkernel.com/.

  • 8/17/2019 Proyecto Wall e

    4/33ODROID MAGAZINE 4

    PERSONAL

    ODROIDMagazine

    Rob Roy,Editor Jefe

    Soy un programa-dor informático

    que vive y trabaja enSan Francisco, CA, en

    el diseño y desarrollo de aplicacio-nes web para clients locales sobre micluster de ODROID. Mis principaleslenguajes son jQuery, angular JS yHTML5/CSS3. También desarrollosistemas operativos precompilados,Kernels persona-lizados y aplicacio-nes optimizadas para la plataformaODROID basadas en las versioneso ciales de Hardkernel, por los cualeshe ganado varios Premios. Utilizo miODROIDs para diversos nes, comocentro multimedia, servidor web, de-sarrollo de aplicaciones, estación detrabajo y como plataforma de juegos.Puedes echar un vistazo a mi colec-ción de 100 GB de software e imá-genes ODROID en http://bit.ly/1fsaXQs .

    BoLechnowsky,Editor

    Soy el presidentede Respectech, Inc.,

    Consultoría tecnológi-ca en Ukiah, CA, EE.UU. que fundéen 2001. Con mi experiencia en elec-trónica y programación dirijo a unequipo de expertos, además de de-sarrollar soluciones personalizadas aempresas, desde pequeños negociosa compañías internacionales. LosODROIDs son una de las herramien-tas de las que dispongo para hacer fr-ente a estos proyectos. Mis lenguajesfavoritos son Rebol y Red, ambos seejecutan en los sistemas ARM comoel ODROID-U3. En cuanto a a cio -nes, si necesitas alguna, yo estaría en-cantado de ofrecerte alguna de la míasya que tengo demasiadas. Eso ayudaríaa que tuviese más tiempo para estarcon mi maravillosa esposa de y mis cu-atro hijos estupendos.

    Bruno Doiche,Editor

    Artístico

    Consiguió sus habi-lidades informáticas

    después de lograr queu n a bra óptica volviera a la vida,lograr que su Macintosh volviese de lamuerte, lograr que una PS3 volviesede la muerte, lograr que el T400 de sunovia volviese de la muerte (una trans-ferencia de datos dd al viejo estilo), yliando con las entrañas de su perman-ente centro de datos de trabajo.

    ManuelAdamuz,EditorEspañol

    Tengo 31 años y vivoen Sevilla, España, y

    nací en Granada. Estoy casado conuna mujer maravillosa y tengo un hijo.Hace unos años trabajé como técnicoinformático y programador, pero mitrabajo actual está relacionado con lagestión de calidad y la ecnología de lainformación: ISO 9001, ISO 27001,ISO 20000 Soy un apasionado de lainformática, especialmente de los mi-croordenadores como el ODROID,Raspberry Pi, etc. Me encanta experi-mentar con estos equipos y traducir

    ODROID Magazine. Mi esposa diceque estoy loco porque sólo pienso enODROID . Mi otra gran ación es labicicleta de montaña, y de vez en cu-ando participo en competiciones semi-profesionales.

    Nicole Scott,EditorArtístico

    Nicole es unaexperta en Pro-

    ducción Transmediay Estrategia Digital especializa en la

    optimización online y estrategias demarketing, administración de mediossociales y coordinación de equipo, asícomo la producción multimedia im-presa, TV, cine y web. Nicole es ex-perta en diseño grá co y web, gestiónde redes sociales y publicidad, ediciónde vídeo y maquetación DVD. Dis-pone de un ODROID U3 que usapara aprender Linux. Ella vive en elárea de la Bahía de California, y dis-

    fruta haciendo senderismo, acampaday tocando música. Visite su web enhttp://www.nicolecscott.com

  • 8/17/2019 Proyecto Wall e

    5/33ODROID MAGAZINE

    INDIC

    EJECUTAR JUEGOS DE SEGA EN HD 1080P - 6

    JUEGOS NATIVOS EN LINUX - PARTE 1 - 7

    CONSTRUIR UN PORTATIL TODO EN UNO - 9

    FUNDAMENTOS DE BASH - 10

    INSTALACION DE FREEDOMOTIC - 12

    INSTALACION DE WICD - 13

    3DPONICS - SISTEMA DE JARDINERIA DE CODIGO ABIERTO - 14

    ARTICULO DE PORTADA - WALL-E - 18

    PARTE METEOROLOGICO - 23

    ODROID-SHOW - PARTE 2 - 25

    APK ANDROID - 30

    CONOCIENDO A UN ODROIDIAN - 33

    CLUSTER ODROID-U3 - 28

  • 8/17/2019 Proyecto Wall e

    6/33ODROID MAGAZINE 6

    EJECUTAR JUEGOS DESEGA EN HD 1080PUN VIAJE AL PASADOPor Jeremy “Cartridge” Kenney

    compilado, porque los ordenadoresODROID hacen uso de OpenGL-ES

    que no se puede trasladar tan fácilmentea OpenGL desde que la versión ES es unsubgrupo de OpenGL.

    Permite hacer capturas de pantalla ygrabar vídeo. Sin embargo la grabación nose realiza en formato AVI o MPG, sino quese hace en un formato propietario. Estosignica que no podemos reproducir elvídeo en un reproductor corriente, sólo através de DGEN. Funciona bastante bien

    permitiendo avanzar, retroceder e inclusopausar la reproducción.Utiliza el sonido de 16 bits para man-

    tener los grácos y sonido originales deSega, pero puedes modicar el muestreodesde los 8000Hz a 48000Hz para conse-guir una mejor calidad. También puedescambiar la salida del color en los modosde 8, 15, 16, 24 y 32 bpp dándote unagran variedad de bits donde poder elegir.Soporta archivos comprimidos, incluidosrar y zip.

    Scale2x y HQX solo sopor-tan resoluciones de escritorio ypara tu comodidad está com-pilado para que funcione enresoluciones CRT. Por últi-mo, el depurador M68K estaimplementado para desarro-lladores con el n de depurar juegos y aplicaciones que seejecuten con el chip 68K.

    He incluido un archivode texto en el mensaje origi-nal del foro para asociar los

    Un ODROID es todo lo quenecesitas para ejecutar de nue-

    vo tus juegos favoritos de Sega.Opcionalmente necesitarás un adap-tador de mandos de Sega Genesis paraque tu mando pueda ser reconocidopor ODROID y por supuesto, conec-tarlo al puerto USB. Luego, puedeshacerte con una copia de DGEN-SDLpara ODROID, que está compiladoy disponible en los foros HardKernel,http://bit.ly/1pgoyO8 y empeza a dis-

    frutar de los juegos de Sega.

    Las funciones únicas de DGEN laconvierten en una extraordinaria apli-cación que incluye una amplia variedadde opciones para personalizar la emu-lación. DGEN también puede haceruso de códigos GameGenie, así que sitodavía conservas un manual de Game-Genie o tienes escritos los códigos enla sección de “Notas” de tu manual de juego, puedes usarlos con DGEN.

    Los modos de pantalla completa deNTSC y PAL funcionan perfectamente,tanto para América del Norte y Europacomo para NTSC Japón, para cualquierTV que disponga de salida de vídeo.OpenGL esta implementado, pero no

    SEGA

    Sega Genesis, ¡La consola que nos presento Sonic!

    botones y adaptarlos a tu mando enparticular. DGEN ya debería detectar el

    mando y auto-asignar los botones. Paralos mandos no compatibles, consulta elarchivo de texto de asignación de bo-tones. Aunque está incompleto, estamosreuniendo todos los mandos posiblespara determinar si son detectados co-rrectamente. La mayoría de los mandos,gamepads y joysticks del 2.003 son iden-ticados correctamente sin necesidad deuna conguración adicional, incluyendo

    el mando Sega Genesis mencionado an-teriormente.Para instalar DGEN, descomprime el

    paquete y escriba lo siguiente en el termi-nal, reemplazando el archivo .deb por elnombre del paquete:

    $ sudo dpkg -i Nombredetupaquete

    debian.deb

    Si dispones de un mando, lo mejor esconectarlo antes de ejecutar la aplicación.

  • 8/17/2019 Proyecto Wall e

    7/33ODROID MAGAZINE

    Juego de Sega en ejecución

    SEGA

    mal! y los demonios empiezan aparecery matan a los seres humanos o los trans-forman en monstruos.

    ¡Se arma la de Dios! Tienes queluchar y abrirte paso a lo largo de todoslos niveles. El juego viene con una grancantidad de secuencias que se suponeque asustan e intimidan al jugador con

    efectos impactantes. Junto con el en-torno oscuro del juego, posiblemente teasustarás de vez en cuando.

    @AreaScout implementó un nue-vo shader en el juego para corregir unproblema con el gamma y el brillo. Coneste ajuste, puedes iluminar el entornodel juego, facilitando el poder encon-trar objetos y ver los rincones dondeel enemigo podría estar al acecho, listopara asustarte y atacarte. Doom 3 es endenitiva el videojuego de disparos enprimera persona y de terror que falta entu colección.

    Homeworld -Estrategia espacialen tiempo real

    Otro juego que se puede ejecutar deforma nativa en ODROID es un asom-broso juego de estrategia en tiempo real(RTS) llamado Homeworld. En el cualformas parte de un grupo de personasque descubrió los planos de una viejanave durante una expedición, además

    En anteriores artículos, presenteuna visión general de los diferen-tes emuladores disponibles en laimagen GameStation Turbo, que sopor-tan miles de juegos emulando diferentessistemas de consola como la SNES o PS1.Por otro lado y puesto que GameSta-tion Turbo utiliza Linux como sistemaoperativo de fondo, me gustaría analizarmás detenidamente algunos de los juegosque existen para Linux y que se ejecutande forma nativa, sin un emulador. Todaslas fotos que incluye este artículo fuerontomadas con un ODROID.

    DOOM 3 - Shooteren primera personade ciencia cción yterror (18+)

    Para los que todavía no lo saben,Existe un impresionante juego de dis-paros en primera persona disponiblepara ODROID. @AreaScout exportoDOOM 3 a la plataforma ODROID yfue capaz de hacerlo funcionar de for-ma nativa con OpenGL ES. En Doom3, juegas con un soldado que reciente-mente llegó a la base ARS, un centro deinvestigación enorme en el que muchoscientícos trabajan en diferentes proyec-tos, incluyendo el teletransporte. Usan-do esta técnica los cientícos descubrenuna nueva dimensión, pero ¡Algo sale

    JUEGOS LINUX EJECUTAR JUEGOSNATIVOS EN ODROIDPARTE 1Por Tobias Schaaf

    JUEGOS LINU

    Para iniciar DGEN, escriba lo siguiente,sustituyendo el nombre de archivo por laROM seleccionada:

    dgen -f nombrerom.bin

    OptionesUsa la opción -f para activar la pan-

    talla completa y -G para activar unaresolución especíca, por ejemplo:

    dgen -G 1279x719

    Esto generará una resolución de1024x768 en una ventana de escritorio.HQX y Scale2x pueden activarse pulsan-do F6 y F5 para los ltros de “TV ma-

    las”, dando la posibilidad de disponer deuna salida de vídeo de baja resolución,¡como en los viejos tiempos!

    La opción -R te ayudará a ejecutar el juego en la región que elijas. Los posiblescódigos son “E” para Europa, “U” paraUSA/Canadá y “J” para Japón:

    $ dgen -f -R E nombrerom.bin

    La opción -D reproducirá tu vídeograbado:

    $ dgen -f -d demoname romname.bin

    Ahora tu ODROID está listo paraejecutar juegos de Sega Genesis en tu TVHD, viejo TV CRT o en cualquier otromonitor. Si no tienes un viejo televisorpara jugar o tu TV HD tiene demasiadadenición, activa los ltros CrapTV paraque parezca más auténtico. ¡Diviértete jugando a Sega en tu ODROID!

  • 8/17/2019 Proyecto Wall e

    8/33ODROID MAGAZINE 8

    JUEGOS LINUX

    de un Hiperespacio que permite viajar através del espacio. Descubren el origende su propia especie en un mundo llama-do HIIGARA (el hogar), y deciden con-struir una gran nave espacial llamada la“ mothership “ para viajar a ese mundo.

    Sin embargo, poco después de termi-nar la mothership y realizar su primersalto al hiperespacio, algo sale mal. Lanave con la que se suponía que debíasreunirte ha sido destruida por piratas ycuando vuelves a tu planeta, te encuen-tran que ha sido devastado junto conla estación espacial. Así que, tienes queconstruir una ota para defenderte, ven-gar a tu gente y encontrar el camino a

    HIIGARA. Pronto encontrarás nuevosaliados, enemigos y otras especies.

    Homeworld es un juego muy bueno,con magnícos grácos y una gran bandasonora que incluye la famosa Adagio for

    Recolector de recursos y nave nodriza(Homeworld)

    Strings de Samuel Barber con el famosoCoro de Niños de Viena. El juego incor-pora muchos detalles en los diferentesmodelos de naves espaciales asi como enlos efectos, fondos y planetas.

    La historia de Homeworld es muy

    emocionante ya que tienes que investigarnuevas tecnologías y naves, planicar tusmovimientos, gestionar los hogares conlos escasos recursos de los que disponesy proteger tu ota al tiempo que avan-zas a través de las líneas enemigas. Si tegustan los juegos de estrategia en tiemporeal y el género espacial, este es un juegoimprescindible que te mantendrá ocu-pado durante horas y horas.

    EDuke 32 - Shooteren primera persona

    “¡Ven por más!” -- Duke Nukem

    Duke Nukem es un personaje muyfamoso en la historia de los juego. Es eltípico tipo duro que salva al mundo y atodas las chicas, de una invasión aliení-gena malvada. Siempre será recordadopor frases como “ ¿A qué esperas? ¿A las

    navidades? “ Con el recientemente ex-portado EDuke32, Duke Nukem vuelvea la vida y esta vez en alta denicióncon modelos poligonales reales en 3D.

    Cuando el juego salió a la luz para PC, jugué a la versión para DOS. Todavíame pregunto cómo fui capaz de jugar al juego sin un ratón, mirando hacia arribay hacia abajo presionando las teclas delteclado mientras me movía a la izquierday a la derecha, a la vez que trataba deevitar los disparos del enemigo.

    Originalmente, el juego ofrecía unmundo en 3D con sprites en 2D comopersonajes y objetos, lo cual era bastanteimpresionante por aquel entonces. To-davía se ve bastante bien con el ltradotrilineal.

    Como curiosidad, los algoritmos delos espejos no eran tan fáciles de ejecutar

    en DOS, así que los programadores crea-ron otro mundo idéntico y duplicarontodos los personajes y movimientos. Cu-ando mirabas a un espejo en realidad noveías un reejo, sino otro Duke Nukemcopiando tus movimientos.

    La captura de pantalla muestra cómose relleno por aquel entonces el mundovirtual con sprites, ya que las tarjetas 3Dno eran muy comunes y todo lo haciala CPU. Afortunadamente, esos días hanterminado y ahora tenemos una nuevaversión de Duke Nukem en 3D con tex-turas en alta resolución. Si no has jugadoal Duke Nukem 3D antes, la nueva ver-sión merece la pena, ofrece un montónde acción, una buena jugabilidad y unpoco de literatura erótica de aquí y allá.

    No te olvides de las famosas frases delpropio Duke Nukem que lo convirtier-on en el personaje de juegos más cabrónde todos los tiempos. Pero recuerda, el juego fue creado para un público adulto. Ahora, sólo queda una cosa por hacer:“¡Viva el rey, baby!”

    Astillero y planeta destruidos (Homeworld)

    Empezando a construir una ota paradefenderse (Homeworld)

    Vista detallada en la que se dispara auna nave enemiga (Homeworld)

    Duke Nukem en frente de un espejo“¡Maldición ... Parezco muy bueno!”

  • 8/17/2019 Proyecto Wall e

    9/33ODROID MAGAZINE

    CONSTRUIR UN ORDENADOR

    El desarrollo de mi propio ordena-dor portátil ODROID comenzócuando se me rompió mi anti-

    guo portátil de un único núcleo. Busquépor Internet con el n de reemplazarloy descubrí el fantástico ODROID U3,que es lo sucientemente potente comopara ser utilizado en lugar de un orde-nador normal. Decidí construir un por-tátil con un ODROID-U3 y hacer unacaja de plexiglás a medida.

    Para la pantalla, compre un buenmonitor de 10.1 pulgadas, así como unpar de accesorios como el I/O shield yel adaptador wi, que es todo lo quenecesitaba para empezar a construir miportátil “todo-en-uno”. Por otro lado,tenía muchos periféricos sin utilizar paraadaptárselos. Aunque había visto variosPCs hechos con madera, opté por utili-zar plexiglás que es muy fácil de trabajar.

    En primer lugar, use lápiz y papelpara esbozar el proyecto. Mi diseño noera nada complicado, así que medí ycorté directamente sobre el plexiglás. Latrasparencia del plexiglás me facilito lasmediciones. Por ejemplo, para tomar lamedida de los agujeros del ODROID,simplemente puse la placa sobre la hojade plexiglás y una vez invertida, marquelos cuatro puntos dónde taladrar.

    Para el plexiglás, recomiendo usar ungrosor de al menos 5 mm con el n dereforzar bien el fondo y la estructura.Para los paneles superiores es sucientecon 4mm. Contar con la maquinaria de

    CONSTRUIRUN PORTATILTODO EN UNO LLEVATE TU U3 ACUALQUIER PARTE Por Daniele S.

    ayudara a mantener el ángulo recto. Usaruna hoja más estrecha me permitía crear

    los círculos para los cables, conectores einterruptores.

    Es importante tener a mano un buenvaso de agua - no para beber, sino parala hoja de corte. Cada 2-3 cm de corte,quitaba la hoja y la dejaba enfriar enel vaso de agua que además la lubrica.Cuando taladres procura mantener todolimpio y mojado, y coloca un pedazo demadera debajo del plexiglás. La madera

    evita que el plexiglás se rompa cuando eltaladro perfora la parte inferior.Luego pasé algún tiempo curvando

    los bordes de la caja, usando un secadorde pelo y aplicando aire caliente sobreel plexiglás. Transcurrido un tiempo seablanda pudiendo aplicar presión (senecesita muy poca). En el lado del paneldonde empecé a doblar aplique aire denuevo lentamente. Procura ser delicadoa la hora de hacer esto: Si el plexiglás estádemasiado frío, puede agrietarse o der-retirse si está demasiado caliente.

    Una vez que la pieza se inclina haciala posición deseada, utilice un ventila-

    La caja del portátil terminada, con altavoces instalados en la parte inferior del frontal del plexiglás transparente, un útil I/O shield para edesarrollo de prototipos de hardware y un bonito monitor de 10.1” H

    bricolaje todavía resulta algo caro (a me-nos que te la preste un vecino), así que

    utilice muchas herramientas de las quesolemos disponer en casa o en el garaje.

    * Sierra caladora* Destornillador* Secador de pelo* Lima de uñas* Cinta métrica* Marcador

    Para aquellos que no están familiari-zados con el plexiglás, tiende a fundirsea altas temperaturas. La primera vez quehice un corte en plexiglás, fui demasiadorápido y pude ver que tras la hoja decorte el material se derretía y se enfriabacasi al mismo tiempo. Para cuando -nalice el corte ya se había recompuestocomo si no hubiese sido cortado nunca.

    He aprendido a mantener baja la ve-locidad de la hoja de corte, encendiéndo-la y apagándola continuamente para quese moviera lentamente. Para los cortesrectos, use una regla de cierta longitud ycoloque una hoja más ancha para que me

  • 8/17/2019 Proyecto Wall e

    10/33ODROID MAGAZINE 10

    Bash es una herramienta muy útilpara automatizar tareas admin-istrativas en tu ODROID. Unscript puede ser algo rápido para, simple-mente terminar un trabajo o ejecutarsecada vez que arranque tu ordenador.

    Desarrollo de unscript bash

    Todo script bash debe empezar con:

    #!/bin/bash

    Esto le permite al sistema conocerqué intérprete usar. Curiosamente, elsimbolo “#!” se conoce como un “she-bang”. Sugiero utilizar la palabra tantocomo te sea posible, ya que es usada muypoco, aparte de en las viejas cancionesde Ricky Martin. El coro de su canciónhacía referencia continuamente a losScripts bash. En este artículo aprenderása usar bash para:

    Hacer algo cada vez que tus ODROIDse inicienHacer cálculos y concatenar cadenasAceptar argumentosEjecutar un bucleLanzar un grupo de subprocesos condiferentes argumentos

    Construir un gatorobot

    Para el primer ejemplo, vamos a hacerun script combinando dos cadenas.

    1. Crea un archivo llamado meow.sh

    #!/bin/bash

    uno=”me” # i’m a comment… uno

    references a string

    dos=”ow” # you probably get

    where I’m going with this

    echo “${uno}${dos}” # variables

    are referenced ${…}

    2. Tras crear el archivo, escriba losiguiente en la línea de comandos:

    $ sudo chmod +x meow.sh

    3. Ahora ejectua el script escribiendo:

    $ ./meow.sh

    Debe aparecer “miau”. ¡Bash es ahoraun gato robot! Ahora, vamos a modicarnuestro script para cambiar lo que pue-de decir nuestro gato. Quizás diga algopositivo o algo ofensivo, la cuestión es

    que puedes modicarlo. Modica meow.sh con:

    #!/bin/bash

    uno=${1:-”me”} #use rst param -

    dor para mantener el plexiglás con esaforma. También me ayudó usar panelesde madera anclados con abrazaderas paraconseguir una línea recta a seguir en elpliegue. Recomiendo practicar en trozosde plexiglás desechables. Una vez que lecojas el truco, resulta muy entretenidoconstruir de esta forma una caja a me-dida para un portátil.

    Para pegar los paneles entre sí, he usa-do algunos tornillos autoperforables deun viejo PC. Tras comprobar que todoencajaba bien, los desmonté y pasé a lapintura. Aplique una capa al interiorde la parte trasera del panel, dando unefecto espejo. Si escribes en el panel deplexiglás con cinta, retirarla una vez quela pintura se haya secado para obtener asíun bonito efecto de transparencia y deiluminación por la noche.

    Puesto que instalé la placa con elchip hacia abajo, coloque dos piezas deplástico cerca de los dos LEDs para ree- jar la luz. No es la solución más prácticadel mundo, pero es simple y funcional.Por último, añadí dos altavoces proce-

    dente de mi viejo ordenador portátilpara la reproducción de música. Aunque en las fotos parece que el

    portátil está terminado, el proyecto no seha completado todavía, necesito instalarlos botones de encendido y apagado enla parte frontal con el n de tener unaúnica fuente de alimentación externade 12V. También tengo la intención deañadir un pack de baterías de litio, paraconvertirlo en un ordenador portátil ensi mismo.

    He trabajado en el proyecto durantemucho tiempo, dando prioridad a lafuncionalidad más que a la estética. Noobstante, en cuestión de estética todo esmejorable, así que coge las herramientasde tienes en casa y monta tu propia cajaa medida para tu ODROID.

    CONSTRUIR UN ORDENADOR PORTATIL FUNDAMENTOS DE BASH

    Las habilidades básicas de bash son el puntopartida para convertirse en un gurú de Linux

    FUNDAMENTOS DE BASHSHEBANGSY SHEBANGSPor Tynan Overstreet

  • 8/17/2019 Proyecto Wall e

    11/33ODROID MAGAZINE

    eter supplied, else use default

    provided

    dos=${2:-”ow”} #use second param

    supplied, else use default pro-

    vided

    echo “${uno}${dos}” #nothing new

    here…

    Ahora puedes escribir ./meow.sh y verel comportamiento del gato del ejemploanterior, o bien puede escribir./meow.sh y el gato robot lorepetirá. Por ejemplo, supón que tu gatove a otro atractivo gato robot y quierellamar su atención. Escribe./meow.shmeeeeeee owww e inicia una conversación.

    AutomatizaciónSupongamos que realmente quiere

    hacer algo útil con bash, como escribir unscript para ejecutar unos cuantos coman-dos cada vez que arranque tu ODROID. Yo uso el siguiente script, por ejemplo,para iniciar un servidor TCP en cada U3+de mi clúster para responder a las solici-tudes de trabajo de los clientes:

    1. Crea un archivo llamado on_boot.sh:

    #!/bin/bash

    sleep 15 # pause execution for

    15 seconds

    cd /home/of/your/ le # change

    places

    FUNDAMENTOS DE

    bucle. Utilizo este script siempre quenecesito enviar manualmente variassolicitudes de trabajo a mi clúter:

    #!/bin/bash

    symbol=$1

    date=$2

    for i in 1 2 3 4 5 6 7 8 9 10

    do

    ip=$((i-1))

    tau=$((i*1000))

    path=”${symbol}_${date}”

    python WorkClient.py -t

    $tau -f $path -i 192.1.1.$ip

    done

    Este script coge dos argumentos, elnombre del símbolo y la fecha enformato AAAAMMDD, y los utilizapara enviar trabajos utilizando Work-Client.py (un cliente TCP). Observacómo el script bash crea los pará-metros ip, path y tau que se pasan a WorkClient.py. Bash es una poderosaherramienta que todo administradorODROID debe tener cerca. En este

    artículo he presentado algunas for-mas muy básicas de cómo podemosutilizar bash, incluidas operacionessimples de cálculo, la combinación decadenas y bucles. Añadir argumentosa tus scripts expande efectivamente elnúmero de funciones que puede re-alizar. Si eres como yo y quieres au-tomatizar tanto flujo de trabajo comote sea posible, bash puede ayudarlea liberarte de muchas tareas tediosasque pueden automatizarse, así comoproporcionarte una herramienta rá-pida y potente para interactuar contus sistemas.

    Para descargar el código de ejemploutilizado en este artículo visita www.odroidcluster.com y puedes enviarnoscualquier pregunta, error o sugerencia aodroidcluster (at) gmail.com.

    $ twistd -y WorkNode.tac -l logs/

    node.log # put your command here

    2. Ahora edita/etc/rc.local y añade lassiguientes líneas antes del 0:

    cd /the/folder/where/on_boot/

    lives/

    ./on_boot.sh

    Además, no olvides hacer tu scriptejecutable consudo chmod +x on_boot.sh.

    Hacer algún cálculoBash también puede hacer cosas útiles

    como ejecutar bucles y hacer cálculos.Crea un archivo llamado math_loop.sh:

    #!/bin/bash

    for i in 1 2 3 4 5 6 7 8 9 10

    do

    tau=$((i*1000)) # aka tau

    is i * 1000

    echo tau

    done

    Tras darle los mismos permisos de ar-chivo que el anterior, el script monstrará1000, 2000, ..., 10000 en tu consola.Otra posibilidad es ejecutar el script u-sando un bucle. Como es de esperar,los operadores de comparación son algodiferentes en bash:

    #!/bin/bash

    i=1

    while [ $i -lt 11 ] # -lt means

    less than

    do

    tau=$((i*1000))

    echo $tau

    i=$[$i+1] # increments

    i by 1

    done

    Ambos programas tienen el mismocomportamiento, pero trabajan deun modo distinto. Ahora vamos aponerlo todo junto y crear un scriptpara ejecutar múltiples script en un

  • 8/17/2019 Proyecto Wall e

    12/33ODROID MAGAZINE 12

    Pantalla de inicio del software de código abierto Freedomotic

    FREEDOMATIC

    INSTALACION DEFREEDOMOTIC UN ENTORNO DE TRABAJOPARA LA AUTOMATIZACIONDE EDIFICIOSPor Venkat Bommakanti

    Te interesa la Domótica. Lossistemas ODROID songrandes controladores y ges-

    tores de automatización! Pueden serutilizados para controlar tu casa a dis-tancia, o establecer tareas que se reali-zan de forma automática cada día. Eneste artículo se describe cómo usar delU3 para montar un sistema automa-tizado en una oficina, casa o edificio

    usando el software Freedomotic.

    Requisitos:

    -Una placa ODROID U3 con el adapta-dor de alimentación adecuado .-Una tarjeta MicroSD de 8+ GB omódulo eMMC que contenga la ima-gen de Lubuntu para U3 más recientedisponibles en la web de Hardkernel.-Una red en la que el dispositivotenga acceso a internet y a los forosODROID.-Acceso SSH opcional al U3 con utili-dades como PuTTY (MS Windows 7 +)o Terminal (Mac, Linux) para realizarlos pasos desde un ordenador remoto.

    Instalar Apachemaven

    Apache Maven es una herramienta decomprensión y gestión de proyectos desoftware. El software freedomotic utilizaesta infraestructura. Se puede instalarcon el comando:

    ceso de compilación con los comandos:$ cd freedomotic/

    $ mvn clean install

    Una vez nalizada la compilación,Maven puede iniciarse usando el coman-do mvn.

    Instalar los datosde ejemplo

    Crea una copia de los datos de ejem-plo utilizando el comando:

    $ cp -r data-example/ \

    framework/freedomotic-core/data

    Ejecutar freedomotic

    Lanza la plataforma utilizando el co-mando:

    $ java -jar framework/\

    freedomotic-core /target/\

    freedomotic-core/freedomotic.jar

    A continuación, aparecerá un cuadrode diálogo de inicio de sesión.

    $ sudo apt-get install maven

    Código fuente defreedomotic

    Puesto que no existen paquetes deubuntu basados en ARM pre-compi-lados, tendrás que crear el entorno detrabajo desde su código fuente en elU3. Este artículo no aborda la compi-lación cruzada.

    Crea un subdirectorio para recibir lasfuentes y cámbiate a éste, con los coman-dos:

    $ mkdir freedomotic-src

    $ cd freedomotic-src/

    Traslada el código fuente desde el re-positorio git pertinente a este ubicación,con el comando:

    $ git clone https://github.com/

    freedomotic/freedomotic.git

    Compilar freedomot-ic usando MavenUn nuevo subdirectorio con el árbolcompleto de fuentes se crea automática-mente. Navega hasta éste y lanza el pro-

  • 8/17/2019 Proyecto Wall e

    13/33ODROID MAGAZINE

    S i deseas utilizar un gestor deconexiones para gestionar inter-faces de red por cable y WiFi, lautilidad liviana wicd es una de las po-sibles opciones. Es una alternativa a laherramienta Network Manager basada

    en gnome. En este artículo se describecómo instalar wicd en ODROID U3.

    Requisitos

    1. Una placa ODROID U3 con el adap-tador de alimentación adecuado.2. Una tarjeta MicroSD (con un lectorde tarjeta SD) que contenga la últimaimagen del escritorio de Lubuntuespecí ca para U3, o un módulo deeMMC 8+ GB.3. Una red en la que el dispositivotenga acceso a internet y a los forosODROID.4. acceso SSH al U3 a través de uti-lidades SSH como PuTTY (MS Win-dows 7 +) o Terminal (Mac, Linux)desde el escritorio remoto.

    Instalar wicd y la in-fraestructuranecesaria

    Ejecuta el siguiente comando parainstalar los componentes necesarios:

    WICD

    Utiliza el usuario y contraseña ad-min/admin para iniciar sesión. ¡Ahora elmundo de la automatización esta en tusmanos! Asegúrese de investigar bien eltema de la automatización y tomar todaslas precauciones a la hora de automatizary hacer público cualquier aspecto de tuvida, incluyendo la domótica y el accesovía web. La información que muestraeste articulo sólo tiene nes educativos yde entretenimiento.

    PluginsFreedomotic funciona con plugins.

    Puede usar plugins gratuitos de códigoabierto o desarrollar los tuyos propios.El repositorio GIT contiene el SDKcompleto que tiene todo el código quenecesitas para desarrollar y probar tuspropios plugins. Después de compilarlopor primera vez, abre el proyecto freedo-motic con tu IDE favorito.

    Para desarrollar su propio plugin pue-des empezar con el proyecto de ejemplohello-world incluido en el directorioplugins/devices/hello-world. Abrelo entu IDE, haz algunos cambios y compi-lalo. Se instalará automáticamente enel proyecto freedomotic. Simplementereinicie freedomotic para probar tus últi-mos cambios.

    Para obtener información adicio-nal o realizar cualquier pregunta, visitalas fuentes de información originalesen http://bit.ly/1qqjyun, http://bit.ly/1nL16ZI y http://bit.ly/1Cdwdai.

    Pantalla de bienvenida de Freedomotic

    INSTALACION DE WICD UN GESTOR DE CONEXIONES DE REDPor Venkat Bommakanti

    $ sudo apt-get install \

    wicd-curses wicd

    Iniciar la aplicación yel servicio wicd

    Inicia la aplicación y el servicio re-querido, con el comando:

    $ sudo service wicd

    start

    * Starting Network connection

    manager wicd

    [ OK ]

    $ sudo wicd-curses

    Veri car lainstalación

    Ha de aparecer una interfaz de usua-rio con una lista de redes, como la queaparece en la imagen de arriba.

    Consulte las páginas guía o la ayudaen línea para obtener detalles de su uso.Para información adicional o preguntas,visite las fuentes de información origina-les en http://bit.ly/1powWRH y http://bit.ly/1vTU7Df.

    WICD permite al ODROID conectarsefácilmente a cualquier red por cable oinalámbrica

    FREEDOMATIC

  • 8/17/2019 Proyecto Wall e

    14/33ODROID MAGAZINE 14

    1+. Todo el sistema podía imprimirse en tan sólo cincohoras a una baja resolución.

    Si no dispones de a una impresora 3D, todavía puedesmontar el sistema 3Dponics contactando con el serviciode localización de impresoras 3D en http://www.3dhubs.com. Ellos te conectaran con alguien próximo que tengauna impresora 3D y podrás imprimir los archivos. Con esteservicio, no es necesario pagar los gastos de envío y podrastener listos los componentes en poco tiempo. Las partes másimportantes son la boquilla de goteo, tuberías y silenciador.

    Componentes a imprimir

    Las boquillas de goteo para las botellas de plásticoTubería con un agujero para el acuarioSifón para el aguaTubo para la bomba de aire del acuarioSilenciador para reducir los niveles de ruidoTapón exterior para botellaTapón interior para botella

    SISTEMA DE JARDINERIA DE CODIGO ABIERTO

    3DPONICS UN SISTEMA DE JARDINERIADE CODIGO ABIERTO BASADOEN ODROID Por Lucy Morrissey

    Con 3Dponics, las verduras se pueden cultivar en casi cualquierespacio de reducidas dimensiones

    Eres una persona de ciudad que carece de espacio paraun jardín, un amante de los alimentos frescos cansadode pagar una fortuna por la verdura en las tiendas, osimplemente estas demasiado ocupado para cultivar tus verdu-ras. Ahora, puedes cultivar tu propia comida en casa usando un

    sistema de jardinería de última generación llamado 3Dponics,disponible gratuitamente en http://www.3Dponics.com. ¡Lomejor de todo es que puedes fabricar (o mejor dicho imprimiren 3D) la mayoría de los componentes necesarios desde casa!

    Durante los últimos dos años, 3Dprintler, un laboratoriode tecnología con sede en Ottawa, ha desarrollado un sistemade cultivo hidropónico en 3D y se está ofreciendo al públicocomo un proyecto completamente de código abierto. Debido asu bajo precio y potente procesador, 3Dponics eligió reciente-mente la ODROID-U3 como hardware para la conexión de los

    sensores de jardín vía Internet, pudiendo gestionar y controlarel jardín de forma remota.

    Comencemos

    1. Descarga los archivos desde la web de 3Dponics o desde lacuenta 3Dprintler en http://www.thingiverse.com.2. Imprime en 3D los archivos, o usa un servicio de impresión3D para crear los componentes del sistema.3. Reúne las piezas que no se pueden imprimir en 3D de tuhogar o acude a una ferretería.4. Con gura el sistema, siguiendo las instrucciones y los sen-cillos video tutoriales disponibles en el sitio web 3Dponics..

    Software y hardwareSe usaron varios tipos de software, SolidWorks, AutoCAD,

    SketchUp para diseñar los componentes 3Dponics y preparar-los para su impresión. Aunque 3Dponics necesita el softwarepara crear los archivos, tú no lo necesitas, ya que puede accedera los archivos ya creados vía on-line. No obstante puedes modi-

    carlos y compartir tus cambios con otros usuarios.Cuando los archivos originales fueron diseñados y pre-

    parados, las partes se imprimieron en 3D utilizando unMakerbot Fifth Generation Replicator y un Formlabs Form

  • 8/17/2019 Proyecto Wall e

    15/33ODROID MAGAZINE

    Regulador superior de la botella

    Conector de la bomba para múltiples sistemasBarra de soporte modular para tuberíasFunda protectora para botellasAspersor para las plantasAspersor para las raíces

    Componentes no imprimibles

    3-4 botellas de plástico vacías (recomendado de 1L o 2L)Bomba de aire silenciosa Hagen Marina 200 (o equivalente)

    3,5 metros de tubería para la fuente de aire del acuario20 bandas de sujeción

    Sistema autónomoGracias a la ODROID-U3, el sistema 3Dponics se puede

    activar por Internet. Después de experimentar con diferentesunidades, se descubrió que el ODROID-U3 era el que mejortrabajaba con el sistema de 3Dponics porque:

    1.El cote del ODROID U3 (65$) es menos que el de otrasplacas como Intel Nuc i3 ($ 300), y las tarjetas microSD,cámaras HD USB y sensores de datos son muy económicos.2. El sistema operativo (SO) es gratuito (Android o Linux),3. Puedes imprimir en 3D tu propia caja a medida paraODROID-U3 en http://bit.ly/1qmCfAv (gracias al usuario deThingiverse, miguif).

    SISTEMA DE JARDINERIA DE COD

    Aplicación ODROID-U3Hay una app llamada 3Dponics Farm App en continuo

    desarrollo y que los usuarios pueden instalar en su propiodispositivo ODROID U3. La app coge los datos de los sen-sores del sistema 3Dponics y se comunica con los servidores3Dponics, que envían los datos a un teléfono inteligente.

    Los usuarios simplemente abren la app en su teléfono(Android o iOS) y se conectan con el servidor ODROID-U3 para monitorear y controlar su propio sistema 3Dpon-ics. Pueden comprobar la temperatura y humedad, en-cender y apagar el sistema, configurar un temporizador(por ejemplo, para programar una acción cuando los índi-ces sean muy bajos), ver la señal de video en vivo, sincroni-zar el sistema con el amanecer y el atardecer, y conectarloa paneles solares como una fuente de energía renovable.

    Puesto que el espacio usado por el sistema es pequeño,sólo requiere 4,5 vatios de electricidad para hacerlo funcio-nar. Añadiendo células solares y una batería, la bomba deaire y el ODROID-U3 pueden ser alimentados totalmentecon luz solar.

    El jardín 3Dponics puede utilizar cosas baratas del hogar

    Un típico diseño de un sistema de jardinería exterior 3Dponics

  • 8/17/2019 Proyecto Wall e

    16/33ODROID MAGAZINE 16

    7. 2 servomotores para la vista panorámica y la inclinación– Micro servomotores analógicos HK15168 8g/1.2kg/ 0.12sMicro Servo 8g / 1.2kg / 0.12s8. 2 Ultramicro servomotores para los ojos - HK-282A de uúnico tornillo, Ultra-Micro Servomotores 2g/0,2 kg/0.08sec

    9. 2 servomotores para los brazos - Micro servomotoresanalógicos HK15168 8g/1.2kg/0.12s10. Un regulador de tensión de 5 voltios (máximo 5 Ah) paralimentar los circuitos - TURNIGY 3A UBEC w/Reducciónruido11. Batería Lipo - Turnigy nano-tech A-SPEC 2200mAh 3S~ 130C Lipo Pack

    Desmonte el robot Wall-E que compré e inserté los servo-motores principales y webcam, como se muestra en las fotos de

    este. Luego, empecé a desarrollar los controladores de software.Por ahora, he escrito el código en Python 2.7, sin ningún GUI.Parte del código es para la detección de rostros y el seguimien-to, otra parte es para enviar el vídeo a otro equipo y otra pararecibir los comandos.

    El modelo básico de control remoto Wall-E de Pixarestá disponible para su compra en Amazon, listopara usar con un ODROID U3 como cerebro!

    ARTICULO DE PORTADA

    Siendo un niño tuve un sue-ño, deseaba tener un roboten casa. Recientemente ypuesto que la robótica domestica seha vuelto más asequible, comencéa programar robots con Arduinocreando algunos para caminar yevitar obstáculos, pero eran robotsbásicos sin ninguna personalidad.Hace unos 6 meses, empecé a es-tudiar Python, puesto que Java y Ceran demasiado difíciles para mí.

    Compré un ODROID U3con un módulo eMMC conLinux, a pesar de que nunca antes

    había usado Linux. De hecho, nisiquiera pude instalar la librería básica OpenCV. Con el tiempodescargue una imagen SO de los foros ODROID de Robóticallamada Linaro 12.11 Robotics Edition (ROS), y usé códigoPython para enseñar a mi robot a detectar caras. Después lleguéa trabajar con OpenCV, conecté un Arduino al U3 usando uncable USB y envié algunas secuencias de código.

    La inspiración para mi robot Wall-E empezó cuando vi lapelícula “Wall-E”, entonces me compre un Wall-E U-Com-mand usado, fabricado por Pixar (http://amzn.to/1lBYyC2).En mi búsqueda, encontré el sitio de DJ Sures (http://bit.ly/1pfKxEQ) y me di cuenta que era posible hacer el mis-mo robot sin un PC con Windows, utilizando para ello unODROID-U3

    Materials

    1. Arduino 20092. ODROID U33. Webcam de Hardkernel4. eMMC con Ubuntu preinstalado5. Tarjeta MicroSD clase 10 (para Linaro)6. 2 servomotores con engranajes de metal para el “gusano”- Servo rodamientos Turnigy Digital de gran potencia 26,0g/3,5 kg/0.12sec

    WALL-E CONSTRUYE TU PROPIOROBOT EN CASAPARTE 1 Por Vincenzo Siriaani

  • 8/17/2019 Proyecto Wall e

    17/33ODROID MAGAZINE

    ¡Wall-E rescató a un amigo y decidió resucitarlo como un ODROID!

    # Wall-E Main Controller Python Script

    import threading

    import time

    import cv2

    import timeit

    import socket

    import serial

    import numpy

    # these are all the libraries

    global command

    global face_positionx

    global face_positiony

    #queue

    face_positionx = 0

    face_positiony = 0

    command = “”

    class tasks(threading.Thread):

    def __init__(self, threadID, name, counter, func-

    tions):

    threading.Thread.__init__(self)

    self.threadID = threadID

    self.name = name

    self.counter = counter

    self.functions = functions

    def run(self):

    print “Starting “ + self.name

    self.functions() print “Exiting “ + self.name

    # this is a class that performs the server that re-

    ceives the command, i don’t know why, but

    # without this class the thread doesn’t works

    def server():

    global command

    server_socket = socket.socket(socket.AF_INET,

    socket.SOCK_STREAM)

    server_socket.setsockopt(socket.SOL_SOCKET, sock-

    et.SO_REUSEADDR, 1)

    server_socket.bind((“localhost”,5001))

    server_socket.listen(5) client_socket, address = server_socket.accept()

    while 1:

    client_command = client_socket.recv(1024)

    client_socket.send(“From “ + repr(address) +

    “ Recived “ + repr(client_command))

    command = client_command

    if client_command == “q”:

    time.sleep(5)

    client_socket.close()

    server_socket.close()

    break

    print “Uscito server”

    # this is a server that receives the command for the

    Wall-E, you can change the “localhost”

    # with a ip number and it works out of the same ma-

    chine. to send the command

    # out of the home network you must to redirect the

    port in the settings of your router

    def cattura_immagine(): time.sleep(1)

    global command

    global stringData

    ARTICULO DE POR

  • 8/17/2019 Proyecto Wall e

    18/33

  • 8/17/2019 Proyecto Wall e

    19/33ODROID MAGAZINE

    cv2.putText(frame, “Larghezza “ +

    repr(width) +

    “Altezza “ + repr(height),

    (50,10),

    cv2.FONT_HERSHEY_SIMPLEX,

    0.6, (255,255,255))

    minisize = (frame.shape[1]/

    SCALA,frame.shape[0]/SCALA)

    miniframe = cv2.resize(frame, mini-

    size)

    gray = cv2.cvtColor(miniframe, cv2.

    COLOR_BGR2GRAY)

    gray = cv2.equalizeHist(gray)

    # all this part of code starts to

    read frames for ever, gets the time for FPS,

    # shrinks the frame, turns the frame

    rst to grey scala, then makes Histogram

    # Equalization, to improves the con-

    trast in the image, to speed up the process

    # of face detection

    if command == “4”:

    command_arduino = “4”

    if command == “5”:

    command_arduino = “3”

    if command == “r”:

    command_arduino = “2”

    if command == “t”:

    command_arduino = “1”

    if command_arduino != 0:

    if arduinoconnesso == 1:

    arduino.write (repr(command_

    arduino))

    command_arduino = 0

    command = “”

    # this is for the manual command of pan

    and tilt of Wall-E head

    if command == “f”:

    faces = classi er.

    detectMultiScale(gray)

    for f in faces:

    x, y, w, h = [ v*SCALA for v

    in f ]

    cv2.rectangle(frame, (x,y),

    (x+w,y+h), (0,0,255))

    cv2.rectangle(frame, (x+w/2-

    1,y+h/2-1), (x+w/2+1,y+h/2+1), (0,0,255))

    cv2.putText(frame, “X =

    “+repr(x+w/2)+” Y = “ + repr(y+h/2), (5, 25),

    cv2.FONT_HERSHEY_SIMPLEX,

    0.6, (255,255,255))

    face_positionx = repr(x+w/2)

    face_positiony = repr(y+h/2)

    cv2.putText(frame, “Volti n.

    “ + repr(len(faces)), (x-50,y-10),

    cv2.FONT_HERSHEY_SIMPLEX,

    0.6, (255,255,255))

    # this performs the real face detection,# (http://byte sh.de/blog/

    opencv/object_detection/)

    if face_positionx != 0 or face_

    positiony != 0:

    if int(face_positionx) < 220:

    command_arduino = “4”

    if int(face_positionx) > 390:

    command_arduino = “3”

    if command_arduino != 0:

    if arduinoconnesso == 1:

    Una vista frontal de las ruedas tractor de Wall-E y el motor Una vista lateral de las ruedas tractor de Wall-E sin las ban

    ARTICULO DE POR

  • 8/17/2019 Proyecto Wall e

    20/33ODROID MAGAZINE 20

    client_socket_video.send(stringData);

    contatore = 0

    # this send the stream video to the client

    video, it send strings of text!!

    cv2.imshow(‘frame’,frame)

    if command == “q”:

    webcam.release()

    cv2.destroyAllWindows()

    break

    if cv2.waitKey(1) & 0xFF == ord(‘q’): command = “q”

    break

    sock.close()

    time.sleep(2)

    if arduinoconnesso == 1:

    arduino.close()

    webcam.release()

    time.sleep(2)

    cv2.destroyAllWindows()

    print “Uscito Opencv”

    time.sleep(2)

    # this closes all when you push “q”

    # this starts everything

    print “Comincio”

    thread2 = tasks(2, “server”, 2, server)

    thread2.start()

    cattura_immagine()

    El script anterior es el software principal, pero hay otros2 necesarios. Tras iniciar el módulo principal, el servicio decomandos central y el servicio de video se ponen en marcha:

    arduino.write

    (repr(command_arduino))

    command_arduino = 0

    if int(face_positiony) < 160:

    command_arduino = “1”

    if int(face_positiony) > 320:

    command_arduino = “2”

    if command_arduino != 0:

    if arduinoconnesso == 1:

    arduino.write

    (repr(command_arduino))

    command_arduino = 0

    face_positionx = 0

    face_positiony = 0

    dt = timeit.default_timer() - t

    cv2.putText(frame, “FPS = “ +

    repr(1/dt), (5, 50),

    cv2.FONT_HERSHEY_SIMPLEX, 0.6,(255,255,255))

    # this part sends the command to Wall-E

    head to track the faces

    encode_param = [int(cv2.IMWRITE_JPEG_

    QUALITY),90]

    result, imgencode = cv2.imencode(‘.

    jpg’, gray, encode_param)

    data = numpy.array(imgencode) stringData = data.tostring()

    if contatore == 3:

    client_socket_video.

    send(str(len(stringData)).ljust(16));

    Podemos contemplar una caja impermeable para el U3, ya que aWall-E le encanta nadar!!!

    ARTICULO DE PORTADA

  • 8/17/2019 Proyecto Wall e

    21/33ODROID MAGAZINE

    import socket # Import socket module

    s = socket.socket() # Create a socket object

    host = “localhost” # Get local machine name

    port = 5001 # Reserve a port for

    your command service

    s.connect((host, port))

    print “Connect to “ + host

    print “Use f for detection, 4, 5, r, t for manual

    command of the head, q to quit “

    while (True):

    command = raw_input (“Command? “)

    s.send(command)

    print s.recv(1024)

    if command == “q”:

    break

    s.close # Close the socket when

    “q”

    video client:

    import socket

    import cv2

    import numpy

    def recvall(sock, count):

    buf = b’’

    while count:

    newbuf = sock.recv(count)

    ODROID-U3 montado en la base Wall-E, con el dongle inalámbrico

    Primer plano de losservomotores utiliza-dos para controlarlos movimientos delojo de Wall-E

    Los ojos de Wall-Eson su carta depresentación ytienen que ser muyexpresivos

    if not newbuf: return None

    buf += newbuf

    count -= len(newbuf)

    return buf

    # http://stupidpythonideas.blogspot.it/2013/05/sock-

    ets-are-byte-streams-not-message.html

    TCP_IP = “192.168.1.107”

    TCP_PORT = 5002

    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    s.connect((TCP_IP, TCP_PORT))

    while (True):

    length = recvall(s,16)

    stringData = recvall(s, int(length))

    data = numpy.fromstring(stringData,

    dtype=’uint8’)

    decimg=cv2.imdecode(data,1)

    cv2.imshow(‘SERVER’,decimg) if cv2.waitKey(1) & 0xFF == ord(‘q’):

    break

    s.close()

    ARTICULO DE POR

  • 8/17/2019 Proyecto Wall e

    22/33ODROID MAGAZINE 22

    Serial. ush(); // svuoto il buffer di ricezione

    seriale

    if (rx != ‘0’)

    {

    if (rx==’1’)

    {

    if (pan >= 35)

    {

    pan = pan - 2;

    }

    }

    if (rx==’2’)

    {

    if (pan = 35)

    {

    tilt = tilt - 2;

    }

    }

    if (rx==’4’)

    { if (tilt 0) // Controllo se il buf-

    fer di ricezione contiene qualcosa

    {

    rx = Serial.read(); // leggo il carattere

    ricevuto e lo memorizzo in rx

    Wall-E utiliza una pantalla táctil ODROID-VU para programar a sunuevo colega

    Wall-E vio el artículo 3Dponics y puso en marcha su propio jardín

    ARTICULO DE PORTADA

  • 8/17/2019 Proyecto Wall e

    23/33ODROID MAGAZINE

    Hay algún plan para ir a pescar el próximo n de semana, jugar al golf, o simplemente quedarnos en casa y usar elordenador? Esta es una pregunta que los acionados alaire libre están siempre repitiendo durante la semana. Para ayu-

    dar a responder esta cuestión, los usuarios de Linux pueden in-stalar una previsión del tiempo directamente en el escritorio. Eneste artículo, te presento un par de aplicaciones que muestran eltiempo actual y el pronóstico para ayudarte a planicar futurasactividades al aire libre.

    XFCEEl escritorio XFCE tiene un plugin del tiempo y se pue-de

    añadir al panel inferior. Se puede agregar un widget de Weath-er Update, como se muestra en la cimagen de la derecha. Para

    instalar el plugin del tiempo escribe:$ sudo apt-get install xfce4-weather-plugin

    Desde el panel, se puede abrir las propiedades haciendo clicderecho para acceder a las opciones de conguración..

    El botón Change abre un segundo cuadro de diálogo paraseleccionar una ubicación. La ciudad más cercana a nuestro ríode pesca es “Viitasaari”, que puede ser localizado introducién-dolo en el cuadro de texto y pulsando el botón Search. De lalista de resultados, se puede seleccionar la localización deseaday obtener su pronóstico.

    PARTE METEOROLO

    EL PARTE METEOROLOGICOEN EL ESCRITORIO ¿HAY POSIBILIDAD DE PESCAREL PROXIMO FIN DE SEMANA?Por Jussi Opas

    Al pasar por encima del widget del tiempo con el ratón semuestra un texto con información de la temperatura, el viento,la humedad y la nubosidad. Al hacer clic en el widget, se puedeobtener un pronóstico para los próximos días.

    Para atrapar truchas, el tiempo debe estar nublado o algolluvioso, más que soleado. Las truchas aparecen a última horade la tarde o en las primeras horas de la noche. Por otro lado,el viento no es bueno para la pesca con mosca, ya que suele

    Diálogo de con guración dela aplicación Weather Update

    En este fondo de escritorio de http://bit.ly/1lGnGrj, se ve unmartín pescador como fondo de pantalla. ¿Será la predicciónde nuestra oportunidad para pescar?

    afectar a la capacidad de lanzar el anzuelo. Además de que no

    se puede ver la actividad de los peces en el agua cuando hacedemasiado viento.

    Varios widgets como el viento y la temperatura se puedenañadir para ayudarnos a decidir cuándo ir a pescar. En el ejem-plo que se muestra en la captura de pantalla, los días de pescaseleccionados son el sábado y el domingo, y parece que el mejortiempo para pescar tendrá lugar el sábado al anocher, ya queno hay prácticamente nada de viento, estará algo nublado yoscuro. El domingo por la mañana también nos puede intere-sar, ya que parece que estará nublado.

    Gnome y UnityLos usuarios de casi todos los escritorios, incluyendo

    Gnome y Unity, también tienen aplicaciones meteorológicasdisponibles en diversas fuentes de software. Busca por “weath-

    Añadiendo Weather Update

  • 8/17/2019 Proyecto Wall e

    24/33ODROID MAGAZINE 24

    Modelo de Predicción en pescaDespués de volver a casa de nuestro viaje, formulamos un

    modelo informático de probabilidad para pescar basándonosen ciertas variables como el clima y el tipo de señuelo:

    if (weather is cloudy) {

    probability = good;

    }

    if (it is evening) {

    increase probability;

    }

    if (tinsel is used) {

    increase probability;

    } else if (hassle is used) {

    decrease probability;

    }

    if ( sherman is skilled) {

    increase probability;

    }

    Podemos probar este método en contra de lo que realmentesucedió, Pescamos en una soleada mañana de domingo, conuna mosca hassle y con un pescador novato. A pesar de estosinconvenientes, nalmente capturamos un pez.

    Si se quiere desarrollar un modelo mejor para capturarpeces, podrías basarsete en el teorema de Bayes (http://bit.ly/1nwkWIA ), que describe cómo los cálculos se pueden hacercon probabilidades condicionales. Un modelo más avanzado

    podría utilizar también algunos datos históricos del tiempo.Por ejemplo, saber si ha llovido en las últimas dos semanas osi ha hecho mucho calor. Estos datos de referencia podrían serrecogidos por una placa meteorológica con ODROID, ubica-dos en la zona de pesca y con los datos disponibles vía Internet.

    er” en el Centro de Software de Lubuntu o Ubuntu. Por ejemp-lo, gnome-weather está disponible en el Centro de Software deLubuntu, como se muestra en la siguiente captura de pantalla ypuede ser instalado escribiendo:

    $ sudo apt-get install gnome-weather

    li-gera lluvia, los peces parecian estar activos y respondieron a laserpentina oropel. Por desgracia, el pez cazado se escapó cuandose rompió el cable.

    Pronto oscureció, así que tuvimos que dejar de pescar. Era mejorirse a dormir y pescar de nuevo el domingo por la mañana. Usamosel oropel porque tuvimos algo de suerte el sábado, pero el domingono pico nada. Así que, empezamos a usar una mosca llamada “has-sle“ en las zonas profundas. La probabilidad de capturar algún pezcon la mosca hassle era escasa, ya que según nuestra experiencia lastruchas la suelen ignoran. Después de un rato y a pesar del tiemposoleado, nalmente capturamos una trucha.

    PARTE METEOROLOGICO

    Gnome Weather

    Señuelo Oropel – Unamuestra de señuelo trucha

    oropel serpentina queimita a un pez pequeño

    Un señuelo demosca hassel tienedos plumas delcuello de perdiz, yel anzuelo utilizadoes colocado deforma que oteboca abajo

    Esta trucha fueatrapada con lamosca hassley luego fueliberada

    Usando gnome-weather, el usuario puede elegir un deter-minado lugar y ver el tiempo para esa zona. Se puede ver elpronóstico del tiempo para el día en curso y también una pre-dicción bastante precisa para la siguiente semana.

    Salir de PescaContinuando con nuestra historia, llegó el n de semana y

    fuimos al río, basándonos en la información que teníamos denuestro widget del tiempo. El cielo estaba nublado el sábado porla tarde. El domingo por la mañana en lugar de estar nublado,estaba soleado y sólo aparecieron unas cuantas nubes. El tiempoprevisto tuvo lugar pero sucedió antes de lo esperado. Es posibleque que las masas de aire se movieran más rápido de lo esperado.

    El sábado al anochecer estaba nublado y justo antes de una

  • 8/17/2019 Proyecto Wall e

    25/33ODROID MAGAZINE

    En la primera parte de esta seriede artículos sobre el ODROID-SHOW, introduje los conceptosbásicos del software que se puede eje-cutar en éste, sucientes como para de-

    sarrollar tus propios programas. En estenúmero, me centraré en el uso de los doscabezales pin situados en la parte supe-rior derecha de la placa para conectar al-gunos componentes sencillos al SHOW.

    PinesSi apenas has empezado a usar Ar-

    duino, tanta información puede pare-certe un poco desconcertante, así quevoy a coger algunos párrafos y los voy adividir en trozos más comprensibles.

    Para empezar, las dos columnas másimportantes son “Label”, que es lo queestá impreso en la placa y permite identi-car el pin y la columna “Function”, queidentica el uso principal para ese pin enconcreto. Analizando la columna Func-tion, deberías ser capaz de identicar losdiferentes tipos de pines:

    * Pines de alimentación, que ofrece3,54 voltios con un “alto” nivel lógico*Un pin de tierra, que es necesario

    para crear un circuito eléctrico ytiene un “bajo” nivel lógico* Pines digitales, que pueden tenerun estado “alto” o “bajo”

    * Pines analógicos, conectados inter-namente a un convertidor analógicoa digital que puede medir cualquiervalor de tensión entre 0 (tierra) y3,45 voltios (alto)* Un pin de reinicio, que general-mente no se utilizada

    Cualquiera de los pines analógicos sepuede programar para operar sólo comoun pin digital si eso es lo que quieres,

    pero al contrario no es posible. Por logeneral, los pines digitales se conectana algún tipo de interruptores o botones,

    Resumen de funciones de cada pin de ODROID-SHOW

    Los dos cabezales pinde la parte superiorderecha de la placa

    se puede utilizar para

    conectar varios com-ponentes externos

    PROFUNDIZANDO (EN)EL ODROID-SHOW PARTE 2:HACIENDO CONEXIONES

    mientras que los pines analógicos estánconectados a otras cosas como resisten-cias variables (potenciómetros) o resis-tencias dependientes de la luz. Ten encuenta también que los pines sólo pue-den funcionar en modo analógico cuan-do se conguran como entradas; cuandoun pin es congurado como salida, sólopuede estar encendido o apagado perono en un valor entre medias.

    Funcionesalternativas del Pin

    Continuando, vemos que los pines

    pueden tener funciones alternativas, quese pueden dividir en grupos. Pueden serutilizados para SPI, I2C, modulacióncon pulsos (PWM, que se usaa menudopara impulsar los motores o cambiar elbrillo de los LEDs), interrupciones ex-ternas e interrupciones en el tiempo.Los dos primeros son protocolos dife-rentes que permiten al chip ATMega delSHOW comunicarse con los circuitos

    integrados más complejos (ICs), sen-sores, etc. Véase notas de “I2C y SPI”para una visión más completa.

    No todas las funciones alternativasposibles están disponibles en ODROID-

    ODROID-SHOW PAR

  • 8/17/2019 Proyecto Wall e

    26/33ODROID MAGAZINE 26

    SHOW por el hecho de que algunos delos pines también se utilizan para comu-nicarse con el hardware TFT. En con-creto, los pines D11, D12 y D13 estánconectados a la TFT, lo que signica queel pin D11 ya no puede ser usado paraPWM o para poner en marcha interrup-ciones en el tiempo. Con el cableado y laprogramación correcta, se puede utilizarpara comunicarse con otro dispositivoSPI aparte de la pantalla TFT.

    La otra función alternativa es para lasinterrupciones externas que cubriré másadelante, cuando hable sobre el uso delas interrupciones en respuesta a las pul-saciones con botones.

    La columna “ATMega / Port” mues-tra formas alternativas de tratar los pines.Si decides usar “avr-gcc” para escribir ycompilar programas para SHOW enlugar del IDE “Arduino”, necesitarásreferirte a los pines usando la nume-ración de la documentación ATMega:“avr-gcc” no reconoce la numeración delos pines al estilo Arduino.

    El valor “Port” es otro modo de refe-

    rirse a los pines. El procesador ATMe-ga agrupa pines en cuatro “ports” o “banks” separados e incluye métodos paraleer o escribir cuantos pines se quieraen el mismo puerto y al mismo tiempo.También es posible congurar el mani-pulador de interrupciones para controlarlos cambios del estado de los pines, pero(con la excepción de pin D2) esto sólose puede hacer con un puerto completoen lugar de con pines individuales. Lospuertos van de la “A” a la “D”. Por ejem-plo, el pin marcado como A5 en la placatiene el nombre del puerto PC5, lo quesignica que está en el puerto “C” y elbit 5 se usa para acceder a su valor.

    Finalmente, cada pin tiene un núme-ro de interrupciones asociado que semuestra en la última columna. Cuandouna interrupción “pin change “ se activa,provoca una interrupción en el pin queva desde “high “ a “low” o viceversa.

    Circuito de sensoresDejando la teoría a un lado, podemos

    de hecho llegar a conectar algunos sen-sores y leer sus valores en el SHOW. Aunque son circuitos muy simples, amenudo es todo lo que se necesita paraañadir algo de interactividad a un pro-grama, en especial si deseas usar SHOWpara una aplicación independiente.

    Para ahorrar espacio, sólo voy a des-cribir los puntos principales de cada cir-cuito Arduino.

    Circuito pulsar botónSe puede conectar un botón o inter-

    ruptor en serie entre un pin digital yun pin 3v45. De esta forma, cuando sepulsa el botón o se cierra el interruptor,

    el pin registra un valor “high”.

    Lectura de unpotenciómetro

    Los potenciómetros (o “pots”) sonuna forma de resistencia variable. Pue-den presentarse en formas circulares olineales, como un botón de control devolumen o como un botón deslizador deuna mesa de mezclas. Además pueden

    ser “lineal”, donde la resistencia es pro-porcional al punto al se gira el “wiper”, o“log” donde la resistencia es proporcio-nal al logaritmo. Los pots lineales son,por lo general los más útiles.

    Lectura de joystickLa mayoría de los joystick, a excep-

    ción de los más viejos, son dispositivosanalógicos, con un pot para el eje X yotro para el eje Y. Normalmente, tienenuno o más botones.

    Usar interrupcionespara pulsar botones

    Como resultaba simple conectarcomponentes ( resistencias variables,LEDs, interruptores, relés…) a un mi-crocontrolador y los más complejosempezaron a ser más asequibles, la gentese dio cuenta de que necesitaban algunaforma estándar de interactuar con e-llos. Los protocolos I2C y SPI fuerondesarrollaron independientemente paraabordar esta cuestión. La mayoría de los

    microcontroladores e incluso algunosprocesadores potentes o SOC (Systemon a Chip) serán compatibles con unoo ambos.

    Ambos protocolos tienen un buscompartido, sobre el cual los datos via- jan hacia y desde el equipo periférico. Ambos utilizan una conguración maes-tro-esclavo, siendo el microcontrolador(MCU) el maestro que comunica a losdispositivos esclavos lo que deben hacer.También es posible conectar varios dis-positivos diferentes al bus compartido,aunque varía el modo en el que es tra-tado cada dispositivo individual, es decircómo el dispositivo sabe que el MCU le

    está hablando en un momento dado.

    SPICon SPI, Los diferentes dispositivos

    son tratados por una línea independiente“slave select” para cada dispositivo. Conel esclavo adecuado, el dispositivo co-nectado sabe que el MCU está hablandocon él. Con I2C, por otro lado, cada dis-positivo debe tener una dirección única

    que generalmente es un número de 7bits. La mayoría de los dispositivos I2Cpueden tener sus direcciones congura-das por medio de saltadores o puntos deestaño. El dispositivo maestro anteponea cada mensaje la dirección del disposi-tivo con el que desea hablar.

    SPI tiene la ventaja de tener las másaltas tasas de transferencia de datoscon dispositivos esclavos, por lo que amenudo es usado en aplicaciones comopantallas TFT y módulos de tarjetas SD.También es capaz de realizar operacionessíncronas, lo que signica que los datospueden ser transferidos en ambas direc-ciones a la vez sobre el MOSI (“MasterOut, Slave In “) y pines MISO (“MasterIn, Slave Out “). La principal ventaja deI2C es que sólo necesita dos pines inclu-so si se cubre el número máximo de dis-positivos. Esta característica hace que seauna opción muy común para una am-plia variedad de sensores como la placameteorológica para ODROID, disposi-tivos como los controladores de motor,

    ODROID-SHOW

  • 8/17/2019 Proyecto Wall e

    27/33ODROID MAGAZINE

    y placas de expansión E/S como la I/Oshield para el U3.

    También hay una gran cantidad demódulos disponibles para la plataforma Arduino que podrían ser conectados a lospines I2C o SPI del ODROID-SHOW.Lo único es que hay que asegurarse deque el dispositivo puede funcionar cor-rectamente en el nivel lógico 3.45v quees el utilizado por SHOW. Incluso puedeconectar dispositivos SPI y I2C al mis-mo tiempo, aunque tengas que dedicarun pin libre (A3 o D2) como una líneaesclava para cada dispositivo SPI y evitarasí conictos con el controlador TFT.

    La mayoría de los módulos de hard-

    ware diseñados para conectarse con Ar-duino o sistemas similares disponen delibrerías y códigos demo disponibles paraello, por lo que usarlo en tu programaSHOW es tan simple como incluir la li-brería correcta y modicar la demo paraque haga lo que necesites. Las libreríasnormalmente ocultan todos los detallesde los protocolos reales utilizados parala comunicación. Esto hace que sea muy

    fácil usar la mayoría de los módulos entus propios proyectos, ya que disponesde una visión más amplia de lo que sesupone que hacen y usar las librerías paragestionar las partes más monótonas.

    Seguridad eléctricaDebido a las diminutas corrientes y

    tensiones usadas por ODROID-SHOW,no hay prácticamente ninguna posibi-lidad de que accidentalmente aparezcauna descarga al conectar componen-tes pasivos a la placa. Sin embargo, loscomponentes electrónicos sensibles deSHOW es una cuestión a parte, ya quees muy fácil dañar la placa si conectasalgo de forma incorrecta. Básicamente,hay tres formas de dañar los componen-tes electrónicos en el SHOW:

    * Crear una situación de sobretensión* Crear una situación de sobre corri-ente (cortocircuito)* Conectar una fuente de alimentaciónexterna con una polaridad incorrecta

    Las situaciones Sobretensión surgenal conectar un dispositivo con alimen-tación externa que suministra más de3,45 voltios a cualquiera de los pinesdel SHOW. Esto incluye otras placas Arduino, que generalmente funcio-nan a 5V, o lo que se conoce comoniveles “TTL” y algunos “módu-los” con alimentación externa quepueden utilizar niveles de 5v. Estosdispositivos todavía pueden ser co-nectados siempre y cuando los pines3.45V estén eléctricamente aislados detensiones superiores, como cuando seusa un divisor de voltaje apropiado, unconvertidor de nivel o un aislador óp-

    tico. La electricidad estática puede dañaralgunos componentes, así que utilizalos métodos antiestáticos o de puesta atierra adecuados cuando los manipules.

    SobrecorrienteLas dos formas que puede causar una

    situación de exceso de corriente son laconexión de dispositivos que atraigandemasiada corriente desde los pines o

    por la formación de un corto-circuito.Los pines en un Arduino estándar (quefuncionan a 5V) están pensados para unmáximo de 40 mA en cualquier pin in-dividual, con un consumo máximo de200mA. El SHOW, sin embargo, fun-ciona a 3.45V, por lo que la corrientemáxima es menor. No he sido capaz deencontrar más datos sobre esta cuestión,así que para estar seguros recomendaríano superar los 20mA en cualquier pino 100mA en conjunto. De hecho, des-de que el SHOW también maneja unapantalla TFT que tiene una luz de fondoLED, puede ser que los 100mA sea elvalor optimo. Algunos componentes,como los LED, podrían absorber de-masiado corriente si se conectan directa-mente por lo que necesita una resistencialimitadora, mientras que otros, como losmotores u otras cargas inductivas nuncadeben ser activados directamente.

    CortocircuitioUn cortocircuito se forma cuando

    se crea una conexión directa desde unode tus pines +3.45v a tierra. Ademásdel cortocircuito obvio, también es po-sible formar un corto con pines GPIOque se han congurado como SALIDA.Un pin de salida con una corriente altade + 3.45v y uno con una corriente baja

    como GND tienen un riesgo de corto-circuito si los conectas a tierra o a un pin+3.45v respectivamente. Los pines con-gurados como entrada, por otro lado,son más seguros para conectar directa-mente cualquiera de tus pines positivoso toma tierra.

    La solución es simple para los pro-blemas de sobre corriente y cortocircui-tos, asumiendo que no son descuidos ypasa por poner una resistencia con limitede corriente en serie con cualquier co-nexión que tenga un riesgo de absorberdemasiada corriente o la posibilidadde darse un cortocircuito. Usando laley de Ohm, un valor de 220 ohmios,por ejemplo, sería limitar la corriente a3.45V / 220R = 15.7mA, que es seguropor debajo de la corriente máxima de 20mA.

    No obstante, es poco probable quecause daños, siempre y cuando identi-ques los riesgos y compruebes el cir-cuito antes de conectar nada..

    ODROID-SHO

    Panel LCD DE ODROID-SHOW con unpack de pilas adicionales

  • 8/17/2019 Proyecto Wall e

    28/33ODROID MAGAZINE 28

    S iempre he soñado con tener mipropio superordenador. Por ello,me adentre en un campo dondeabundan los potentes clústeres infor-

    máticos: el comercio algorítmico. En elmundo “algo”, no es raro que las empre-sas pasen de unas cifras de seis a siete ensus clústeres con cada nodo nuevo supo-niendo miles de dólares y consumiendograndes cantidades de energía eléctrica.

    Afortunadamente para los que nodisponemos de demasiado dinero, elODROID U3 basado en ARM nos per-mite desarrollar un clúster informáticocon la mínima parte del coste de una so-lución basada en el tradicional x86. Miprimer paso para alcanzar este objetivo,fue desarrollar un prototipo de clústercon 10 nodos U3, que actualmente es-tán sometidos a una serie de pruebas derendimiento frente a uno de mis nodosactuales basado en x86:

    -Hacer Backtesting con una nuevaidea estrategia

    -Filtrar la señal en tiempo real-Crear caminos aleatorios-El Desafío

    Este artículo incluye los resultadosde la primera prueba: hacer backtestingcon una nueva idea estrategia usando ladenominada Response Surface Method-ology (RSM), una potente técnica paraestimar la formas y evaluar las funciones.

    En este caso, se trata de una híper su-percie de 4 dimensiones. Cada puntode la supercie representa una posibleconguración estratégica. Tres (3) de lasdimensiones representan los parámetros

    CLUSTER ODROID-U3CON 10 NODOSEL MEJOR Y MAS ECONOMICOSUPERORDENADOR CASEROPor Tynan Overstreet

    congurables en la estrategia; pensar enellos como botones o diales que contro-lan el comportamiento de la estrategia. Ladimensión nal representa la rentabilidadhistórica de esa conguración.

    La hiper-supercie puede ser imagi-nada como una piscina cúbica tridimen-sional, donde se mide la temperatura encada punto, grabando también las posi-ciones x, y, z. Cuanto mayor es la tem-peratura, más dinero hace la estrategia.De este modo intentamos encontrar lasmás cálidas o más rentable regiones dela piscina. Debemos suponer que el aguacaliente es algo bueno en este ejemplo, ¡yno el hecho de tener niños sin controlaren nuestra piscina!

    Cada punto de medición toma unacantidad de tiempo no trivial para com-

    pletarse. Debemos completar miles demediciones para representar la superciecon precisión. En este ejemplo, estamoslimitados por el tiempo que se necesitapara evaluar realmente la lógica estrate-

    gia frente los datos históricos y medir elbenecio/pérdida resultante de cualquieroperación hipotética.

    Los CompetidoresMi nodo actual consta de una CPU

    x86-64 con 8 núcleos a 4.2 GHz y ejec-tua Xubuntu con 8 GB de memoria, unSSD de 500 GG, GPU dual R9 270xpara OpenCL (útil para generar caminosaleatorios), y una fuente de alimentación850W ATX. Sin incluir la caja rack y elenvío, el nodo cuesta alrededor de 1.150dólares. Asimismo, después de comprar10 U3 con los correspondientes módu-los eMMC 8gb con Linux pre-cargado,fuentes de alimentación, ventiladores, yun switch, el coste de clúster ODROIDfue de alrededor de 1250$, con menosde 100$ de gastos de envió. Yo preerotener algo de espacio en el disco local decada nodo, pero si renuncias a los módu-

    los eMMC y hacer un arranque de red,podrías ahorrar 250$ y construir unclúster ODROID con 10 nodos por al-rededor de 900$, sin el envío.

    Además, cada U3 permite overclock

    Cada nodo del clúster de Tynan es unpoderoso U3, cada uno con su propio

    ventilador de refrigeración

    CLUSTER ODROID U3

  • 8/17/2019 Proyecto Wall e

    29/33ODROID MAGAZINE

    a 1.92 GHz, añadiendo la siguiente líneaa /etc/rc.local justo antes del 0:

    echo 1920000 > \

    /sys/devices/system/cpu/cpu0/\

    cpufreq/scaling_max_freq

    ResultadosQuise ver cómo actuaba el clústerODROID con un código sin modicar. Aexcepción de una aplicación Python paracoordinar el trabajo en el clúster, el códigoutilizado para backtesting fue el mismoque en mi nodo x86. Como se puede veren la Figura, el clúster ODROID completa

    un backtest de 1 dia una hora más rápidoque el nodo x86.

    El Backtesting de un solo día no esmuy útil, así que realicé un backtest de20 días y grabé el tiempo transcurrido:los ODROIDs ofrecen una reducción decasi un 37% en el tiempo necesario pararealizar la RSM, de una ejecución de másde 60 horas en el x86 a un día y medioen el clúster ODROID.

    También hay un sinfín de beneciosmenos evidentes en la ejecución de los

    ODROIDs frente al nodo x86. Por unlado, el clúster es prácticamente silen-cioso en comparación con el x86. Unavez que se enciende el LED azul apenasse nota que tienen un equipo encendido,y mucho menos 10. Por otra parte, elclúster U3 consume menos energía queel x86, por no mencionar la doble GPU.

    El único inconveniente del clúster esla complejidad añadida al gestionar 10

    nodos en lugar de un solo equipo. Asípues, estoy escribiendo una sencilla in-terfaz de administración de clúster quees especíca para los ODROIDs y seráliberada en www.ODROIDCluster.com

    cuando esté lista para su uso.Los siguientes son algunos errores co-

    munes que sulenen aparecer al congu-rar el clúster por primera vez:

    En primer lugar, tenía que regenerarla dirección MAC de cada ODROIDpara que en la red pudiese reconocercada nodo como un dispositivo único.Esto se hizo eliminando el archivo / etc/smsc_95xx_addr y reiniciando, lo quegeneró una nueva dirección MAC y mepermitió asignar una dirección IP estáti-ca al nodo.

    Luego, se retiraron los disipadorestérmicos pasivos para añadir ventiladoresde refrigeración activos, pero no es tanfácil como parece. Tuve que dejar quecada U3 reprodujera vídeos de YouTubedurante 5-10 minutos antes de extraerlos disipadores. ¡Este proceso permitióalguna exfoliación digital innecesaria!

    Por último, la instalación de nfs-com-mon no funcionó hasta que no actualiceel kernel usando ODROID Utility. Para

    acceder a esta utilidad desde un U3, tuveque escribir sudo ODROID-utility.sh enmi línea de comando remota.

    Mejoras futurasEl código utilizado en esta prueba

    de velocidad era un código tal cual, sinmodicaciones con el n de analizar lasdiferencias de hardware de una formarápida. Es posible mejorar el diseño delsoftware aumentando, por ejemplo, elespacio de memoria no tenido en cuen-ta en esta prueba. El clúster ODROIDtiene un total de 20 GB de memoria fr-ente a los 8 GB del nodo x86, lo que sig-

    nica que el software puede ser redi-se-ñado para utilizar un disco duro menor,proporcionando incluso más velocidad.

    Seguimos AdelanteEn la siguiente prueba comparamos

    los ODROIDs con el x86 en el procesa-miento de señales en tiempo real proce-dente de datos de mercados. Los orde-nadores aplicarán ltros bayesianos a losprecios en tiempo real de futuros merca-dos de Estados Unidos. Hay posibilidadde mejorar signicativamente el númerode símbolos que el clúster puede proce-sar simultáneamente frente al nodo x86.Por último, probaré la capacidad de cadaconguración de hardware para generarcaminos aleatorios, que es necesario parajar precios en tiempo real con las opcio-nes de Monte Carlo.

    ConclusiónEl clúster ODROID se presenta comouna alternativa muy atractiva frente a lastradicionales soluciones informáticas. Enuna prueba de velocidad usando la Res-ponse Surface Methodology, el clústerODROID era un 37% más eciente quemi nodo x86. Además, los benecios adi-cionales como la disminución de ruido yde consumo de energía hacen que el U3 seamuy superior. Aunque gestionar un clústerconlleva una cierta complejidad administra-tiva, los benecios superan con creces los in-convenientes. Para más información, visitahttp://www.ODROIDCluster.com.

    La potencia total necesaria para esteclúster U3 de 10 nodos es menos de70 vatios

    Velocidad del clúster ODROID frente X86

    CLUSTER ODROID

  • 8/17/2019 Proyecto Wall e

    30/33

  • 8/17/2019 Proyecto Wall e

    31/33ODROID MAGAZINE

    DexdumpLa herramienta Dexdump se utiliza para volcar el contenido

    del archivo classes.dex. Ejemplo del resultado:

    Processing ‘classes.dex’...Opened ‘classes.dex’, DEX version ‘035’Class #0 - Class descriptor : ‘Landroid/support/v4/accessibilityser-vice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;’ Access ags : 0x0600 (INTERFACE ABSTRACT) Superclass : ‘Ljava/lang/Object;’ Interfaces - Static elds - Instance elds - Direct methods - Virtual methods - #0 : (in Landroid/support/v4/accessibility-service/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;) name : ‘getCanRetrieveWindowContent’ type : ‘(Landroid/accessibilityservice/Acces-sibilityServiceInfo;)Z’

    access : 0x0401 (PUBLIC ABSTRACT) code : (none)…..…..….. access : 0x0401 (PUBLIC ABSTRACT) code : (none) source_ le_idx : 1418 (AccessibilityServiceInfoCompat.java)…..…..

    CompatibilidadCon cientos de dispositivos Android en el mundo, no es

    de extrañar que algunas aplicaciones funcionen perfectamenteen algunos dispositivos y en otros aparezcan problemas. Nohay una solución única para esta cuestión, ya que puede estarcausado por código incompatible con el kernel o el códigofront-end de Android. En muchos casos, los vendedores modi-can el código de Android para adaptarlo a lo que quieren con-seguir, apareciendo así más complicaciones.

    La mayoría de las veces, surgen problemas de compatibi-lidad con aplicaciones que interactúan con los periféricos dedispositivo, ya que pueden tener un comportamiento diferentecuando se ejecuta en varios hardwares. El problema no está enel propio código de Android, sino en el driver del dispositivo.Puesto que casi todos los drivers de hardware para Android sonde código cerrado, no hay mucho que hacer para solventar elproblema, excepto presentar un queja al vendedor.

    El mejor estrategia para una aplicación es probarla en tan-tos dispositivos como te sea posible, o utilizar los servicios deterceros para ponenla a prueba en diferentes dispositivos a cam-bio de una tarifa. Otra técnica adoptada por muchos desarrol-ladores de software es liberar la aplicación permitiendo a losusuarios analizarlas en sus versiones beta, de este modo estásprobando tu aplicación en una amplia variedad de dispositivos. Aunque no se recomienda este enfoque, a cambio puedes pro-porcionar a los usuarios actualizaciones gratuitas.

    Para más información visita http://bit.ly/1A2T0l1, http://bit.ly/1uw6Xqc y http://bit.ly/1rLAfUK.

    Java vs NativO (C/C++)Las Apps de Android se desarrollan normalmente utilizando

    lenguaje Java, pero hay muchas aplicaciones como los juegos,que se escriben en lenguaje nativo, que aún está disponible para Android. Las aplicaciones que se exportan a Android normal-mente tienen algo de código Java, pero es usado como una capapor el código nativo. Un ejemplo de ello son los muchos juegosexportados, que se ejecutan en su versión original dentro de un“envoltorio” por Android.

    Se recomienda escribir todas las aplicaciones de Android enlenguaje Java, ya que esto hará que sea más fácil exportalas en-tre las diferentes versiones de Android y mantiene la base delcódigo al mínimo. Usar una aplicación nativa requiere volverlaa compilar para cada versión de Android.

    El archivo .dexLos Archivos APK de Android tienen un chero llamado

    classes.dex que contiene el código de la aplicación en formatobinario compilado. El formato de este archivo ha sido denidopor Google y no es el mismo que el formato .class en Java. Elarchivo dex es más compacto que un archivo class normal y es

    necesario para que Android pueda ejecutarseen dispositivos más antiguos con almace-namiento limitado.

    Si escribes el siguiente comando, verás

    una copia de la información de classes.dex enel archivo fennec.txt. Si comparas el resultadocon el formato de diseño .dex podrás analizarla información disponible en cada capa.

    /dx \

    --dex --verbose-dump \

    --dump-to=fennec.txt \

    fennec-32.0b2.en-US.android-arm.apk

    Herramientas AOSP

    Hay una serie de herramientas relacionadas con APK dentrode Android, como AAPT (Android Asset Packaging Tool), quees la principal herramienta para empaquetar aplicaciones. Elsiguiente diagrama de ujo muestra la secuencia de los pasosque se siguen para que una aplicación se ejecute en Android.

    APK ANDROI

    Ilustración del proceso de empaquetado de APK

    Formato de unarchivo dex

    El paso de compilación y empaquetado se realiza normal-mente en un entorno de desarrollo interactivo (IDE), comoEclipse o Android Studio, ambos utilizan AAPT internamente.

  • 8/17/2019 Proyecto Wall e

    32/33ODROID MAGAZINE 32

    con muchas funciones que me gustanbastante. Es por ello que fue mi primerODROID, a pesar de que podría haberconseguido un U2 más barato. Pero alver el nuevo XU3, que lo esperaba im-pacientemente y una vez que llego a mismanos uno de estos pequeñines, ¡se con-virtió en mi nuevo favorito!

    Tu imagen GameStation Turbo es muy popularen los foros. ¿Qué otro software has desarrol- lado para ODROID?

    A veces, me pregunto si alguien más de-sarrolla “software” para ODROID. Sí, unaversión de XBMC y un par de diferentesversiones del sistema operativo de Linux(Ubuntu, Debian, Arch, etc), que muchagente estudia, aunque el software actual pa-rece estar raramente exportado.

    He exportado en su mayoría juegosy emuladores, que se pueden encontraren la sección de Juegos y emuladores

    del foro. También he exportado algunosprogramas, como ClipGrab, sdl2 o ffm-peg. Además, mantengo mi propio ker-nel desarrollado desde Hardkernel comoarchivos .deb para instalar y actualizar.

    CONOCIENDO AUN ODROIDIAN TOBIAS SCHAAF:UN NINJA LINUX Y UNAFICIONADO A ODROIDEditado por Rob Roy

    Tobias Schaaf, nuestro experto juga-dor montado en una avioneta

    Tobías con un amigo preparando una bar-bacoa poco antes de su último viaje a losEE.UU.

    CONOCIENDO A UN ODROIDIAN

    Por favor, háblanos un poco sobre ti.

    Mi nombre es Tobias Schaaf y soy de Ale-mania. Tengo 31 años y voy a cumplir 32a nales de agosto. Soy un administradorde sistemas en una compañía de softwareque se centra en soluciones de software demedición inteligente, casas inteligentes yredes inteligentes. Todo lo relacionado conlos ordenadores me ha interesado desde laprimera infancia. Me encantan los juegos,leer libros, ver películas y animes, escucharmúsica y audiolibros. También me gusta na-dar y por supuesto, todo lo relacionado conODROID.

    ¿Cómo fueron tus inicios con losordenadores?

    Lo primero que me enganchó fue un viejo Atari 2600 que mis padres me regalaron enmi primera infancia. Más adelante, mi padreconsiguió un Commodore 64 y después, un

    par de Amigas conunidades de disco

    duro. A los 14 años,tuve mi primer PCcon Windows 95 querompí en dos sema-nas, y que luego mi tíoreconstruyo como un PCde arranque dual con DOS y Win95. Yo prefería mejor DOSque Windows. Desde entonces, mehe asegurado de actualizar constantementeel hardware de mi equipo. Normalmentetengo 2-3 PCs funcionando activamente,además de algunos más viejos que están al-rededor. Hoy en día, tengo una gran can-tidad de ODROIDs que forman parte delhardware de mi PC.

    ¿Cuál es tu ODROID favorito?

    Hasta ahora, el X2 era mi favorito conun montón de puertos USB, un bonitodiseño y de muy buena calidad. Teníaun interruptor para el eMMC y SD,

  • 8/17/2019 Proyecto Wall e

    33/33

    8. Mejores cajas que permiten el acceso atodas las partes del ODROID sin la nece-sidad de ret