<?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>RoBoOpS &#187; Arduino</title>
	<atom:link href="http://www.roboops.es/tag/arduino/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.roboops.es</link>
	<description>…cables y eso…</description>
	<lastBuildDate>Tue, 31 Aug 2010 08:03:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Proyecto Galatea 2010.</title>
		<link>http://www.roboops.es/2010/01/27/proyecto-galatea-2010/</link>
		<comments>http://www.roboops.es/2010/01/27/proyecto-galatea-2010/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 21:51:21 +0000</pubDate>
		<dc:creator>BoOpS</dc:creator>
				<category><![CDATA[Galatea]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Cuadrupedo]]></category>
		<category><![CDATA[Robot]]></category>

		<guid isPermaLink="false">http://www.roboops.es/?p=197</guid>
		<description><![CDATA[Despues de ya 2 años desde el inicio del proyecto tengo la primera buena noticia que daros. Por fin estamos a punto de &#8220;acabar&#8221; la primera versión final. En terminos informaticos estamos ante la versión RC1. De la cual os &#8230; <a href="http://www.roboops.es/2010/01/27/proyecto-galatea-2010/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Despues de ya 2 años desde el inicio del proyecto tengo la primera buena noticia que daros. Por fin estamos a punto de &#8220;acabar&#8221; la primera versión final. En terminos informaticos estamos ante la versión RC1. De la cual os puedo mostrar el siguente video:</p>
<div class="wpv_videoc">
<div class="wpv_video"><object data="http://www.youtube.com/v/HSRbNa7vTWI" type="application/x-shockwave-flash" width="100%" height="100%"><param name="movie" value="http://www.youtube.com/v/HSRbNa7vTWI"></param></object></div>
</div>
<p>Todo hay que decir que el celebro despues de 3 horas haciendo PCBs y 5 horas programando acaba un poco puff así que no os asusteis por las locuras que hacemos. (Las escenas más duras las hemos eliminado).</p>
<p>Como caracteristicas más importantes, aparte de sus 9 grados de libertad, cabe destacar las comunicaciones: Bluetooth, usb y I2C. Varios sensores: Medidor de distancias Infrarojo, acelerometro, voltaje de bateria. Tiene bastantes posibilidades a la hora de usarlo como plataforma de aprendizaje por ejemplo permite su conexion a PC o el uso del nunchuck de la wii.</p>
<p>Para la programación se usa el entorno Arduino lo que permite desarrollar aplicaciones de forma muy rapida y a cualquier nivel.</p>
<p>¡Espero que os guste y que pronto podamos ver muchas más!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.roboops.es/2010/01/27/proyecto-galatea-2010/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Control de movimiento por ondas.</title>
		<link>http://www.roboops.es/2010/01/17/control-de-movimiento-por-ondas/</link>
		<comments>http://www.roboops.es/2010/01/17/control-de-movimiento-por-ondas/#comments</comments>
		<pubDate>Sun, 17 Jan 2010 17:43:38 +0000</pubDate>
		<dc:creator>BoOpS</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Galatea]]></category>
		<category><![CDATA[Ondas]]></category>
		<category><![CDATA[Waves]]></category>

		<guid isPermaLink="false">http://www.roboops.es/?p=194</guid>
		<description><![CDATA[Desde hace ya bastante tiempo, y puede que de esto haga más de dos años, tenia muchas ganas de probar nuevas formas de movimiento para los robots con patas. Después de un par de charlas por parte de Obijuan y &#8230; <a href="http://www.roboops.es/2010/01/17/control-de-movimiento-por-ondas/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Desde hace ya bastante tiempo, y puede que de esto haga más de dos años, tenia muchas ganas de probar nuevas formas de movimiento para los robots con patas. Después de un par de charlas por parte de Obijuan y viendo andar a su robot apodo cube  (un gusano) me surgieron aún mas ganas de probar los movimientos ondulatorios.</p>
<p>Hace poco que realizamos un nuevo hardware para Galatea basado en un ATMega168 y programable desde Arduino. A las ventajas de este nuevo hardware le aparecieron algunos problemas entre los que destacan: El poco tiempo que disponemos y la necesidad de ver resultados a corto plazo, sabiendo que reescribir todo el código de la antigua versión iba a ser una tarea poco sencilla. Visto desde este modo solo había una solución Innovar. Dejamos de lado ordenadores códigos de versiones y con solo un folio en blanco un un papel nos dispusimos a dibujar lo que queríamos, en forma de ondas. Después de unas cuantas horas de trabajo obtuvimos una cosa que caminaba, pero lo importante es eso ¡que caminaba! Han bastado un par de días para modificar las formas de ondas y los defases hasta obtener el siguiente resultado:</p>
<div class="wpv_videoc">
<div class="wpv_video"><object data="http://www.youtube.com/v/BQhTi8rcRmM" type="application/x-shockwave-flash" width="100%" height="100%"><param name="movie" value="http://www.youtube.com/v/BQhTi8rcRmM"></param></object></div>
</div>
<p>Espero que os guste!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.roboops.es/2010/01/17/control-de-movimiento-por-ondas/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Control de un motor pap bipolar con Arduino.</title>
		<link>http://www.roboops.es/2009/09/17/control-de-un-motor-pap-bipolar-con-arduino/</link>
		<comments>http://www.roboops.es/2009/09/17/control-de-un-motor-pap-bipolar-con-arduino/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 13:19:42 +0000</pubDate>
		<dc:creator>BoOpS</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Motor]]></category>
		<category><![CDATA[PAP]]></category>

		<guid isPermaLink="false">http://www.roboops.es/?p=183</guid>
		<description><![CDATA[Anoche estuve hablando con Jovi sobre el control de un motor PAP Bipolar, en concreto del motor que mueve la óptica. Ya que tenia a mano un lector medio desmontado estuvimos viendo el sistema y analizando si cumpla con el &#8230; <a href="http://www.roboops.es/2009/09/17/control-de-un-motor-pap-bipolar-con-arduino/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Anoche estuve hablando con Jovi sobre el control de un motor PAP Bipolar, en concreto del motor que mueve la óptica. Ya que tenia a mano un lector medio desmontado estuvimos viendo el sistema y analizando si cumpla con el propósito que finalmente tendrá. Esta mañana he tenido un pequeño rato libre y me he puesto a montar un ejemplo de control.</p>
<div class="wpv_videoc">
<div class="wpv_video"><object data="http://www.youtube.com/v/KnMlVKAe59M" type="application/x-shockwave-flash" width="100%" height="100%"><param name="movie" value="http://www.youtube.com/v/KnMlVKAe59M"></param></object></div>
</div>
<p><span id="more-183"></span><br />
El conexionado del montaje es muy simple conectamos el enable a dos canales PWM y la  señal de dirección a otros dos pines digitales cualesquiera.conectamos las bobinas a la etapa de potencia y alimentamos todo.</p>
<p>El codigo fuente es bastante sencillo dos bucles For uno encargado de la ida y otro de la vuelta. Todo controlado por 2 variables Y y Z las cuales controlan la potencia de las bobinas y la velocidad de avance:<br />
<code><br />
int y = 2;<br />
int z = 125;</p>
<p>void setup()<br />
{<br />
  pinMode(7, OUTPUT);<br />
  analogWrite(6, z);<br />
  analogWrite(5, z);<br />
  pinMode(4, OUTPUT);<br />
}</p>
<p>void loop()<br />
{<br />
  for (int x = 0; x < 65; x++)<br />
  {<br />
    digitalWrite(4, HIGH);<br />
    digitalWrite(7, HIGH);<br />
    delay(y);<br />
    digitalWrite(4, HIGH);<br />
    digitalWrite(7, LOW);<br />
    delay(y);<br />
    digitalWrite(4, LOW);<br />
    digitalWrite(7, LOW);<br />
    delay(y);<br />
    digitalWrite(4, LOW);<br />
    digitalWrite(7, HIGH);<br />
    delay(y);<br />
  }<br />
  for (int x = 0; x < 65; x++)<br />
  {<br />
    digitalWrite(4, LOW);<br />
    digitalWrite(7, LOW);<br />
    delay(y);<br />
    digitalWrite(4, HIGH);<br />
    digitalWrite(7, LOW);<br />
    delay(y);<br />
    digitalWrite(4, HIGH);<br />
    digitalWrite(7, HIGH);<br />
    delay(y);<br />
    digitalWrite(4, LOW);<br />
    digitalWrite(7, HIGH);<br />
    delay(y);<br />
  }<br />
}<br />
</code></code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.roboops.es/2009/09/17/control-de-un-motor-pap-bipolar-con-arduino/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>SRF05 con Arduino.</title>
		<link>http://www.roboops.es/2009/03/08/srf05-con-arduino/</link>
		<comments>http://www.roboops.es/2009/03/08/srf05-con-arduino/#comments</comments>
		<pubDate>Sat, 07 Mar 2009 23:41:34 +0000</pubDate>
		<dc:creator>BoOpS</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[SRF05]]></category>
		<category><![CDATA[Ultrasonidos]]></category>

		<guid isPermaLink="false">http://www.roboops.es/?p=169</guid>
		<description><![CDATA[Después de unas cuantas de horas intentando usar la función pulseIn de Arduino para leer los sensores de distancia SRF05, lo he dejado por imposible y me he puesto a desarrollar mi propia función para la lectura. Esta de basa &#8230; <a href="http://www.roboops.es/2009/03/08/srf05-con-arduino/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Después de unas cuantas de horas intentando usar la función pulseIn de Arduino para leer los sensores de distancia SRF05, lo he dejado por imposible y me he puesto a desarrollar mi propia función para la lectura. Esta de basa en la función micros(); (unsigned long):</p>
<p><code>unsigned int lectura()<br />
{<br />
unsigned long acu = 0;<br />
unsigned long largo = 0;<br />
unsigned long primero = 0;<br />
unsigned long ultimo = 0;<br />
for (int x = 0; x &lt;2; x++)<br />
{<br />
// enviamos al sensor un pulso de 10uS<br />
pinMode(pulso1, OUTPUT);<br />
pinMode(eco1, OUTPUT);<br />
digitalWrite(pulso1, HIGH);<br />
delayMicroseconds(10);<br />
digitalWrite(pulso1, LOW);</code></p>
<p>while(digitalRead(eco1) == 0); //Esperamos a que el SRF05 ponga la linea en alto para empezar a contar<br />
primero = micros(); //anotamos el valor al poner la linea en alto<br />
while(digitalRead(eco1) == 1); //Cuando pone la linea en bajo seguimos adelante<br />
ultimo = micros();  //anotamos el valor al poner la linea en bajo<br />
largo = ultimo &#8211; primero; // calculamos el valor de la distancia<br />
acu += largo ; //acumulamos los valores<br />
delay(50); //evitamos que se solapen los rebotes<br />
}<br />
// convertimos a centimetros la medida (1 cm por cada 58uS por dos medidas)<br />
return( (unsigned int) (acu / 116) );<br />
//(Salida para debug):<br />
//Serial.print(&#8220;Delante = &#8220;);<br />
//Serial.println(acu / 116);<br />
}</p>
<p>Y ahora las posibles mejoras:</p>
<ul>
<li>Timeout:</li>
</ul>
<p><code> while(digitalRead(eco1) == 0);<br />
while(digitalRead(eco1) == 1);<br />
</code></p>
<p>Se podría añadir una segunda condición por si el sensor esta desconectado no se quede bloqueado.</p>
<ul>
<li>Desbordamiento:</li>
</ul>
<p><code> largo = ultimo - primero; // calculamos el valor de la distancia<br />
acu += largo ; //acumulamos los valores<br />
</code></p>
<p>No se tiene en cuenta que la función micros() se desborda cada 70 minutos. Se podría hacer una comparación para que segundo siempre sea mayor que primero.</p>
<ul>
<li>Precisión:</li>
</ul>
<p><code><br />
return( (unsigned int) (acu / 116) );<br />
</code></p>
<p>Se podría añadir parametros o sobrecargas para definir el numero de muestras a tomar y si queremos precisión de milimetros.</p>
<p>Espero que sea de utilidad.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.roboops.es/2009/03/08/srf05-con-arduino/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Sonda de temperatura con TC1047A.</title>
		<link>http://www.roboops.es/2009/01/16/sonda-de-temperatura/</link>
		<comments>http://www.roboops.es/2009/01/16/sonda-de-temperatura/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 08:55:49 +0000</pubDate>
		<dc:creator>BoOpS</dc:creator>
				<category><![CDATA[Acuario]]></category>
		<category><![CDATA[Montajes]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Sonda de Temperatura]]></category>

		<guid isPermaLink="false">http://www.roboops.es/?p=166</guid>
		<description><![CDATA[Este fin de semana pasado conseguí un pequeño acuario (De 15L) y me he propuesto hacer de el un acuario domótico en el cuál se puedan controlar las variables mas importantes y te aconseje sobre los cuidados que deberías llevar &#8230; <a href="http://www.roboops.es/2009/01/16/sonda-de-temperatura/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Este fin de semana pasado conseguí un pequeño acuario (De 15L) y me he propuesto hacer de el un acuario domótico en el cuál se puedan controlar las variables mas importantes y te aconseje sobre los cuidados que deberías llevar a cabo para mantenerlo. Para mayor esfuerzo ayer abrí el correo y vi que han lanzado un 2º concurso &#8220;Hacking life. II Arduino Contest&#8221; Aunque esta vez en vez de 3 Categorías y 9 Premios se han quedado en una sola categoría con 3 premios. Así que me he decidido grabar el vídeo y presentarlo.</p>
<p>Así que el primer paso es este tutorial de como montar una sonda de temperatura (sumergible). Para ello voy a usar un TC1047A (sensor de temperatura fabricado por microchip) aunque bien podría usarse cualquier otro por ejemplo un LM35.</p>
<p><a class="more-link" href="http://www.roboops.es/2009/01/16/sonda-de-temperatura/">Leer el texto completo</a></p>
<p><a title="Sensor Acabado." href="http://www.roboops.es/wp-content/uploads/2009/01/sonda/IMGP1233.JPG" target="_blank"><img class="aligncenter" src="http://www.roboops.es/wp-content/uploads/2009/01/sonda/IMGP1233P.JPG" alt="Sensor Acabado." /></a></p>
<p><span id="more-166"></span></p>
<p>Para empezar la lista de materiales:</p>
<p>-Sensor a usar (En mi caso un TC1047A).<br />
-Conector de 3 pines con sus contactos.<br />
-Cable con 3 hilos (o más) he usado un cable de auricular roto por que es bastante fino y queda bien.<br />
-Un chupón para fijar cables dentro del acuario (nos valdrá cualquiera que sea pequeño)<br />
-Estaño y útiles de soldadura.<br />
-Silicona termofusible, también se puede usar silicona no toxica pero tardará en secar un par de días.<br />
-Paciencia si habéis elegido el sensor smd o es la primera vez que soldáis.</p>
<p><a title="Materiales." href="http://www.roboops.es/wp-content/uploads/2009/01/sonda/IMGP1227.JPG" target="_blank"><img class="aligncenter" src="http://www.roboops.es/wp-content/uploads/2009/01/sonda/IMGP1227P.JPG" alt="Materiales." /></a></p>
<p>Para empezar cortaremos el cable del auricular por donde estén juntos los dos cables y 5-10mm antes del conector. Los pelaremos y tendremos cuidado de rascar con una cuchilla el esmalte protector de la punta del hilo de Audio. En primer lugar conviene soldar el conector, ya que así podremos ir marcando las conexiones que hacemos en el sensor. En mi caso he dejado la masa en medio, la señal en el pin 1 y el positivo en el pin 3. Para montarlo lo primero sera cortar los contactos y soldar cada cable a uno de los contactos, después habrá que  introducirlos hasta que hagan clip (nos podemos ayudar con un destornillador fino con cuidado de no romper el cable)</p>
<p><a title="Conector." href="http://www.roboops.es/wp-content/uploads/2009/01/sonda/IMGP1232.JPG" target="_blank"><img class="aligncenter" src="http://www.roboops.es/wp-content/uploads/2009/01/sonda/IMGP1232P.JPG" alt="Conector." /></a></p>
<p>Para darle mas protección al conector y evitar que se nos rompa fácilmente lo pincharemos en su macho y le añadiremos silicona termofusible en el lado del cable quedando esa solida dejando el primer segmento de cable fijo.</p>
<p>El siguiente paso será soldar el sensor al otro extremo y marcar que conectamos a cada pin para ello nos guiaremos de la imagen que facilita la <a title="Datasheet" href="http://www.roboops.es/wp-content/uploads/2009/01/sonda/TC1047A.pdf" target="_blank">hoja de características</a>:</p>
<p><a title="Patillaje." href="http://www.roboops.es/wp-content/uploads/2009/01/sonda/ENCAPSULADO.JPG" target="_blank"><img class="aligncenter" src="http://www.roboops.es/wp-content/uploads/2009/01/sonda/ENCAPSULADO.JPG" alt="Patillaje." /></a></p>
<p>Dejándolo todo soldado como se ve en la siguiente imagen:</p>
<p><a title="Sensor." href="http://www.roboops.es/wp-content/uploads/2009/01/sonda/IMGP1228.JPG" target="_blank"><img class="aligncenter" src="http://www.roboops.es/wp-content/uploads/2009/01/sonda/IMGP1228P.JPG" alt="Sensor." /></a></p>
<p>El siguiente paso será adaptarlo al acuario, para ello tendrá que cumplir dos condiciones: Se deberá poder fijar al cristal y debe ser estanco. Para cumplir la primera usaremos el chupón pasa tubos:</p>
<p><a title="Chupón." href="http://www.roboops.es/wp-content/uploads/2009/01/sonda/IMGP1229.JPG" target="_blank"><img class="aligncenter" src="http://www.roboops.es/wp-content/uploads/2009/01/sonda/IMGP1229P.JPG" alt="Chupón." /></a></p>
<p>Como veis tiene un agujero para pasar muy grande y que no vamos a necesitar así que lo cortamos dejando solo un par de espigas a donde se sujetará nuestro sensor.</p>
<p><a title="Chupón modificado." href="http://www.roboops.es/wp-content/uploads/2009/01/sonda/IMGP1230.JPG" target="_blank"><img class="aligncenter" src="http://www.roboops.es/wp-content/uploads/2009/01/sonda/IMGP1230P.JPG" alt="Chupón modificado." /></a></p>
<p>Para cumplir la otra condición usaremos la silicona termofusible primero con ayuda de una caña haremos un pequeño tubo con el sensor totalmente cubierto de silicona. Para después fijarlo con mas silicona al chupón.</p>
<p><a title="Estanqueidad." href="http://www.roboops.es/wp-content/uploads/2009/01/sonda/IMGP1231.JPG" target="_blank"><img class="aligncenter" src="http://www.roboops.es/wp-content/uploads/2009/01/sonda/IMGP1231P.JPG" alt="Estanqueidad." /></a></p>
<p>Una vez terminado de montar nos deberá quedar algo así:</p>
<p><a title="Sensor Acabado." href="http://www.roboops.es/wp-content/uploads/2009/01/sonda/IMGP1233.JPG" target="_blank"><img class="aligncenter" src="http://www.roboops.es/wp-content/uploads/2009/01/sonda/IMGP1233P.JPG" alt="Sensor Acabado." /></a></p>
<p>Por ultimo solo nos queda probar el sensor para lo que nos sería útil tener la temperatura conocida de la habitación o por ejemplo usar un vaso de hielo con algo de agua. En mi caso lo he comparado con el termómetro de escritorio. El montaje es sencillo conectar el positivo a 5 voltios, la masa con la masa y en la señal conectamos el polímetro (ojo la masa del polímetro también hay que conectarla a masa).</p>
<p><a title="Probando el sensor." href="http://www.roboops.es/wp-content/uploads/2009/01/sonda/IMGP1234.JPG" target="_blank"><img class="aligncenter" src="http://www.roboops.es/wp-content/uploads/2009/01/sonda/IMGP1234P.JPG" alt="Probando el sensor." /></a></p>
<p>Como podréis imaginar no estamos a 745ºC ni nada por el estilo para saber la temperatura debemos restar 500 a la medida en mV y multiplicarla por 100, por lo que tenemos 24,5ºC. En el vaso con hielo deberíamos tener 500mV. La razón de este calculo nos lo da también la <a title="Datasheet" href="http://www.roboops.es/wp-content/uploads/2009/01/sonda/TC1047A.pdf" target="_blank">hoja de características</a>:</p>
<p><a title="Sensor Acabado." href="http://www.roboops.es/wp-content/uploads/2009/01/sonda/GRAFICO.JPG" target="_blank"><img class="aligncenter" src="http://www.roboops.es/wp-content/uploads/2009/01/sonda/GRAFICOP.JPG" alt="Sensor Acabado." /></a></p>
<p>Espero que os haya gustado, próximamente seguiré con mas tutoriales entre ellos iluminación LEDs, Sonda de PH y algunas cosas que vayan surgiendo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.roboops.es/2009/01/16/sonda-de-temperatura/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>1, 2, 3 y Bluetooth.</title>
		<link>http://www.roboops.es/2008/12/21/1-2-3-y-bluetooth/</link>
		<comments>http://www.roboops.es/2008/12/21/1-2-3-y-bluetooth/#comments</comments>
		<pubDate>Sun, 21 Dec 2008 16:05:39 +0000</pubDate>
		<dc:creator>BoOpS</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Circuitos]]></category>
		<category><![CDATA[Bluetooth]]></category>
		<category><![CDATA[WT11]]></category>

		<guid isPermaLink="false">http://www.roboops.es/?p=164</guid>
		<description><![CDATA[Al llegar de Campus Party 08, compré un modulo WT11 de Bluegiga para una posible implementación de Bluetooth en las Galateas. Como ya os dije en la entrada anterior estas Navidades van a estar llenas de electrónica, hoy ha tocado &#8230; <a href="http://www.roboops.es/2008/12/21/1-2-3-y-bluetooth/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Al llegar de Campus Party 08, compré un modulo WT11 de Bluegiga para una posible implementación de Bluetooth en las Galateas. Como ya os dije en la entrada anterior estas Navidades van a estar llenas de electrónica, hoy ha tocado el Bluetooth, así que hojeando la documentación de la <a title="SkyBluetooth" href="http://www.iearobotics.com/personal/ricardo/proyectos/skybluetooth/skybluetooth.htm" target="_blank">SkyBluetooth</a>, la tarjeta <a title="ArduinoBT" href="http://www.arduino.cc/en/Guide/ArduinoBT" target="_blank">ArduinoBT</a> y con un poco de polimetro he mirado la forma mas sencilla de conectar el modulo bluetooth sin tener que ponerme a hacer una PCB. Para ello voy a usar un Arduino Diecimila, más que nada por comodidad y por disponer de <a title="Ejemplo de inicialización" href="http://arduino.cc/en/Main/ArduinoBTInitializationSketch" target="_blank">varios ejemplos de uso</a>.</p>
<p><a title="Arduino + Bluetooth." href="http://www.roboops.es/wp-content/uploads/2008/12/IMGP0917.JPG" target="_blank"><img class="aligncenter" src="http://www.roboops.es/wp-content/uploads/2008/12/IMGP0917R.JPG" alt="Arduino + Bluetooth." /></a></p>
<p>Para trabajar con ella necesitaremos 3 cables de señales y la alimentación (3v3 y GND). Las señales de entrada se conectan a través de una resistencia de 2k2, ojo a la de salida (TX) no se le puede conectar ninguna resistencia ya que reduciría la tensión y no es detectado por el Arduino. Sobre las alimentaciones y masas son comunes, con conectar un pin de alimentación y uno de masa es suficiente. El esquema para conectarlo es el siguiente:</p>
<p><a title="Esquema del montaje." href="http://www.roboops.es/wp-content/uploads/2008/12/esqbt.jpg" target="_blank"><img class="aligncenter" src="http://www.roboops.es/wp-content/uploads/2008/12/esqbtr.jpg" alt="Esquema del montaje." /></a></p>
<p>Una vez listo el montaje el siguiente paso es cargar el código en el Arduino, yo le he realizado una pequeña modificación para que me permita comprobar que la recepción es correcta:</p>
<blockquote><p>/* BT test 01<br />
* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
* Massimo Banzi<br />
* Modificado por F. Javier Suvires G. &#8211; BoOpS<br />
*<br />
*/</p>
<p>int LED = 13;   // selecciona el pin del LED<br />
int RESET = 7;</p>
<p>void setup() {<br />
pinMode(LED,OUTPUT);   // declara el pin del LED como salida<br />
pinMode(RESET,OUTPUT);   // declara el pin del RESET como salida<br />
Serial.begin(115200);        // conecta el puerto serie<br />
digitalWrite(RESET, HIGH);  //genera un reset<br />
delay(10);<br />
digitalWrite(RESET, LOW);<br />
delay(2000);<br />
Serial.println(&#8220;SET BT PAGEMODE 3 2000 1&#8243;);<br />
Serial.println(&#8220;SET BT NAME ARDUINOBT&#8221;);<br />
Serial.println(&#8220;SET BT ROLE 0 f 7d00&#8243;);<br />
Serial.println(&#8220;SET CONTROL ECHO 0&#8243;);<br />
Serial.println(&#8220;SET BT AUTH * 12345&#8243;);<br />
Serial.println(&#8220;SET CONTROL ESCAPE &#8211; 00 1&#8243;);<br />
Serial.println(&#8220;SET CONTROL BAUD 115200,8n1&#8243;);<br />
}</p>
<p>void loop () {<br />
digitalWrite(LED, HIGH);<br />
delay(100);<br />
digitalWrite(LED, LOW);<br />
Serial.println(&#8220;Hola mundo +123&#8243;); //imprime la prueba<br />
while (Serial.available() &gt; 0)  {Serial.print(Serial.read(), BYTE);} //imprime los caracteres recibidos<br />
delay(1000);<br />
}</p></blockquote>
<p>El siguiente paso será Symbian + Python + Bluetooth. ¿Alguien quiere colaborar? Espero que sea pronto.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.roboops.es/2008/12/21/1-2-3-y-bluetooth/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Xport &#8211; Trabajando como servidor Web</title>
		<link>http://www.roboops.es/2008/12/20/xport-trabajando-como-servidor-web/</link>
		<comments>http://www.roboops.es/2008/12/20/xport-trabajando-como-servidor-web/#comments</comments>
		<pubDate>Sat, 20 Dec 2008 15:13:05 +0000</pubDate>
		<dc:creator>BoOpS</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Circuitos]]></category>
		<category><![CDATA[Diario de un CFGS]]></category>
		<category><![CDATA[Ethernet]]></category>
		<category><![CDATA[Lan]]></category>
		<category><![CDATA[Xport]]></category>

		<guid isPermaLink="false">http://www.roboops.es/?p=163</guid>
		<description><![CDATA[Hace tiempo que publiqué una pequeña introducción a mi trabajo con los módulos Xport de Lantronix. Debido a la falta de tiempo entre viajes estudios y trabajo no he podido seguir publicando mis avances. Ahora por fin estamos en las &#8230; <a href="http://www.roboops.es/2008/12/20/xport-trabajando-como-servidor-web/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hace tiempo que publiqué una pequeña introducción a mi trabajo con los módulos Xport de Lantronix. Debido a la falta de tiempo entre viajes estudios y trabajo no he podido seguir publicando mis avances. Ahora por fin estamos en las vacaciones de Navidad y puesto que tengo que preparar la documentación para entregar el proyecto, voy a refrescarme a mi mismo la memoria subiendo mas información por aquí.</p>
<p><a title="Placa de desarrollo" href="http://www.roboops.es/wp-content/uploads/2008/12/IMGP0916.JPG" mce_href="http://www.roboops.es/wp-content/uploads/2008/12/IMGP0916.JPG" target="_blank"><img class="aligncenter" src="http://www.roboops.es/wp-content/uploads/2008/12/IMGP0916R.JPG" mce_src="http://www.roboops.es/wp-content/uploads/2008/12/IMGP0916R.JPG" alt="Placa de desarrollo."/></a></p>
<p>Como ya hice una primer acercamiento en la anterior entrada: &#8220;Empezando con Xport&#8221;.&nbsp; Ahora me voy a centrar más en el uso que creo que me es mas interesante, servir una página web desde nuestro proyecto permitiendo interactuar con el desde una red LAN o&nbsp; desde Internet.</p>
<p>Para empezar lo primero que haremos es configurar el Xport con los siguientes parametros:</p>
<blockquote><p>*** Channel 1<br />
Baudrate 9600, I/F Mode 4C, Flow 00<br />
Port 00080<br />
Connect Mode : C4<br />
Send &#8216;+++&#8217; in Modem Mode enabled<br />
Show IP addr after &#8216;RING&#8217; enabled<br />
Auto increment source port disabled<br />
Remote IP Adr: &#8212; none &#8212;, Port 00000<br />
Disconn Mode : 80&nbsp; Disconn Time: 00:03<br />
Flush&nbsp;&nbsp; Mode : 77</p>
</blockquote>
<p>Para ello o bien podemos usar la utilidad de Lantronix Device Installer o conectarnos por Telnet al puerto 9999. Si usamos la utilidad de Lantronix tenemos la ventaja de que automáticamente nos buscará algún Xport conectado a nuestra red.</p>
<p>Una vez configurado esto el siguiente paso es escuchar por el puerto serie las peticiones que nos harán para ello he usado la librería de Arduino con lo que se simplifica el control a tres bloques:</p>
<p>Bloque uno: Definición de las posibles respuestas, en el usaremos la memoria de código para grabar el código html para las respuestas. Quizás fuera conveniente usar una memoria eeprom externa o na tarjeta SD pero para no complicar la cosa seguí usando este método.</p>
<blockquote><p>const char http_404header[] PROGMEM = &#8220;HTTP/1.1 404 Not Found\nServer: arduino\nContent-Type: text/html\n\n&lt;html&gt;&lt;head&gt;&lt;title&gt;404&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&lt;h1&gt;404: Página no encontrada&lt;/h1&gt;&lt;/body&gt;&#8221;;<br />
const char http_header[] PROGMEM = &#8220;HTTP/1.0 200 OK\nServer: arduino\nContent-Type: text/html\n\n&#8221;;<br />
const char html_header[] PROGMEM = &#8220;&lt;html&gt;&lt;head&gt;&lt;title&gt;Servidor web con Arduino&lt;/title&gt;&lt;link rel=\&#8221;shortcut icon\&#8221; href=\&#8221;http://www.roboops.es/wp-content/uploads/w3/favicon.ico\&#8221; type=\&#8221;image/x-icon\&#8221; /&gt;&lt;/head&gt;&lt;body&gt;&#8221;;<br />
const char forma[] PROGMEM = &#8220;&lt;p&gt;&lt;h1&gt;Probando Arduino como WebServer&lt;/h1&gt;&lt;/p&gt;&lt;img src=\&#8221;http:/&#8221;;<br />
const char formb[] PROGMEM = &#8220;/www.roboops.es/wp-content/uploads/2008/10/10102008R.JPG\&#8221;&gt;&#8221;;<br />
const char formc[] PROGMEM = &#8220;&lt;p&gt;Esta página está servida por un ATmega168 con un Xport.&lt;/p&gt;&lt;/body&gt;&#8221;;<br />
const char formd[] PROGMEM = &#8220;&lt;p&gt;Bienvenido a la home&lt;/p&gt;&lt;/body&gt;&#8221;;</p>
</blockquote>
<p>Bloque dos: El siguiente bloque es el que se encarga de interpretar las peticiones.</p>
<blockquote><p>read = xport.readline_timeout(linebuffer, 128, 200);<br />
if (read == 0)&nbsp;&nbsp;&nbsp;&nbsp; // Se ha alcanzado el tiempo limite<br />
return 0;<br />
if (read)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Hay algo!<br />
Serial.println(linebuffer); //Lo mostramos por el segundo puerto serie (para pruebas)<br />
if (strstr(linebuffer, &#8220;GET / &#8220;)) {<br />
return 200;&nbsp;&nbsp; // Si comienza con una peticion es correcto<br />
}<br />
if (strstr(linebuffer, &#8220;GET /?&#8221;)) {<br />
return 200;&nbsp;&nbsp; // Si es un CGI valido es correcto<br />
}<br />
if (strstr(linebuffer, &#8220;GET /home&#8221;)) {<br />
return 201;&nbsp;&nbsp; // Si es la pagina home es correcto<br />
}<br />
if(strstr(linebuffer, &#8220;GET &#8220;)) {<br />
return 404;&nbsp;&nbsp;&nbsp; // si es cualquier otra cosa, lo siento pero no la tenemos.<br />
}</p>
</blockquote>
<p>Bloque tres: Respuesta. Se definen las diferentes respuestas para las diferentes peticiones.</p>
<blockquote><p>void respond(){<br />
uint8_t temp;<br />
xport.flush(50);&nbsp; //&nbsp; vaciamos el buffer<br />
xport.ROM_print(http_header);&nbsp; // mandamos la cabecera http<br />
xport.ROM_print(html_header); // mandamos la cabecera html<br />
xport.ROM_print(forma); /comenzamos a enviar la página<br />
xport.ROM_print(formb);<br />
xport.ROM_print(formc);<br />
xport.flush(255); // vaciamos el buffer<br />
xport.disconnect(); // nos deconectamos<br />
}</p>
</blockquote>
<p>Ya tenemos nuestra web servida por el Xport ahora el siguiente paso será hacer una web interactiva mediante la que recibamos y enviaemos datos del usuario.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.roboops.es/2008/12/20/xport-trabajando-como-servidor-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HackMeeting &#8217;08 &#8211; Nodo/Taller Arduino</title>
		<link>http://www.roboops.es/2008/10/25/hackmeeting-08-nodotaller-arduino/</link>
		<comments>http://www.roboops.es/2008/10/25/hackmeeting-08-nodotaller-arduino/#comments</comments>
		<pubDate>Sat, 25 Oct 2008 10:45:23 +0000</pubDate>
		<dc:creator>BoOpS</dc:creator>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Hackmeeting]]></category>
		<category><![CDATA[Taller]]></category>

		<guid isPermaLink="false">http://www.roboops.es/?p=157</guid>
		<description><![CDATA[Durante los días 17,18 y 19 de Octubre ha tenido lugar en La Casa Invisible el Hackmeeting de este año. Un encuentro de personas en el cual se han tratado temas referentes a las nuevas tecnologias, seguridad y software libre. &#8230; <a href="http://www.roboops.es/2008/10/25/hackmeeting-08-nodotaller-arduino/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Durante los días 17,18 y 19 de Octubre ha tenido lugar en <a title="LA CASA INVISIBLE | centro cultural de gestión ciudadana" href="http://www.lainvisible.net/" target="_blank">La Casa Invisible</a> el <a title="HackMeeting" href="http://www.sindominio.net/hackmeeting/index.php/Portada" target="_blank">Hackmeeting</a> de este año. Un encuentro de personas en el cual se han tratado temas referentes a las nuevas tecnologias, seguridad y software libre. Personalmente para mi ha durado algo mas de tiempo, casi dos semanas&#8230; Entre llegar y preparar todo, el acto en sí, recoger y después juntarlo con la <a title="OSWC" href="http://www.opensourceworldconference.com/" target="_blank">OSWC</a>.</p>
<p>Mi mayor participación en el evento ha sido la realización junto con <a title="Mipixel | el blog de F.J. Sánchez" href="http://www.mipixel.com/" target="_blank">FJ_Sanchez</a> de un Nodo/Taller sobre Arduino, en el se han iniciado en su uso unas veinte personas. El taller se componía de dos sesiones, una primera teórica donde se explicaba el proyecto, su hardware, su software y se acabo comentando las posibilidades que ofrece el sistema. Desde aquí gracias a todos los que asistieron aunque no participaran despues en el Taller práctico. Al final de esta sesión se realizaron dos pequeñas demostraciones de uso, una de ellas preparada por FJ_Sanchez el control de un led desde un servidor Apache. Por mi parte realicé una demostración del Robot Fonera.</p>
<p>La segunda sesión fue algo mas alocada, una sala amplia, muchos ordenadores, muchos arduinos y muchas ganas de aprender. El comienzo fue como todos los comienzos, encender y apagar un led, escribir Hola mundo en el puerto serie, etc&#8230; Despues se repartio material y cada uno empezo a desarrollar lo que quiso, movimiento de servos, leds de colores (incluso con leds RGB) se llegó a la conclusión que no se puede programar con un led parapadeando en tu cara, lectura de sensores de temperatura, potenciometros y alguna música con buzzers.</p>
<p>Si hubiera una segunda ocasión personalmente cambiaría dos cosas, la primera acortaría la teoria a 1 hora y alargaría la práctica a 2 horas y la segunda, que junto con el Arduino se trajera un &#8220;kit&#8221; de componentes para empezar a trabajar, un par de leds, un par de potenciometros y algún sensor barato de forma que todos pueden programar fácilmente cualquiera de esos elementos.</p>
<p>Enlaces:</p>
<p><a title="Página del HM" href="http://www.sindominio.net/hackmeeting/index.php/2008/Nodos/Taller_de_arduino" target="_blank">http://www.sindominio.net/hackmeeting/index.php/2008/Nodos/Taller_de_arduino</a></p>
<p><a title="Arduino España" href="http://www.arduino.cc/es/" target="_blank">http://www.arduino.cc/es/</a></p>
<p><a title="Arduino" href="http://www.arduino.cc/" target="_blank">http://www.arduino.cc/</a></p>
<p>Presentación</p>
]]></content:encoded>
			<wfw:commentRss>http://www.roboops.es/2008/10/25/hackmeeting-08-nodotaller-arduino/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
