Download - 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