You are on page 1of 32

E d ic i n 7 - N O V 2 0 1 2 Apyanos an ms comprando una versin impresa de esta Revista!

U n a R e v i s t a p a r a R a s p b e r r y Pi

A r d u in o y R asP i se co n ect an !
En esttaediicin... En esa edcin.
IIntterrrrupciiones n e u p c o n es Pii Sollarr P So a Modo Turrbo Mo d o T u b o Evolluciin dell Pii Evo uc n de P C++ C ++

Ms.... M s
Enttrreviistta con llos E n ev s a co n o s desarrrrollladorres de Raspbiian d esa o ad o es d e R asp b an Haga su prropiio jjuego de lla H ag a su p o p o u eg o d e a escallerra usando PCBs esca e a u san d o P C B s Lo bsiico dell GNU make L o b s c o d e G N U ma k e

Cmo C mo ganarrse una g an a se u n a carrcasa ca casa PIINK parra P NK pa a RasPii!! R asP

httttp::///www..tthemagpii..com h p w w w h e ma g p c o m
Raspberry Pi es una marca de Raspberry Pi Foundation. Esta revista fue creada usando un computador Raspberry Pi.

Bienvenidos a la edicin 7, La Raspberry Pi y Arduino son la pareja perfecta para correr aplicaciones en tiempo real donde se necesita un poquito ms de potencia de CPU para control. Acoplando dos dispositivos abre la posibilidad al uso de toda la gama de shields del mundo arduino. Mirando al horizonte vemos algunos proyectos bien interesantes en el futuro. Traemos una entrevista con el desarrollador lder de Raspbian (el build de Debian para Raspberry Pi), competiciones y una seleccin variada de artculos en programacin. Si Ud. prefiere recibir una copia impresa de MagPi, visite http://www.modmypi.com y haga su pedido ahora mismo! Ash Stone, Editor en jefe de MagPi
Ash Stone Meltwater
Editor en jefe / Administrador / Encabezados Escritor / Website / Diseo de pgina Escritor / Fotgrafo / Diseo de pgina Escritor / Fotgrafo / Diseo de pgina Diseo de pgina / Grficos / Escritor Diseo de pgina / Grficos Diseo de pgina / Grficos Diseo de pgina / Grficos Diseo de pgina / Grficos Diseo de pgina / Grficos Diseo de pgina / Grficos

Matt '0the0judge0'
Escritor Escritor

Jason 'Jaseman' Davies Chris 'tzj' Stagg Ian McAlpine Lix

Matthew Timmons-Brown Gordon Henderson Colin Deady W.H.Bell Stewart C. Russell


Escritor Escritor

Administrador / Website

Escritor / Diseo de pgina

Joshua Marinacci PaisleyBoy

Colin Norris Antiloquax Alex Kerr

Editor / Grficos (Encabezado C Cave) Escritor Escritor Escritor

Sam Marshall Aaron Shaw Nick

Richard Ryniker

Contenido
04 PI Y ARDUINO EN ACCION 07 COMPETENCIA DEL MES 08 PI SOLAR
Programar el arduino usando una Raspberry Pi, por Stewart C. Russell Gnese excelentes adiciones a su montaje cortesa de PC Supplies UK Al viajar, el sol puede mantener la Pi funcionando, por Meltwater

1 0 LA PLACA LADDER DE GORDON 1 2 GPIO E INTERRUPCIONES

Vaya preparando el soldador, por Gordon Henderson Un repaso por el manejo del GPIO desde la lnea de comandos, por Richard Ryniker

1 6 RASPBIAN, LA HISTORIA HASTA AHORA

Una entrevista con Mike Thompson, desarrollador lder de Raspbian, por Colin

1 8 TURBO AJUSTES PARA MAXIMO DESEMPEO 21 EVENTOS DEL MES 22 PI-EVOLUCION

Un repaso de cmo afinar la Pi, por Matthew Timmons-Brown Talleres y otros eventos de la comunidad Raspberry Una mirada al desarrollo en Raspberry Pi, por Jaseman

24 LAS BASES DE GNU MAKE

Acelerando el desarrollo de cdigo con GNU Make, por W. H. Bell

26 BIENVENIDOS AL CACHE C++


Enfrntese a C++. por Alex Kerr

28 EL SCRATCH PATCH

Aprenda sobre programacin defensiva, por Antiloquax.

30 EL TALLER DE PYTHON

Usando argumentos de lnea de comandos, por Colin Deady

32 PREGUNTAS Y COMENTARIOS

Aunque hay varias placas E/S en desarrollo para la Raspberry Pi, Arduino est bien establecido. Este artculo muestra cmo comunicarse con un arduino a travs de Python y el protocolo Firmata.
DIFICULTAD: INTERMEDIA
Este ejemplo combina una salida (Cambiar el brillo de un LED por medio de un control deslizante) y una entrada (leer la temperatura de un sensor, LM35 en nuestro caso). Adems tendrs que elegir qu puerto serie usar en el men Herramientas/Puerto serial. Arduino Uno debe estar en /dev/ttyACM0, placas ms viejas suelen usar /dev/ttyUSB0. Para instalar el sketch del Firmata en tu Arduino, selecciona File / Examples / Firmata / StandardFirmata and click en el botn Upload. El IDE se bloquea momentneamente mientras compila y carga el sketch. Si las luces del Arduino titilan y un mensaje de Carga terminada aparece en el IDE, xito! Si aparece cualquier tipo de mensaje de error en rojo, es probable que sea algo con la conexin del Arduino. Recomiendo mucho que conectes tu Arduino a travs de un hub USB con alimentacin externa o entregandole energa directamente por medio de un transformador ya que la Raspberry Pi es un poco limitada en lo que concierne a dar energa por USB. Si te trabas con algo prob el sitio http://www.ladyada.net/learn/arduino/

Raspberry Pi y Arduino

Materiales requeridos:

Raspberry Pi Arduino Conexin a internet Protoboard (O Placa de pruebas) Sensor de temperatura LM35 (http://www.ti.com/product/lm35) 1 LED rojo de 5mm 1 resistencia de 1 20 ohm 4 cables con terminal macho (here coloured red, yellow, blue and black) 1 cable puente para protoboard (1 7.8 mm or 0.7", here coloured black) Firmata (http://firmata.org) es un protocolo serial simple que permite leer y escribir los puertos de entrada y salida de Arduino desde una computadora. Es usualmente usado con el lenguaje de programacin grfica Processing (http://processing.org) pero tambien hay soporte para otros lenguajes.

Instalando el IDE de Arduino y Firmata


El IDE de Arduino ya est incluido en los repositorios de Raspbian, de manera que podrs instalar todo con:
$ sudo apt-get install arduino

Instalando pyFirmata
pyFirmata es la magia que permite que tu Arduino con Firmata cargado pueda comunicarse con Python. Toma algunos comandos para instalarlo:
$ sudo apt-get install python-serial me rcurial $ hg clone https://bitbucket.org/tino/p yfirmata $ cd pyfirmata $ sudo python setup.py install

Si es la primera vez que lo ejecutas es posible que el IDE te haga crear una carpeta para guardar los programas que hagas (llamados sketches). Como siguiente paso tendrs que elegir el tipo de placa Arduino que ests usando desde el men Herramientas/Tarjeta (En este caso us Uno, pero tambin prob en una vieja placa Duemilanove).

Si esto funciona podrs eliminar la carpeta pyFirmata.


$ cd .. ; sudo rm -r pyfirmata

Armando el circuito
Pon las partes como muestra el diagrama usando la siguiente tabla como gua:

controlar el brillo del LED con el control deslizante de la pantalla. Te dars cuenta que el LED no parece aumentar mucho de brillo ms all del 33%; no hay una lnea directa entre el brillo y el voltaje de la entrada PWM. Si tocas el LM35 vas a ver la lectura de la temperatura cambiar. Los sensores LM35 son un poquito ruidosos, as que vas a notar que los valores saltar. Una vez que ests listo, clickea en el botn cerrar de la ventana y todo debera salir limpiamente.

ARDUINO
+5V A0 GND

LM35
+Vs Vout GND

NOTA: Si accidentalmente conectas el LM al

revs, pasar de ser un sensor de temperatura a un remarcable generador de temperatura -- La quemadura en forma de D en mi dedo ndice izquierdo me recuerda esto todos los das

El cdigo Python hace tres tareas principales:


1 . Prepara la comunicacin serial y configura los pines de E/S del Arduino. Dos detalles importantes que tenemos que hacer aqu es preparar un hilo iterador para detener el desborde del buffer serial de la Raspberry Pi mientras recibe datos del Arduino, y adems esperar a que el Arduino empiece a enviar datos reales antes de ir al programa principal. 2. Definir tres funciones que sern llamadas por la GUI: get_temp() Esto lee el valor del pin A0 del Arduino, lo convierte a C, y actualiza la etiqueta de la parte baja de la pantalla. Si ests familiarizado con Arduino, pyFirmata devuelve valores analgicos entre 0,0 y 1 ,0 en lugar de un nmero entero entre 0 y 1 023. Esta rutina termina pidindole al proceso Tk principal que se re programe a si mismo medio segundo, y de esa forma seguimos actualizando la temperatura separadamente del bucle principal.

ARDUINO
D3 A0

LED
nodo (Pin largo) Ctodo (Pin corto) (Conectadoatravsde laresistenciade120 ohm)

Ejecutando el cdigo

Copia el programa de la siguiente pgina y guardalo como arduino_firmata_ty.py. Con tu arduino conectado y el circuito cableado, ejecuta el programa de la siguiente manera:
$ python arduino_firmata_tk.py

Le tomar unos pocos segundos a la ventana en aparecer, y una vez que lo haga, podrs

Contina en la siguiente pgina...

set_brightness() convierte los valores 01 00 que devuelve el deslizador a un valor entre 0.0 y 1 .0 de coma flotante y lo enva (lo escribe) en el pin digital 3 de Arduino. cleanup() todo lo que esta rutina hace es apagar el LED y tratar de cerrar el programa perfectamente. Por cierto, no siempre consigue hacerlo; a veces tambin tendrs que presionar Ctrl-C en la ventana de la terminal. 3. Preparar la GUI de Tkinter. Tk (y su versin para Python, Tkinter) es un sistema GUI bastante viejo, pero es tambin bastante simple de usar. Depende de cada control grfico (widget) para ejecutar una callback (Llamada de retorno) o asignar el valor de una variable cuando es clickeado o modificado. Aqu estoy creando un deslizador de 400px de ancho que llama a la rutina set_brightness() con el valor actual del control deslizable cada vez que ste cambia. Movido Completamente a la derecha, el deslizador llamara a set_brightness(1 00), encendiendo el LED con el mximo brillo. Como la ventana es muy simple (Solo un control deslizante y una etiqueta) uso el simple mtodo pack() de Tk para ordenar los elementos en la ventana.
import pyfirmata from Tkinter import * # Create a new board object, # specifying serial port; # could be /dev/ttyUSB0 for older # Arduinos board = pyfirmata.Arduino('/dev/ttyACM0') # start an iterator thread so # serial buffer doesn't overflow iter8 = pyfirmata.util.Iterator(board) iter8.start() # set up pins # A0 Input (LM35) pin0 = board.get_pin('a:0:i') # D3 PWM Output (LED) pin3 = board.get_pin('d:3:p') # IMPORTANT! discard first reads # until A0 gets something valid while pin0.read() is None: pass def get_temp(): # LM35 reading in deg C to label label_text = "Temp: %6.1f C" % ( pin0.read() * 5 * 100) label.config(text = label_text) # reschedule after half second root.after(500, get_temp)

Este (el mtodo pack), primero dibuja los elementos, entonces los acomoda juntos, como un Tetris, en el marco de la ventana. Una vez hecho esto, programa la primer lectura de temperatura (que a su vez programa la siguiente y as...), finalmente llega al mainloop() de Tk, ejecutando el resto del programa, respondiendo a tu control.

Indicaciones adicionales
Este es un ejemplo muy simple de cmo controlar Arduino desde Python. Mientras que Firmata puede controlar salidas ms complejas tales como un servo, ya que se hace cargo de toda la lgica de procesamiento de Arduino. Cualquier sensor que requiera una configuracin compleja o control en tiempo real no va funcionar tan bien. Igualmente, ahora tendrs todo el poder de la Raspberry Pi conectada a la simple robustez de Arduino Ni siquiera el cielo es el lmite!
Stewart C. Russel vive en Toronto, donde disea y crea granjas elicas y fuentes de energa solar. Cuando no est hurgando en el mundo los lugares soleados y con viento, est en su casa con radio amateur (Matrcula VA3PID), tocando el banjo, jugando con computadoras, o evadiendo la jardinera. Su sitio web es http://scruss.com/blog
def set_brightness(x): # set LED # Scale widget returns 0 .. 100 # pyfirmata expects 0 .. 1.0 pin3.write(float(x) / 100.0) def cleanup(): # clean up on exit # and turn LED back off pin3.write(0) board.exit() # set up GUI root = Tk() # ensure cleanup() is called on exit root.wm_protocol("WM_DELETE_WINDOW",cleanup) # draw a big slider for LED brightness scale = Scale(root, command = set_brightness, orient = HORIZONTAL, length = 400, label = 'Brightness') scale.pack(anchor = CENTER) # place label up against scale widget label = Label(root) label.pack(anchor = 'nw') # start temperature read loop root.after(500, get_temp) # run Tk event loop root.mainloop()

Artculo de Stewart C. Russell

COMPETENCIA DE NOVIEMBRE

Una vez ms MagPi y PC Supplies Limited se enorgullecen de anunciar otra oportunidad de ganar fantsticos accesorios para R-Pi!
Este mes sern CINCO premios! Cada ganador recibir una carcasa de color para la Raspberry, la cual es perfecta tanto para el modelo A como para el modelo B, con acceso para el cable de la GPIO y cristales para los leds. Para saber ms de la competicin y tener oportunidad de ganarse el premio, visite: http://www.pcslshop.com/info/magpi La Fecha de cierre es el 20 de noviembre del 201 2. Los ganadores sern notificados en el magazn del mes siguiente y por email. Buena suerte! Para ver toda la gama de accesorios y partes para Raspberry Pi visite http://www.pcslshop.com

Ganadores del mes pasado!


Los 5 ganadores del kit de montaje LCD edicin limitada de PCSL son Mike Bradbury (Manchester, UK) , David Corne (Birmingham, UK) , Brian Bowman (Chelmsford, UK) , Bart Sekulski (Bristol, UK) y William Green (Doncaster, UK) . Felicitaciones! Pronto les estaremos enviando va email los detalles de cmo reclamar estos fantsticos accesorios.

Un Pequeo Rayo de Sol


Mientras navegaba buscando dispositivos interesantes para Raspberry Pi, Me encontr con el siguiente item de CottonPickersPlace.

Unidad de operacin:

Este dispositivo solar funciona esencialmente como un cargador solar para 4 pilas AA colocadas internamente, las que a su vez son capaces de alimentar al propio Raspberry Pi. El artefacto tambin sirve como ingenioso soporte para el Raspberry Pi y, adicionalmente, tambin puede ser utilizado para recargar la mayora de dispositivos alimentados por USB. 1 . Los rayos de sol sobre el panel solar. 2. La corriente generada se utiliza para cargar el pack de pilas (solamente inserte 4 pilas estndar NiCad/NiMh de tamao AA de la capacidad que prefiera). 3. El pack de pilas almacena la energa y la provee sin problemas incluso cuando est poco o nada soleado. 4. La Raspberry Pi es alimentada!

A. El conector de alimentacin micro USB se conecta directamente dentro del Raspberry Pi (perfectamente acomodado cabeza abajo dentro de la base de la unidad). B. El conector USB de tamao estndar puede utilizarse para alimentar en forma directa a la Raspberry Pi, y si las pilas estn descargadas agrega una fuente externa (la carga a travs del sol es necesaria para cargar completamentes las celdas). Este plug tambin puede ser utilizado en serie con otra unidad solar para proveer energa solar adicional y alargar la vida de las pilas (enchufando dentro del lado del conector USB ( C )). C. Un conector USB adicional en el costado de la unidad provee un punto de carga auxiliar para telfonos mviles y otros dispositivos USB. Si es necesario, los iDevices de Apple como iPods / iPhones / iPads estn soportados con una versin mejorada.
A pleno sol Puesta de sol Nublado

Salidas tpicas

Especificaciones
Panel Solar Caja 1 2 celdas de 330 mA por 2 Watts policristalino de 1 1 0x1 35mm Impreso mediante impresora 3D BRB3000 utilizando de material PLA (Polylactic Acid) biodegradable. Tpicamente toma 2 hs 1 5 min para imprimir. La Raspberry Pi cabe cmodamente en su interior. 60x90x45mm

300 mA+ aprox. 200-250mA 30mA Nublado 1 00h 70h

A Pleno Celdasde3000 mAh 1 0h 7h Celdasde2100 mAh

Tiempo estimado de carga


Ocaso 1 3h20m 9h20m

La unidad puede no sobrecargar la celda, y no hay fugas de carga cuando no se est cargando.

TiempodefuncionamientoestimadodelRaspberryPi
A Pleno Ocaso Nublado Noche Model B Celdasde3000 mAh 23h 1 4h30m 7h30m 7h Celdasde2100 mAh 1 6h 1 0h1 5m 5h1 5m 4h50m Model A 11h 1 0h Celdasde3000 mAh Charge 40h Celdasde2100 mAh Charge 28h 7h45m 7h
Modelo B - Consumo de potencia caracterstico estimativo:
430 mA dependiendo de lo que est conectado (rango desde 322 mA en reposo a picos de 480 mA + ) Modelo A - Eben declar que est alrededor de los 200 mA, por lo tanto aceptemos 300 mA como una estimacin conservadora.

Conclusiones:

Consideraciones de uso:

Mis propios testeos con algunas viejas celdas de 2500 mAh proporcionaron alrededor de 4 horas de uso nocturno, es razonable considerando que las pilas tienen varios aos de antigedad. Usando la cantidad mnima de perifricos y utilizando el ms eficiente Raspberry Pi modelo A (cuando se libere) debera extenderse en gran medida el tiempo de uso. La eficiencia del Raspberry Pi tambin puede ser mejorada reemplazando el regulador lineal de 3,3 V incorporado con un modelo ms eficiente en modo de conmutacin, una medida extrema, pero se report que puede ahorrar alrededor de un 25% de energa (vea http://goo.gl/dqUZL para detalles). Aunque el Raspberry Pi puede utilizarse en muchas situaciones de forma remota, a menudo va a querer utilizarlo con una pantalla. Actualmente, la mayora de las pantallas requerirn algo o bastante ms de energa que el propio Raspberry Pi. Esto puede llegar a mejorarse cuando la fundacin pueda suministrar pantallas LCD operadas directamente por el Raspberry Pi, en ltima instancia, requiriendo menos energa que un monitor LCD tpico o una TV. Para este fin una pantalla super eficiente basado en tinta electrnica podra ser una excelente opcin, crucemos los dedos para que se haga realidad. Para una operacin remota durante las 24 horas (algo que muchos usuarios de Raspberry Pi desean), es probable que sean necesarias 2 o ms unidades solares y un sol a pleno. Adicionalmente, mediante el diseo de algunos mtodos para apagar remotamente la fuente de alimentacin de la Raspberry Pi y volverla a encender cuando sea necesario, significara la viabillidad una configuracin remota desatendida. Tal sistema podra incluso controlar los niveles de batera disponibles y en consecuencia encender la Raspberry Pi o establecer un periodo de tiempo determinado para las operaciones. Nos encantara or sobre algn diseo adecuado!

La unidad compacta presenta una serie de caractersticas flexibles y presenta una buena solucin para ejecutar el Raspberry Pi con bateras. El agregado del panel solar extiende bastante el tiempo de funcionamiento del sistema (particularmente si usted vive en un clima muy soleado) o permite cargar durante el da y a su vez el uso nocturno durante horas. Cuando est enchufado a la red elctrica ofrece excelente proteccin contra los cortes de luz, en efecto funciona como una UPS (sistema de alimentacin ininterrumpida). La unidad tambin provee un medio para trasladar rpidamente el aparato a varios lugares sin tener que apagar la alimentacin (ideal para moverse rpidamente a una pantalla grande para reproducir algunas pelculas, sin la molestia habitual de encontrar un enchufe disponible, arrancar el sistema, etc.). CottonPickersPlace est trabajando en varios modelos de paneles grandes que soportan bateras tambin ms grandes, que deben ser capaz de gestionar las operaciones en 24/7 y/o al mismo tiempo alimentar pantallas de terceros, etc. En general, la unidad ofrece gran flexibilidad a un excelente costo (alrededor de 25 libras incluyendo envo en UK, 49 u$s incluyendo envo para el resto del mundo ). Es muy claro que se ha puesto mucho tiempo y esfuerzo en cada unidad hecha a mano. CottonPicker ha puesto claramente la atencin en el diseo para que el costo general permanezca tan bajo como sea posible sin comprometer en calidad o caractersticas, en mi opinin alcanzando un gran equilibrio. Esta puede ser la pieza faltante que usted ha estado buscando para completar su proyecto o tambin una prctica caja que le permita cortar el cable de alimentacin cuando usted quiera!

Artculo original de Meltwater

Disponible en: www.cottonpickersplace.com Enlace directo: goo.gl/w9Rs3

La placa Raspberry Ladder es un kit de piezas destinadas a ser utilizadas como una introduccin a la soldadura y a la programacin de GPIO del Raspberry Pi.

La placa Raspberry Ladder

La placa Ladder se basa en mi juego Ladder original que hice a principios de este ao en un circuito experimental, cuyos detalles se pueden encontrar aqu: https://projects.drogon.net/raspber ry-pi/gpio-examples/ladder-game/ Esta versin ha sido modificada para hacerla ms til para otros proyectos y ojal te anime a escribir tus propios juegos pequeos y simulaciones. El software que voy a ofrecer ser una versin de mi juego Ladder original, mi simulador de cruce Tuxx y una nueva versin de "Simon Dice". El kit incluye un PCB hecho profesionalmente, 8 LEDs estndar (2 de cada uno en azul, verde, amarillo y rojo), 2 LEDs ms pequeos (verde y rojo), 4 interruptores de pulsador, 1 4 resistencias para los LEDs y conmutadores, y un breve (a medida) cable plano y conectores IDC para conectar la placa a la Raspberry Pi Ladder. Necesitar un equipo bsico de soldadura, (soldador, estao, un par de cortadores de alambre) y un tiempo de montar la placa. Adems un poco de spray limpiador de PCB puede ser til una vez que todo est terminado, pero no es esencial. Si se siente cmodo con la soldadura entonces no debera tomar ms de 1 0-1 5 minutos para montar completamente el tablero, pero si no es as, se puede hacer por etapas, e incluso se puede probar cada etapa a medida que avanza. Usted puede comprar el kit completo incluyendo PCB de
Prototipo Placa Raspberry Ladder y PCB

Tandy por 7.00 incluyendo gastos de envo. http://www.tandyonline.co.uk/elect ronics/kits/raspberry-ladderkit.html

los agujeros que se utilizan para el conector de cable-cinta. En primer lugar tenemos que identificar qu resistencias son cules. En el juego hay 2 tipos, 220 y 1 000. Los 220 se identifican por el color de sus bandas - Rojo, Rojo, Marrn, y los que son 1 000 Marrn, Negro, Rojo. Sin embargo, si ests confundido, entonces fijate que hay 1 0 de 220 y 4 de 1 000 slo cuntalas para ver cul es cul.

La soldadura de la versin PCB: Soldar no es difcil, pero requiere prctica. Antes de comenzar, por favor lea este cmic: http://mightyohm.com/soldercomic
Una vez concluida la lectura, echa un vistazo a la placa y los componentes - no quite los componentes de sus paquetes en esta etapa - el kit de Tandy ser embalado en las bolsas en el orden en que usted los necesita, pero vea si puede identificar todo lo primero. Estudia la foto de la placa totalmente montada para ver lo que puedes esperar.

10

Comienza con las resistencias de 4 x 1 000. Dobla las patas al final de la resistencia e insrtalas en el PCB en las 4 ubicaciones. Las resistencias pueden ubicarse de cualquier forma, pero se ven mejor si todas se alinean de la misma manera. Empuja las patas de las resistencias a travs de sus Compruebe la PCB - Busca signos agujeros y dblalas hacia el evidentes de dao y determina si exterior, como se muestra en la los componentes estn montados. pgina 4 de la historieta anterior. Los smbolos blancos impresos sern de ayuda. Las resistencias Me gusta poner todas las cuatro a tienen pequeos rectngulos, los la vez y luego usar algo como bluinterruptores rectngulos ms tak para mantenerlos en su lugar grandes (casi cuadrados), y los cuando me pongo a soldar la LEDs tienen crculos con un lado placa, pero puede que desees plano. Hay una corta hilera de 5 hacerlo una a la vez, para agujeros que no se utilizan en este empezar. proyecto y 2 filas ms largas de

Montaje: Se necesitan 2 manos, as que asegrate de que la placa est asegurada. Tambin es una buena idea estar en un lugar bien iluminado para que puedas ver lo que ests haciendo! Mira el vdeo para ms ideas, sin embargo, en general, toca con el soldador al mismo tiempo la pata del componente y la pista, espera 1 o 2 segundos, toca la soldadura con la pista o con el final del estao - que debera fluir inmediatamente y llenar todos los huecos. Retire el material de soldadura, y luego (esta parte es muy importante!) Mantenga el estao all por un segundo o dos.
La mayora de los componentes se daan por exceso de calor, pero no tenga miedo para mantener el calor all durante un mximo de 1 0 segundos si es necesario. Con la prctica, usted debera ser capaz de hacer una unin de soldadura en unos 5 segundos. Estao a la placa y al cable del componente, pausa, suelda hasta que fluya, pausa, quitar estao. Si sientes que no qued una buena unin, espera un momento para que se enfre y vuelve a intentarlo. Asegrate de que el estao est limpio cada vez que lo recoja - utiliza una esponja hmeda o el nuevo sistema "limpiado en seco" que se parece a una esponja metlica. Una vez que hayas soldado los primeros componentes (o 4 primeros!) entonces es el momento de acortar los cables. Una vez ms, este es un trabajo de 2 manos y tienes que sujetar el extremo de la punta cuando se corta - si no lo haces, entonces se ir volando y cuando te golpee doler. (Adems tu pareja, madre, etc, no ser feliz limpiando el desastre de pequeos picos pequeos de metal!) Sostn el extremo y corta justo al lado de la unin de soldadura y ponla en el recipiente de deshechos. Una vez que tengas las 4 primeras resistencias soldadas, puedes progresar a las resistencias de 220. Comienza con las 2 en la parte superior de la placa, a continuacin, las otras 8 en el costado. Lo siguiente es los interruptores.

Estos deben mantenerse en la placa durante la soldadura, pero asegrate de ponerlos en la posicin correcta son ligeramente rectangulares, as que si no parecen encajar, gira un cuarto de vuelta y vuelve a intentarlo.

Pruebas: El software de prueba utiliza el comando wiringPi GPIO, por lo que necesita wiringPi instalado primero.

Ahora los LEDs. Esperemos que Para wiringPi (si no lo tiene): ahora hayas conseguido $ cd acostumbrarte a la soldadura. Dej $ git clone los LEDs hasta ahora por 2 razones - git://git.drogon.net/wiringPi en primer lugar por lo general es $ cd WiringPi mejor para soldar los componentes $ ./bulid bajos primero y luego los ms altos, y tambin para darle un montn de prcticas de soldadura con las Para el software Raspberry Ladder: resistencias y los interruptores que $ cd son ms resistentes al $ git clone sobrecalentamiento que los LEDs. git://git.drogon.net/ladder An debe estar bien por un mximo $ cd ladder de 1 0 segundos con los LEDs, pero espero que ahora puedas ser un poco Y para ejecutar el programa de prueba: ms rpido y seguro.
$ ./ladderTest.sh

Los LED son sensibles a la forma en la que entran, as que mira con cuidado. Tienen un lado aplanado y esto corresponde al lado aplanado en la imagen de la PCB. El lado plano siempre va hacia la pista negativa del circuito, y el otro lado (que tiene una pata ms larga), siempre va hacia la pista positiva del circuito. Tmate tu tiempo al soldarlos - trata de asegrate de que todos encajen completamente en el PCB, y que estn alineados en una lnea ordenada. Por ltimo, el conector GPIO. Ajstalo en el tablero, asegralo, suelda un pin y luego comprueba antes de soldar el resto. Es posible que desees bajar una lnea, a continuacin, gira la placa y baja por la otra lnea. Y hemos terminado. Esperemos que tu placa terminada se vea como la de la pgina siguiente. Ahora es el momento de conectarla a un Raspberry Pi y ejecutar el software de prueba. Nota: la primera vez que enciendas el Raspberry Pi, o lo reinicies con el tablero Ladder conectado, los dos LEDs ms pequeos pueden estar dbilmente resplandecientes. Esto es de esperarse, ya que est siendo alimentado con corriente de las resistencias I2C pull-up integradas del Pi que forman parte del bus I2C.

Esto debera llevarte a travs de unos sencillos pasos para comprobar que la tarjeta funciona correctamente. Una versin ligeramente modificada del programa Tux Crossing tambin est ah - ejecutarlo con:
$ ./tuxx.sh

Y cuando se inicializa, presiona el botn de abajo para iniciar la secuencia. Ms detalles del software y los datos el mes que viene! La documentacin completa se suministra en el archivo README sobre cmo se conectan los LEDs, y el programa ladderTest es un script bash que usted puede copiar y editar segn sea necesario, tambin puede ver algunos de los programas de ejemplo GPIO suministrados con el paquete wiringPi, pero la verdadera diversin comienza el prximo mes cuando escribiremos algunos programas ms para esto.

Artculo por Gordon

11

Interrupciones y otras actividades con los pines del GPIO


Cmo compartir los recursos del GPIO entre mltiples aplicaciones, y el uso de las interrupciones para reemplazar bucles de control de estado poco econmicos.
Despus de hacer algunos experimentos iniciales donde la Raspberry Pi opera con LEDs y lee switchs, cuando se apaga la euforia del Funciona!, usuarios inteligentes pueden comprender que tendrn problemas cuando se encarguen de extender esos simples programas a entornos ms complejos. Aqu discutir dos de esas cuestiones: cmo compartir recursos de GPIO entre mltiples aplicaciones, y el uso de las interrupciones para reemplazar bucles de control de estado poco eficientes. Se ha producido con horrible frecuencia instrucciones del tipo "Ejecute este programa como root." publicadas para el usuario de Raspberry Pi. Esto, a un usuario con experiencia le suena ms bien como Aqu nios: estas son hojas de afeitar. Agrrenlas, y vean lo que pueden cortar con ellas. Los privilegios de root deben ser vistos como una ltima alternativa. Su uso adecuado es para la instalacin del sistema y la configuracin - el establecimiento de un entorno protegido donde la falla en un programa no pueda afectar a otras aplicaciones, y no cause fallos al sistema operativo. En el peor caso, un programa que se equivoca debe comprometer solamente los recursos asociados a ese programa. Linux posee una gran cantidad de administradores de dispositivos (drivers), programas que generalmente forman parte del kernel y hacen de interfaz entre los recursos de hardware y las aplicaciones. Ejemplos de esto son los archivos de sistema, que ofrecen funciones simples de utilizar como open, read y write, mientras ellos administran el acceso a hardware y mantienen la estructura de datos necesaria para asignar y liberar espacio en disco, compartir el acceso de manera adecuada entre mltiples programas, manejar la recuperacin despus de eventos como fallas de energa. Los privilegios de root hacen ms fcil interferir con las actividades del sistema. Si uno tiene suerte, el resultado es un kernel panic inmediato y el sistema se paraliza. En las circunstancias menos afortunadas podra llegar a ser instalado un software malicioso en el sistema: este software puede entonces comunicarse mediante una conexin a internet con criminales que buscan informacin personal o podran explotar su Raspberry Pi para actividades dainas. Linux tiene una funcin general para administrar los recursos de GPIO. Esta, crea una interfaz conveniente para programas del usuario, protege los recursos de GPIO utilizados por administradores de dispositivos como I2C y SPI y entrega acceso especfico a pines, por lo que una aplicacin no necesita preocuparse de lo que otros programas hacen con los dems pines GPIO. Esta interfaz de pines individuales es importante porque sin ella, cada aplicacin GPIO tendra que preocuparse por los aspectos de la pugna con otras aplicaciones que comparten un banco de pines GPIO (bloqueos, gestin de interrupciones, u otras complejidades que fueran necesarias). La funcin de Linux utiliza archivos del directorio /sys/class/gpio/. Al igual que muchos otros archivos de configuracin o de control, estos archivos tienen al root como propietario. Voy a pasar esto por alto, por ahora, para hacer ms fcil la descripcin de la interfaz, pero prometo que ms tarde volver y presentar una herramienta para encapsular la operacin de privilegios de una manera responsable.

Configurando los pines


El comando echo es comnmente utilizado en los procedimientos shell para enviar mensajes a la salida estndar, o mediante la salida redireccionada para escribir en un archivo. Un ejemplo simple:
echo Hello there.

12

Imprime la salida Hola. Con redireccin de la salida:


echo Hello there. >archivo_01

Para establecerlo como un pin de salida:


echo out >/sys/class/gpio/gpio23/direction

Crea el archivo archivo_01 que contiene el mismo mensaje. El comando echo puede ser utilizado para ejemplificar el uso de GPIO. Usaremos el pin 23 porque es conveniente y fcilmente accesible en el terminal 1 6 del conector de 26 contactos del Raspberry Pi. Se encuentra etiquetado como GPIO_GEN4 en el diagrama esquemtico del Raspberry-Pi (http://www.raspberrypi.org/wp-content/uploads/201 2/04/Raspberry-Pi-SchematicsR1 .0.pdf).

Si el valor de salida debiera ser inicializado primero, antes que el driver de salida sea habilitado, puede utilizarse para establecer la direccin del pin con un valor inicial, uno de los siguientes:
echo low >/sys/class/gpio/gpio23/ direction echo high >/sys/class/gpio/gpio23/direction

Please note GPIO reference changes for pins 3,5,7 & 13 on Revision 2.0

Para crear una interfaz de usuario para el pin 23, utilice sudo o, como root, ejecute:
echo 23 >/sys/class/gpio/export

Para establecer la salida del pin en on u off:


echo 1 >/sys/class/gpio/gpio23/value echo 0 >/sys/class/gpio/gpio23/value

Esto provoca que el kernel genere un directorio /sys/class/gpio/gpio23, el cual contiene cuatro archivos importantes para esta discusin: active_low, direction, edge y value. Los valores iniciales en estos archivos (si no hubiera conexin externa a este pin) son: active_low direction edge value 0 in none 0

Para invertir la lgica del pin:


echo 1 >/sys/class/gpio/gpio23/ active_low

Haga esto antes de leer una entrada o establecer un valor de salida. Cuando active_low contiene 1 (o cualquier valor distinto de 0) y value es establecido en 1 , el pin es puesto a nivel bajo, etc.

Contina en la siguiente pgina

13

Con qu rapidez este mecanismo cambia los valores del pin de GPIO? Un simple programa en Python http://ryniker.ods.org/raspberrypi/MagPi/gpio2 3-max.py puede generar pulsos a 1 9 kHz. Si fuera escrito en C (ver http://ryniker.ods.org/raspberrypi/MagPi/23maxa.c) la frecuencia se incrementa aproximadamente a 1 20 kHz. La frecuencia real vara a causa de que el Raspberry Pi hace otras cosas que suspenden temporariamente el bucle: la actualizacin del reloj, la actividad de red, otros procesos de usuario o de sistema.

gpio_control.c puede ser fcilmente configurado antes de ser compilado, para permitir el acceso a GPIO a todos los usuarios o solamente los usuarios de un grupo. Cada uno de los 54 pines de GPIO pueden ser configurados individualmente para permitir o rechazar las salida. El Raspberry Pi utiliza el pin 1 6 de GPIO para controlar el led verde de status ok. Si alguien trata de salir por el pin 1 6 del GPIO la operacin falla porque el kernel est utilizando ese recurso:
ryniker@raspberrypi:~$ gpio_control 16 export export failed: Device or resource busy

El programa
Como promet anteriormente, aqu est el programa http://ryniker.ods.org/raspberrypi/MagPi/gpio_control.c que ejecuta operaciones que requieren privilegios de root para poder exportar un pin GPIO para el uso por usuarios comunes. Los comentarios al principio del programa describen como debe compilarlo e instalarlo. Cuando sea instalado (por el root), debido a su caracterstica de setuid, el programa se ejecuta efectivamente con un id de usuario root, por lo tanto tiene los privilegios necesarios para exportar o dejar de exportar por un pin de GPIO. Los programas que se ejecutan con privilegios de root deben ser escritos por programadores realmente paranoicos. La mayora del cdigo en gpio_control.c simplemente verifica que el argumento sea razonable, y trata de ser informativo si sucede algo inesperado. Para utilizar gpio_control.c para salida por el pin 23, para que todo el manejo del pin comentados anteriormente no requieran privilegios de root, simplemente ejecute:
gpio_control 23 export

Otros programas del kernel pueden aduearse de pines del GPIO hacindolos inaccesibles a los usuarios. Esto es bueno. Poco dao puede provenir de un usuario cambiando el LED de estado a encendido o apagado, pero qu pasa con el controlador del I2C del kernel? Fcilmente podra sufrir fallos errticos si los pines que utiliza son cambiados de un modo que no puede entender. El kernel recuerda el estado de los pines de GPIO. Por ejemplo, suponga que un pin es exportado, establecido como un pin de salida por el usuario, luego dejado de exportar. Los archivos del usuario desaparecen pero el pin permanece como un pin de salida con el ltimo valor establecido. Si este pin vuelve a ser exportado, los archivos del usuario son re-escritos para mostrar el estado guardado. El comando echo es conveniente para usar en shell scripts, ocasionalmente en la lnea de comandos, pero Python es mucho ms fcil para los programadores. La docena de lneas de cdigo en gpio23-max.py debera proveer de un ejemplo simple. Ahora que se han enseado los elementos bsicos de control de GPIO, esta funcin se puede utilizar para reemplazar la operacin de bucle infinito, donde un programa lee repetidamente el valor de una seal de entrada y realiza alguna operacin cuando esta cambia, por un programa infinitamente ms eficiente que solamente se ejecuta cuando la seal cambia. Con slo una entrada y absolutamente nada ms que hacer hasta que cambie, un loop puede ser un problema. Sin embargo, este tipo de bucle consume el 1 00% de los recursos del CPU, y

14

entonces compite agresivamente con todo aquello que pueda querer un poco de Raspberry Pi. Se puede introducir un retardo en el bucle de sondeo (poll loop), para esto utilice el comando sleep 0.5 para un retraso de medio segundo antes de comenzar la siguiente iteracin del bucle. Esto permitira que otra actividad se ejecute durante el perodo de demora. Pero significa que hay un retraso promedio de un cuarto de segundo antes que se detecte cualquier cambio en la entrada. Ms corto el retardo, la respuesta es ms rpida, pero hay ms desperdicio de CPU... Fea eleccin. A medida que el nmero de entradas crece y el nmero de respuestas a esas entradas se hace ms grande y ms variada, a menudo es necesario administrar las tareas con diferentes prioridades. Las interrupciones son el medio para conectar rpidamente una entrada como "hay un precipicio directamente delante del vehculo" a la respuesta "Frenar!".

terminara siempre de forma inmediata. Si otra fuente de interrupcin es registrada por po, podra utilizar esas condiciones. Algunas veces, la ausencia de una seal esperada puede ser importante. La llamada a po.poll(60000) esperar por una interrupcin, pero slo por 60 segundos (60.000 milisegundos) antes de retornar una lista vaca de seales de interrupcin para indicar que se agot el tiempo de espera. El kernel mantiene el archivo value de un pin GPIO con dos bytes de contenido: un carcter 0 o un 1 para representar el valor actual del pin y un carcter de salto de lnea. La funcin f.seek(0) reinicializa la posicin actual al comienzo del archivo, para que pueda leerse de nuevo el valor del primer carcter.

Expandiendo el GPIO
Slo algunos pines de GPIO son accesibles en el Raspberry Pi, pero mucha gente ha demostrado cmo con integrados baratos como el MCP2301 7 se puede utilizar la interfaz I2C para expandir este nmero. Un diseo como http://shop.ciseco.co.uk/k002slice-of-pi-o/ puede ser utilizado hasta 8 veces para aadir 1 28 pines de E/S digital al Raspberry Pi. Utilice la interrupcin con el MCP2301 7 con una configuracin open-drain para conectar la seal de interrupcin de mltiples dispositivos a un nico pin GPIO. Una resistencia pull-up a 3,3 V para mantener la entrada en nivel alto hasta que un dispositivo conectado lo conduzca a nivel bajo. Cuando ocurre una interrupcin el manejador de interrupciones tiene que leer valores de todos los dispositivos generadores de interrupcin para descubrir cual de ellos tiene la seal de interrupcin activa (pueden ser varios), lanzar el programa de respuesta asociado, luego limpiar todas los solicitudes de interrupcin (por lo que la entrada GPIO vuelve al estado alto) para permitir que ocurra la siguiente interrupcin.

Otro programa Python


http://ryniker.ods.org/raspberrypi/MagPi/interrupt_test23.py quiere ilustrar el manejo de interrupciones del GPIO. Este programa configura el pin 23 como una entrada, establece el archivo edge a both (ambos flancos) en consecuencia las interrupciones ocurrirn por las transiciones falling y rising (flancos descendentes y ascendentes), luego abre el archivo value de los pines. El llamado a select.poll() crea un objeto polling llamado po, despus po.register() agrega el archivo value como una de las fuentes que pueden corresponder a un llamado posterior a po.poll(). Este programa utiliza una nica fuente de interrupcin, pero pueden ser registrados otros pines GPIO y muchas otras fuentes por el objeto poll. Por ejemplo, un pipe ( | ) que se conecta con otro proceso puede ser una fuente de interrupcin o un socket que recibe datos a travs de una red desde un sistema remoto. El segundo operando de po.register especifica cul de las tres condiciones se reconocer como interrupcin. El valor select.POLLPRI indica que solamente priority data to read puede causar la interrupcin. Las otras posibles condiciones (data available y ready for output) son siempre verdaderas para un pin GPIO, por lo tanto en una operacin de poll (sensado) cuando es activada cualquiera de estas,

Un resumen de las URL

Esquema del Raspberry P: http://www.raspberrypi.org/wp-content/uploads/201 2/04/Raspberry-Pi-Schematics-R1 .0.pdf Los programas: http://ryniker.ods.org/raspberrypi/MagPi/gpio23max.py http://ryniker.ods.org/raspberrypi/MagPi/23-maxa.c Expansor de E/S: http://shop.ciseco.co.uk/k002-slice-of-pi-o/

Artculo originalde RichardRyniker

15

La distribucin Raspbian de Debian provee el sistema operativo encontrado en la mayora de las Raspberry PI. En este nmero de The MagPi entrevistamos a Mike Thompson, el fundador de Raspbian.
Q: Por qu decidiste empezar Raspbian?
Le en enero que la Fundacin estaba planeando usar Fedora y me pregunt si yo podra hacer lo mismo pero con Debian, ya que es mi distribucin de Linux favorita para procesadores ARM. Durante mucho tiempo he estado interesado en aprender como crear un sistema operativo y, adems, contribuir con la comunidad Debian. Raspbian me dio esa oportunidad. Me di cuenta que iba a tomar una buena cantidad de recursos, tiempo y esfuerzo crear Raspbian. Empec haciendo preguntas en los foros para entender qu se debera tener en cuenta para llevar a cabo una tarea as. Hurgu por ah para ver como lograrlo y se fue desarrollando de ah. Raspbian es un esfuerzo conjunto entre Peter Green (Plugwash), que es un desarrollador de Debian, y yo. Raspberry Pi y nunca esper que Raspbian se convirtiera en la distribucin Linux oficial de la Raspberry Pi. Despus de lanzar las primeras imgenes de testeo de Raspbian y una significativa parte del repositorio fue creado, la gente empez entusiasmarse diciendo que ellos esperaban que la Fundacin eligiera una distribucin basada en Debian. Yo saba que la Fundacin estaba enterada de Raspbian por los foros y que si ellos pensaban que vala la pena podran elegir usarla. Raspbian es una recopilacin de los paquetes que componen la distribucin Debian ARM Wheezy hardfloat pero compilado para procesadores ARMv6 como el de la Raspberry Pi. Estamos usando el trabajo que la Fundacin hizo sobre el kernel sin tocarlo porque las interfaces binarias en el kernel no tienen componentes de punto de coma flotante. Eso nos ahorr un montn de esfuerzo permitindonos concentrar en la recompilacin de los paquetes. Alex Bradbury, el desarrollador lder de la Fundacin, trabaj en la imagen de Raspbian de la Fundacin. Como Raspbian es esencialmente un clon de Debian l tom los mismos scripts que haba usado para la imagen basada en Debian, hizo cambios menores y los us para crear su propia imagen basada en Raspbian. Creo que estaba agradecido de ver que nosotros seguimos estrictamente la distribucin Debian, por lo tanto el proceso para crear una versin de Debian optimizada para la Raspberry Pi basada en nuestros paquetes de Raspbian fue bastante simple.

Entrevista con Mike Thompson

Q: En qu difieren los lanzamientos de Raspbian y de la Fundacin?

Q: Por qu elegiste la Raspberry Pi habiendo disponible otras placas de relativo bajo costo?
Tengo un inters personal en sistemas Linux de bajo costo y me anima que la Fundacin Raspberry Pi haya demostrado el deseo y la necesidad que existe en el mercado por un sistema como la Raspberry Pi. A la larga sera interesante llegar a ver ese tipo de placas a un precio de entre US$5-1 0. Puede que tome unos aos llegar a eso, pero las cosas pueden volverse mucho ms interesantes en el mundo cuando haya acceso a gran escala de computadoras baratas y relativamente sofisticadas como la Raspberry Pi.

Q: Cmo llegaste de tener una versin funcional de Raspbian a ser el Sistema Operativo (SO en adelante) oficial de la Fundacin Raspberry Pi?
Peter Green y yo estbamos bastante encaminados en el proyecto cuando a mediados de junio tuvimos pistas de que la Fundacin estaba interesada en Raspbian. Cuando yo empec, mi expectativa era crear una alternativa a Fedora que sea usada, quizs, por el 1 0-20% de los usuarios de

Q: Qu tan conveniente result ser la placa Freescale iMX53 que compraste en marzo como plataforma de creacin?
Todava estamos usando 8 placas Freescale iMX53 para compilar los paquetes de Raspbian. Son sistemas bastante rpidos con un procesador ARMv7 de 1 Ghz con 1 GB de RAM. Cuando compilamos, algunos de los paquetes requieren un montn de memoria

16

RAM para crear las enormes estructuras enlazadas, y nosotros usamos archivos de intercambio (Swap) de 1 ,5-2GB as que estamos excediendo la memoria disponible. Una tpica PC moderna con 4GB de RAM puede tomarle cerca de 1 hora compilar un paquete grande, pero en esos sistemas ARM puede tomar ms de 30 horas. Tener 8 sistemas disponible para compilaciones en paralelo fue necesario en mayo y junio cuando estuvimos compilando el total de 1 8000 paquetes fuente que equivale a poco menos de 38000 paquetes binarios para Raspbian. Si slo tuviramos un sistema, hoy en da todava estaramos compilando paquetes. Estamos usando versiones modificadas de las herramientas de Debian para compilacin para distribuir el compilado de paquetes a travs de los 8 sistemas. Yo llegu a este proyecto con muy poca experiencia en creacin de sistemas operativos y tuve que aprender todo lo necesario. Afortunadamente para mi, Peter Green se uni al proyecto y su experiencia con Debian y sus herramientas de compilacin fue esencial para hacer Raspbian posible. Fui desarrollador de software toda mi carrera pero nunca encar algo de esta escala. Ahora entiendo por qu las compaas de software tienen ingenieros especializados en compilaciones de proyectos enormes

Q: Qu tan dependiente fuiste del trabajo hecho por la comunidad Linux?


Extremadamente dependiente. Raspbian no habra sido posible si el grupo de Debian que cre armhf (ARM Hard Float) no hubiese hecho el trabajo preliminar 1 8 meses antes, aunque ellos implementaron ARMv7 y no ARMv6. Peter Green y yo pensamos que Raspbian debe ser lo ms parecido a una versin oficial de Debian como sea posible sin ser una versin oficial. Mientras mantengamos ese compromiso con Raspbian, se mantendr una base slida para la Fundacin Raspberry Pi y la comunidad. Posteriormente, manteniendo Raspbian tan similar a Debian reducimos el riesgo de que slo dos personas trabajen en ello. Peter Green se asegur que todo lo que hicimos sea completamente abierto. Si nosotros dejramos de trabajar maana nuestro trabajo est ah afuera, espejado en 30-40 servidores alrededor del mundo. Cualquiera con el conocimiento en compilar Debian puede fcilmente tomar eso y seguir mantenindolo. Por lo tanto Raspbian es de poco riesgo para la Fundacin. Yo creo que llegamos al mximo en la parte

de software. Reemplazando el CPU con un procesador que soporte ARMv7 o agregando ms memoria [Nota del editor: la Pi acaba de empezar a salir con 51 2MB de RAM!] sera grandioso ya que algunas personas estn llegando a los lmites de la placa, por ejemplo con la navegacin web en un GUI de escritorio. Creo que, en general, la eficiencia de software ha ido por el buen camino, especialmente con aplicaciones GUI. Yo siempre valor el uso gil y eficiente de memoria para computar. Desafortunadamente la realidad es que un montn de RAM y un CPU poderoso es necesario hoy para la mayora de las aplicaciones con GUI. Nosotros todava deberamos alentar a la gente a aprender a programar eficientemente con recursos limitados. Si sistemas como la Raspberry Pi hubieran estado disponibles ocho aos atrs podramos haber visto un gil sector de software de productividad requiriendo menos recursos en general, en todas las plataformas. Comparado con Turbo Pascal que sali para CP/M (Un sistema operativo) a principios de 1 980, y despus Turbo C, ambos tenan un entorno de desarrollo pequeo, rpido y totalmente integrado. Los entornos nuevos basados en GUIs consumen una enorme cantidad de recursos y no siempre funcionan bien, s lo hacen en la Raspberry Pi. Es triste que hoy en da no haya un equivalente real a Turbo Pascal o Turbo C en la Raspberry Pi ya que esos sistemas desaparecieron cuando llegaron las GUIs. Yo creo que hay una gran oportunidad para volver a usar ese tipo de herramientas para los, comparativamente, bajos recursos de la Raspberry Pi. Ahora estamos mayormente en modo de mantenimiento. Cuando Debian saca actualizaciones de paquetes nosotros los bajamos, recompilamos para Raspbian, y los enviamos al repositorio. Personalmente, yo consegu mi objetivo con Raspbian de crear una versin que soporte ARMv6 de la versin hardfloat de Debian. Estoy feliz que Raspbian haya habilitado tantas cosas en la comunidad Raspberry Pi. Adems es grandioso que haya podido devolver algo a la extensa comunidad Linux y espero que esto d lugar a miles de nuevos usuarios de Debian en el futuro.
Mike Thompson es un Ingeniero en Computacin viviendo en San Francisco Bay Area. Tiene un diverso conocimiento en diseo de sistemas embebidos, desarrollo aplicaciones para dispositivos mviles, desarrollo de aplicaciones para PC y diseo de sistemas de gran escala para internet. Es un emprendedor serial que previamente co-fund dos compaas y es el fundador y principal desarrollador de Raspbian, el principal SO para la Raspberry Pi.

Q: Qu trabajo queda por hacer en Raspbian?

Q: Hay algun otra mejora de rendimiento que pueda lograrse en Raspbian?

17

Te gustara obtener ms potencia de Pi? Ve por el Turbo!


Los procesadores de las Raspberry Pi tienen una velocidad de reloj de 700Mhz. Esto significa que realizan 700.000.000 ciclos por segundo. La velocidad de reloj de un procesador es un indicador de cun rpido puede realizar operaciones. Se mide tanto en megahertz (Mhz) como en gigahertz (Ghz) con 1 000Mhz equivaliendo a 1 Ghz. Entonces, cuantos ms Mhz, ms rpido operar el procesador. esto permite hacer overclock y overvolt de tu Raspberry Pi sin perder la garanta.

Consideraciones sobre la fuente de energa

Qu son el overclock y el overvolt?

Mientras que 700Mhz es la velocidad de fbrica para el procesador de la Raspberry Pi, hay formas de obtener un mejor rendimiento... Overclocking... y gracias a la ltima versin de Raspbian, lograrlo es ms fcil que nunca! El Overclocking es el proceso mediante el cul se hace funcionar a un componente o computadora ms rpido que su velocidad de fbrica, sin embargo esto puede implicar un perjuicio incrementando la inestabilidad y la vida til del procesador. Pero para la Raspberry Pi, estos efectos adversos son tan insignificantes que seras un tonto si NO realizas un Overclocking! El Overclocking tambin requiere energa adicional. Si quieres llevar la velocidad de tu Raspberry Pi a 900Mhz y ms, necesitars proveerle de energa adicional a travs del Overvolting. Cuan lejos puedes llegar con el Overclock depende de varios factores; tu Raspberry Pi, la calidad de tu fuente de energa y posiblemente tambin de tu memoria SD. Debido a la tolerancia de fabricacin, el fabricante garantiza el mejor rendimiento en 700Mhz. Pero cada Raspberry Pi es diferente y por lo tanto cada una tiene lmites diferentes. Existen varias configuraciones de overclock y overvolt. Estas se encuentran detalladas en
http: //elinux. org/RPi_config. txt# Overclocking_options aunque la ltima

Es importante, al hacer overclock, el uso de una buena fuente de energa. En mi caso utilizo un cargador para Kindle el cual es de alta calidad y provee una potencia de 850mA. Los cargadores originales de Apple iPhone tambin son una buena opcin y proveen 1 A de potencia. Ten cuidado con los cargadores para iPhone fabricados por terceros. La Fundacin Raspberry Pi ha encontrado que algunos de estos no funcionan segn las especificaciones.

PRECAUCIN: has una copia de respaldo

Antes de comenzar, vale la pena mencionar que hay una posibilidad de que al hacer overclock los datos en tu memoria SD se daen. Asegurate de tener una copia de respaldo de cualquier documento importante y tambin de tu archivo /boot/config. txt . La forma ms sencilla de hacer esto es copiando los archivos a una memoria USB o subiendolos a algn servicio de almacenamiento online como Dropbox.

imagen de Raspbian contiene una simple opcin de configuracin. Lo importante es que

Alternativamente podra crear una imagen completa de la memoria SD utilizando el mismo programa Win32DiskImager usando inicialmente para crear la memoria SD con Raspbian. Esta vez, en lugar de escribir la memoria SD desde una imagen, crear una imagen de respaldo leyendo la memoria.

18

Conecte su memoria SD a un lector de memorias SD en su computadora con Windows y ejecute Win32DiskImager. Ingrese un nombre para dicha imagen y haga click sobre Read. Cuando el respaldo est completo, el tamao del archivo con la imagen de respaldo debera ser muy similar al tamao de su memoria SD.

Acabo de romper mi Pi?


Pero qu pasa si mi Raspberry Pi no vuelve a iniciar? Esto significa que la configuracin de overclock ha excedido los lmites operativos de tu Raspberry Pi, pero no te preocupes, es fcil de resolver. Primero desconecta la energa de tu Raspberry Pi, espera unos segundos y vuelve a conectarla. Inmediatamente mantn presionada la tecla <SHIFT> en tu teclado. Observa el texto en tu pantalla. Vers lo siguiente:

Overclocking
Para modificar las configuraciones de overclock inicie la Raspberry Pi. Desde la terminal, escriba el comando:
$ sudo raspi-config

[ ok ] Checking if shift key is held down: Yes. Not switching scaling governor.
Esto significa que la configuracin de overclock fue ignorada e iniciar con normalidad. Si has tenido mala suerte, es posible que el sistema de archivos de tu memoria SD se haya corrompido y tengas que restaurar tu imagen de respaldo. Si la has encendido exitosamente, puedes abrir la terminal y escribir el comando:
$ sudo raspi-config

Luego debera aparecer una caja azul, como la mostrada anteriormente. Este es el mismo men de configuracin que aparece al iniciar una imagen de Raspbian por primera vez. Lo primero a hacer ser actualizar la herramienta raspi-config. Utilice las teclas de direccin para desplazarse hacia abajo y seleccionar la opcin update. Espera a que raspi-config se vea como en su ltima versin. Una vez que haya finalizado podemos comenzar con el overclock. Ahora desplzate hacia abajo y selecciona una opcin de overclock. Al momento existen cinco opciones para elegir; None (Ninguna), Modest (Modesta), Medium (Intermedia), High (Alta) o Turbo. Usa las flechas de direccin para elegir tu configuracin de overclock preferida. Lo mejor

Esta vez, al elegir una configuracin de overclock, intenta con una opcin menor. Si operas tu Raspberry Pi va SSH o algn otro medio de acceso remoto (headless) y no puedes mantener presionada la tecla <SHIFT> durante el inicio, entonces necesitas modificar la configuracin de overclock manualmente utilizando un lector de memorias SD en otra computadora. Querrs editar el archivo /boot/config. txt . En Linux o Apple Mac puedes utilizar sus editores de texto predeterminados. En Windows resultar extrao editar el archivo config.txt usando Notepad. Una mejor alternativa se obtiene descargando el programa gratuito TextPad desde http: //www. textpad. com. Las entradas que necesitars modificar son arm_freq, core_freq, sdram_freq and over_voltage . Use the image to the left as a reference for the values you should use. Has seleccionado una configuracin de overclock y la Raspberry Pi parece haber iniciado nuevamente y sin problemas. Cmo sabrs si esto ser confiable?

es comenzar con Turbo para ver si es estable. Sino intenta con High, seguida de Medium y luego Modest. Luego de hacer tu eleccin, sal de raspi-config y reinicia. Esto ltimo es necesario para que la nueva configuracin se aplique. Los cambios se graban en el archivo /boot/config. txt .

Contina en la siguiente pgina...

19

Pruebas de confiabilidad
Hay un par de pruebas que puedes realizar para determinar si la Raspberry Pi ser confiable. No hay nada divertido en tener un sistema rpido pero poco confiable. Si tienes instalado el Quake 3 esto es una buena prueba para las configuraciones de overclock del CPU y el GPU. Otra prueba muy fcil que uso es simplemente realizando un upgrade de la imagen de Raspbian. Para esto debes iniciar tu Raspberry Pi, abrir una terminal y escribir los siguientes comandos:
$ sudo apt-get update $ sudo apt-get upgrade -y

Monitoreo
Al hacer overclock es muy til conocer al momento la frecuencia y la temperatura de la CPU. Puedes hacer esto fcilmente en LXDE. Haciendo Click-derecho sobre la barra de tareas en la parte inferior de la pantalla y seleccionando Add / Remove Panel Items (Agregar / Quitar Items del Panel). La ventana de Panel Preferences (Preferencias del Panel) aparecer y la solapa Panel Applets debera estar seleccionada. Has Click sobre el botn Add (Agregar). Selecciona CPUFreq frontend y has Click sobre el botn Add. Repite este proceso pero esta vez seleccionando Temperature Monitor . Podrs encontrar til el agregar otros applets tales como Volume Control y Network Status Monitor . Otro test simple sera iniciar Midori y visitar http: //www. raspberrypi. org . Mientras est cargando, mantn el puntero del mouse sobre el applet CPUFreq frontend. Vers el cambio entre 700Mhz y tu configuracin actual de overclock.

Esta es una buena prueba de las configuraciones de overclock de la CPU y la SDRAM. Dependiendo del nmero de actualizaciones esto podra demorar 30 minutos, pero al final tendras la versin final del sistema.. Una vez completado, reinicia la Raspberry Pi. Esta vez querrs prestar especial atencin a los mensajes que aparecern durante el inicio. Busca mensajes mmc o cualquier tipo de mensajes relacionado con errores en el sistema de archivos. Adicionalmente, busca mensajes [ warn ] (advertencia) y [ fail ] (falla). El hallazgo de estos mensajes sugiere debilidades potenciales, por lo que deberas intentar con la configuracin de overclock menor. Si cuentas son diferentes memorias SD vale la pena probar con cada una. He probado tres Raspberry Pis con nueve memorias SD diferentes, en un rango de velocidades desde Clase 2 hasta Clase 1 0. Cada Raspberry Pi era Revisin 1 con USB polyfuses reemplazados por conexiones cableadas. Recibieron energa desde el mismo concentrador USB el cual tuvo una fuente de energa de 2A. Una de las Raspberry Pi funcion correctamente hasta la configuracin de overclock Medium; los otros dos lograron hasta la configuracin High. Pero ninguno de los tres Raspberry Pi lograron pasar la prueba de confiabilidad funcionando con la configuracin Turbo. Lo interesante fue que las dos Raspberry Pis que lograron funcionar con la configuracin High, solo lo hicieron con siete de las 9 memorias SD. Fallaron con dos de las memorias; una Trascend 4GB Clase 6 y una Lexar 1 6GB Clase 6. Sin embargo, tus resultados podran ser diferentes.

Para ver videos sobre overclock adems de otros temas relacionados con la Raspberry Pi, por favor visita mi canal en YouTube:
http: //www. youtube. com/user/TheRa spberryPiGuy .

Por Matthew Timmons-Brown e Ian McAlpine

Sabas

qu...?

Mientras ordenaba la edicin impresa de MagPi desde http: //www. modmypi. com, me enter que venden un kit de refrigeracin. The Raspberry Pi Heat Sink Kit consta de tres pequeos disipadores de calor ms una cinta trmica, que ayuda a mejorar la confiabilidad del sistema. Hay un disipador de calor para el SoC, GPU y el regulador de energa. En mis propias pruebas la temperatura de la CPU cay desde una mxima de 61 C, sin usar el disipador, hasta una mxima de slo 52 C con el disipador de calor.

20

Gua de eventos MagPi


Entonces esta nueva seccin de MagPi es para Ud.! Hemos listado una serie de eventos y talleres de Raspberry entregando de esta manera un calendario de todo lo que pasar en el mes. Ests a cargo de realizar algn evento relacionado con Raspberry Pi? Quieres publicarlo? Mndanos un email a: editor@themagpi.com

Desea estar actualizado respecto a los eventos de Raspberry Pi en su rea?

Reunin Raspberry Pi en Bloominglabs


Cundo?: Primer martes de cada mes a las 7:00 pm Dnde?: Bloomington, Indiana, USA Las reuniones son los primeros martes de cada mes desde las 7 pm hasta las 9 pm. Todo el mundo es bienvenido. Ms informacin en: http://bloominglabs.org

Taller Raspberry Durham


Cundo?: Mircoles 1 4 de noviembre a las 5:30 pm Dnde?: Durham Johnston School, Durham, UK La reunin ser desde las 5:30 pm hasta las 7:00 pm y el cupo es limitado. Las entradas y ms informacin en: http://durhamjam-eorg.eventbrite.com

Taller Raspberry Sheffield


Cundo?: ltimo mircoles del mes a las 6:30 pm Dnde?: Primer piso, The Workstation, Grinders Hill / Brown St., Sheffield, S1 2BX, UK Las reuniones son patrocinadas por GISThub. El evento abre a las 6:20 pm y dar inicio desde las 6:30 pm hasta las 8:30 pm. Ms informacin en: http://sheffieldraspi1 21 0.eventbrite.com

lique s Pu b

to R a u e ve n

aq u ! p b e rry s
21

El ritmo de desarrollo alrededor de la Raspberry Pi es difcil de mantener...

E V O L UC I N - P I

Si fuiste de los primeros en tener una Raspberry Pi, lo ms probable es que hayas empezado con Debian Squeeze, un sistema operativo basado en Linux. Pasaste tiempo aprendiendo como descargar la imagen, y grabarla en una tarjeta SD. Entonces probablemente fuiste introducido a LXDE, la interfaz grfica liviana x-window. Se vea similar a Windows pero las cosas eran un poquito diferentes. Tuviste entonces que aprender a usar un administrador de paquetes, el comando apt-get, aptitude o quizs synaptic, para poder descargar e instalar nuevos paquetes de aplicaciones. Conseguiste una decente coleccin de tiles aplicaciones instaladas, cuando descubriste que hay una nueva versin de Squeeze disponible, que es mejor que la anterior, as que empezs todo otra vez. No mucho despus aparece otro sistema operativo, Debian Wheezy Beta. Pero habas escuchado que hubo algunos problemas con esa versin, y no sabas si quedarte con Squeeze o pasarte a Wheezy. Fue todo muy confuso. Mientras, muchas otras personas todava esperaban pacientemente para que su pedido de Raspberry Pi sea procesado. Finalmente el pequeo paquete lleg y te pusiste muy feliz. Entonces aprendiste que estaba disponible una nueva y mejorada versin de la Pi, que tena agujeros de montaje y varios otros ajustes, y te preguntaste si la tuya sera considerada un viejo sombrero. Entonces, para hacer las cosas an peor,

anuncian que la Raspberry Pi vendr con el doble de memoria, y por el mismo precio! Finalmente llega un mejor versin de Wheezy, pero ahora se convirti en algo llamado Raspbian Wheezy, que es mucho ms rpida, y tiene muchos bugs solucionados. Ah, esper un segundo, llega otra versin de Raspbian, que es an ms rpida, y me entero que hay otra versin planeada para ser lanzada en las prximas semanas. Ahora, si sos de los que odian los cambios, a este punto ya estars golpeando la cabeza contra la pared, y preguntndote si, despus de todo, esto de la computacin es realmente para vos. En computacin las cosas a menudo pasan muy rpido, y lidiar con el flujo constante de actualizaciones es algo a lo que te tens que acostumbrar. Si no puedes adaptarte al cambio, te vas a quedar atrs. Probablemente el ritmo de desarrollo ir ms lento hasta cierto punto una vez que los fundamentos estn en su lugar. Pero nosotros no estamos ah an. Pods esperar, con la versin educacional de la Pi, que las placas vendrn con una caja incluida, y probablemente algn tipo de manual de instrucciones, as como una imagen mejorada, junto con muchos extras. A pesar de esto, no debemos esperar que las cosas se estanquen en esa etapa. Una serie de complementos de hardware y accesorios le seguirn, incluyendo cmaras, pantallas

22

y otros dispositivos electrnicos que se enchufarn a tu Pi. Lo ms probable es que para ese entonces, tu actual Raspberry Pi de 256MB y sin caja a la que le faltan agujeros de montura quede prcticamente sin valor. Lo que tenemos que recordar es: El propsito de la Pi es aprender los principios de programacin, o interconexin, o solo computacin general, y aunque muchas cosas cambian, los principios fundamentales no. La raspberry Pi es un dispositivo para aprender, y para experimentar. No es un accesorio de moda o un gadget de lujo. La Pi es ms bien un tem barato y desechable. Existe gente que vende su iPhone 4 solo porque hay un iPhone 5 disponible. Va haber dueos de Raspberrys Pi que que caigan en esa misma trampa, pero la gente que ms provecho le sacar a su Pi sern aquellos que dejen de preocuparse por esas cosas y dediquen ms tiempo a jugar con cualquier versin que tengan, y aprendan de su experiencia.

Despus us sudo apt-get update y sudo apt-get install xine-ui para tener Xine. Xine es un reproductor multimedia que yo haba pasado por alto tiempo atrs (Mientras hacamos el nmero 3 de MagPi). Se vea prometedor, pero era demasiado lento para ser util, y pens que quizs con el nuevo SO y el overclock, esta vez podra funcionar mejor. Afortunadamente mi nueva Pi finalmente haba llegado de RS Components (Despus de 6 meses de espera), y era capaz de manejar el Modo Turbo completo. Desafortunadamente lleg una semana despus de que saliera la versin de 51 2MB, y adems careca de agujeros de montura. Yo tena una vieja revisin de la Pi que Antiloquax me haba enviado amablemente, pero que no poda manejar el Modo Turbo. Fall en arrancar y era inestable en cualquiera de los niveles de overclock.. Xine fue capaz de ejecutarse y reproducir muchos formatos que teste, aunque haba algo raro al abrir los archivos. Solo despus de clickear el botn play next chapter >| seleccionaba el archivo correcto para reproducir, de otro modo apareca el mensaje There is no MRL. Xine pudo reproducir av, mp3, mp4, mov as como wmv, wma y.... mpeg. SI, MPEG, aunque empezaba a saltar frames si intentaba reproducir un video a un zoom mayor que el 1 00%. Yo no pagu por el codec MPEG. Xine fue bastante inestable y con tenia bugs, sin embargo el reproductor de lnea de comando omxplayer funcion mejor, pero soportando menos formatos. Todava es una mejora masiva sobre la versin anterior de Raspbian Wheezy, y creo que sta es digna candidata para poner a descansar a Squeeze de una vez por todas. Me tom un descanso con los reproductores multimedia e instal Scribus, el programa de publicacin que usamos para hacer la MagPi. Cargu uno de los documentos de Python Pit del nmero 6, y not que fue considerablemente ms rpido gracias al overclocking. Fue particularmente mejor cambiando entre capas, haciendo zoom y haciendo click derecho para mostrar el cuadro de propiedades. Finalmente instal unos pocos juegos de arcade: beneth-a-steel-sky, geki2m geki3, pangzero y xsoldier. Todos funcionaron perfectamente. Distribuciones actualizadas no son necesariamente mejores en general. A veces es mejor abstenerse de actualizar hasta que los bugs hayan sido subsanados, pero enterrar la cabeza en la arena e ignorar la marcha del progreso es una mala idea tambin. Siempre mantente atento a lo que pasa en la comunidad para evitar perder las actualizaciones buenas y los ajustes de rendimiento.

Con esto en mente, me di cuenta que mi propia tarjeta SD estaba vencida , y pens que sera mejor echar un vistazo a la version Wheezy 1 8/09/201 2 de Raspbian:
En el nmero 5, escrib un artculo comparando Debian Squeeze y Wheezy, y una de las desventajas que descubr fue que aunque Wheezy era bastante ms rpida, puntuaba muy pobremente en reproduccin multimedia. As que decid que primero vera si algo habra mejorado en la actualizacin. Primero descargu el la imagen zipeada de 439MB desde http://raspberrypi.org/downloadas. Me tom cerca de 45 minutos usando el enlace de descarga directa desde mi PC con Windows. Entonces, otros 45 minutos para escribir la imagen en la tarjeta SD usando Win32DiskImager. Tengo una MicroSD clase 4 que es bastante lenta, pero funciona bien para esto. Lo prximo fue conectar la tarjeta MicroSD (dentro de un adaptador a SD normal) en mi Pi y arrancar la Raspi. hasta la pantalla de configuracin . Curiosamente, esta vez no tuve que cambiar los valores de overscan para mi monitor (Como siempre tuve que hacerlo con versiones anteriores de Debian). Eleg expandir el rootfs as puedo hacer uso de los 1 6gb de la tarjeta. Tambin configur la zona horaria a Londres y activ el modo Turbo a 1 000Mhz. Sal del men y reinici. Despus de iniciar sesin, inici LXDE tipeando startx. El escritorio se ve casi idntico a la versin anterior, aunque la imagen se ve ms definida. Abr un una ventana LXTerminal y escrib sudo amixer cset numid=3 1 para dirigir el audio a la salida analgica.

Artculo por Jaseman

23

Making code development faster

Los fundamentos de GNU Make


make es la parte central del armado de paquetes de cdigo compilado y documentacin en un sistema Linux. Cuando ejecutas make , ste lee uno o ms archivos de texto, los cuales contienen las dependencias y targets. Los targets son

ejecutados slo si el archivo no existe o si es ms nuevo que el archivo de salida. La sintaxis permite adems mltiples dependencias, de manera que algunos archivos son requeridos para poder construir otros. Comencemos con un ejemplo
# Crea el archi vo nuevoArchi vo. txt si no est presente nuevoArchi vo. txt: touch nuevoArchi vo. txt

Anlogamente a los lenguajes de scripting, los comentarios comienzan con un numeral(#). El target nuevoArchi vo. txt no tiene espacios o tabs al comienzo de la lnea y es seguido por dos puntos(:). Las dependencias del target pueden ser aadidas luego de los dos puntos. Cada accin viene dada por una lnea que comienza con un tab. Si se utilizan espacios, make generar un error indicndolo. Por defecto make busca un archivo llamado Makefi l e . Por lo tanto usa nano (described in the issue 3 C cave article) para crear un archivo llamado Makefi l e que contenga el ejemplo arriba descrito. Entonces tipea make La primera vez que make es tipeado, ejecuta el target, el cual utiliza el comando touch para crear un archivo vaco con el nombre indicado. La segunda vez que make es tipeado, encuentra que el archivo existe por lo que ninguna accin es ejecutada. Para un ejemplo con mltiples dependencias, puede ser utilizado un pequeo ejemplo en C. En un nuevo directorio crea tres archivos: mai n. c
#i ncl ude " pri ntStri ng. h" i nt mai n() { pri ntStri ng(); return 0; } pri ntStri ng. c #i ncl ude <stdi o. h> voi d pri ntStri ng() { pri ntf(" Construi do con make! \n" ); } pri ntStri ng. h voi d pri ntStri ng();

24

A continuacin, crea un archivo llamado Makefi l e que contenga lo siguiente:


pri ntStri ng: mai n. o pri ntStri ng. o gcc -o pri ntStri ng mai n. o pri ntStri ng. o mai n. o: gcc -c mai n. c pri ntStri ng. o: gcc -c pri ntStri ng. c cl ean: rm -f *. o

Esta vez tipeando make provocar que cada archivo . c sea compilado en un archivo . o , entonces los archivos . o son enlazados juntos para formar un ejecutable llamado pri ntStri ng . El target pri ntStri ng es el primer target del archivo y es por lo tanto el target por defecto. Cuando make es ejecutado chequea que las dependencias de pri ntStri ng , las cuales son mai n. o y pri ntStri ng. o existan y no sean ms nuevas que el target pri ntStri ng . Si los archivos no existen, entonces el target es ejecutado para generarlos. Cualquier otro target que no sea el target por defecto puede ser ejecutado tipeando el nombre del target luego del comando make , por ejemplo,
make cl ean

Escribir makefi l es en el cual cada nombre de cada archivo tiene que ser especificado puede ser muy agotador. Por lo que pueden ser utilizadas variables automticas en vez de targets especficos.
pri ntIt: mai n. o pri ntStri ng. o gcc -o $@ $^ %. o: %. c gcc -c $< -o $@ cl ean: rm -f *. o

Este Makefi l e hace exactamente las mismas acciones que el definido anteriormente. La variable automtica $@ es el nombre del target, $^ son los nombres de las dependencias y, $< es el nombre del primer pre requisito. Por cada archivo . o requerido por el target por defecto, make intenta el wildcard %. c . Si el archivo . c no existe make reportar un error. Los Wildcards tambin puede ser utilizados para definir una lista de archivos . c presentes en el directorio de trabajo:
OBJ ECTS = $(patsubst %. c, %. o, $(wi l dcard *. c)) pri ntIt: $(OBJ ECTS) gcc -o $@ $^ %. o: %. c gcc -c $< -o $@

Siendo OBJ ECTS una variable. En este caso, todos los archivos . c presentes en el directorio de trabajo son usados para construir un ejecutable llamado pri ntIt . El comando wi l dcard lista todos los archivos que coincidan con el patrn *. c . Entonces patsubst remueve el . c y los reemplaza por el . o . El resultado es asignado a la variable OBJ ECTS . Prueba usando touch para actualizar cada time stamp e intenta volver a ejecutar make y vers lo que pasa. Los Makefi l es pueden tener muchas capas de dependencias. Para las distribuciones de software en mltiples plataformas, los Makefiles son tpicamente generados a partir de plantillas (templates) con la herramienta autoconf.

Artculo Original por W. H. Bell

25

Una introduccin al lenguaje de programacin C++ - uno de los ms populares utilizados en la actualidad.
El C++ es un lenguaje de programacin, como lo son Python o Java. Es un poco ms avanzado, pero es muy popular, muchos videojuegos de la actualidad y muchos otros programas estn escritos en C++. Es rpido y fcilmente portable, lo que significa que el mismo cdigo es generalmente transferible entre mquinas Linux, Windows y Mac OS. Si usted est listo para el desafo, siga leyendo! Pruebe escribiendo lo siguiente:
#i ncl ude <i ostream> usi ng namespace std; i nt mai n() { //Sal i da de un mensaj e. . cout << " Hol a, bi enveni do a C++" << endl ; return 0; }

BIENVENIDO AL CACHE DE C++!

Asegrese de guardarlo como hola.cpp - la parte donde dice .cpp indica que es un archivo fuente de C++. Despus de compilar y ejecutar, usted debe ver impreso en pantalla el mensaje que est entre las comillas. Pruebe cambindolo, recompilando y ejecutando y mire lo que sucede. Al principio esto puede verse bastante desalentador, pero observe debajo y en la siguiente pgina donde hay una explicacin de los trminos desconocidos. De esta manera hemos escrito nuestro primer programa, cmo sabemos lo que va a hacer y lo que significa todo?Aqu voy a explicar los aspectos importantes del programa:

#include <iostream>

Esta es nuestra sentencia de inclusin. Es utilizada para importar libreras las cuales contienen la informacin necesaria para entender los comandos que le dan. La librera iostream contiene informacin sobre sobre el manejo de entradas y salidas.

int main()

Esta es la funcin principal. Todos los programas necesitan una funcin main y todo lo que est dentro de la funcin main es ejecutado. Todas las funciones comienzan con { y finalizan con }.

//Mensaje de salida cout y endl

En C++, cualquier cosa que comience con // es un comentario, y al igual que los comentarios en otros lenguajes, estos son ignorados por el compilador. Estos son nuestros comandos. El comando cout le indica al programa que enve a la salida todo lo que se encuentra entre << y el >>. endl simplemente significa salto de lnea.

26

Algunos lenguajes utilizan estos puntos y comas. Para entenderlo, piense como hace para escribir en un lenguaje normal como el castellano. Nosotros finalizamos las indicaciones con un punto final. Esta es una idea similar, cada vez que queremos que el programa pase a realizar algo nuevo finalizamos con un punto y coma. En consecuencia podemos utilizar los espacios en blanco (que son los espacios y saltos de lnea) como queramos.

return 0;

Hace que el programa entienda que la funcin main ha finalizado, lo que significa que el programa ha terminado. Esto hace que se finalice la ejecucin pasado este punto. Con esta informacin, vamos a pasar a otros ejemplos ms. Pruebe lo siguiente:
#i ncl ude <i ostream> usi ng namespace std; i nt mai n() { //Defi ne 2 vari abl es i nt a, b; a = 1; b = 2; //Envi a a l a sal i da l a suma de estas vari abl es cout << " a + b = " << a + b << endl ; return 0;

Aqu, hemos definido dos variables: a y b. Ellas son de tipo int, que significa que son nmeros enteros. Hemos creado los dos y luego enviaremos a la salida la suma de ambos. Por supuesto, esto est muy bien, pero la salida siempre ser 3 hasta que cambiemos el cdigo, por lo cual no resulta demasiado til. En lugar de eso podemos modificar el programa para tomar el ingreso del usuario y sumarlo. Pruebe esto:
#i ncl ude <i ostream> usi ng namespace std; i nt mai n() { //Defi ne 2 vari abl es i nt a, b; //Sol i ci ta y al macena el i ngreso de datos del usuari o cout << " Ingrese el pri mer numero: " ; ci n >> a; cout << " Ingrese el segundo numero: " ; ci n >> b; //Envi a a l a sal i da l a suma de l as vari abl es cout << a << " + " << b << " = " << a + b << endl ; return 0;

Esto le permitir obtener el ingreso del usuario y sumar ambos.

Artculo original de Alex Kerr

27

Bases Defensivas
Este mes vamos a comenzar con algo de programacin defensiva; en otras palabras, tratando de escribir un programa que pueda interceptar errores . Este convierte un nmero desde decimal a la base de salida, tomando los dgitos desde la cadena DIGITS (ver siguiente pgina).

Perdn, los scripts estn en un orden raro este mes - el espacio est escaso!

El Script "get_base"
Esta parte del cdigo permite establecer la base numrica de entrada y de salida para que lo use el programa. No se permite el ingreso de un nmero menor a 2 o mayor a 16. Esto puede ayudar a resolver algunos resultados realmente extraos (e incorrectos).

Acertijo Hexa!
Si slo DEAD people (gente muerta) entiende el hexadecimal. Cuanta gente entiende hexadecimal?

(La respuesta en la siguiente pgina)

28

Aqu comienza el programa principal. Despus que el script get_base tiene las bases de entrada y salida, el script get_number comprueba que has ingresado un nmero vlido en la base de entrada elegida. El script get_number tambin elabora la representacin decimal (base 10) de su nmero, luego est listo para llamar a to_base_out.

Scratch On!
Esta porcin significa que si se est haciendo en base 4 (por ejemplo), los nicos dgitos permitidos son 0, 1, 2 y 3.

Como Scratch no posee un bloque x elevado a la y, yo estoy utilizando logaritmos:

10 (log x)*y = xy

Pods bajar todos los scripts desde: http://tinyurl.com/Scratchbases

Trabado?

Respuesta al acertijo:

57005 personas entienden el hexadecimal.

29

El mes anterior El Taller de Python mostr cmo obtener ajustes de configuracin desde un un archivo de texto externo. Este mes se presenta una nueva opcin. El uso de argumentos de lnea de comando proporciona un buen control del programa al momento de su ejecucin.

Esta lnea usada para renderizar un Pygame utiliza el mdulo argparse de Python: http://docs.python.org/dev/library/argparse.html En LXTerminal ejecuta el comando:
python lines.py -h

Esto mostrar todos los argumentos disponibles. Por ejemplo:


python lines.py -s 3 -t 4

generar una figura de mayor tamao que el predeterminado (-s 2) y con lneas ligeramente ms densas (-t 5). Experimenta con las opciones disponibles.
# Generador de lneas usando argumentos de lnea de comando # Por Colin Deady - 03 de Octubre de 2012 # coding=UTF-8 import os, pygame, argparse, sys from pygame.locals import * # inicialize pygame (para renderizar la imagen) pygame.init() # Definicin de las 2 funciones a usar: # 1) fnAppend2Log escribir una lnea en el archivo de registro def fnAppend2Log( line2write ): logfile = open('lines.log', 'a') logfile.write(line2write + '\n') logfile.close() # 2) fnPlotLines renderizar un cuarto de la figura. # Utiliza las coordenadas previas como nuevas coordenadas iniciales def fnPlotLines(quarter, sX, sY, eX, eY, incSX, incSY, incEX, incEY ): fnAppend2Log(quarter + ' quarter co-ordinates:') # calcula y cicla a travs de las coordenadas de la lnea for i in range(0,iterations, args.step): nSX = sX + (incSX * i) # start X nSY = sY + (incSY * i) # start Y nEX = eX + (incEX * i) # end X nEY = eY + (incEY * i) # end Y # draw dibuja una lnea entre el par de coordenadas. pygame.draw.line(screen,(lineColour),(nSX,nSY),(nEX,nEY),1)

PYTHON VERSIN: 2.7.3rc2 PYGAME VERSIN: 1 .9.2a0 O.S.: Debian 7

30

# construye una cadena para el ttulo de la ventana y el archivo de registro coordText = '('+str(nSX)+','+str(nSY)+')('+str(nEX)+','+str(nEY)+')' # renderiza la imagen por lneas (takes longer)? if args.renderlines == 'y': pygame.display.update(); pygame.display.set_caption(coordText) # escribe coordenadas en el registro fnAppend2Log(coordText) # devuelve las coordenadas finales return (nSX, nSY, nEX, nEY); # definicin de argumentos de lnea de comando: parser = argparse.ArgumentParser(description='Render shape') parser.add_argument('-s', action='store', dest='scale', type=int, default=2, help='Render size, default=2, 200x200px)') parser.add_argument('-t', action='store', dest='step', type=int, default=5, help='Lower step values for denser lines (default=5)') parser.add_argument('-r', action='store', dest='renderlines', choices=('y','n'), default='y', help='Render line by line (Y) or finished object (n)') args = parser.parse_args() # definicin de las variables necesarias sz = 100*args.scale # tamao en pixeles horiz x vert de un cuarto de imagen iterations = sz +5 # nmero de lneas a renderizar por cuarto lineColour = 0,0,255 # el color de la lnea a dibujar (azul) # abre una pantalla de pygame en la que dibuja los objetos # el tamao de la imagen es dos veces el del objeto a renderizar, porque renderiza 4 cuartos screen = pygame.display.set_mode([sz*2,sz*2],0,32) # Dibuja las lneas, cuarto a cuarto, devolviendo los pares de coordenadas # Las coordenadas iniciales son iguales a las finales, del ltimo cuadro sx, sy, ex, ey = fnPlotLines('Top left', sz, 0, sz, sz, 0, 1, -1, 0 ) sx, sy, ex, ey = fnPlotLines('Bottom left', ex, ey, sx, sy, 1, 0, 0, 1 ) sx, sy, ex, ey = fnPlotLines('Bottom right', ex, ey, sx, sy, 0, -1, 1, 0 ) sx, sy, ex, ey = fnPlotLines('Top right', ex, ey, sx, sy, -1, 0, 0, -1 ) # si el renderizado lnea a lnea fue suprimido entonces mostrar la imagen final if args.renderlines == 'n': pygame.display.update(); # graba la imagen renderizada en un archivo pygame.image.save(screen, 'lineimage.png') # muestra el resultado en 10 segundos pygame.time.wait(10000)

Trata de aadir un argumento adicional para opcionalmente deshabilitar la escritura en el archivo de registro. Esto mejorar el tiempo de renderizacin. Pista: as como has agregado el argumento necesitars agregar dos estructuras IF ya que el registro ser escrito por dos partes diferentes del cdigo. Algunas otras ideas para argumentos de lnea de comando: - permitir al usuario que indique un nombre de archivo para la imagen de salida - Especificar los colores de fondo y de las lneas a partir de una lista predefinida (negro, blanco, rojo, verde, azul) - Tener un modo de demostracin que cicle el cdigo, permitiendo mostrar muchas imgenes con colores aleatorios

31

Tiempo de preguntas y comentarios


P: En relacin con los artculos del Skutter, Uds. mencionan que puede montarse un brazo robtico. Podran por favor especificar cul brazo robtico y dnde puedo conseguirlo? Richard R: Skutter es una larga serie de artculos. El primero de ellos fue publicado en la edicin No.1 de MagPi y en l damos alguna informacin al respecto: "El kit para el brazo robtico llamado OWI Edge est actualmente disponible en Maplin electronics y emplea una simple interfaz USB para controlarlo." http://www.maplin.co.uk/roboticarm-kit-with-usb-pc-interface266257 P: Ser posible ver el magazn en un iPad en el futuro cercano o definitivamente no ser posible? John R: El site Issuu que usamos slo recin ha empezado a soportar HTML5, as que ahora debera trabajar en iPads y en iPhones etc. Otra opcin es que descargue el PDF y lo lea con iBooks. Actualmente estamos trabajando en una versin que sea independiente de la aplicacin de visualizacin. Gracias por hacer una versin impresa de MagPi (disponible en http://www.modmypi.com). Yo siempre haba impreso cada ejemplar dado que prefiero leerlo en papel. Imaginen la sorpresa cuando descubr que solo costaba 2.49 lo cual es mucho ms barato que la impresin de 32 pginas a full color que haca yo mismo! Ian P: Como usuario nuevo de Raspberry Pi, estoy muy interesado en su excelente magazn. No he tenido mayor dificultad en leer las ediciones desde la No.1 hasta la No.6 en mi computador desktop que usa Linux Mint 13. Imagnense mi decepcin cuando encontr que de esas 6 ediciones, slo la edicin No.3 poda ser abierta en mi Raspberry Pi. No estoy familiarizado con el programa MuPDF que usa Raspbian, as que pens que lo mejor era instalar y probar con el MuPDF en mi maquina con Linux Mint. El resultado es que cada edicin de MagPi abre perfectamente bien usando MuPDF en mi mquina con Linux. Probablemente esto no sea de su incumbencia tcnica, pero pienso que deberan saber que un nmero creciente de usuarios de Raspberry Pi no pueden leer su magazn. Lloyd R: Este problema se extiende a otros archivos PDF. MuPDF parece trabajar bien para algunos usuarios y para otros no. Personalmente remov MuPDF y he estado usando xPDF el cual trabaja bien con todo. Ud. puede hacer lo mismo siguiendo estos comandos:
$ sudo apt-get remove MuPDF $ sudo apt-get install xPDF

The MagPi is a trademark of The MagPi Ltd. Raspberry Pi is a trademark of the Raspberry Pi foundation. The MagPi magazine is collaboratively produced by an independent group of Raspberry Pi owners, and is not affiliated in any way with the Raspberry Pi Foundation. It is prohibited to commercially produce this magazine without authorization from The MagPi Ltd. Printing for non commercial purposes is agreeable under the Creative Commons license below. The MagPi does not accept ownership or responsibility for the content or opinions expressed in any of the articles included in this issue. All articles are checked and tested before the release deadline is met but some faults may remain. The reader is responsible for all consequences, both to software and hardware, following the implementation of any of the advice or code printed. The MagPi does not claim to own any copyright licenses and all content of the articles are submitted with the responsibility lying with that of the article writer. This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. To view a copy of this license, visit:

editor@themagpi.com

http://creativecommons.org/licenses/by-nc-sa/3.0/

Alternatively, send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041 , USA.

32

You might also like