<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>C.I.r.E.</title>
	<atom:link href="http://webdelcire.com/wordpress/feed" rel="self" type="application/rss+xml" />
	<link>http://webdelcire.com/wordpress</link>
	<description>Club de Informática, robótica y Electrónica.</description>
	<lastBuildDate>Mon, 14 May 2012 16:34:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>OSHWCon 2012</title>
		<link>http://webdelcire.com/wordpress/archives/2004</link>
		<comments>http://webdelcire.com/wordpress/archives/2004#comments</comments>
		<pubDate>Mon, 14 May 2012 14:41:18 +0000</pubDate>
		<dc:creator>JMN</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://webdelcire.com/wordpress/?p=2004</guid>
		<description><![CDATA[Se ha anunciado el OSHWCon 2012 que tendrá lugar los días 21, 22 y 23 de septiembre en Madrid. Segunda edición de este evento organizado por Synusia, cuya entrada es gratuita, y totalmente recomendable para todos los que nos gustan estos temas. El año pasado asístimos y sin duda este año repetiremos. Copio el correo que [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-2005" title="blogbuzz_logo" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/05/blogbuzz_logo.png" alt="" width="600" height="160" /></p>
<p style="text-align: justify;">Se ha anunciado el <a href="http://oshwcon.org/es" target="_blank">OSHWCon 2012</a> que tendrá lugar los días 21, 22 y 23 de septiembre en Madrid. Segunda edición de este evento organizado por <a href="http://www.synusia.es/" target="_blank">Synusia</a>, cuya entrada es gratuita, y totalmente recomendable para todos los que nos gustan estos temas. El año pasado asístimos y sin duda este año repetiremos.</p>
<p style="text-align: justify;">Copio el correo que ha enviado la organización para quien no conozca este encuentrro:</p>
<p><span id="more-2004"></span></p>
<p style="text-align: justify;">Por segundo año consecutivo, desde Synusia queremos anunciar que durante los días 21, 22 y 23 de septiembre se celebrará el OSHWCon 2012 en Madrid. El OSHWCon es un encuentro anual de 3 días que tiene como objetivo difundir el uso del Hardware Libre y  promocionar la electrónica y la filosofía del «Hazlo tú mismo». Tendrá lugar en el Centro de Formación Padre Piquer de Madrid los días 21, 22 y 23 de septiembre de 2012.</p>
<p><a href="http://oshwcon.org" target="_blank">http://oshwcon.org</a></p>
<p>La anterior edición del OSHWCon, el año pasado, fue un auténtico éxito gracias a la calidad de las ponencias y al interés de los asistentes. Más de 350 personas acudieron a compartir conocimientos y a poner en común técnicas y proyectos basados en el conocimiento libre.</p>
<p>Durante la OSHWCon se ofrecerán charlas, talleres, mesas redondas, exposición de proyectos personales y sobre todo, un lugar de encuentro para profesionales y aficionados al mundo de la electrónica. La asistencia es libre y gratuita y está pensada para que nadie se quede fuera. Se programarán desde actividades de iniciación, hasta charlas y talleres de alto nivel técnico.</p>
<p>A partir del día 14 de Mayo queda abierto el plazo de aceptación de ponencias, talleres y presentaciones de proyectos personales, que este año tendrán premio. Los temas de interés de la organización quedan recogidos en el call4papers que puede ser consultado en:</p>
<p><a href="http://oshwcon.org/es/call4papers" target="_blank">http://oshwcon.org/es/<wbr>call4papers</wbr></a> (Castellano)<br />
<a href="http://oshwcon.org/ca/call4papers" target="_blank">http://oshwcon.org/ca/<wbr>call4papers</wbr></a> (Catalán)<br />
<a href="http://oshwcon.org/en/call4papers" target="_blank">http://oshwcon.org/en/<wbr>call4papers</wbr></a> (Inglés)</p>
<p>El plazo de presentación de actividades termina el día 23 de julio y en próximos días comunicaremos los premios para los mejores proyectos personales OSHW que se presenten, así como las bases del concurso.</p>
<p>Las páginas para realizar las propuestas de actividades están disponibles en:</p>
<p><a href="http://oshwcon.org/es/propuesta_charla" target="_blank">http://oshwcon.org/es/<wbr>propuesta_charla</wbr></a> (Castellano)<br />
<a href="http://oshwcon.org/ca/proposa_activitat" target="_blank">http://oshwcon.org/ca/proposa_<wbr>activitat</wbr></a> (Catalán)<br />
<a href="http://oshwcon.org/en/suggestyourtalk" target="_blank">http://oshwcon.org/en/<wbr>suggestyourtalk</wbr></a> (Inglés)</p>
<p>Como parte de nuestra idea de compartir el conocimiento la entrada es totalmente gratuita, aunque por motivos de aforo es necesario realizar inscribirse. Dispondremos de 450 plazas para asistentes que quedarán disponibles a partir del día 1 de junio.</p>
<p>Por favor, rogamos máxima difusión del call4papers y animamos a toda la comunidad del Hardware Libre a participar con alguna actividad. Así mismo, agradecemos cualquier tipo de ayuda organizativa. Para cualquier duda o consulta podéis consultarnos en <a href="mailto:oshwcon@oshwcon.org" target="_blank">oshwcon@oshwcon.org</a>.</p>
<p>Además, anunciamos la creación de una lista de anuncios para que podáis manteneros informados fácilmente. Esta lista sólo se usará para correos importantes y es de sólo lectura. Está disponible en:</p>
<p><a href="http://lists.oshwcon.org/listinfo/oshwcon-announce" target="_blank">http://lists.oshwcon.org/<wbr>listinfo/oshwcon-announce</wbr></a></p>
<p>Esperamos veros este año en el OSHWCon. ¡Impulsemos el uso de tecnologías abiertas y libres!</p>
Visitas :163]]></content:encoded>
			<wfw:commentRss>http://webdelcire.com/wordpress/archives/2004/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Resumen AESSBot 2012</title>
		<link>http://webdelcire.com/wordpress/archives/1964</link>
		<comments>http://webdelcire.com/wordpress/archives/1964#comments</comments>
		<pubDate>Tue, 08 May 2012 18:46:53 +0000</pubDate>
		<dc:creator>JMN</dc:creator>
				<category><![CDATA[Robótica]]></category>

		<guid isPermaLink="false">http://webdelcire.com/wordpress/?p=1964</guid>
		<description><![CDATA[El pasado fin de semana tuvo lugar en Barcelona el AESSBot 2012, concurso de robótica al que asistí junto a Maiki y Pelayo para participar en las pruebas de MiniSumo y Velocistas, un fin de semana y concurso de robótica muy entretenido que paso a resumir.. EL viernes por la tarde después de quedar en [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">El pasado fin de semana tuvo lugar en Barcelona el <a href="http://aess.upc.es/aessbot/index.html" target="_blank">AESSBot 2012</a>, concurso de robótica al que asistí junto a Maiki y Pelayo para participar en las pruebas de MiniSumo y Velocistas, un fin de semana y concurso de robótica muy entretenido que paso a resumir..</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1965" title="aessbot1" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/05/aessbot1.jpg" alt="" width="320" height="240" /></p>
<p><span id="more-1964"></span></p>
<p style="text-align: justify;">EL viernes por la tarde después de quedar en el Medialab salimos para Barcelona en el AVE, llegar, cenar y quedamos a las 12:00 de la noche con Jonathan de la organización del AESSBot (gracias), que venía con un equipo de Sevilla para recogernos y llevarnos al hostal que la organización había reservado a los participantes, donde también nos encontramos con la gente de A.R.D.E. Madrid que había preparado un robot de sumo para el concurso.</p>
<p style="text-align: justify;">El concurso empezaba a las 8 de la mañana, nos recibieron con un desayuno y nos dieron una bolsa de comics a cada equipo y una camiseta del concurso a cada participante, dejamos todos los trastos en la habitación que había para ello, con comida, mesas y herramientas para trabajar en los robots y poder pasar la homologación de los distintos robots hasta las 10 de la mañana que empezaban las fases clasificatorias, homologamos un minisumo y cuatro velocistas (uno de ellos en el último minuto) y tras la charla de la organización a todos los participantes empezaron las clasificatorias de minisumo y velocistas.</p>
<p style="text-align: justify;">La ronda de clasificación de velocistas no era la clásica de sumar el tiempo de 2 vueltas que se suelen ver en la mayoría de los concursos, la organización se había currado un sistema para medir el tiempo que tardaba el robot en dar cada vuelta, con varios sensores distribuidos a lo largo del recorrido lo que permitía conocer el tiempo que hacía el robot en los distintos sectores de la pista (estilo Fórmula 1),</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1966" title="aessbot2" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/05/aessbot2.jpg" alt="" width="640" height="428" /></p>
<p style="text-align: justify;">En la imagen se puede ver parte de la pista de velocistas, donde Arnau (uno de los participantes) se prepara para comenzar la ronda de clasificación de su robot, los arcos miden el tiempo que tarda en recorrer el robot los distintos sectores del circuito, creo recordar que había 6 arcos a lo largo de los algo más de 12 metros de recorrido, arriba en el monitor se puede ver el robot en la pista según la vista de una de las cámaras, también aparece el tiempo de vuelta actual y de los distintos sectores, el tiempo de carrera y el tiempo de vuelta más rápido durante la carrera de clasificación del robot, que sería el que contaría para pasar a las finales.</p>
<p style="text-align: justify;">En el concurso había 23 velocistas (si recuerdo correctamente) de los que 8 pasarían a las finales de la tarde, los participantes tenían dos intentos de 3 minutos donde se les anotaba el tiempo de vuelta más rápido, en este tiempo el participante podía coger el robot y cambiar la configuración de éste (sin que se parase el reloj de los 3 minutos), los 8 robots que tardasen menos tiempo en dar una vuelta en uno de sus dos intentos de 3 minutos pasarían a las carreras de robot contra robot de la tarde. Entre el primer y segundo intento había aproximadamente una hora que los participantes aprovecharon para trabajar en los robots (más sobre ésto más tarde).</p>
<p style="text-align: justify;">Al haber tenido la pista con poco tiempo (una semana) no tuvimos tiempo de preparar y probar un programa para detectar las curvas y rectas y establecer distintas constantes y velocidades en éstas, así que llevamos un programa muy simple de velocidad constante y Kp y Kd fijas durante todo el recorrido, con el que tuvimos la suerte de clasificar los 4 robots que llevabamos entre los 3 para la tarde. El robot que entró octavo fue la versión del <a href="http://webdelcire.com/wordpress/archives/350" target="_blank">Robot Zero</a> de este blog (que marcó un tiempo de vuelta rápida de 4.9s (2.5 m/s de velocidad media en la vuelta aproximadamente), los otros tres robots que lelvamos con la nueva electrónica (sin usar los encoders ya que no llevabamos el programa preparado) entraron tercero, sexto y séptimo, 4.6 s el más rápido.</p>
<p style="text-align: justify;">Junto a nosotros entraron los robots de Dani y Alberto (segundo y cuarto clasificado), Silvestre y Piolin, ya conocidos por la mayoría de los que seguimos los concursos y que suelen ser los robots favoritos este año, y dos robots de Andreu del equipo Smith (que domina últimamente el sumo), Smith Pelopincho y Peloondulado (primero y quinto clasificado, 4.4-4.5 s el tiempo de vuelta más rápido), que para mi fueron la sorpresa del concurso e hicieron sudar a Piolin en las finales de la tarde. Otros robots con bastante trabajo quedaron fuera de las finales pero que seguro nos lo pondrán difícil en el futuro, estuve viendo los robots que llevaban los participantes y alguno de ellos promete bastante.</p>
<p style="text-align: justify;">Pelopincho:</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1969" title="aessbot3" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/05/aessbot3.jpg" alt="" width="640" height="480" /></p>
<p style="text-align: justify;">Pelopincho es un robot parecido al que hemos estado desarrollando aquí en el blog, según me contaba Andreu que nos has seguido desde que empezamos con el Robot Zero (gracias), usa motores de Pololu, una Baby Orangutan como microcontrolador y placa de sensores de Pololu (creo recordar que me dijo que sólo usa 4 sensores), la novedad es que lleva una hélice para aumentar la normal del robot. El robot tan sólo pesa 65 gramos, la hélice le proporciona un empuje de 15 gramos más, lo que le da una mayor fuerza de rozamiento y por tanto entrar y correr más en las curvas. Un robot que espero poder seguir comentanto en este blog, ya que también implementaba una idea para detectar las curvas y las rectas sin que dependan del radio y que puede funcionar muy bien en los robots (nada más que tenga un rato me miro lo que me has mandado Andreu).</p>
<p style="text-align: justify;">Al mismo tiempo que la clasificatoria de Velocistas se realizaba también la de MiniSumo, donde me dieron una buena paliza en mi primer intento de minisumo de entradas anteriores en este blog..</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1972" title="aessbot4" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/05/aessbot4.jpg" alt="" width="640" height="428" /></p>
<p style="text-align: justify;">Los combates se podían ver en los monitores y las cámaras podían medir el tiempo de encendido de los minisumo, por si alguno de ellos empezaba a moverse antes de los 5 segundos reglamentarios. Creo recordar que eramos 12 robots incritos en esta prueba y teníamos que luchar todos contra todos, pasando a la tarde los 8 robots que mejor lo hiciesen. Destacar los robots del equipo Smith que llevaba 5 minisumos (me ganaron los 5 x_x) consiguiendo que entrasen todos a las finales. Mi robot ganó a 3 oponentes (uno de ellos no se presentó) y perdió contra el resto.</p>
<p style="text-align: justify;">Una vez terminadas las clasificaciones de sumo y velocistas, serían las dos de la tarde más o menos, tuvieron lugar la de rastreadores y sumo. Me suena que había 21 robots de sumo y 9 de rastreadores, pasaban los 8 mejores de cada categoría a la tarde. No seguí la clasificatoria ya que aproveché para irme a comer los bocadillos que nos había preparado la organización.. Lo que si recuerdo es al equipo ESIBOT que se había dejado encendido el robot por la noche y por la mañana no les funcionaba, se dieron cuenta cuando empezó la prueba y tuvieron que desmontar y montar el sumo entero mientras ya estaban en marcha los combates, aún así pasaron a las finales e hicieron un buen papel.</p>
<p style="text-align: justify;">No tengo fotos de la ronda de clasificación de sumo y rastreadores (es más las anteriores se las he cogido prestadas a Terraguea45 del foro de Arduino =P).</p>
<p style="text-align: justify;">A las 3 ó las 4 de la tarde comenzaron las finales, las gradas estaban llenas de gente (en algunos momentos como se saliese fuera podría resultar difícil hasta volver a entrar), y siendo el recinto donde se desarrollaba el evento tan grande no hubiese estado mal que le hubieran dejado un poco más de espacio al concurso..</p>
<p style="text-align: justify;">Se comenzó con la final de Rastreadores, no puedo contar mucho sobre esta prueba y robots que participan en ella ya que nunca la he seguido, gana el robot que tarde menos tiempo en recorrer el circuito desde que pasa por el arco de entrada al de salida, las líneas negras en las bifurcaciones indican el camino más corto, el robot ganador hizo un tiempo cercano a los 9 s.</p>
<p><iframe src="http://www.youtube.com/embed/DBNULZEwFHo" frameborder="0" width="640" height="360"></iframe></p>
<p>Concluida la final de rastreadores emepezó la de MiniSumo, donde había 5 robots de un mismo participante!, el ganador fue Mini-JMV del <a href="http://www.dpebots.com/principal.html" target="_blank">equipo D.P.E. Bots</a> que venció la final a uno de los robots del equipo Smith.</p>
<p><iframe src="http://www.youtube.com/embed/rt6yVh5K1Fk?rel=0" frameborder="0" width="640" height="360"></iframe></p>
<p style="text-align: justify;">Mini-JMV es el robot negro que gana el primer combate al robot del equipo Smith ya que éste pierde un componente durante el transcurso del combate (no se puede caer ninguna pieza).</p>
<p style="text-align: justify;">Terminado el sumo comenzaron los velocistas donde teníamos nuestros cuatro robots, estabamos muy lejos de los puestos de premios ya que los robots de Dani y Alberto por un lado y los de Andreu por otro eran muy superiores a los nuestros, ya que los nuestros llevaban un programa simple de velocidad y constantes fijas. No tengo todos los vídeos de estas pruebas ya que estabamos los tres participando, pongo los que tengo y me resultan más interesantes, pudimos ver varias carreras muy largas en estas finales.</p>
<p style="text-align: justify;">Enfrentamiento para pasar a semifinales de Pelopincho (o peloondulado, no sé cuál es de los dos) contra Piolin, carreras igualadísimas, las dos primeras resultaron en empate, se acabo el tiempo y en la tercera creo recordar que Pelopincho pisó una línea roja, pasando a la siguiente eliminatoria Piolin. Y es que las carreras estuvieron tan emocionantes que hasta el árbitro que llevaba la cuenta del tiempo no se dió cuenta del paso de éste&#8230;</p>
<p style="text-align: justify;">Una de las carreras Piolin (robot más ancho) vs Pelopincho/ondulado (robot más fino), 4 minutos de duración.</p>
<p><iframe src="http://www.youtube.com/embed/V_Jy8xyKf94?rel=0" frameborder="0" width="640" height="360"></iframe></p>
<p style="text-align: justify;">Nuestros robots iban a velocidad constante haciendo buen tiempo para lo que teníamos de programa (en este vídeo Pelayo le da una paliza a Maiki mientras yo grabo ¬¬):</p>
<p><iframe src="http://www.youtube.com/embed/prHzx0xg0jM?rel=0" frameborder="0" width="640" height="360"></iframe></p>
<p>El ganador del concurso fue Silvestre ganando la final 2-0 a Piolin, no tuvo ni que ponerlo al máximo de velocidad para ganar el concurso, el tercer clasificado fue Pelopincho/ondulado que ganó a uno de nuestros robots 2-1. El único vídeo que tengo de Silvestre (robot verde) es éste, eliminando a uno de nuestros robots (robot rojo) en semifinales:<br />
<iframe src="http://www.youtube.com/embed/OV_4WC1HzQU?rel=0" frameborder="0" width="640" height="360"></iframe></p>
<p style="text-align: justify;">Por último quedaba la final de sumo, donde los mejores 8 robots de la mañana se veían en las eliminatorias, los ganadores fueron dos sumos del equipo Smith (no tengo el vídeo) que ganaron las semifinales a Pegasus (uno de los robots más veteranos de los concursos, 8 años) y a ESIBOT (que al principio del día no funcionaba y todo pintaba bastante mal para él).</p>
<p style="text-align: justify;">El tercero fue Pegasus (robot negro) en unos combates igualadísimos con SuperESIBOT (robot rojo).</p>
<p><iframe src="http://www.youtube.com/embed/QX0ha-WlsBk?rel=0" frameborder="0" width="640" height="360"></iframe></p>
<p style="text-align: justify;">Pues esto fue el sábado en el AESSBot 2012, un concurso muy entretenido con un nivel alto en todas las pruebas donde los robots favoritos han hecho lo que se esperaba de ellos..El que quiera competir con estos robots va a tener que currarselo bastante.</p>
<p style="text-align: justify;">El domingo entregaban los premios y había otra prueba, no fuimos ya que nos dimos un paseito por Barcelona hasta que salió el tren a las cinco y media de la tarde, a las ocho en Atocha, no se puede pedir más.</p>
<p style="text-align: justify;">No sé si la organización pasará un cuestionario a los participantes, por si no lo pasa dejo aquí algunas de mis impresiones (lo que he podido ver del concurso, que debido a que estabamos con los robots no han sido todas las pruebas):</p>
<p style="text-align: justify;">Según la normativa cuando se homologan los robots no se puede cambiar nada de éstos, ni recargar las baterías. Nosotros como muchos de los participantes ajustamos los robots un poco (no mucho ya que con el programa que llevábamos no había mucho que tocar, más bien nada, cambiamos alguna rueda para probar y poco más..) y dejamos cargando la batería cuando nos fuimos a comer en algún robot, tampoco teníamos la necesidad ya que con una batería podemos hacer varios concursos, además llevamos un dc-dc por lo que la alimentación del motor no depende de la batería. Muchos de los participantes hacían lo mismo o almenos yo escuchaba continuamente a los cargadores de Lipo avisar de batería cargada. En el resto de concursos yo siempre he visto a los participantes tocar el programa sobre la pista del concurso.</p>
<p style="text-align: justify;">Por lo que esta norma la mayoría de los casos no se aplica ya que no tiene sentido, si tenemos 12 horas de concurso lo normal es poder trabajar en los robots, además es lo que nos gusta y por lo que vamos al concurso.</p>
<p style="text-align: justify;">Una vez que empiezan las finales comprendo que los robots no se puedan tocar y recargar, a no ser que haya que hacer una reparación en un tiempo establecido, ya que no se le puede estar haciendo esperar al público, nosotros en las finales no tocamos nada. Lo que si permitiría (como surgió el tema en el concurso) es el cambio de baterías, mientras este cambio se haga en un tiempo muy rápido (inferior al minuto) que no haga esperar a la gente que ve el concurso. Si el objetivo es obtener la mayor velocidad y que la prueba sea más espectacular, no poder cambiar la batería de una forma rápida es una limitación en el diseño que puede tener un efecto importante en lo anterior.</p>
<p style="text-align: justify;">Evitar que pase todo lo anterior en un concurso largo es imposible de hacer, ya que para eso los robots tendrían que estar bajo llave.</p>
<p style="text-align: justify;">Por lo demás sólo felicitar a los participantes y a la organización. Su actitud era la correcta (aquí todos venimos (o la mayoría) a divertirnos) y la preparación técnica de las pruebas del concurso estaba muy bien, a mi el concurso de velocistas me ha encantado, aquí se ve que la organización ha trabajado en la prueba tanto como los constructores en sus robots, y esto es muy importante ya que para que esto vaya a más tienen que hacerlo tanto los organizadores como los participantes.</p>
<p style="text-align: justify;">Por otro lado el trato recibido también ha sido genial, y los pequeños detalles como desayuno, comida y camiseta cuentan bastante y animan a volver.</p>
<p style="text-align: justify;">Estos son los concursos y organizadores por los que los patrocinadores deben apostar <img src='http://webdelcire.com/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1978" title="aessbot5" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/05/aessbot5.jpg" alt="" width="640" height="480" /></p>
<p style="text-align: justify;">Gracias por este AESSBot!, esperamos poder volver al próximo (Noviembre).</p>
Visitas :506]]></content:encoded>
			<wfw:commentRss>http://webdelcire.com/wordpress/archives/1964/feed</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>MiniSumo AESSBot 2012</title>
		<link>http://webdelcire.com/wordpress/archives/1941</link>
		<comments>http://webdelcire.com/wordpress/archives/1941#comments</comments>
		<pubDate>Tue, 01 May 2012 02:07:48 +0000</pubDate>
		<dc:creator>JMN</dc:creator>
				<category><![CDATA[Robótica]]></category>

		<guid isPermaLink="false">http://webdelcire.com/wordpress/?p=1941</guid>
		<description><![CDATA[Preparado el primer robot del AESSBot 2012, un minisumo (hecho muy deprisa y corriendo) basado en el kit de Fingertech Robotics que ha facilitado enormemente la tarea de comenzar en la prueba, y que esperemos que almenos llegue a homologar y participar en los combates contra otros robots. Debido al poco tiempo que hemos tenido [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Preparado el primer robot del <a href="http://aess.upc.es/aessbot/index.html" target="_blank">AESSBot 2012</a>, un minisumo (hecho muy deprisa y corriendo) basado en el kit de <a href="http://webdelcire.com/wordpress/archives/1916" target="_blank">Fingertech Robotics</a> que ha facilitado enormemente la tarea de comenzar en la prueba, y que esperemos que almenos llegue a homologar y participar en los combates contra otros robots.</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1942" title="minisumo1" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/05/minisumo1.jpg" alt="" width="320" height="240" /></p>
<p style="text-align: justify;">
<p><span id="more-1941"></span></p>
<p style="text-align: justify;">Debido al poco tiempo que hemos tenido para preparar el robot hemos hecho lo primero que ha salido.. La idea ha sido colocar los sensores lo más bajo posibles para detectar a los robots más pequeños, como sensor según nos han recomendado varios participantes de las pruebas de sumo (gracias) hemos elegido dos <a href="http://sharp-world.com/products/device/lineup/data/pdf/datasheet/gp2y0d340k_e.pdf" target="_blank">GP2Y0D340K</a>, que se encargan de detectar al oponentes a larga distancia, y un GP2Y0D310K (sensor central) que detecta al oponente a una distancia más corta, ambos modelos son sensores digitales que sólo nos indican si hay un objeto delante.</p>
<p style="text-align: justify;">Junto a los sensores de suelo que venían con el robot estos son todos los sensores que lleva el robot, para integrarlos en el robot se han hecho un par de pcbs, un <a href="http://webdelcire.com/wordpress/wp-content/uploads/2012/05/placasensores.pdf" target="_blank">pcb</a> que lleva los sensores para detectar al oponente y donde se conectan los sensores de suelo delanteros, y otro <a href="http://webdelcire.com/wordpress/wp-content/uploads/2012/05/placasensoressuelo.pdf" target="_blank">pcb</a> para acoplar cada sensor de suelo al robot, se pueden ver en las imagenes (el esquema de los sensores es el recomendado en su datasheet).</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1947" title="minisumo2" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/05/minisumo2.jpg" alt="" width="640" height="480" /></p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1948" title="minisumo3" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/05/minisumo3.jpg" alt="" width="640" height="480" /></p>
<p style="text-align: justify;">En la imagen se puede ver que hay dos baterías,<a href="http://www.fingertechrobotics.com/proddetail.php?prod=R360-20-2" target="_blank"> una de 7.4 V</a> para alimentar a los motores y <a href="http://www.sparkfun.com/products/339" target="_blank">otra de 3.7 V</a> como la que llevamos en los robots velocistas, para alimentar al microcontrolador y sensores del robot.</p>
<p style="text-align: justify;">Con esta placa de sensores se pretende detectar hacia donde se mueve el oponente, de tal forma que si lo perdemos mirando cuál ha sido el último sensor que lo ha detectado podemos saber hacia que lado ir a buscarlo. Si el oponente está muy cerca los sensores pueden dar una lectura falsa, los sensores de larga distancia darán esa lectura falsa antes que el sensor central de corta distancia, también con este sensor sabemos cuando el robot está más cerca, llevar sensores de varias distancias nos da más opciones en la programación a la hora de solucionar los problemas que puedan surgir en el combate.</p>
<p style="text-align: justify;">Los robots de sumo además de los sensores delanteros suelen llevar sensores en los lados y detrás para detectar al oponente, en este robot no hemos tenido tiempo de incluirlos.</p>
<p style="text-align: justify;">En el vídeo un ejemplo del funcionamiento de los sensores, el robot sigue a la caja y cuando el sensor central detecta que está cerca avanza, cuando los sensores de suelo ven la línea negra el robot retrocede.</p>
<p><iframe src="http://www.youtube.com/embed/Rzq9O965oHs?rel=0" frameborder="0" width="640" height="360"></iframe></p>
<p style="text-align: justify;">Los sensores van muy bajos y por lo tanto es posible que se lleven los primeros golpes, por lo que hay que protegerlos, sin herramientas para trabajar los materiales que estos robots requieren lo único que he puesto es un trozo de aluminio, esperemos que sea suficiente..</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1951" title="minisumo4" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/05/minisumo4.jpg" alt="" width="640" height="480" /></p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1952" title="minisumo5" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/05/minisumo5.jpg" alt="" width="640" height="480" /></p>
<p style="text-align: justify;">Para tener el robot completo falta la placa de la electrónica que lea los sensores y controle los motores, para controlar los motores un <a href="http://www.pololu.com/catalog/product/708" target="_blank">puente en H de Pololu </a>que tenía de otro robot conectando dos motores a cada canal, es más que suficiente para estos motores tan pequeños.</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1954" title="minisumo6" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/05/minisumo6.jpg" alt="" width="640" height="480" /></p>
<p style="text-align: justify;">En esta placa del puente pinchamos otra con un ATmega328p, <a href="http://webdelcire.com/wordpress/wp-content/uploads/2012/05/placamicro.pdf" target="_blank">pcb</a>, que se va a encargar de leer los sensores del robot y establecer el sentido de giro y velocidad de los motores.</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1955" title="minisumo8" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/05/minisumo8.jpg" alt="" width="640" height="480" /></p>
<p style="text-align: justify;">La placa incluye un <a href="http://www.pololu.com/catalog/product/791">dc-dc de Pololu</a> para subir la tensión de la lipo de 3.7V a los 5V que necesitan los sensores y el microcontrolador para trabajar, en este caso un poco más ya que también he añadido un regulador disipativo para proteger la electrónica, no sea que se toque el ajuste del dc-dc dando éste más de 5V y quememos la electrónica (sensores, micro y puente en H), la electrónica es cara y la diferencia de consumo no la vamos a notar ya que la capacidad de la lipo es más que suficiente para muchos combates, se va a descargar antes la batería de los motores.</p>
<p style="text-align: justify;">Un pulsador para comenzar el combate, conector de sensores, conector al puente en H y unos pocos leds para ayudar a la programación, lo primero que ha salido =)</p>
<p style="text-align: justify;">Un diseño muy sencillo de robot con el que comenzar en la prueba, 474 gramos y es que el lastre ayuda bastante a alcanzar los 500 gramos necesarios para maximizar nuestra fuerza de empuje.</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1957" title="minisumo9" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/05/minisumo9.jpg" alt="" width="640" height="480" /></p>
<p style="text-align: justify;">En cuanto a la programación del robot lo que ha dado tiempo a hacer esta tarde y así se queda, y es que la pista de velocistas salió el viernes pasado y aún nos queda programarlos&#8230; un programa simple de girar y moverse para detectar al oponente a una velocidad baja, y cuando el sensor central de corta distancia lo detecta poner el pwm al máximo.</p>
<p><iframe src="http://www.youtube.com/embed/zM80Y2ggx3A" frameborder="0" width="640" height="360"></iframe></p>
<p>Pues éste es nuestro primer intento de minisumo que esperemos homologue y tenga sus primeros combates en el AESSBot 2012.</p>
<p>Adjunto el código del segundo vídeo hecho esta tarde (probablemente lleno de errores =) ) y que va a llevar el robot a falta de cambiar los sensores de línea.</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">//MiniSumo</span>
<span style="color: #339933;">#define F_CPU 16000000UL	</span>
<span style="color: #339933;">#include &lt;avr/io.h&gt;</span>
<span style="color: #339933;">#include &lt;util/delay.h&gt;</span>
<span style="color: #339933;">#include &lt;avr/interrupt.h&gt;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Motores</span>
&nbsp;
<span style="color: #339933;">#define INA1 PORTB2</span>
<span style="color: #339933;">#define INB1 PORTB1</span>
<span style="color: #339933;">#define PWM1 PORTD5</span>
<span style="color: #339933;">#define PWM2 PORTD6</span>
<span style="color: #339933;">#define INB2 PORTD7</span>
<span style="color: #339933;">#define INA2 PORTB0</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Leds</span>
&nbsp;
<span style="color: #339933;">#define LEDY PORTC5</span>
<span style="color: #339933;">#define LEDR PORTC4</span>
<span style="color: #339933;">#define LEDV PORTC3</span>
<span style="color: #339933;">#define LEDA PORTC2</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Entradas</span>
&nbsp;
<span style="color: #339933;">#define PULSADOR PORTC0</span>
<span style="color: #339933;">#define SENSORST PORTC1</span>
<span style="color: #339933;">#define SENSORSD PORTD0</span>
<span style="color: #339933;">#define SENSORSI PORTD4</span>
<span style="color: #339933;">#define SENSORI PORTD3</span>
<span style="color: #339933;">#define SENSORC PORTD2</span>
<span style="color: #339933;">#define SENSORD PORTD1</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Funciones</span>
&nbsp;
<span style="color: #993333;">void</span> inicializar_micro<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #993333;">void</span> motor_derecho<span style="color: #009900;">&#40;</span><span style="color: #993333;">char</span> movimiento<span style="color: #339933;">,</span> <span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> velocidad<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #993333;">void</span> motor_izquierdo<span style="color: #009900;">&#40;</span><span style="color: #993333;">char</span> movimiento<span style="color: #339933;">,</span> <span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> velocidad<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Variables</span>
<span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> velocidada <span style="color: #339933;">=</span> <span style="color: #0000dd;">255</span><span style="color: #339933;">;</span> 
<span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> velocidadg <span style="color: #339933;">=</span> <span style="color: #0000dd;">190</span><span style="color: #339933;">;</span> 
<span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> velocidad <span style="color: #339933;">=</span> <span style="color: #0000dd;">127</span><span style="color: #339933;">;</span>
<span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> velocidad_avance <span style="color: #339933;">=</span> <span style="color: #0000dd;">100</span><span style="color: #339933;">;</span>
<span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> velocidadl <span style="color: #339933;">=</span> <span style="color: #0000dd;">64</span><span style="color: #339933;">;</span>
<span style="color: #993333;">volatile</span> <span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> retroceder <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #993333;">volatile</span> <span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> ultimo_sensor <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span> <span style="color: #993333;">void</span> <span style="color: #009900;">&#41;</span> 
<span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #993333;">char</span> pulsador <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
	<span style="color: #993333;">char</span> sentido <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	<span style="color: #993333;">static</span> <span style="color: #993333;">int</span> tiempo <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
&nbsp;
	inicializar_micro<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	PORTC <span style="color: #339933;">|=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>LEDR<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span>pulsador <span style="color: #339933;">!=</span> <span style="color: #0000dd;">0</span> <span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		pulsador <span style="color: #339933;">=</span> PINC <span style="color: #339933;">&amp;</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>PULSADOR<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	PORTC <span style="color: #339933;">&amp;=</span> ~<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>LEDR<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_delay_ms<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">500</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_delay_ms<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">500</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	PORTC <span style="color: #339933;">|=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>LEDR<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_delay_ms<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">500</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_delay_ms<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">500</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	PORTC <span style="color: #339933;">&amp;=</span> ~<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>LEDR<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_delay_ms<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">500</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_delay_ms<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">500</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	PORTC <span style="color: #339933;">|=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>LEDR<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_delay_ms<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">500</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_delay_ms<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">500</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	PORTC <span style="color: #339933;">&amp;=</span> ~<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>LEDR<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_delay_ms<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">500</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_delay_ms<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">500</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	sei<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//Habilitar interrupciones globales.</span>
&nbsp;
	motor_derecho<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #339933;">,</span><span style="color: #0000dd;">255</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	motor_izquierdo<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #339933;">,</span><span style="color: #0000dd;">255</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span> <span style="color: #0000dd;">1</span> <span style="color: #009900;">&#41;</span> 
	<span style="color: #009900;">&#123;</span>
&nbsp;
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>retroceder <span style="color: #339933;">==</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			PORTC <span style="color: #339933;">&amp;=</span> ~<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>LEDY<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			PORTC <span style="color: #339933;">&amp;=</span> ~<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>LEDV<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			PORTC <span style="color: #339933;">&amp;=</span> ~<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>LEDR<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			motor_derecho<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span>velocidad<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			motor_izquierdo<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span>velocidad<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			tiempo <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
&nbsp;
			_delay_ms<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">500</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			retroceder <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
&nbsp;
			PORTC <span style="color: #339933;">|=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>LEDA<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>			
		<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
		<span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>PIND <span style="color: #339933;">&amp;</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>SENSORC<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">//sensore central</span>
		<span style="color: #009900;">&#123;</span>
			motor_derecho<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span>velocidada<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			motor_izquierdo<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span>velocidada<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			PORTC <span style="color: #339933;">|=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>LEDR<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			PORTC <span style="color: #339933;">&amp;=</span> ~<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>LEDV<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			PORTC <span style="color: #339933;">&amp;=</span> ~<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>LEDY<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			PORTC <span style="color: #339933;">&amp;=</span> ~<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>LEDA<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			tiempo <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//			_delay_ms(300);</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #b1b100;">else</span>
		<span style="color: #009900;">&#123;</span>
			PORTC <span style="color: #339933;">&amp;=</span> ~<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>LEDA<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#40;</span>PIND <span style="color: #339933;">&amp;</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>SENSORI<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span>  <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>PIND <span style="color: #339933;">&amp;</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>SENSORD<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
			<span style="color: #009900;">&#123;</span>
				motor_derecho<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span>velocidad<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				motor_izquierdo<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span>velocidad<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				PORTC <span style="color: #339933;">|=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>LEDV<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				PORTC <span style="color: #339933;">|=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>LEDY<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				PORTC <span style="color: #339933;">&amp;=</span> ~<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>LEDR<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				tiempo <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
			<span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>PIND <span style="color: #339933;">&amp;</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>SENSORI<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>PIND <span style="color: #339933;">&amp;</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>SENSORD<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
			<span style="color: #009900;">&#123;</span>
				motor_derecho<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span>velocidadg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				motor_izquierdo<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span>velocidadl<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				sentido <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
&nbsp;
				PORTC <span style="color: #339933;">|=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>LEDV<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				PORTC <span style="color: #339933;">&amp;=</span> ~<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>LEDR<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				PORTC <span style="color: #339933;">&amp;=</span> ~<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>LEDY<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				tiempo <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
&nbsp;
			<span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#40;</span>PIND <span style="color: #339933;">&amp;</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>SENSORI<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span>  <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>PIND <span style="color: #339933;">&amp;</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>SENSORD<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
			<span style="color: #009900;">&#123;</span>
				motor_derecho<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span>velocidadg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				motor_izquierdo<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span>velocidadl<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				sentido <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
				PORTC <span style="color: #339933;">|=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>LEDY<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				PORTC <span style="color: #339933;">&amp;=</span> ~<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>LEDR<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				PORTC <span style="color: #339933;">&amp;=</span> ~<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>LEDV<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				tiempo <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
			<span style="color: #b1b100;">else</span>
			<span style="color: #009900;">&#123;</span>
				PORTC <span style="color: #339933;">|=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>LEDY<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				PORTC <span style="color: #339933;">&amp;=</span> ~<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>LEDV<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				PORTC <span style="color: #339933;">&amp;=</span> ~<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>LEDR<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				PORTC <span style="color: #339933;">|=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>LEDA<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
				<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>tiempo <span style="color: #339933;">&lt;</span> <span style="color: #0000dd;">900</span><span style="color: #009900;">&#41;</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>sentido <span style="color: #339933;">==</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
					<span style="color: #009900;">&#123;</span>
						motor_derecho<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span>velocidad<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		  	 			motor_izquierdo<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span>velocidad<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					<span style="color: #009900;">&#125;</span>
					<span style="color: #b1b100;">else</span>
					<span style="color: #009900;">&#123;</span>
						motor_derecho<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span>velocidad<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		  	 			motor_izquierdo<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span>velocidad<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					<span style="color: #009900;">&#125;</span>
					tiempo<span style="color: #339933;">++;</span>
				<span style="color: #009900;">&#125;</span>
				<span style="color: #b1b100;">else</span>
				<span style="color: #009900;">&#123;</span>
						motor_derecho<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span>velocidad_avance<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		  	 			motor_izquierdo<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span>velocidad_avance<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		_delay_ms<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #993333;">void</span> inicializar_micro<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	DDRC <span style="color: #339933;">=</span> <span style="color: #208080;">0x3C</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">//0011 1100</span>
	PORTC <span style="color: #339933;">=</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//0000 0000</span>
	DDRB <span style="color: #339933;">=</span> <span style="color: #208080;">0x07</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">//0000 0111</span>
	PORTB <span style="color: #339933;">=</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">;</span>
	DDRD <span style="color: #339933;">=</span> <span style="color: #208080;">0xE0</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">//1110 0000</span>
	PORTD <span style="color: #339933;">=</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//Configurar PWM timer0</span>
	TCCR0A <span style="color: #339933;">=</span> <span style="color: #208080;">0xA3</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//1010 0011</span>
	TCCR0B <span style="color: #339933;">=</span> <span style="color: #208080;">0x02</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//0000 0010</span>
	OCR0A <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	OCR0B <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//Interrupciones</span>
	PCICR <span style="color: #339933;">|=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>PCIE1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Interrupción sensor trasero suelo</span>
    PCMSK1 <span style="color: #339933;">|=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>PCINT9<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//Habilitar pin</span>
&nbsp;
	PCICR <span style="color: #339933;">|=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>PCIE2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Interrupción sensore delantero suelo</span>
    PCMSK2 <span style="color: #339933;">|=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>PCINT16<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//Habilitar pines</span>
	PCMSK2 <span style="color: #339933;">|=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>PCINT20<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> motor_derecho<span style="color: #009900;">&#40;</span><span style="color: #993333;">char</span> movimiento<span style="color: #339933;">,</span> <span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> velocidad<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	OCR0B <span style="color: #339933;">=</span> velocidad<span style="color: #339933;">;</span>
	<span style="color: #b1b100;">switch</span><span style="color: #009900;">&#40;</span>movimiento<span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">:</span>
		<span style="color: #009900;">&#123;</span>
			PORTB <span style="color: #339933;">&amp;=</span> ~<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>INA1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			PORTB <span style="color: #339933;">&amp;=</span> ~<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>INB1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">:</span>
		<span style="color: #009900;">&#123;</span>
			PORTB <span style="color: #339933;">|=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>INA1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			PORTB <span style="color: #339933;">&amp;=</span> ~<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>INB1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">:</span>
		<span style="color: #009900;">&#123;</span>
			PORTB <span style="color: #339933;">&amp;=</span> ~<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>INA1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			PORTB <span style="color: #339933;">|=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>INB1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">default</span><span style="color: #339933;">:</span><span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #993333;">void</span> motor_izquierdo<span style="color: #009900;">&#40;</span><span style="color: #993333;">char</span> movimiento<span style="color: #339933;">,</span> <span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> velocidad<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	OCR0A <span style="color: #339933;">=</span> velocidad<span style="color: #339933;">;</span>
	<span style="color: #b1b100;">switch</span><span style="color: #009900;">&#40;</span>movimiento<span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">:</span>
		<span style="color: #009900;">&#123;</span>
			PORTB <span style="color: #339933;">&amp;=</span> ~<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>INA2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			PORTD <span style="color: #339933;">&amp;=</span> ~<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>INB2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">:</span>
		<span style="color: #009900;">&#123;</span>
			PORTB <span style="color: #339933;">|=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>INA2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			PORTD <span style="color: #339933;">&amp;=</span> ~<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>INB2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">:</span>
		<span style="color: #009900;">&#123;</span>
			PORTB <span style="color: #339933;">&amp;=</span> ~<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>INA2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			PORTD <span style="color: #339933;">|=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>INB2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">default</span><span style="color: #339933;">:</span><span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
ISR<span style="color: #009900;">&#40;</span>PCINT1_vect<span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">//Trasero</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>PINC <span style="color: #339933;">&amp;</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>SENSORST<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">//cambiar a línea blanca</span>
	<span style="color: #009900;">&#123;</span>
<span style="color: #666666; font-style: italic;">//		motor_derecho(1,velocidad);</span>
<span style="color: #666666; font-style: italic;">//		motor_izquierdo(1,velocidad);</span>
<span style="color: #666666; font-style: italic;">//		_delay_ms(200);</span>
&nbsp;
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>ultimo_sensor <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">//Derecho</span>
		<span style="color: #009900;">&#123;</span>
			motor_derecho<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span>velocidadg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			motor_izquierdo<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span>velocidadl<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			_delay_ms<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">200</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	
			motor_derecho<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #339933;">,</span><span style="color: #0000dd;">255</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			motor_izquierdo<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #339933;">,</span><span style="color: #0000dd;">255</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>			
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>ultimo_sensor <span style="color: #339933;">==</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">//Izquierdo</span>
		<span style="color: #009900;">&#123;</span>
			motor_derecho<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span>velocidadl<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			motor_izquierdo<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span>velocidadg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			_delay_ms<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">200</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	
			motor_derecho<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #339933;">,</span><span style="color: #0000dd;">255</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			motor_izquierdo<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #339933;">,</span><span style="color: #0000dd;">255</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>			
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	PCIFR  <span style="color: #339933;">|=</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>PCIF1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//Limpiamos el flag de interrupción.</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
ISR<span style="color: #009900;">&#40;</span>PCINT2_vect<span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">//Delantero </span>
<span style="color: #009900;">&#123;</span>
<span style="color: #666666; font-style: italic;">//	if(((PIND &amp; (1&lt;&lt;SENSORSD)) != 0) || ( (PIND &amp; (1&lt;&lt;SENSORSI)) != 0))</span>
<span style="color: #666666; font-style: italic;">//	{</span>
<span style="color: #666666; font-style: italic;">//		retroceder = 1;</span>
<span style="color: #666666; font-style: italic;">//	}</span>
&nbsp;
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>PIND <span style="color: #339933;">&amp;</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>SENSORSD<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span>	<span style="color: #666666; font-style: italic;">//cambiar a línea blanca</span>
	<span style="color: #009900;">&#123;</span>
		retroceder <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
		ultimo_sensor <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>PIND <span style="color: #339933;">&amp;</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>SENSORSI<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">//cambiar a línea blanca</span>
	<span style="color: #009900;">&#123;</span>
		retroceder <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
		ultimo_sensor <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	PCIFR  <span style="color: #339933;">|=</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&lt;&lt;</span>PCIF2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//Limpiamos el flag de interrupción.</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

Visitas :388]]></content:encoded>
			<wfw:commentRss>http://webdelcire.com/wordpress/archives/1941/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Medialab-Prado cierra hasta Otoño</title>
		<link>http://webdelcire.com/wordpress/archives/1935</link>
		<comments>http://webdelcire.com/wordpress/archives/1935#comments</comments>
		<pubDate>Thu, 26 Apr 2012 06:49:47 +0000</pubDate>
		<dc:creator>Oscar</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://webdelcire.com/wordpress/?p=1935</guid>
		<description><![CDATA[El Medialab-Prado, esta institución que ha servido para reunirnos, probar nuestros proyectos, conocernos en persona y mucho más cierra sus puertas hasta el próximo Otoño para continuar las obras de rehabilitación que se estaban haciendo en el edificio contiguo, llamado Serrería belga. El último Viernes Openlab (que era donde nos reuníamos) será el 4 de Mayo y [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://webdelcire.com/wordpress/wp-content/uploads/2012/04/IMAG0065.jpg"><img class="aligncenter size-medium wp-image-1936" title="IMAG0065" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/04/IMAG0065-300x200.jpg" alt="" width="300" height="200" /></a></p>
<p>El <a href="http://medialab-prado.es/" target="_blank">Medialab-Prado</a>, esta institución que ha servido para reunirnos, probar nuestros proyectos, conocernos en persona y mucho más cierra sus puertas hasta el próximo Otoño para continuar las obras de rehabilitación que se estaban haciendo en el edificio contiguo, llamado Serrería belga. El último <a href="http://medialab-prado.es/article/viernes_openlab" target="_blank">Viernes Openlab</a> (que era donde nos reuníamos) será el 4 de Mayo y a partir de entonces seguirán habiendo reuniones, pero con menos contenido, en <a href="http://intermediae.es/" target="_blank">Intermediae-Matadero</a> hasta que terminen las citadas obras.</p>
<p><a href="http://webdelcire.com/wordpress/wp-content/uploads/2012/04/IMAG0119.jpg"><img class="aligncenter size-medium wp-image-1937" title="IMAG0119" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/04/IMAG0119-300x200.jpg" alt="" width="300" height="200" /></a></p>
Visitas :125]]></content:encoded>
			<wfw:commentRss>http://webdelcire.com/wordpress/archives/1935/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Robots AESSBot 2012</title>
		<link>http://webdelcire.com/wordpress/archives/1916</link>
		<comments>http://webdelcire.com/wordpress/archives/1916#comments</comments>
		<pubDate>Wed, 11 Apr 2012 18:45:13 +0000</pubDate>
		<dc:creator>JMN</dc:creator>
				<category><![CDATA[Robótica]]></category>

		<guid isPermaLink="false">http://webdelcire.com/wordpress/?p=1916</guid>
		<description><![CDATA[Un poco abandonado anda el blog últimamente, y es que el tiempo que sacamos los estamos dedicando a preparar algún robot para el AESSBot 2012 (hemos hecho la preinscripción y esperamos ir), concurso patrocinado por Obra Social &#8220;la Caixa&#8221; que tendrá lugar en Barcelona el primer fin de semana de Mayo, y que pinta muy [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Un poco abandonado anda el blog últimamente, y es que el tiempo que sacamos los estamos dedicando a preparar algún robot para el <a href="http://aess.upc.es/aessbot/index.html" target="_blank">AESSBot 2012</a> (hemos hecho la preinscripción y esperamos ir), concurso patrocinado por Obra Social &#8220;la Caixa&#8221; que tendrá lugar en Barcelona el primer fin de semana de Mayo, y que pinta muy bien =). Intentaremos preparar 3 ó 4 robots velocistas (el que teníamos para el concurso de Madrid y donde decidimos no participar) y un minisumo que esperemos se pueda mover para el día del concurso.. Para empezar con la categoría de minisumo he comprado este <a href="http://www.fingertechrobotics.com/proddetail.php?prod=ft-kit-cobra-4wd-chassis" target="_blank">kit</a> de Fingertech Robotics que enseño a continuación.</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1917" title="sumo1" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/04/sumo1.jpg" alt="" width="320" height="240" /></p>
<p><span id="more-1916"></span></p>
<p style="text-align: justify;">Por unos 90 euros más envio (sobre los 15 euros por correo normal, 13 días ha tardado) podemos comprar en <a href="http://www.fingertechrobotics.com/" target="_blank">Fingertech Robotics</a> esta <a href="http://www.fingertechrobotics.com/proddetail.php?prod=ft-kit-cobra-4wd-chassis" target="_blank">base de robot minisumo</a>, incluye cuatro motores de corriente continua (podemos elegir la reductora entre varias opciones) con sus cuatro ruedas de gran agarre, tres sensores de fotodiodo y fototransistor para detectar la línea blanca que delimita la zona de la prueba de minisumo, y una base bien construida donde integra todo lo anterior. Los motores vienen pegados a la base, las ruedas se acoplan en el eje del motor y se sujetan mediante un tornillo que atraviesa la rueda, los sensores se situan en la parte inferior de la base con los taladros correspondientes para que pasen sus patas a la parte superior, en la parte inferior encontramos una plancha de acero que nos proporciona un centro de gravedad bajo y nos ayuda a conseguir los 500 gramos de robot permitidos en la normativa para maximizar nuestra fuerza de empuje.</p>
<p style="text-align: justify;">Si tenemos que montar esto nosotros, entre comprar los 4 motores, las ruedas y en fabricar la base nos va a costar lo mismo o más, sin tener en cuenta el tiempo y la necesidad de herramientas para poder trabajar estos materiales, supongo que lejos del alacance de la mayoría. Por 120-130 euros de robot con envio y aduanas me parece un precio bastante bueno para lo que ofrecen (primera impresión sin probar el kit por mi parte).</p>
<p style="text-align: justify;">El envio viene bien empaquetado (las baterías no vienen con el kit, se pueden comprar en la tienda junto a muchas otras cosas).</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1918" title="sumo2" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/04/sumo2.jpg" alt="" width="640" height="480" /></p>
<p style="text-align: justify;">Kit de la base de minisumo (click en la imagen para mayor tamaño):</p>
<p style="text-align: justify;"><a href="http://webdelcire.com/wordpress/wp-content/uploads/2012/04/sumo3b.jpg"><img class="aligncenter size-full wp-image-1920" title="sumo3" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/04/sumo3.jpg" alt="" width="640" height="480" /></a></p>
<p style="text-align: justify;">Por defecto la base del robot se envia con los motores 50:1, yo lo he pedido con los motores 20:1 que según mis cálculos (espero que no los hiciese muy mal) serían suficientes para mover el robot, <a href="http://www.fingertechrobotics.com/proddetail.php?prod=ft-spark16" target="_blank">enlace a los motores</a>.</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1921" title="sumo4" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/04/sumo4.jpg" alt="" width="543" height="225" /></p>
<p style="text-align: justify;">Mirando la tabla de esta página para los motores 20:1 nos dan un par de 0.75 kg-cm @ 6V, con una rueda de 3 cm de alto, 4 motores @ 6V, y poniendo un coeficiente estático de la rueda por lo alto (o eso espero x_x), me sale que los 20:1 son suficientes para transmitir la fuerza máxima de empuje que puede hacer el robot con una masa de 500 gr, si no me he equivocado en el cálculo que por otro lado tampoco es que lo haya pensando mucho.. y otro tema pueden ser las aceleraciones e inercias. Ante la duda lo mejor es coger los 50:1 que recomiendan las personas que han hecho este kit (ya que si los ponen por defecto es que serán los más adecuados) y tienen experiencia llevando este robot a concursos. Las ruedas tienen un agarre muy alto, si se deja el robot sobre un papel o cartulina al levantar el robot el papel se pega.</p>
<p style="text-align: justify;">Para detectar la línea blanca de la zona de combate tenemos tres sensores (dos delante en los lados y uno detrás en el centro) que se colocan por la parte inferior del robot:</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1922" title="sumo5" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/04/sumo5.jpg" alt="" width="640" height="480" /></p>
<p style="text-align: justify;">Vista lateral del robot donde aparece un sensor delantero de suelo.</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1923" title="sumo6" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/04/sumo6.jpg" alt="" width="640" height="480" /></p>
<p style="text-align: justify;">El peso total de la base es de unos 344 gramos, con la batería, electrónica y materiales adicionales para la construcción del robot será fácil alcanzar los 500 gramos máximos permitidos.</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1924" title="sumo7" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/04/sumo7.jpg" alt="" width="640" height="480" /></p>
<p style="text-align: justify;">Las dimensiones del sumo son próximas a las máximas de 10 x 10 cm permitidas, quedando un espacio entre los motores de 26 x 53 x 26 mm según la página para meter una batería lipo pequeña.</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1925" title="robot8" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/04/robot8.jpg" alt="" width="640" height="480" /></p>
<p style="text-align: justify;">Con este kit tenemos los motores, las ruedas y una base para el robot de minisumo, nos quedaría añadir los sensores para detectar al oponente (si los llevamos), la batería y la electrónica del robot. Si queremos colocar los sensores lo más bajo posibles el espacio es limitado.</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1926" title="robot9" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/04/robot9.jpg" alt="" width="640" height="480" /></p>
<p style="text-align: justify;">El sensor grande que se suele usar de infrarrojos va muy justo en ese espacio (no lo he probado aún), por lo que si queremos llevar los sensores bajos puede que haya que pensar en sensores más pequeños.</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1927" title="robot10" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/04/robot10.jpg" alt="" width="640" height="480" /></p>
<p style="text-align: justify;">Mi primera impresión de esta base (a falta de probarla) es muy buena para su precio (si, esto de hacer robots es similar a quemar el dinero), ideal para empezar con minisumo y para quien no tiene las herramientas y medios para trabajar los materiales necesarios en los robots de sumo. Ahora queda ver si conseguimos un robot con ella para el concurso..</p>
<p style="text-align: justify;">Respecto al velocista tenemos el robot que empezamos a preparar para el concurso de Madrid, por lo que la electrónica ya la tenemos más o menos lista y funcionando desde principios de año.</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1928" title="velo1" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/04/velo1.jpg" alt="" width="640" height="480" /></p>
<p style="text-align: justify;">Nos queda la parte difícil, la programación e intentar hacer que corra, ya que el nivel de velocistas en los concursos es bastante alto, con robots muy probados y que funcionan muy bien.</p>
<p style="text-align: justify;">La electrónica nos está funcionando bien y podemos poner el pwm al 100% en las rectas sin tener reseteos, ésta era una de las dudas que teníamos ya que estamos usando el dc-dc de Pololu que nos proporciona muy poca corriente de salida.</p>
<p style="text-align: justify;">En el vídeo se puede ver con el pwm al 100% en las rectas cuando se enciende el led verde.</p>
<p><iframe src="http://www.youtube.com/embed/OGRImyTVV9Q" frameborder="0" width="640" height="360"></iframe></p>
<p style="text-align: justify;">Pues con esto andamos este mes en las reuniones semanales, por otro lado a ver si sale ya la pista del concurso!, que no queda mucho y nos gustaría poder probar el robot antes de ir en su pista, para intentar hacerlo lo mejor posible =).</p>
Visitas :782]]></content:encoded>
			<wfw:commentRss>http://webdelcire.com/wordpress/archives/1916/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>vinciDuino evo Proto</title>
		<link>http://webdelcire.com/wordpress/archives/1900</link>
		<comments>http://webdelcire.com/wordpress/archives/1900#comments</comments>
		<pubDate>Fri, 16 Mar 2012 14:27:54 +0000</pubDate>
		<dc:creator>JMN</dc:creator>
				<category><![CDATA[vinciDuino]]></category>

		<guid isPermaLink="false">http://webdelcire.com/wordpress/?p=1900</guid>
		<description><![CDATA[A la espera de que salga la placa oficial de Arduino Leonardo (y nos enteremos de como van los pines&#8230;) seguimos desarrollando versiones de placas compatibles con la oficial en el foro de Arduino en español. La última en llegar ha sido vinciDuino evo Proto, vinciDuino evo es una serie de placas que toman como [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-1901" title="protoCretinoLogo" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/03/protoCretinoLogo.jpg" alt="" width="168" height="126" /></p>
<p style="text-align: justify;">A la espera de que salga la placa oficial de Arduino Leonardo (y nos enteremos de como van los pines&#8230;) seguimos desarrollando versiones de placas compatibles con la oficial en el foro de Arduino en español. La última en llegar ha sido vinciDuino evo Proto, vinciDuino evo es una serie de placas que toman como base la <a href="http://vinciduino.com/esp/" target="_blank">vinciDuino</a> inicial y añaden distintas funcionalidades, como puede ser una zona para prototipar, un conector de tarjetas uSD, un módulo de comunicación integrado, etc.. Lo que se nos vaya ocurriendo en este <a href="http://arduino.cc/forum/index.php/topic,87202.0.html" target="_blank">hilo del foro de Arduino en español</a> en el que todo el que quiera puede participar, bien en la parte técnica del desarrollo de las distintas versiones de placas o con sus ideas y opiniones.</p>
<p><span id="more-1900"></span></p>
<p style="text-align: justify;">La primera placa que se ha diseñado y pedido es la vinciDuino evo Proto en la que ha estado trabajando <a href="https://bitbucket.org/fmalpartida/vinciduino/wiki/Home" target="_blank">F. Malpartida</a>, es una placa similar a la vinciDuino original que añade una pequeña zona de islas/topos para prototipar, si alguien está interesado en probar esta placa quizás pueda conseguir alguna primera unidad en <a href="http://www.electrofunltd.com/" target="_blank">electroFun</a>.</p>
<p style="text-align: justify;">Toda la información de las nuevas vinciDuino evo se irá añadiendo a la página de <a href="http://vinciduino.com/esp/" target="_blank">vinciDuino</a>, de momento aquí dejo sólo el esquemático y archivos de eagle de la evo Proto rev A (hay que modificar alguna cosilla de la serigrafía):</p>
<ul style="text-align: justify;">
<li><a href="http://webdelcire.com/wordpress/wp-content/uploads/2012/03/vinciDuino-evo-proto-RevA.pdf" target="_blank">Esquema</a>.</li>
<li><a href="http://webdelcire.com/wordpress/wp-content/uploads/2012/03/vinciDuino-evo-proto-RevA.zip" target="_blank">Ficheros de eagle</a>.</li>
</ul>
<p style="text-align: justify;">Y unas imagenes de la placa montada:</p>
<p><img class="aligncenter size-full wp-image-1904" title="vinciproto1" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/03/vinciproto1.jpg" alt="" width="640" height="480" /></p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1905" title="vinciproto2" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/03/vinciproto2.jpg" alt="" width="640" height="480" /></p>
<p style="text-align: justify;">Si te gusta esto del &#8220;hardware libre&#8221; (antes conocido como &#8220;electrónica&#8221;) y quieres colaborar en el desarrollo de distintas versiones de vinciDuino puede hacerlo <a href="http://arduino.cc/forum/index.php/topic,87202.0.html" target="_blank">aquí</a>.</p>
<p style="text-align: justify;">De momento éstas son las distintas versiones que hemos hecho de la familia vinciDuino:</p>
<p><img class="aligncenter size-full wp-image-1906" title="vinciproto3" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/03/vinciproto3.jpg" alt="" width="640" height="480" /></p>
Visitas :314]]></content:encoded>
			<wfw:commentRss>http://webdelcire.com/wordpress/archives/1900/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mandar datos de nuestros dispositivos a Pachube</title>
		<link>http://webdelcire.com/wordpress/archives/1719</link>
		<comments>http://webdelcire.com/wordpress/archives/1719#comments</comments>
		<pubDate>Tue, 13 Mar 2012 17:12:51 +0000</pubDate>
		<dc:creator>Oscar</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programación]]></category>

		<guid isPermaLink="false">http://webdelcire.com/wordpress/?p=1719</guid>
		<description><![CDATA[Para quien no lo conozca, Pachube es una web donde poder transmitir la información que generan nuestros dispositivos (lo que se conoce como Internet de las cosas). Todos alguna vez hemos creado/tenido un dispositivo que genera información que nos gustaría consultar: Un sensor de temperatura o de humedad, un contador de entradas a un recinto, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://webdelcire.com/wordpress/wp-content/uploads/2012/02/pachube.png"><img class="aligncenter size-full wp-image-1723" title="pachube" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/02/pachube.png" alt="" width="238" height="80" /></a></p>
<p>Para quien no lo conozca, <a href="https://pachube.com/" target="_blank">Pachube</a> es una web donde poder transmitir la información que generan nuestros dispositivos (lo que se conoce como Internet de las cosas). Todos alguna vez hemos creado/tenido un dispositivo que genera información que nos gustaría consultar: Un sensor de temperatura o de humedad, un contador de entradas a un recinto, cuantas veces se ha ejecutado un comando, etc. Cualquier cosa que queramos saber y se pueda medir es susceptible de usarse con Pachube. Eso si, nuestro dispositivo debe tener una conexión a Internet para poder subir los datos (Wifi, ethernet, GPRS u estar conectado a otro dispositivo que lo tenga como un PC). La ventaja es que mediante nuestro ordenador/móvil/tablet podremos consultar los datos que nuestro dispositivo envía en la web de Pachube de una forma gráfica. El servicio es gratuito, podemos hacer que nuestros feeds sean públicos o privados, podemos consultar el historial de datos y enviar alarmas y notificaciones a nuestros dispositivos. Tiene limitaciones como que no se puede hacer más de 100 peticiones por minuto, pero en la mayoría de los casos nos da de sobra.<br />
<span id="more-1719"></span><br />
Voy a explicar de una forma sencilla cómo enviar los datos, aunque si queréis profundizar tendréis que leer la <a href="https://pachube.com/docs/" target="_blank">documentación</a>. Lo primero que hay que hacer es registrarse en su web. Es un proceso sencillo y rápido.</p>
<p>Lo segundo es crear una key en el menú <em>My keys</em>. Esta sirve para poder autentificarnos en las acciones que enviamos a Pachube. Además se les asignan permisos para que pueda ser usando en cualquier feed, en todos nuestros feeds (públicos o privados) o en unos determinados feed de nuestra elección. Además se les asigna los permisos de lectura de feeds, creación de feeds, actualización de feeds o borrado de feeds. Igualmente tiene restricciones avanzadas como caducidad de la key, sólo dejar a una IP o acceder desde una URL concreta para ejecutar el comando. La guardamos y ya nos aparecerá en el menú de <em>My keys</em>.</p>
<p>El siguiente paso es crear un feed en el menú <em>Create a feed</em>. Un feed no es nada más que un servicio donde se almacenarán los datos que envíe nuestro dispositivo y que puede ser consultado a posteriori. Puede ser creado directamente desde las web de Pachube o desde la API de Pachube. Para crearlo debemos rellenar datos sobre su nombre, la ubicación de nuestro dispositivo, si es privado (sólo lo podemos consultar nosotros) o público (cualquier puede consultarlo), etc. Finalmente tenemos que añadir tantos datastreams como distintos datos envía nuestro dispositivo: Si por ejemplo es un sensor de temperatura y de humedad tendremos que dar de alta dos datastreams. Los datastreams necesitan un identificador único en ese feed, un tag (nombre) que lo identifique, un nombre de la unidad en que se va a medir y el símbolo que se usa para esa unidad de medida. Lo guardamos y ya nos aparece en el menú de <em>My feeds</em>.</p>
<p>Ahora si accedemos al menu de <em>My feeds</em> podemos ver nuestro feed y si pulsamos sobre el podemos observar entre otras cosas qué número único le ha asignado Pachube en el campo <em>Website</em>.</p>
<p>Para meterle datos simplemente tenemos que rellenar los datapoints, que son los datos de nuestro sensor. Podemos hacerlo manualmente desde la misma página del feed, pero no tiene sentido ya que se supone que será nuestro dispositivo (u otro intermediario) conectado a internet el que los proporcione. Este debe tener la opción de comunicarse mediante peticiones HTTP a la web de Pachube. Yo lo voy a enseñar desde el nivel más bajo, pero si el dispositivo intermedio es un PC podéis usar <a href="http://curl.haxx.se/" target="_blank">curl</a> mediante scipts o las librerías que vuestro dispositivo tenga para usar TCP/IP y HTTP. Voy a poner un ejemplo de una petición PUT para actualizar un feed que contiene como datastream el uso de una supuesta CPU de un servidor ubicado en la isla Perejil. Me conecto al puerto 80 del host api.pachube.com y le envío esto:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">PUT /v2/feeds/48063.csv HTTP/1.0
Host:api.pachube.com
Content-Length:6
X-PachubeApiKey:nL8l2h_XRp62DSXwV48jhFtjXtWSAKxZUmJUZlExNmpXOD0g
&nbsp;
cpu,90</pre></div></div>

<p>Después de lanzar esa petición, si todo ha ido bien, recibiremos esta respuesta del servidor de Pachube:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">HTTP/1.1 200 OK
Date: Tue, 13 Mar 2012 16:22:37 GMT
Content-Type: text/plain; charset=utf-8
Connection: close
X-Pachube-Logging-Key: logging.AzQG9Tniho13k7PtFTBo
X-PachubeRequestId: a498efd825d85bbeaab4be98ba3fa014874ca175
Cache-Control: max-age=0
Content-Length: 1
Age: 0
Vary: Accept-Encoding</pre></div></div>

<p>Que indica con el código 200 que todo ha ido bien y que se ha guardado el datapoint en nuestro datastream.  En nuestra petición le hemos indicado la URL de nuestro feed con la extensión csv para indicar que los datos que queremos subir están en ese formato, pero también podemos subirlos en XML o JSON (ver aquí una <a href="http://community.pachube.com/quickstart" target="_blank">guía rápida</a>). También hemos de enviar la key que tiene permisos para escribir en nuestro feed. Finalmente enviamos los datapoints en formato <em>&lt;datastream&gt;,&lt;valor&gt;</em> (uno por línea).</p>
<p>Así si nos vamos a la URL de nuestro feed (en este caso <a href="https://pachube.com/feeds/48063" target="_blank">https://pachube.com/feeds/48063</a>) podremos ver toda la información del feed: nombre, localización, lectura de los datos en formato JSON, XML y CSV y finalmente un gráfico que podemos configurar a nuestro gusto para ver cómo han ido evolucionando los valores:</p>
<p><img alt="" src="https://api.pachube.com/v2/feeds/48063/datastreams/cpu.png?width=730&#038;height=250&#038;colour=%23f15a24&#038;duration=1hour&#038;legend=%25CPU&#038;title=Uso&#038;show_axis_labels=true&#038;detailed_grid=true&#038;scale=auto&#038;timezone=Madrid" title="gráfico" class="alignnone" width="730" height="250" /></p>
Visitas :459]]></content:encoded>
			<wfw:commentRss>http://webdelcire.com/wordpress/archives/1719/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>AESSBot 2012</title>
		<link>http://webdelcire.com/wordpress/archives/1854</link>
		<comments>http://webdelcire.com/wordpress/archives/1854#comments</comments>
		<pubDate>Mon, 12 Mar 2012 20:53:59 +0000</pubDate>
		<dc:creator>C.I.r.E.</dc:creator>
				<category><![CDATA[Robótica]]></category>

		<guid isPermaLink="false">http://webdelcire.com/wordpress/?p=1854</guid>
		<description><![CDATA[Se ha anunciado el AESSBot 2012 que este año cumple su 15 edición, este concurso de robótica tendrá lugar del viernes 4 al 6 de Mayo dentro de la 30 edición del Salón Internacional del Cómic, en la Fira de Barcelona en Montjuic. El concurso tendrá las siguientes categorías: velocistas, sumo, minisumo, rastreadores, humanoides y [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1855" title="aessbot12" src="http://webdelcire.com/wordpress/wp-content/uploads/2012/03/aessbot12.jpg" alt="" width="244" height="72" /></p>
<p style="text-align: justify;">Se ha anunciado el <a href="http://aess.upc.es/aessbot/index.html" target="_blank">AESSBot 2012</a> que este año cumple su 15 edición, este concurso de robótica tendrá lugar del viernes 4 al 6 de Mayo dentro de la 30 edición del <a href="http://www.ficomic.com/" target="_blank">Salón Internacional del Cómic</a>, en la Fira de Barcelona en Montjuic.</p>
<p style="text-align: justify;">El concurso tendrá las siguientes <a href="http://aess.upc.es/aessbot/categorias.html" target="_blank">categorías</a>: <a href="http://aess.upc.es/aessbot/doc/normativas/normativa_aessbot2012_velocista_esp.pdf" target="_blank">velocistas</a>, <a href="http://aess.upc.es/aessbot/doc/normativas/normativa_aessbot2012_sumo_esp.pdf" target="_blank">sumo</a>, <a href="http://aess.upc.es/aessbot/doc/normativas/normativa_aessbot2012_minisumo_esp.pdf" target="_blank">minisumo</a>, <a href="http://aess.upc.es/aessbot/doc/normativas/normativa_aessbot2012_rastreador_esp.pdf" target="_blank">rastreadores</a>, <a href="http://aess.upc.es/aessbot/categorias.html#" target="_blank">humanoides</a> y <a href="http://aess.upc.es/aessbot/doc/normativas/normativa_aessbot2012_aessbot_esp.pdf" target="_blank">AESSBots</a>, con <a href="http://aess.upc.es/aessbot/premios.html" target="_blank">premios</a> para los 3 mejores en cada una de ellas.</p>
<p style="text-align: justify;">Hay una bolsa de ayudas para los gastos del viaje para las personas de fuera de Cataluña, así como un 30% de descuento en los viajes de renfe.</p>
<p style="text-align: justify;">La preinscripción al concurso está abierta hasta el <strong>31 de Marzo</strong>, más información en la <a href="http://aess.upc.es/aessbot/doc/guia_participante_aessbot2012_esp.pdf" target="_blank">guía del participante</a> o en su <a href="http://aess.upc.es/aessbot/index.html" target="_blank">página web</a>.</p>
<p style="text-align: justify;">Por las distintas categorías, facilidades para ir, ubicación y premios.. el concurso tiene una pinta estupenda, me parece que por aquí nos vamos a plantear seriamente el ir.</p>
Visitas :270]]></content:encoded>
			<wfw:commentRss>http://webdelcire.com/wordpress/archives/1854/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

