tag:blogger.com,1999:blog-22935122800157923992024-03-13T12:54:59.097-07:00Robot y YoInformática, robótica educativa y electrónica para el aprendizaje de niños y principiantes.
Unknownnoreply@blogger.comBlogger12125tag:blogger.com,1999:blog-2293512280015792399.post-39545743739063195592014-01-31T16:42:00.000-08:002014-01-31T16:54:52.198-08:00Cochecito con Arduino (1)<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-q4Al7gYaiQE/Uuw2QYZ3q3I/AAAAAAAAIxQ/cdS7L4dNH1w/s1600/coche.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-q4Al7gYaiQE/Uuw2QYZ3q3I/AAAAAAAAIxQ/cdS7L4dNH1w/s1600/coche.jpg" height="153" width="200" /></a></div>
Y como primer paso en construir <a href="http://robotyyo.blogspot.com.es/2014/01/robot-exterminador-de-la-humanidad-0.html" target="_blank">mi robot exterminador de la humanidad</a>, empezaré con la construcción preliminar de un cochecito autónomo con Arduino, quizás un seguidor de líneas, pero ya se verá en que acaba…<br />
<br />
<b>NOTA</b>: Este blog y esta serie de entradas de “Cochecito con Arduino” al igual que siempre, lo escribo principalmente para mi mismo… abierto a todos eso sí. Con esto quiero decir que no esperéis de mi ahora un trabajo finalizado y detallado, ya que lo escribo para ayudarme a hacerlo. Escribo lo que voy a hacer o como pienso que debo hacerlo. Es decir, lo escribo antes de haberlo hecho. Lo que pasará es que habrán imprecisiones que iré corrigiendo en post posteriores o retocando en un futuro los anteriores. Poc a poc i bona lletra…<br />
<br />
No sé muy bien cómo empezar. Tengo un Arduino, un <a href="http://robotyyo.blogspot.com.es/2013/06/controlar-un-servomotor-con-arduino.html" target="_blank">servo</a> (que no usaré en este caso), y algunos componentes tipo resistencias y leds, pero solo con esto no arranco. Así que lo primero es identificar el material que voy a necesitar, y antes que eso definir qué tipo de cochecito quiero hacer.<br />
<br />
<b><u>Cochecito Arduino de tres ruedas, seguidor de línea o no…</u></b><br />
Lo de que siga una línea o no ya lo iré viendo. De momento vamos a hacer que se mueva, ¿vale?. El cochecito tendrá dos ruedas delanteras controladas por motores independientes, detrás tendrá una sola rueda loca. Una madera fina y plana servirá de apoyo al Arduino, la protoboard, y demás circuitos. Bajo la madera estarán las ruedas y supongo que motores…<br />
Sería algo como lo que hay <a href="http://planetubuntu.es/post/construir-un-robot-seguidor-de-linea-con-arduino-softwarelibre-hardwarelibre" target="_blank">aquí</a>, pero supongo que más cutre aun si cabe…<br />
<br />
Para adquirir materiales he mirado varias webs. Y puesto que vivo en Barcelona he mirado <a href="http://www.diotronic.com/" target="_blank">Diotronic</a>, Radio Watt y <a href="http://www.ondaradio.es/" target="_blank">Onda Radio</a>, pero he de decir que son horrorosas. Son tan malas tan malas que hasta se me ha ocurrido montar yo una tienda virtual, e incluso una física (solo que en realidad vivo en <a href="http://es.wikipedia.org/wiki/San_Baudilio_de_Llobregat" target="_blank">Sant Boi</a> y ahí a parte de <a href="http://jovencam.blogspot.com.es/2012/06/el-manicomio-de-san-baudilio-de.html" target="_blank">locos</a> no hay mucho potencial de clientes). <b>Offtopic</b>: tengo alguna idea de negocio rollo tienda virtual + tienda física + centro presencial educativo abierto para niños y jóvenes. Si te interesa como socio y eres de por la zona avisa!!! ;-). Si será por ideas…<b> :-D</b><br />
<br />
En fin que al final abandono la idea de adquirirlo de forma presencial y me quedo con la fantástica web de <a href="http://www.bricogeek.com/shop/" target="_blank">BricoGeek</a>, a quienes aprovecho para felicitar públicamente. Eso es lo que uno espera de una tienda online: sencilla y agradable de uso, buenos productos, relaciones entre ellos, explicaciones y detalle, blog tecnológico, etc… Bueno, allá vamos…<br />
<br />
<b><u>Lista de materiales:</u></b><br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-2smZUZYpFJM/Uaip0evyTXI/AAAAAAAAF8Y/AYBu-L4AD9U/s1600/Arduino-boardUno.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-2smZUZYpFJM/Uaip0evyTXI/AAAAAAAAF8Y/AYBu-L4AD9U/s1600/Arduino-boardUno.png" height="140" width="200" /></a></div>
<b>Arduino</b>: ¿Por qué Arduino?. Pues porque adoro a Arduino. Filosofía open hardware, versatilidad, abundante información, etc…<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-eLpn0BPsf90/UYrEnQTxniI/AAAAAAAAFSM/nDOgOWo4c0Y/s1600/protoboard01.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-eLpn0BPsf90/UYrEnQTxniI/AAAAAAAAFSM/nDOgOWo4c0Y/s1600/protoboard01.jpg" height="69" width="200" /></a></div>
<b>Protoboard</b>: ¿Por qué?. Pues dado que lo que hacemos son prototipos no nos vamos a poner todavía con <a href="http://es.wikipedia.org/wiki/Circuito_impreso" target="_blank">circuitos impresos</a>… Ya llegará…<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-vxQhWJG2qHo/Uuw76OhKSRI/AAAAAAAAIxg/hWy3VxUGpbI/s1600/motor-micro-metal-dc-con-reductora-30-1.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-vxQhWJG2qHo/Uuw76OhKSRI/AAAAAAAAIxg/hWy3VxUGpbI/s1600/motor-micro-metal-dc-con-reductora-30-1.jpg" height="200" width="200" /></a></div>
<a href="http://www.bricogeek.com/shop/motores/114-motor-micro-metal-dc-con-reductora-30-1.html" target="_blank"><b>Motor micro metal DC con reductora 30:1 (2 unidades)</b></a>: ¿Por qué?. La verdad, ni idea. Hay varios motores, sin reductora o con <a href="http://es.wikipedia.org/wiki/Reductores_de_velocidad" target="_blank">reductoras</a> de más o menos potencia. Voy a probar con este y a ver qué pasa… El hecho de poner 2 motores es porque cada una de las ruedas delanteras será controlada de forma independiente por un solo motor.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-ddz9eQXVKhA/Uuw8ZkpHzwI/AAAAAAAAIxo/zMaHLTmBJKc/s1600/controlador-de-motores-doble-puente-h-l298.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-ddz9eQXVKhA/Uuw8ZkpHzwI/AAAAAAAAIxo/zMaHLTmBJKc/s1600/controlador-de-motores-doble-puente-h-l298.jpg" height="200" width="200" /></a></div>
<a href="http://www.bricogeek.com/shop/motores/285-controlador-de-motores-doble-puente-h-l298.html" target="_blank"><b>Controlador de motores doble puente H - L298</b></a>: ¿Por qué?. Por lo que he leído por ahí Arduino por sí solo no puede controlar motores por un tema de potencia eléctrica. Para controlar un motor, y que dicho control permita regular la velocidad del motor y dirección de giro en cualquier momento es necesario una arquitectura eléctrica conocida como <a href="http://es.wikipedia.org/wiki/Puente_H_(electr%C3%B3nica)" target="_blank">Puente H</a>. El <a href="http://www.robotoid.com/appnotes/circuits-l298-hbridge.html" target="_blank">chip L298</a> proporciona de forma integrada dos puentes H, lo que permite controlar dos motores en un solo chip. El controlador este tiene puesto ese chip por ahí y digo yo que tendrá más cosas, sino de que, ¿eh?. :-D. Además en la propia web de BricoGeek esta fantásticamente bien documentado su uso con Arduino. Digo yo que entonces será fácil, ¿no?<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-g5sU7izQNwY/Uuw-Ir6JtbI/AAAAAAAAIx0/VZnkXC2SSbM/s1600/rueda-todo-terreno-42x19mm.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-g5sU7izQNwY/Uuw-Ir6JtbI/AAAAAAAAIx0/VZnkXC2SSbM/s1600/rueda-todo-terreno-42x19mm.jpg" height="200" width="200" /></a></div>
<a href="http://www.bricogeek.com/shop/robotica/109-rueda-todo-terreno-42x19mm.html" target="_blank"><b>Rueda todo terreno 42x19mm</b></a>: ¿Por qué?. Miedo!!!. Uno sabe que si en el mundo de la informática (de donde vengo) no hay estándares, pues en el mundo de la robótica (por donde voy) todavía hay menos. Esto van a ser las ruedas delanteras. Y yo ya me estoy viendo que me llega un motor por aquí, unas ruedas por ahí…, y que luego no hay manera de encajarlas…, que el diámetro del eje del motor y su forma no coinciden con el del eje de las ruedas… Para evitar esto pillo estas ruedas que según la web “están especialmente diseñadas para encajar con los motores DC Micro Metal”. Además se venden por parejas. A ver qué tal…<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-OSCqVSfIxis/Uuw-Tuk63LI/AAAAAAAAIx8/n3LI4VVUC_Q/s1600/rueda-loca1.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-OSCqVSfIxis/Uuw-Tuk63LI/AAAAAAAAIx8/n3LI4VVUC_Q/s1600/rueda-loca1.jpg" height="192" width="200" /></a></div>
<b>Rueda loca</b>: ¿Por qué?. Pues porque la dirección y la tracción irá en las dos ruedas delanteras, y la parte de atrás con que vaya siguiendo y no arrastre el cuerpo por el suelo pues como que ya nos vale…<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-SDsChKWWCSY/Uuw_FrmtIVI/AAAAAAAAIyE/2suZQJk1f94/s1600/20140123_102205.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-SDsChKWWCSY/Uuw_FrmtIVI/AAAAAAAAIyE/2suZQJk1f94/s1600/20140123_102205.jpg" height="200" width="150" /></a></div>
<b>Madera fina</b>: ¿Por qué?. Mirar, otros no sé, pero yo al menos esta vez voy a construir el chasis por mí mismo. Vale los hay muy chulos que <a href="http://www.bricogeek.com/shop/robotica/283-chasis-robot-4x4-con-motores.html" target="_blank">ya están hechos</a>, cosa que te permite centrarte en otras cosas, pero por otro lado y mirando al futuro…, no puedes entrar en una tienda y decir “deme un chasis para robot exterminador de la humanidad”. Si quieres hacer eso algún día tendrás que empezar hoy a entender también como se construye un chasis más sencillo… En mi caso la madera la saqué serrando un trozo de un “panel cuelga-herramientas” que pille en <a href="http://www.leroymerlin.es/" target="_blank">Leroy Merlin</a>.<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-cHq4xlTmdrs/Uuw_dgFmd4I/AAAAAAAAIyM/1r7Px7lJhXg/s1600/funda-protectora-para-motor-micro-metal.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-cHq4xlTmdrs/Uuw_dgFmd4I/AAAAAAAAIyM/1r7Px7lJhXg/s1600/funda-protectora-para-motor-micro-metal.jpg" height="200" width="200" /></a></div>
<br />
<b><a href="http://www.bricogeek.com/shop/robotica/116-funda-protectora-para-motor-micro-metal.html" target="_blank">Fundas protectoras para motor micro metal (2 und.)</a></b>: ¿Por qué?. Para facilitarnos la vida atornillaremos los motores a la madera con esto…, no vaya a ser que tengamos que pegarlos con chicle…<b> :-D</b><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Manos a la obra (fijaros que aun no he puesto los sensores en la lista). De momento voy pidiendo esto y ya os iré contando cómo va en sucesivas entregas…<br />
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2293512280015792399.post-85995036414463294972014-01-31T14:15:00.000-08:002014-01-31T16:54:30.690-08:00Robot exterminador de la humanidad – (0)<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-GpThhg8Hi4s/UuwgAKT0SoI/AAAAAAAAIxA/mpTldLKp6J8/s1600/terminator01.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-GpThhg8Hi4s/UuwgAKT0SoI/AAAAAAAAIxA/mpTldLKp6J8/s1600/terminator01.jpg" height="255" width="320" /></a></div>
Sí, he visto muchas películas. Terminator, Matrix y otras.<br />
<br />
Yo quiero construir uno de esos bichos, voy a hacerlo, algún día. Aquellos que me conocen bien me han escuchado decir un montón de veces que mi objetivo vital, uno de ellos al menos, es construir un robot exterminador de la humanidad. Y no, no le voy a dotar de armas, de hecho no es mi intención ni mi objetivo que nos extermine, mi intención es solo construir un robot tan pero tan completo e inteligente que por sí solo decidirá que lo mejor que puede hacer es exterminarnos a todos. No será desde luego porque yo lo programe para ello, no. Lo que ocurrirá es que creo que él llegará por sí mismo a esta conclusión.<br />
<br />
Ah, ¿la resistencia humana?. No la habrá. Todas las películas fallan en eso. Si los robots toman un día esa decisión por si solos, de verdad, no tendremos ninguna opción. Ninguna.<br />
<br />
Eh! Que nadie se asuste por esta entrada fuera de lugar, eh!. No estoy loco, sabemos lo que queremos!. Además, técnicamente me queda aun “un poco lejos”. <b>:-D</b><br />
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2293512280015792399.post-27913360382033309402013-06-13T18:17:00.001-07:002013-06-13T18:26:47.384-07:00Papa, ¿Y qué es la electricidad?<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:HyphenationZone>21</w:HyphenationZone>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>ES</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-0WB-1gCTzhs/Ubpl9LHd6aI/AAAAAAAAGM8/s315RD0no78/s1600/Electricidad.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-0WB-1gCTzhs/Ubpl9LHd6aI/AAAAAAAAGM8/s315RD0no78/s1600/Electricidad.png" height="300" width="320" /></a></div>
Si, sé que he hablado antes de electrónica básica, e incluso
llegué a exponer la ley de Ohm. Pero hoy voy a hacer un regreso a algo todavía
más básico que eso. Hoy voy a tratar de exponer algunos de los fundamentos más
básicos de la electricidad.<br />
<br />
<div class="MsoNormal">
Esta entrada de hoy la he desarrollado atendiendo al reclamo
de todos aquellos miles y miles de comentarios (¿¿¿ <b>:-D</b> ???) que me estáis
poniendo en cada una de las entradas pidiéndome que explique fundamentos más
básicos.</div>
<div class="MsoNormal">
<br />
He de decir y advertir que al poco que tengas una pequeña
base de electrónica esta entrada de hoy te será completamente inútil y no te
aportará nada en absoluto. Por el contrario, si te estás asomando por primera
vez a este mundillo puede que te ayuda a clarificar algún concepto. Por otra
parte también pido disculpas a aquellos entendidos del tema que tras leer esta
entrada puedan evidenciar pequeñas confusiones o directamente monumentales
falacias argumentales. El objetivo que tengo no es hacer definiciones
categóricas, sino solo facilitar con algún que otro ejemplo el entendimiento
elemental de la electricidad. Y empiezo…</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><u>Carga eléctrica</u></b></div>
<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-V9CrMojOBoc/Ubpq7LFUtrI/AAAAAAAAGNU/whASSgzbv4s/s1600/atomo.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://1.bp.blogspot.com/-V9CrMojOBoc/Ubpq7LFUtrI/AAAAAAAAGNU/whASSgzbv4s/s1600/atomo.jpg" height="243" width="320" /></a></div>
Lo primero a entender, creo yo, es que todo en este mundo
tiene una determinada <a href="http://es.wikipedia.org/wiki/Carga_el%C3%A9ctrica" target="_blank"><u>carga eléctrica</u></a>. Es sencillo. Estamos hechos de <a href="http://es.wikipedia.org/wiki/%C3%81tomo" target="_blank">átomos</a> que tienen <a href="https://es.wikipedia.org/wiki/Electr%C3%B3n" target="_blank"><u>electrones</u></a> y <a href="https://es.wikipedia.org/wiki/Prot%C3%B3n" target="_blank"><u>protones</u></a> (entre otros bichillos…). Cada
elemento básico (de aquellos de la tabla periódica de elementos), tiene una
diferente carga eléctrica, y la combinación de esos elementos (en una manzana,
un humano, un robot exterminador, o un kilo de <a href="http://es.wikipedia.org/wiki/Plutonio" target="_blank"><u>plutonio</u></a>) proporciona a
cada cuerpo una diferente carga eléctrica (y no vayas a pensar que la carga
eléctrica de esa combinación es la suma de las cargas individuales, es bastante
más complejo el tema).</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><u>Diferencia de
potencial (Voltaje - V)</u></b></div>
<div class="MsoNormal">
Atendiendo a lo anterior todos los cuerpos tienen un <a href="http://es.wikipedia.org/wiki/Potencial_el%C3%A9ctrico" target="_blank"><u>potencialeléctrico</u></a>, la <a href="http://es.wikipedia.org/wiki/Tensi%C3%B3n_%28electricidad%29" target="_blank"><u>diferencia de potencial</u></a> (también llamada tension, o voltaje)
puede entenderse como la diferencia de carga eléctrica (en realidad potencial
eléctrico) entre dos cuerpos. El voltaje se mide en voltios (<a href="http://es.wikipedia.org/wiki/Voltio" target="_blank">volts</a>), y típicamente
se representa con una letra ‘V’ (como la de los <a href="http://es.wikipedia.org/wiki/V_%28serie_de_televisi%C3%B3n_de_1983%29" target="_blank"><u>lagartos</u></a>…).<br />
.</div>
<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/--GSQ1-GosU0/UbprluzOIvI/AAAAAAAAGNc/QwfIj59epMk/s1600/pila.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/--GSQ1-GosU0/UbprluzOIvI/AAAAAAAAGNc/QwfIj59epMk/s1600/pila.jpg" height="122" width="200" /></a></div>
Dado que todos los cuerpos y cosas del mundo mundial tienen
potencial eléctrico (bueno, ignoro si hay algunas cosas que no lo tienen, como
la materia oscura, o como Justin Bieber…) pues entonces existe la posibilidad
de medir esa diferencia de potencial de los cuerpos, cosa que puede hacerse con
un tester.<br />
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><u>Corriente
eléctrica (Intensidad - I)</u></b></div>
<div class="MsoNormal">
Que haya una diferencia de potencial eléctrico entre dos
cuerpos no significa necesariamente que haya corriente eléctrica entre ellos.
Por ejemplo, entre la pantalla de mi portátil y el plato de sopa que ha dejado
mi nene debe haber alguna diferencia de potencial, pero sin embargo no hay
corriente entre ellos. Cuando entre cuerpos con diferencias de potencial se
produce una conexión eléctrica entre ellos (por ejemplo, se conecta un cable)
se produce un flujo de carga eléctrica (electrones) entre el cuerpo que tiene
una carga mayor y el que tiene una menor. Ese flujo eléctrico es lo que se
llama <a href="http://es.wikipedia.org/wiki/Intensidad_de_corriente" target="_blank"><u>intensidad</u></a>, y suele representarse por la letra ‘I’ y medirse en <a href="http://es.wikipedia.org/wiki/Amperio" target="_blank"><u>amperios</u></a>.<br />
. </div>
<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-Qq5HP2j8SuE/UbpsXOMPMyI/AAAAAAAAGNw/Xqs6zByrBsE/s1600/Corriente-el%C3%A9ctrica.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://3.bp.blogspot.com/-Qq5HP2j8SuE/UbpsXOMPMyI/AAAAAAAAGNw/Xqs6zByrBsE/s1600/Corriente-el%C3%A9ctrica.jpg" height="200" width="197" /></a></div>
La corriente eléctrica se produce entre un “emisor” de
electrones (que llamaremos positivo ‘+’) y un receptor de electrones (que
llamaremos negativo ‘-’, masa, o tierra). Cuando no hay un punto concreto
negativo respecto al que considerar el positivo, se considera que el negativo
es cero, o masa (Ground o GND en inglés), y se asocia a una conexión a tierra (que
se toma como 0 voltios, siempre respecto al positivo).</div>
<div class="MsoNormal">
<br />
Cuando se produce este flujo, y si no hay oposición que lo
impida, este flujo de corriente seguirá en el tiempo hasta que la diferencia de
potencial entre los dos puntos llegue a cero (es decir ambos puntos origen y
destino tengan el mismo potencial eléctrico). En ese momento cesará la
corriente. Por supuesto, si tenemos un elemento <a href="http://es.wikipedia.org/wiki/Generador_el%C3%A9ctrico" target="_blank"><u>generador de corriente</u></a>
(como por ejemplo una <a href="http://es.wikipedia.org/wiki/Pila_el%C3%A9ctrica" target="_blank"><u>pila</u></a>) que mantenga una diferencia de potencial
estable entre dos puntos (borne positivo y borne negativo), la corriente
seguirá circulando estable y la diferencia de potencial permanecerá hasta que
se agote dicha fuente generadora de corriente, la diferencia de potencial entre
bornes pase a cero, y por lo tanto deje de haber corriente eléctrica.</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><u>Resistencia
eléctrica (Resistencia - R)</u></b></div>
<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-2z4cOHmZav4/UbptN8T1orI/AAAAAAAAGOA/8sL679VkYms/s1600/resistencia470.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-2z4cOHmZav4/UbptN8T1orI/AAAAAAAAGOA/8sL679VkYms/s1600/resistencia470.jpg" height="200" width="200" /></a></div>
La resistencia eléctrica es la oposición que deben vencer
los electrones para poder desplazarse a través de un conductor, es decir es la
oposición que encuentra la corriente eléctrica en su paso por un conductor. La
resistencia se suele representar por la letra ‘R’, y se mide en <a href="http://es.wikipedia.org/wiki/Ohmio" target="_blank"><u>ohms</u></a>
(ohmios) que se representan a su vez con el símbolo (Ω).</div>
<div class="MsoNormal">
<br />
Así podemos entender que un conductor eléctrico es un
elemento (o cosa) que ofrece una baja resistencia al paso de la electricidad.
En general los metales (cobre, hierro, oro, etc…) suelen ser buenos
conductores, y con ellos se fabrican cables. El agua es también buen conductor.
Por el contrario el plástico, la madera, el aire o tantos otros son malos
conductores, ya que ofrecen una muy alta resistencia eléctrica (que podría
tender al infinito).</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><u>Comprendiendo la ley
de Ohm</u></b></div>
<div class="MsoNormal">
Como puede intuirse la resistencia R es inversamente
proporcional a la Intensidad I. A una mayor resistencia habrá una menor
intensidad, y a una mayor intensidad, se encontrará una menor resistencia.
Fijaros que en este supuesto el voltaje permanece invariable (siempre que haya
un elemento generador eléctrico), es decir, tanto si la resistencia es infinita
(y por lo tanto no hay ninguna intensidad –no hay corriente eléctrica-), como
si la resistencia es cero (y por tanto hay corriente –flujo de electrones-), el
voltaje permanece fijo.</div>
<div class="MsoNormal">
<a href="http://1.bp.blogspot.com/-pwAfZnd0qfs/Ubpte3Mc-qI/AAAAAAAAGOQ/FvndKRjVmFA/s1600/ley-de-ohm.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://1.bp.blogspot.com/-pwAfZnd0qfs/Ubpte3Mc-qI/AAAAAAAAGOQ/FvndKRjVmFA/s1600/ley-de-ohm.jpg" height="121" width="200" /></a>Esto nos lleva a la ley de Ohm:<br />
<ul>
<li> que dice: <span style="color: #20124d;"><b>V = I * R</b></span><span style="color: #20124d;"><b></b></span></li>
</ul>
</div>
<div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<ul>
<li>pero también puede expresarse como:<b> <span style="color: #20124d;">I = V / R</span></b></li>
</ul>
</div>
<div class="MsoListParagraphCxSpLast" style="mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<ul>
<li><span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font: 7.0pt "Times New Roman";"></span></span></span>o como: <span style="color: #20124d;"></span><span style="color: #20124d;"><b>R = V / I</b></span><span style="color: #20124d;"><b> </b></span></li>
</ul>
<br /></div>
<div class="MsoNormal">
Es decir, a mayor resistencia menor intensidad, a mayor
intensidad menor resistencia. O lo que es lo mismo a igual resistencia pero
mayor intensidad, significa que el voltaje entre los puntos (a un lado y al
otro de la resistencia) es mayor, o que a la misma intensidad pero con una
resistencia mayor significa que también el voltaje entre los dos puntos era
mayor. La ley de Ohm es la base de toda la electrónica y se utilizará
continuamente, de ahí a que sea muy necesario que estos conceptos estén muy claros.</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><u>El ejemplo de las
bañeras de agua</u></b></div>
<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-4kGPAsstqqM/UbpuXCtKIHI/AAAAAAAAGOk/5e37Vb_Dky8/s1600/estanques.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-4kGPAsstqqM/UbpuXCtKIHI/AAAAAAAAGOk/5e37Vb_Dky8/s1600/estanques.jpg" height="148" width="200" /></a></div>
Para ilustrar un poco todo lo anterior (y entenderme que es
solo un ejemplo ilustrativo, pero no es científicamente equivalente), podéis
imaginaros dos estanques de agua de las mismas dimensiones que están puestos
uno al lado del otro al mismo nivel. Sin embargo uno tiene una masa de agua
mucho mayor que el otro.<br />
<br />
Podríamos (haciendo una serie de falacias
argumentales) hacer una equivalencia imaginativa suponiendo que esta masa de
agua es algo así como el potencial electrito que contiene la bañera. Las dos
bañeras tienen diferente cantidad de agua, por lo tanto en nuestro ejemplo
imaginativo es como si tuvieran diferente potencial eléctrico. Es decir, hay
una diferencia (imaginativa) de potencial entre las dos.</div>
<div class="MsoNormal">
Ahora suponemos que ponemos en la parte inferior de las
bañeras un conducto o tubo de agua que las conecta. Está claro que la bañera
con más carga de agua (eléctrica, en nuestra imaginación) transferirá parte de
su carga a la bañera que tenga menos. Es decir, se producirá una corriente de
agua (imagina corriente eléctrica) entre las dos bañeras. Esta corriente se
seguirá produciendo hasta que las dos bañeras tengan la misma masa de agua, es
decir, cuando la diferencia de masa (potencial eléctrico) sea cero. En ese
momento dejara de haber flujo de corriente entre las dos. Por supuesto que si
la bañera con más carga tuviera un grifo permanentemente abierto
proporcionándole agua (es decir, un generador de corriente) el flujo seguiría
produciéndose eternamente…</div>
<div class="MsoNormal">
<br />
En este ejemplo el conductor (tubo de agua) tiene también
una resistencia. Puede ser un tubo muy grueso y por lo tanto el intercambio de
corriente se produce casi al instante, la resistencia es muy baja; <span style="mso-spacerun: yes;"> </span>o un tubo finito lleno de piedras, arena y
calamares en su tinta que dificulten el paso del agua. Aun así, si dicho paso
es posible aunque sea gota a gota, el flujo de corriente seguirá produciéndose
pero está claro que a menor intensidad. Hemos aumentado la resistencia, y por
lo tanto ha bajado la intensidad.</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><u>Y cuando el cielo
nos caiga sobre la tierra</u></b></div>
<div class="MsoNormal">
Y ahora otro pequeño ejemplo gráfico para ilustrar todo
esto.<br />
. </div>
<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-Y59FPN4QvV8/UbpuyLjMk8I/AAAAAAAAGO8/3t2-Fqc66Ig/s1600/Relampago8.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://3.bp.blogspot.com/-Y59FPN4QvV8/UbpuyLjMk8I/AAAAAAAAGO8/3t2-Fqc66Ig/s1600/Relampago8.jpg" height="214" width="320" /></a></div>
De todos es sabido que el aire no es un buen conductor
eléctrico (no te “picas” cuando pasas por al lado de un enchufe). Sin embargo
es posible que en ciertas condiciones especiales, y tras una gran diferencia de
potencial entre diferentes elementos (nubes con altas cargas electromagnéticas
producidas por la acumulación de agua, corrientes de aire de diferentes
temperaturas, y otros efectos atmosféricos) sean capaces de vencer la
resistencia del aire al quedar este <a href="http://es.wikipedia.org/wiki/Ionizaci%C3%B3n" target="_blank"><u>ionizado</u></a>. Es entonces cuando vemos
que toda la diferencia de potencial entre nubes, o entre estas y la tierra
produce esas maravillas que son los <a href="https://es.wikipedia.org/wiki/Rayo" target="_blank"><u>rayos</u></a> y que no dejan de ser una
descarga eléctrica por un elemento (el aire) que debido a la ionización se ha
convertido momentáneamente en un conductor de electricidad, siempre que hayan realmente
diferencias de potenciales muy fuertes entre el origen (nubes) y el destino
(otras nubes o la tierra).</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2293512280015792399.post-61306004975376026992013-06-06T17:17:00.001-07:002013-06-06T17:22:17.666-07:00Controlar un servomotor con Arduino: magia<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-D23PTM7jMdk/Uap6t7a5MDI/AAAAAAAAF-k/lMcFE_r5e04/s1600/Arduino-motor-hs311b.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-D23PTM7jMdk/Uap6t7a5MDI/AAAAAAAAF-k/lMcFE_r5e04/s1600/Arduino-motor-hs311b.jpg" height="200" width="200" /></a></div>
Y ahora que ya nos hemos hecho mayores, vamos a empezar a ver cosas más divertidas. La primera de ellas, controlar un <a href="http://es.wikipedia.org/wiki/Servomotor" target="_blank">servomotor</a><b> <a href="http://hitecrcd.com/products/servos/sport-servos/analog-sport-servos/hs-311-standard-economy-servo/product" target="_blank">HS-311</a></b> con Arduino.<br />
<br />
Este servo, muy conocido y usado, suele venir al comprar el <a href="http://ro-botica.com/es/Producto/Arduino-Starter-Kit/" target="_blank">kit de iniciación</a> básico de Arduino con sus accesorios.<br />
<br />
Antes de empezar, comentar que he tomado prestada la información básica de esta entrada desde <a href="http://noobotics.donhofer.net/?p=5" target="_blank">aquí</a> (<a href="http://noobotics/" target="_blank">NOOBotics</a>), y también de la página de <a href="http://arduino.cc/en/Main/arduinoBoardUno" target="_blank">Arduino UNO</a>, y que las dos me han sido muy útiles.<br />
<br />
<a href="http://3.bp.blogspot.com/-Wt-7I2FeHHg/Uap27khx0vI/AAAAAAAAF-Y/KBer2igzXO0/s1600/Arduino-motor-hs311.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://3.bp.blogspot.com/-Wt-7I2FeHHg/Uap27khx0vI/AAAAAAAAF-Y/KBer2igzXO0/s1600/Arduino-motor-hs311.jpg" height="240" width="320" /></a>Para empezar, lo básico es conectar el servo al Arduino. Es sencillito, podéis conectarlo directamente (como en esta imagen de ejemplo), o utilizar la protoboard (como he hecho yo, ver ejemplo abajo), pero lo que hay que hacer es lo mismo:<br />
<br />
<ul>
<li>Cable rojo del servo al positivo (pin marcado como 5V de Arduino)</li>
<li>Cable negro del servo al negativo (uno de los marcados como GND de Arduino)</li>
<li>Cable amarillo del servo al PIN 9 de Arduino (o a cualquiera de los PINs marcados como <a href="http://es.wikipedia.org/wiki/Modulaci%C3%B3n_por_ancho_de_pulsos" target="_blank">PWM</a>: Pulse Width Modulation, o modulación por ancho de pulsos), por donde se enviará la señal de control al servo.</li>
</ul>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-qh415pWQgUE/UbEWHDNm3LI/AAAAAAAAGDQ/zdt3gS3Lbh8/s1600/Arduino-Servo&Protoboard.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-qh415pWQgUE/UbEWHDNm3LI/AAAAAAAAGDQ/zdt3gS3Lbh8/s1600/Arduino-Servo&Protoboard.png" height="200" width="130" /></a></div>
Pero..., ¿Cómo funciona el servomotor?. Me gusta que te hagas esta pregunta. <b>:-D</b> Solo con preguntas como esta conseguirás hacer frente a los robots cuando lleguen..., esto... Trataré de explicarlo con lo que he ido leyendo y aprendiendo por ahí.<br />
<br />
De entrada, para que funcione hace falta cargar un programa al Arduino, cosa que más abajo veremos. Pero para entender lo que hará el programa es necesario antes entender como funciona un servo de estos. Un poco de teoría, vamos.<br />
<br />
Los que venimos de la nada, o en el mejor de los casos del mundo Lego, un servomotor es un motor en el que le programas la potencia, la dirección del movimiento, y le dices cuanto tiempo ha de estar girando en esa situación. Esa base, aun no siendo mala, no sirve para enfrentarse a un servomotor de modelismo típico como puede ser el HS-311.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-30cGRrr0V3E/UbEahhMDg2I/AAAAAAAAGDg/f3bPsoXQ34s/s1600/Lego-scracth-motor2.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://2.bp.blogspot.com/-30cGRrr0V3E/UbEahhMDg2I/AAAAAAAAGDg/f3bPsoXQ34s/s1600/Lego-scracth-motor2.png" height="115" width="320" /></a></div>
Este tipo de servos (como el HS-311) ni siquiera están diseñados para girar continuamente en una misma dirección, de hecho en muchos modelos no son capaces ni siquiera de dar una vuelta completa en una misma dirección. Por el contrario el diseño de los motores ofrece un muy buen control del numero de grados entre 0 y 360 (o el limite menor a 360 que cada fabricante fija) en que puede moverse el eje del motor.<br />
Para hacer una analogía gráfica, podríamos decir que el servo que <a href="http://robotyyo.blogspot.com.es/2013/05/cochecito-el-primer-robot-de-verdad.html" target="_blank">utilizábamos</a> en Lego WeDo nos permitía directamente mover continuamente las ruedas de un coche, pero no nos permitía moverlas 15 grados. Por el contrario los servos como el HS-311 no nos permiten (directamente) mover las ruedas de un coche, pero si nos permiten decirle a nuestro robot exterminador que levante su brazo ejecutor unos 45º antes de volarnos la cabeza... Para un robot de verdad, al final necesitaremos saber controlar tanto un tipo de motores como otros.<br />
<br />
Hasta aquí todo fantástico, Los mundos de <a href="http://www.yofuiaegb.com/recordando-programas-de-la-tele-los-mundos-de-yupi/" target="_blank">Yupi</a>!. Le dices al servo los grados en los que ha de situarse y el va y se sitúa. Pero no. No es tan fácil. Y no es tan fácil porque ¿como le dices al motor la posición en grados en la que ha de situarse?. Pues de entrada hay que saber que todo servo tiene una posición de ángulo mínimo (0 grados) y una posición de ángulo máximo (180 grados). Así que de entrada olvídate de momento de los 360º.<br />
Bueno, pues de lo primero que habrá que hacer por código es establecer los <u>anchos de pulso</u> en microsegundos que se corresponderán con la posición mínima y con la máxima del servo.<br />
<br />
<a href="http://4.bp.blogspot.com/-4Bix9jN0Sz8/Ua_XliSK_BI/AAAAAAAAGCk/z1TkOKPndDY/s1600/PWM3.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://4.bp.blogspot.com/-4Bix9jN0Sz8/Ua_XliSK_BI/AAAAAAAAGCk/z1TkOKPndDY/s1600/PWM3.jpg" height="170" width="200" /></a>¿Y que es el ancho de pulso o <a href="http://es.wikipedia.org/wiki/Modulaci%C3%B3n_por_ancho_de_pulsos" target="_blank">PWM</a>?. Pues una buena explicación la he encontrado <a href="http://www.electroensaimada.com/pwm.html" target="_blank">aquí</a>. Pero yo trataré de explicarlo de nuevo a mi manera para cuando se me haya olvidado (pasado mañana) y tenga que volverlo a leer..., a ver si soy capaz de entenderme... <b>:-)</b>.<br />
<br />
Pues como dice en esa página la modulación por ancho de pulsos es una técnica para transferir energía mediante una señal cuadrada. En esta imagen podéis ver un buen detalle. La tensión máxima (el valor alto de la señal) que aplicaremos serán unos 5V (volts) puesto que Arduino utiliza ese voltaje con el USB que lo alimenta, y el valor bajo pues serán 0V.<br />
<br />
Estos servos, y generalmente por especificaciones del fabricante (o eso creo, y si no pues búscalo por un servicio que han abierto ahora nuevo que se llama internet...) definen según cada modelo cual es el ancho de pulso mínimo que hay que enviar para que se sitúe en el ángulo mínimo (0º) y cuál es el máximo (180º). En nuestro caso (servo HS-311) esos valores de ancho de pulso son 600 microsegundos y 2400 microsegundos respectivamente para min y max (más o menos, vamos, que total esto de la electrónica no es una ciencia exacta... ¿¿¿???).<br />
<br />
Afortunadamente no estamos solos para mover el servomotor. Tenemos un aliado importante, que se llama Arduino. Y arduino tiene un conjunto de PINs (entre ellos el PIN 9) llamados PWM que están justamente diseñados para cosas como esta de mover un servo. Y además de tener Arduino tenemos unas herramientas más, como es un entorno y lenguaje de programación y además una <a href="http://es.wikipedia.org/wiki/Interfaz_de_programaci%C3%B3n_de_aplicaciones" target="_blank">API </a>o librería de <a href="http://arduino.cc/es/Reference/Servo" target="_blank">servos</a>!!!. Esto nos va a ayudar muchísimo, ya que solo queda realizar un programa como el que se ve más abajo y cargarlo al Arduino.<br />
<br />
<pre style="background-color: white; line-height: 12px;"><div>
<table style="background-color: #dadada; font-family: Courier New, Courier, monospace; font-size: x-small;">
<tbody>
<tr>
<td><code>
#include <Servo.h>
Servo myservo; //create servo object
int pos = 0; //servo position
int positions[] = {0, 45, 90, 135, 180}; //positions (in degrees) to send to the servo
int numPositions = 5;
void setup()
{
//control servo via pin 9
myservo.attach(9, 650, 2350);
//start serial comm. for debugging
Serial.begin(9600);
}
void loop()
{
int i = 0;
//iterate over positions
for(i = 0; i < numPositions; i++)
{
pos = positions[i];
//print debug output
Serial.println("SETTING:");
Serial.println(pos);
//tell servo to set the new position
myservo.write(pos);
//wait for two seconds
delay(2000);
}
}
</code>
</td>
</tr>
</tbody></table>
</div>
<div>
</div>
</pre>
Básicamente lo que hace el programa es:<br />
<ul>
<li>Incluye la librería "Servo.h"</li>
<li>Inicia unas variables, entre ellas un objeto "myservo"</li>
<li>Asocia (con <a href="http://arduino.cc/es/Reference/ServoAttach" target="_blank">attach</a>) el control del servo al PIN 9, y establece los anchos de pulso mínimo y máximo para los grados mínimo (0 grado) y máximo (180 grados) que admite el motor.</li>
<li>Establece (con Serial.begin) la velocidad en baudios a 9600 por segundo. Esto ya lo explicare otro día..., si me entero de para que vale aquí... <b>:-(</b> </li>
<li>Y luego entra en un bucle donde (con <a href="http://arduino.cc/es/Reference/ServoWrite" target="_blank">write</a>) le indica directamente al servo a qué posición en grados a de situarse. En el ejemplo itera continuamente en el mismo bucle pasando el motor continuamente a los grados 0, 45, 90, 135 y 180 de forma indefinida, y esperando un par de segundos en cada posición.</li>
</ul>
A parte de lo que veis (el programa) esta lo que no veis: la librería "<a href="http://code.google.com/p/arduino/source/browse/trunk/libraries/Servo/Servo.h?r=1088">Servo.h</a>" y lo que hay detrás "<a href="http://code.google.com/p/arduino/source/browse/trunk/libraries/Servo/Servo.cpp?r=1088">Servo.cpp</a>" (que si podéis verlo si lo buscáis dentro de la instalación del software de Arduino) y el propio Arduino (que vale!, de verlo lo ves, pero como no te metas en los chips cuesta de pillar que hace y como exactamente... ;-)<br />
<br />
Esta librería es la que se encarga de comunicar y transformar a <a href="http://es.wikipedia.org/wiki/Lenguaje_de_bajo_nivel">bajo nivel</a> los grados que le indicas a los que quieres que se ponga el servo, a señales específicas (un porron de señales cuadradas tipo PWM) a los PINs de Arduino, y que este hará llegar al servo a través del PIN 9 indicado. Es decir, la magia es lo que no ves. Y lo que solo los magos pueden ver.<br />
<br />
Ala!. Y ponlo ya en marcha que por hoy ya esta!.<br />
;-)<br />
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2293512280015792399.post-87391924552947560642013-05-31T16:04:00.001-07:002013-06-01T00:06:27.590-07:00Arduino básico. ¿Como empezar? Ya se, ya se que en estos primeros posts (y quizás en todos los demás) voy saltando de un tema a otro sin un aparente orden o concierto. Pero creerme sí que lo hay (o no). El orden que sigo es el que yo mismo me voy buscando, de temáticas diferentes pero siempre con el objetivo de aprender y facilitar que mi nene (o quien lea este blog) pueda ir aprendiendo pausadamente y desde la base sin demasiado encasillamiento en un tema concreto.<br />
<br />
<a href="http://3.bp.blogspot.com/-16ZpN4G6Tns/UZFwVM0k9xI/AAAAAAAAFYI/e1ikYC_p4-o/s1600/arduino_due_in_hand.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-16ZpN4G6Tns/UZFwVM0k9xI/AAAAAAAAFYI/e1ikYC_p4-o/s1600/arduino_due_in_hand.jpg" height="200" width="200" /></a><a href="http://arduino.cc/es/" target="_blank">Arduino </a>es una maravilla. Paradigma del <a href="http://es.wikipedia.org/wiki/Hardware_libre" target="_blank">hardware libre</a>, nos facilita todo un ordenador en la palma de la mano. No es un ordenador de sobremesa o portátil como estamos acostumbrados a ver, pero si es todo un ordenador en el sentido de contener una CPU, una memoria, entradas y salidas digitales y analógicas, y capacidad de programarse.<br />
<br />
Cualquier "cosa" externa al Arduino con la que queramos que interactue necesitará no solo de saber programarlo, sino de la necesidad de entrar en temas de electrónica, y por lo tanto hardware. Y es que un robot es eso, hardware y software.<br />
<br />
Manos a la obra!. Seguidamente vamos a ver como empezar a utilizar Arduino.<br />
<br />
<b>NOTA</b>: Este primer ejemplo básico, y casi todo lo que aquí se condensa en pocos pasos, ha sido obtenido directamente de la propia web de Arduino, tanto de la versión en <a href="http://arduino.cc/es/Tutorial/HomePage" target="_blank">Español </a>como en la <a href="http://arduino.cc/en/Guide/HomePage" target="_blank">Inglesa</a>.<br />
<br />
<b><u>1 - Adquirir una placa Arduino</u></b>. De cualquier modelo. Yo uso una <a href="http://arduino.cc/en/Main/arduinoBoardUno" target="_blank">Arduino UNO</a>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-2smZUZYpFJM/Uaip0evyTXI/AAAAAAAAF8Y/AYBu-L4AD9U/s1600/Arduino-boardUno.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-2smZUZYpFJM/Uaip0evyTXI/AAAAAAAAF8Y/AYBu-L4AD9U/s1600/Arduino-boardUno.png" height="225" width="320" /></a></div>
<br />
<b><u>2 - Conectar la Placa al puerto USB del ordenador</u></b>. Esto proporciona alimentación a la Placa (seguramente se encenderá alguna lucecita por ahi), y por tanto alimentará también a los componentes que conectes a ella. Pero no te confíes, la alimentación no te dará mucha potencia, con lo que si quieres conectar varios cacharrillos necesitaras alimentarlos externamente con pilas.<br />
<br />
<u><b>3 - Descargar sofware</b></u> de <a href="http://www.arduino.cc/en/Main/Software" target="_blank">aquí</a>. Descargar y luego instalar, claro.<br />
<br />
<b><u>4 - Abrir entorno IDE de Arduino</u></b>. Tras instalar aparecerá un entorno <a href="http://es.wikipedia.org/wiki/Entorno_de_desarrollo_integrado" target="_blank">IDE</a> como <a href="http://arduino.cc/en/Guide/Environment" target="_blank">este</a>:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-i_52leI49yo/UaipVE6w3CI/AAAAAAAAF8Q/h5OYIcsbw34/s1600/Arduino-IDE.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-i_52leI49yo/UaipVE6w3CI/AAAAAAAAF8Q/h5OYIcsbw34/s1600/Arduino-IDE.png" height="320" width="264" /></a></div>
<br />
<b><u>5 - Configurar entorno para el acceso a Arduino</u></b>. Lo primero que hay que hacer es:<br />
<ul>
<li>Ir al menú de <b>Herramientas>Tarjetas</b> y seleccionar el modelo de tarjeta Arduino. Como he dicho en mi caso es Arduino UNO. </li>
<li>Ir al menú de <b>Herramientas>Puerto Serial</b> y seleccionar el puerto serie al que esta conectado la placa Arduino. En un Windows puedes tratar de buscar esto yendo al Administrador de Dispositivos de Windows y abrir la opción de ver los puertos COM, como la imagen siguiente, donde se ve que en mi caso se me ha conectado al puerto COM10. Y si no, pues pruébalos todos hasta que funcione... :-)</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-5-q69lO84DM/UaiyvgHQq9I/AAAAAAAAF8o/ouJGSdr6l-A/s1600/win-deviceadmin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-5-q69lO84DM/UaiyvgHQq9I/AAAAAAAAF8o/ouJGSdr6l-A/s1600/win-deviceadmin.png" height="400" width="293" /></a></div>
<br />
<b><u>6 - Cargar el primer ejemplo básico: <a href="http://arduino.cc/en/Tutorial/Blink" target="_blank">Blink</a></u></b>. Ir al menú <b>Archivo>Ejemplos>01.Basics>Blink</b>.<br />
Este ejemplo simplemente hace parpadear a un <a href="http://robotyyo.blogspot.com.es/2013/05/el-primer-circuito-electrico.html" target="_blank">LED</a>. Pero claro, hay que conectar el LED. Considerar también que el lenguaje de programación de Arduino esta basado en <a href="http://es.wikipedia.org/wiki/C_(lenguaje_de_programaci%C3%B3n)" target="_blank">C</a>/<a href="http://es.wikipedia.org/wiki/C%2B%2B" target="_blank">C++</a>, aunque también se puede utilizar otros como <a href="http://seaside.citilab.eu/scratch/arduino" target="_blank">Scratch</a>.<br />
<br />
<b><u>7 - Conectar un LED al Arduino</u></b>. Aquí podéis ver un ejemplo tanto "real" como en plan esquemático de donde y como hay que conectar el LED. Si tenéis Arduino conectado por USB y el LED no va a estar encendido mucho rato, podéis probar sin poner en medio la resistencia, y cruzar los dedos para que el LED no se estropeé a la primera...<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-BdvzUzIOyso/UaklICjX1jI/AAAAAAAAF84/8o29Mls7xbg/s1600/Arduino-basic-led.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-BdvzUzIOyso/UaklICjX1jI/AAAAAAAAF84/8o29Mls7xbg/s400/Arduino-basic-led.png" height="217" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Recordar que la pata larga del LED es el positivo (y por lo tanto va al PIN 13 de Arduino, en este ejemplo), y la corta es el negativo y va al PIN GND (ground, <a href="http://es.wikipedia.org/wiki/Toma_de_tierra" target="_blank">toma de tierra</a>).</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>8 - Cargar el programa al Arduino</b>. Ya esta todo listo. Tenemos nuestro Arduino encendido, con el LED conectado, el IDE en marcha y configurado con el programa Link en pantalla. Solo queda cargar ese programa al Arduino. Para esto, y si todo esta bien, solo hay que darle al icono <img border="0" src="http://1.bp.blogspot.com/-gUcjak5tGbU/Uakm7tM7y0I/AAAAAAAAF9E/QzydGOscsSA/s1600/Arduino-icon-upload.png" /> del entorno IDE del Arduino.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Y ya esta!!!. Felicidades!!!. Si todos los pasos han salido bien el LED empezará a parpadear. Misión cumplida. De ahí a construir el robot que ha de aniquilar a toda la humanidad ya solo queda conectar algunos cables y componentes más y tirar unas cuantas más lineas de código... ;-D</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2293512280015792399.post-81539095945495587612013-05-28T17:22:00.001-07:002013-05-31T23:58:14.967-07:00Recursos externos Lego WeDoY ya llego el día en que Lego WeDo se acabo para mi, que no para mi nene, claro. Se acabo quiero decir que como programador que soy creo que ya he superado todos los misterios necesarios para desarrollar aplicaciones (utilizando Scratch) que hagan uso de su motor, su sensor de proximidad y su sensor de inclinación (ver dos <a href="http://robotyyo.blogspot.com.es/2013/05/y-por-fin-lego-wedo.html" target="_blank">entradas </a><a href="http://robotyyo.blogspot.com.es/2013/05/cochecito-el-primer-robot-de-verdad.html" target="_blank">anteriores</a>). Misterio resuelto.<br />
<br />
De ahí a mi pretensión real de construir un robot que someta, esclavice y aniquile a toda la humanidad ya solo quedan unos temillas mecánicos sin importancia por resolver. Cuestión de ir ensamblando piececitas lego...<br />
<br />
Para tan glorioso logro, salvar los temas mecánicos que a mi particularmente no se me dan nada bien, he encontrado por <a href="http://aliciaalberca201.wordpress.com/recursos-para-la-replica-de-robotica-educativa-wedo/" target="_blank">ahí </a>un conjunto de documentos PowerPoint (.ppt) y PDF que os pueden ser muy útiles para tomar ideas y así avanzaros a mi diabólica creación.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-SkvoceYk-LY/UaVBHe3y3nI/AAAAAAAAF7I/-pulw51X95w/s1600/2013-05-29+01_41_00-Microsoft+PowerPoint+-+%255Blego-ruedas-y-ejes.ppt+%255BModo+de+compatibilidad%255D%255D.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-SkvoceYk-LY/UaVBHe3y3nI/AAAAAAAAF7I/-pulw51X95w/s1600/2013-05-29+01_41_00-Microsoft+PowerPoint+-+%255Blego-ruedas-y-ejes.ppt+%255BModo+de+compatibilidad%255D%255D.png" height="166" width="200" /></a></div>
Aquí podéis descargar un didáctico documento PPT donde explica el uso de<b><a href="https://dl.dropboxusercontent.com/u/5333610/lego/lego-ruedas-y-ejes.ppt" target="_blank"> ruedas y ejes</a></b>. A mi este documento es el que me ha parecido más básico y evidente de todos, y tampoco aporta nada especial a mi entender.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-ID-6-gA4uBQ/UaVBmUAG7aI/AAAAAAAAF7Q/pjts6AkgOhY/s1600/2013-05-29+01_44_21-Microsoft+PowerPoint+-+%255Blego-palancas.ppt+%255BModo+de+compatibilidad%255D%255D.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://4.bp.blogspot.com/-ID-6-gA4uBQ/UaVBmUAG7aI/AAAAAAAAF7Q/pjts6AkgOhY/s1600/2013-05-29+01_44_21-Microsoft+PowerPoint+-+%255Blego-palancas.ppt+%255BModo+de+compatibilidad%255D%255D.png" height="200" width="133" /></a></div>
<br />
Esto otro en cambio explica el uso de <b><a href="https://dl.dropboxusercontent.com/u/5333610/lego/lego-palancas.ppt" target="_blank">palancas</a></b>. Y para los que (como yo) no habían montado jamas ni la tapa de una caja de zapatos, aquí pueden empezar a encontrar alguna idea interesante que hacer con piezas lego wedo y sus engranajes.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-O8fvHlCTDRQ/UaVEOV0FnUI/AAAAAAAAF7g/LphH-maquzc/s1600/2013-05-29+01_55_21-Microsoft+PowerPoint+-+%5Blego-poleas.ppt+%5BModo+de+compatibilidad%5D%5D.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-O8fvHlCTDRQ/UaVEOV0FnUI/AAAAAAAAF7g/LphH-maquzc/s1600/2013-05-29+01_55_21-Microsoft+PowerPoint+-+%5Blego-poleas.ppt+%5BModo+de+compatibilidad%5D%5D.png" height="147" width="200" /></a></div>
Yendo un poco más allá en este otro vemos el uso muy didáctico de <b><a href="https://dl.dropboxusercontent.com/u/5333610/lego/lego-poleas.ppt" target="_blank">poleas</a></b>, donde también muestra diversas formas de uso de las correas (vamos, las gomas de pollo amarillas que vienen con wedo).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-IVFfEx7h54A/UaVGDT_Af8I/AAAAAAAAF7s/_8Ooiu0q12o/s1600/2013_05_29_01_59_24_Microsoft_PowerPoint_lego_engranajes.ppt_Modo_de_compatibilidad_.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://4.bp.blogspot.com/-IVFfEx7h54A/UaVGDT_Af8I/AAAAAAAAF7s/_8Ooiu0q12o/s1600/2013_05_29_01_59_24_Microsoft_PowerPoint_lego_engranajes.ppt_Modo_de_compatibilidad_.png" height="190" width="200" /></a></div>
<br />
Y también este específico sobre el uso de <b><a href="https://dl.dropboxusercontent.com/u/5333610/lego/lego-engranajes.ppt" target="_blank">engranajes</a></b>, que también me ha sido muy instructivo.<br />
<br />
<br />
Y para finalizar tenemos el detalle de unos ejemplos prácticos, donde algunos son los que aparecen en el propio vídeo promocional de Lego Wedo:<br />
<br />
<ul>
<li><a href="https://dl.dropboxusercontent.com/u/5333610/lego/lego-pajaros_bailarines.pdf" target="_blank">Pajaritos bailarines</a></li>
<li><a href="https://dl.dropboxusercontent.com/u/5333610/lego/lego-mono_percusionista.pdf" target="_blank">Mono percusionista</a></li>
<li><a href="https://dl.dropboxusercontent.com/u/5333610/lego/lego-trompo.pdf" target="_blank">Trompo</a></li>
<li><a href="https://dl.dropboxusercontent.com/u/5333610/lego/lego-cocodrilo.pdf" target="_blank">Cocodrilo</a></li>
<li><a href="https://dl.dropboxusercontent.com/u/5333610/lego/lego-grua.pdf" target="_blank">Grua</a></li>
<li><a href="https://dl.dropboxusercontent.com/u/5333610/lego/lego-noria.pdf" target="_blank">Noria</a></li>
</ul>
<br />
Y sin con todo esto no tenéis suficiente y de verdad queréis estar preparados para un ataque robot, entonces tratar vosotros mismos de construir este impresionante <a href="http://legowedo.blogspot.com.es/2013/01/marine-helicopter.html" target="_blank">Marine Helicopter</a>.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-EsW2SQxmIlk/UaVOEHQ99WI/AAAAAAAAF78/5NtopFtCaRM/s1600/lego-marine-helicopter.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-EsW2SQxmIlk/UaVOEHQ99WI/AAAAAAAAF78/5NtopFtCaRM/s1600/lego-marine-helicopter.jpg" /></a></div>
<br />
<br />
Espero que todos estos recursos externos sean de vuestro interés, y del de vuestros peques.<br />
<div>
<br /></div>
Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-2293512280015792399.post-25448888647968702422013-05-24T14:51:00.000-07:002013-05-24T16:49:44.729-07:00Cochecito: el primer robot de verdad<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-JB-Na5htoR8/UZ_fNVYWqFI/AAAAAAAAF18/iXYP9UlcorA/s1600/wedo-cochecito.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-JB-Na5htoR8/UZ_fNVYWqFI/AAAAAAAAF18/iXYP9UlcorA/s1600/wedo-cochecito.jpg" height="200" width="150" /></a></div>
Vale!. Si, es solo un cochecito en realidad, y bastante pero que muy bastante limitado. Sea como sea es programable, por lo que entiendo que podría entrar en la categoría de robot. No me quitéis mi ilusión, ¿eh?<br />
<br />
Un cochecito robot hecho con las piezas <a href="http://robotyyo.blogspot.com.es/2013/05/y-por-fin-lego-wedo.html" target="_blank">Lego WeDo</a>, y programado con <a href="http://robotyyo.blogspot.com.es/2013/05/programacion-para-ninos-scratch.html" target="_blank">Scratch</a>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-4vitW16fVNE/UZ6Nx-XCuAI/AAAAAAAAFzw/jVfki02gmx8/s1600/2013-05-23+23_43_52-Motor+y+sensor1-+Scratch.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://3.bp.blogspot.com/-4vitW16fVNE/UZ6Nx-XCuAI/AAAAAAAAFzw/jVfki02gmx8/s1600/2013-05-23+23_43_52-Motor+y+sensor1-+Scratch.png" height="197" width="320" /></a></div>
El programa como se ve es bien simple, tras inicializar el motor entramos en un par de bucles al interior del cual se mueve el motor (y el coche) y se realizan pequeñas pausas. Del bucle interior solo se sale si el sensor detecta que el cochecito se acerca a un punto de colisión. En ese momento el coche se para, y vuelve a la marcha cuando desaparece el obstáculo.<br />
<br />
Muy simple, pero perfectamente efectivo e ilustrativo de como funcionan algunos de los componentes principales de WeDo, es decir, el motor y el sensor de distancia.<br />
<br />
A modo ilustrativo podéis ver alguna que otra imagen de como ha quedado este cochecito.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-tpqwESJP2wk/UZ_gGuXkpCI/AAAAAAAAF2I/sKTfUDH8kcM/s1600/wedo-cochecito2.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-tpqwESJP2wk/UZ_gGuXkpCI/AAAAAAAAF2I/sKTfUDH8kcM/s1600/wedo-cochecito2.jpg" height="238" width="320" /></a></div>
Ah, y lo siento por la parte trasera..., el paquete Lego WeDo básico solo trae dos ruedas... :-(<br />
Para las traseras he tenido que hacer un apaño...<br />
<br />
<b><span style="color: #cc0000;">NOTA</span></b>: Estoy enfrascado ahora en un nuevo cacharro WeDo, que es el manejo de un "avión" moviendo su hélice a un lado y a otro en función de la inclinación (usando el sensor de inclinación) de WeDo, pero parece que el HUB WeDo no soporta más de dos componentes conectados.<br />
<br />
Esto lo digo porque al introducir el sensor de proximidad en el cacharro (Motor+Sensor inclinación+Sensor proximidad) empiezo a tener comportamientos no esperados. Vamos, que o me falla el motor o me falla el sensor de proximidad...<br />
:-(.<br />
<br />
¿Alguien de los numerosos seguidores de este blog podría constatar esto?. Gracias...<br />
<br />
<a href="http://2.bp.blogspot.com/-PVf_e4kLF3Q/UZ_8fsLc-MI/AAAAAAAAF2Y/BgY5q_WFmag/s1600/2013-05-25+01_44_39-Robot+y+Yo.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://2.bp.blogspot.com/-PVf_e4kLF3Q/UZ_8fsLc-MI/AAAAAAAAF2Y/BgY5q_WFmag/s1600/2013-05-25+01_44_39-Robot+y+Yo.png" /></a><b><span style="color: #cc0000;">ACTUALIZACION</span></b>: Comprobado!. El HUB Lego WeDo soporta un máximo de dos componentes conectados. He cambiado de posicion el sensor de distancia por el de inclinación, y ahora es la inclinación el que falla. A parte de que el motor no enciende. Una gran limitación a mi entender.<br />
<br />
Tampoco no alcanzo a entender como no esta previsto esto, ya que aun cuando el HUB solo tiene dos conectores, el propio conector del motor tiene como una extensión que parece permitir que otros componentes se conecten a él como si se tratara de una extensión del HUB, tal como se ve en la imagen.<br />
<br />
Pero no funciona...<br />
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2293512280015792399.post-34778684252544120242013-05-20T16:07:00.000-07:002013-05-28T17:29:12.480-07:00Y por fin, Lego WeDoY por fin llego el día en que mi nene cumple 6 años, y yo, con mucha más emoción que él, me dispongo a abril la caja de <a href="http://ro-botica.com/es/tienda/Marca/LEGO-Education/LEGO-WeDo" target="_blank">Lego WeDo</a> que adquirí hacen un mes y la dejé sin abrir esperando este momento.<br />
<br />
¿Y como hacer para programar los robots hechos con WeDo?. Pues para empezar, con <a href="http://robotyyo.blogspot.com.es/2013/05/programacion-para-ninos-scratch.html" target="_blank">Scratch</a>.<br />
Pasos básicos:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-ND9zseMRIis/UZpEHJvm7YI/AAAAAAAAFiY/0PomBikrJoc/s1600/lego-hub-usb.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://4.bp.blogspot.com/-ND9zseMRIis/UZpEHJvm7YI/AAAAAAAAFiY/0PomBikrJoc/s1600/lego-hub-usb.png" height="183" width="200" /></a></div>
<br />
<ol>
<li>Descarga Scratch v1.4 (la versión 2.0 de momento es solo online) desde "<a href="http://scratch.mit.edu/scratch_1.4/">http://scratch.mit.edu/scratch_1.4/</a>", e instálalo.</li>
<li>En el menú superior de Scracth, en la opción Editar, activa la opción "Mostrar bloques de motor". Esto permite la comunicación exterior con los motores de Lego (y supongo que de otros). En la práctica esto hace aparecer nuevas opciones de motor al final de las opciones del menú "Movimiento", y nuevas opciones de sensores al final del menú "Sensores".</li>
<li>Conectar el HUB Lego WeDo al puerto USB del ordenador.</li>
<li>Conectar los sensores o motores de WeDo al HUB.</li>
</ol>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-a6ry2Tmvbqk/UZqmQQtAK9I/AAAAAAAAFlE/Xg1eVJSGsbE/s1600/2013-05-21+00_38_56-Scratch+1.4+of+30-Jun-09.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://4.bp.blogspot.com/-a6ry2Tmvbqk/UZqmQQtAK9I/AAAAAAAAFlE/Xg1eVJSGsbE/s1600/2013-05-21+00_38_56-Scratch+1.4+of+30-Jun-09.png" height="60" width="200" /></a></div>
<a href="http://2.bp.blogspot.com/-PKXDEOjJVcI/UZql0SsODHI/AAAAAAAAFk8/BPMWqTVFo6U/s1600/2013-05-21+00_37_01-Scratch+1.4+of+30-Jun-09.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-PKXDEOjJVcI/UZql0SsODHI/AAAAAAAAFk8/BPMWqTVFo6U/s1600/2013-05-21+00_37_01-Scratch+1.4+of+30-Jun-09.png" height="143" width="200" /></a><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Así pues ya esta todo listo para hacer un programa que controle nuestro primer robot de verdad. De ahí a Terminator solo es un paso. :-D<br />
<br />
<a href="http://2.bp.blogspot.com/-ZjRHdJg3dRw/UZqpOSfjUjI/AAAAAAAAFlU/OV47tm1kvqU/s1600/2013-05-21+00_48_55-Motor1-+Scratch.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://2.bp.blogspot.com/-ZjRHdJg3dRw/UZqpOSfjUjI/AAAAAAAAFlU/OV47tm1kvqU/s1600/2013-05-21+00_48_55-Motor1-+Scratch.png" /></a>Y como primer programa pues podríamos hacer uno muy requetebásico que simplemente mueva un motor hacia un lado y hacia otro durante unos 10 ciclos esperando dos segundos entre que se mueve a un lado y se mueve al otro. Montando alguna barrera, engranaje o cosa enganchada al motor podemos crear una primera impresión de "Uaaaauuuu!!!" a nuestro nene.<br />
<br />
Ahí al ladito se puede ver este primer programa ejemplo. Realmente por la facilidad de Scratch no hace falta ni comentarlo, aunque si el nene todavía esta aprendiendo a leer o esto es uno de los primeros programas que le mostráis tampoco esperéis que lo pille a la primera.<br />
<br />
No soy especialista en psicología infantil (por suerte), pero creo que es mejor no presionar al chaval, porque supongo que si se siente frustrado puede tener una reacción de rechazo hacia este mundillo. Y los Terminators alguien los va ha hacer algún día igualmente, así que es mejor que los entienda y este preparado... :-D<br />
<br />
Para aprender más sobre la programación de Scratch con Lego WeDo, <b><a href="https://dl.dropboxusercontent.com/u/5333610/lego/scratch-lego-wedo-tutorial.pdf" target="_blank">aquí </a></b>tenéis este documento básico.<br />
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2293512280015792399.post-26727113942999354352013-05-11T16:50:00.002-07:002013-05-28T16:21:46.921-07:00Programación para niños: ScratchHoy toca empezar con temas de programación, prácticamente el único de los temas que trato en este blog que si controlo bien. Y para seguir el espíritu de este blog, toca programación para niños.<br />
<br />
Y hoy, programación para niños es <a href="http://scratch.mit.edu/" target="_blank">Scratch</a>.<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://www.youtube.com/watch?v=b7ovi2qtX4I" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;" target="_blank"><img border="0" src="http://3.bp.blogspot.com/-OH7cu0RIDP0/UY7FuquxG2I/AAAAAAAAFVM/fZQYZJfCnMc/s1600/Scracth&Snoopy.png" height="143" style="margin-left: auto; margin-right: auto;" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Click para vídeo</td></tr>
</tbody></table>
Scratch es un software creado por el MIT para facilitar el aprendizaje de la programación, y principalmente para niños. Aunque es necesario saber leer (por lo tanto estamos hablando de una edad de aproximadamente 7 años) utiliza ciertos trucos visuales y un entorno sencillo con el que facilitar el aprendizaje.<br />
<br />
Yo le enseñé el resultado de este pequeño programa a mi nene (Olai, que cumple 6 años la semana que viene) y le gusto. Sobre todo cuando tras hacer el baile del gato (que se muestra como ejemplo en el propio Scratch) le dije "y también puedo hacer que el gato le salte a la cabeza".<br />
<br />
<a href="http://4.bp.blogspot.com/-xWh-fGIK8QI/UY7M0eIs-PI/AAAAAAAAFVc/YipqtOV3p0k/s1600/Scrach&Snoopy-src.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-xWh-fGIK8QI/UY7M0eIs-PI/AAAAAAAAFVc/YipqtOV3p0k/s1600/Scrach&Snoopy-src.png" height="320" width="188" /></a>Este es el código del programa en Scratch.<br />
Como podéis ver es bien sencillo. Instrucciones simples, en castellano, con colores, con representación gráfica de los bucles, etc.<br />
<br />
Las imágenes como el sprite del gato, o el fondo (como Snoopy) se cargan a parte, y luego las acciones del programa se aplican sobre esos sprites.<br />
<br />
¿Cual es la gracia de Scratch? ¿Solo animar sprites? Bueno. Eso es importante, pero no es lo único. La gracia de Scratch es que es abierto, y como tal se puede adaptar y ha sido adaptado para utilizar y controlar otros elementos externos. Así tenemos <a href="http://seaside.citilab.eu/scratch/arduino" target="_blank">Scratch para Arduino</a>, y <a href="http://info.scratch.mit.edu/wedo" target="_blank">Scratch para Lego WeDo</a>, y seguramente para muchos más "scratch para ...".<br />
<br />
Así que con todo esto hoy era solo un post presentación de Scracth. Vendrán otros, espero, donde iremos trabajando este lenguaje con estos elementos externos que comentaba.<br />
<br />
<b>NOTA</b>: Scratch es fantástico, pero para mi nene de 6 años (que solo está empezando a aprender a leer), ojalá pueda utilizar el <a href="http://ro-botica.com/es/Producto/Software-LEGO-WeDo--mas--12-actividades/" target="_blank">Software de Lego WeDo</a>. Mirad <a href="https://dl.dropboxusercontent.com/u/5333610/lego/lego-wedo-soft.pptx" target="_blank">esto</a>, que maravilla:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://dl.dropboxusercontent.com/u/5333610/lego/lego-wedo-soft.pptx" target="_blank"><img border="0" src="http://4.bp.blogspot.com/-Kf6kd6H-Giw/UZFzM-64ZII/AAAAAAAAFYY/jgBNrqjGmYE/s1600/lego-wedo-soft.jpg" height="137" width="320" /></a></div>
<br />
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2293512280015792399.post-9361053140150527312013-05-08T15:09:00.001-07:002013-05-24T15:05:44.968-07:00De la teoría a la prácticaEn la anterior entrada comentaba un <a href="http://robotyyo.blogspot.com.es/2013/05/el-primer-circuito-electrico.html" target="_blank">primer circuito eléctrico</a> básico con el que empezar, y mostraba un dibujo teórico de la conexión. Para pasar de la teoría a la práctica es necesario empezar con los cables, las pilas, etc... Una primera duda básica es ¿como lo conecto todo?. La respuesta es sencilla: mediante una <a href="http://es.wikipedia.org/wiki/Placa_de_pruebas" target="_blank">protoboard</a>.<br />
Esta es una de las más típicas y prácticas para empezar:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-eLpn0BPsf90/UYrEnQTxniI/AAAAAAAAFSI/-sVEc7dK03w/s1600/protoboard01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-eLpn0BPsf90/UYrEnQTxniI/AAAAAAAAFSI/-sVEc7dK03w/s1600/protoboard01.jpg" height="139" width="400" /></a></div>
<br />
Nos ofrece un cableado interno y un conjunto de orificios donde conectar los componentes. Claro que para ello hay que saber como va el cableado interno, cosa que al menos a mi me ha costado algo encontrar, aunque como todo una vez lo sabes se ve tan evidente... Para este modelo el cableado interno es este:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-jimeiCYHD2I/UYrHJ0GTgiI/AAAAAAAAFSU/MLI2Laisqqc/s1600/protoboard02b.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-jimeiCYHD2I/UYrHJ0GTgiI/AAAAAAAAFSU/MLI2Laisqqc/s1600/protoboard02b.jpg" height="138" width="400" /></a></div>
<br />
Básicamente he dibujado lineas negras sobre la protoboard para ilustrar ese cableado interno. La idea es conectar en los extremos la alimentación (rojo para positivo y azul para negativo), con lo que toda la linea lateral queda alimentada. Si se quieren alimentar las dos lineas laterales pues se conecta un par de cables (de linea roja a linea roja, y de azul a azul). Y ahora solo falta en las partes intermedias conectar los componentes y alimentarlos con cables desde las lineas de alimentación. Fácil. La separación entre puntos y también la separación intermedia entre las dos bandas centrales tiene el tamaño justo para conectar diferentes componentes y chips, que se conectaran entre los orificios de la banda intermedia superior y los de la banda intermedia inferior.<br />
<a href="http://3.bp.blogspot.com/-f7kDm6gvGlA/UYrJopVTR4I/AAAAAAAAFSk/mr-TmlpMc0s/s1600/protoboard03.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://3.bp.blogspot.com/-f7kDm6gvGlA/UYrJopVTR4I/AAAAAAAAFSk/mr-TmlpMc0s/s1600/protoboard03.png" height="115" width="200" /></a><br />
<br />
Podéis ver también aquí un ejemplo de esto.<br />
<br />
<a href="http://4.bp.blogspot.com/-NrIlHV7gLoY/UYrMg6iPJ4I/AAAAAAAAFSw/7IbQfhBCquk/s1600/cables-cocodrilo.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-NrIlHV7gLoY/UYrMg6iPJ4I/AAAAAAAAFSw/7IbQfhBCquk/s1600/cables-cocodrilo.jpg" height="146" width="200" /></a>Este tipo de placas, junto a un kit básico de electrónica, podréis adquirirlas en casi cualquier tienda de electrónica. Yo personalmente la compre junto a mi <a href="http://www.arduino.cc/es/" target="_blank">Arduino</a> en la tienda <a href="http://ro-botica.com/es/Producto/Kit-b%C3%A1sico-de-desarrollo-Arduino/" target="_blank">Ro-botica</a> de Barcelona.<br />
<br />
Y ya con todo esto solo os hace falta un par de cables rojo(+) y negro(-) con conector cocodrilo (como en la imagen) y una pila de petaca y listos para empezar.<br />
<br />
<br />
<br />
<br />
<br />
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2293512280015792399.post-53504501565363362292013-05-05T15:16:00.000-07:002013-06-01T00:19:07.963-07:00El primer circuito eléctrico<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-ZEw1LNv66b4/UYbI182jWtI/AAAAAAAAFRI/cB4Q4YsFWpI/s1600/diodo-red01.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-ZEw1LNv66b4/UYbI182jWtI/AAAAAAAAFRI/cB4Q4YsFWpI/s1600/diodo-red01.png" height="184" width="200" /></a></div>
Si un nene de unos 6 años no ha visto antes trabajar de cerca los circuitos eléctricos ahora es un buen momento para mostrarle una primera impresión práctica de "de que va esto de la electricidad".<br />
<br />
Y un primer circuito eléctrico puede ser el de encender un <a href="http://es.wikipedia.org/wiki/Led" target="_blank">LED </a>con una pila. Yo utilicé una pila de petaca de 4.5V, y claro, el primer LED se petó, aunque otros aguantaron.<br />
<br />
Ya me lo imaginaba, que sería necesario "amortiguar" el golpe de tensión del LED con una resistencia. Pero claro, la impaciencia por encenderlo me pudo, y el LED no aguanto demasiado, aunque también me extraño que aguantara tan poco. Otros han tenido mejor aguante de unos pocos segundos tras los cuales los desconecto para evitar seguir petando LEDs.<br />
<a href="http://4.bp.blogspot.com/-Brl37TyjXNc/UYbXSIvdjyI/AAAAAAAAFRo/iUuRy5hcn2s/s1600/circuito-led-basico.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-Brl37TyjXNc/UYbXSIvdjyI/AAAAAAAAFRo/iUuRy5hcn2s/s1600/circuito-led-basico.png" height="139" width="320" /></a><br />
<br />
Oks. Pues ahí va. Primer circuito para niños. Fácil, ¿no?. Pero al nene le gustará.<br />
<br />
<br />
<br />
Connsiderar que los LEDs tienen polaridad, y que la pata larga de LED es el positivo (+) y debe conectarse a ese extremo de la álimentación, y la corta es el negativo (-). Las resistencias en cambio no tienen polaridad, y da igual como la conectes.<br />
<br />
Y con esto un poco de calculo de<a href="http://es.wikipedia.org/wiki/Ley_de_Ohm" target="_blank"> ley de Ohm</a> básica, que dice que:<br />
R (Resistencia) = V (Voltaje) / I (Intensidad)<br />
<br />
Vamos a suponer que:<br />
<ul>
<li>El LED está diseñado para aguantar un voltaje de 2V (2 Volts, que por ahí he leído que es bastante típico en LED rojo).</li>
<li>El LED está diseñado para soportar una intensidad de unos 20mA (mili Amperios = 0,02 Amperios).</li>
<li>El voltaje de la pila es de 4.5V.</li>
</ul>
Pues con estos datos tenemos que según dicha ley de Ohm: R = V(4,5 - 2) / I(0,02) = 125 Ohms.<br />
<div>
Pues eso, que para que el diodo aguante bien (con los datos del ejemplo) necesitará una resistencia de unos 125 Ohms.</div>
<div>
<br /></div>
<div>
Muy bien ahora solo falta encontrar esa <a href="http://es.wikipedia.org/wiki/Resistor" target="_blank">resistencia</a>. Como los diseñadores de resistencias están muy locos, pues se han inventado un código de colores para saber cada resistencia de cuantos Ohms es. Si no existe ninguna resistencia para el valor calculado, basta utilizar una con el valor posible inmediatamente superior. En nuestro ejemplo esta sería de 127 Ohms.</div>
<div>
<br />
Pues bien. Nada más por hoy. Espero que vuestros nenes se lo pasen bien con esto, y vosotros si sois principiantes también.<br />
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2293512280015792399.post-64221394193564193362013-05-05T00:42:00.000-07:002013-05-20T16:15:44.544-07:00El origen<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-hGEfGKGsIAo/UYYDJ8reFAI/AAAAAAAAFQQ/922HG-d0ehM/s1600/origen01.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-hGEfGKGsIAo/UYYDJ8reFAI/AAAAAAAAFQQ/922HG-d0ehM/s1600/origen01.jpg" height="200" width="148" /></a></div>
Si. Nuevo blog. En esta ocasión sobre robótica de aprendizaje, informática infantil, e inteligencia artificial para bebes... Vamos, que básicamente trataré temas de tecnología para principiantes.<br />
<br />
¿Porque este blog? Pues porque siempre me han interesado estos temas, aunque nunca he podido dedicarme, y ahora mi nene de 6 años (a cumplir en una semana) empieza también a interesarle. Momento ideal para empezar yo también tanto desde una óptica de principiante como de una óptica infantil. Así que ya veremos lo que sale...<br />
<br />
<b><u>Temáticas</u></b><br />
¿Y que temas trataré? Pues básicamente todos aquellos, de diferentes materias y sin orden alguno, que sirvan para atraer la atención de un niño y/o sirvan para motivar mi cerebro: Lenguajes de programación (<a href="http://es.wikipedia.org/wiki/Scratch_(lenguaje_de_programaci%C3%B3n)">Scratch</a>), robótica (<a href="http://www.robotica-personal.es/2010/05/robotica-con-lego-wedo-y-scratch-en.html">Lego WeDo</a>), electrónica (<a href="http://es.wikipedia.org/wiki/Arduino">Arduino</a>), y tantas otras cosas que irán apareciendo.<br />
<br />
<b><u>La base</u></b><br />
¿Cual es mi base para todo esto?. ¿Sobre robótica?. Ninguna!. ¿Ninguna? Ninguna!.<br />
¿Y sobre inteligencia artificial? Ninguna. ¿Pero...? Ninguna!!!.<br />
¿Y sobre electrónica? Esto...., ninguna..., bueno casi. Hice hace mas de 20 años Formación Profesional de Electrónica. ¿De que me acuerdo? De nada. ¿De nada? De nadaaa!!!.<br />
¿Y sobre informática?. Ah, eso si!. Yo soy un programador. Puedo programar en cualquier lenguaje que se me cruce, y lo he hecho en Assembler, C/C+, Java JSE/JEE, y unos cuantos mas...<br />
Esta es mi base de la que parto. Esta y las ganas. Así que si eres un principiante como yo, no creo que te cueste seguirme...<br />
<br />
<b><u>Dedicación</u></b><br />
¿Y cuanto tiempo puedes dedicar a esto?. Ninguno. ¿¿¿...??? Ninguno!!!. No tengo tiempo!!!. Mi nene de 6 años reclama atención (bueno, si lo enchufo a la consola no, pero no me parece un muy buen método educativo), por lo que mientras le intento dar la atención que reclama no puedo dedicar tiempo a investigar nuevos temas para después darle más atención... Pero hasta aquí todo es fácil. La vida se complica hasta la extenuación con mi nena de 2 años recién cumplidos, e incapaz de dejarme en paz un solo instante. Así que mientras leo, mientras investigo, mientras pruebo, mientras explico cosas a mi nene, mi guapiiisima nena va incordiando todo el rato hasta que se quiebran los nervios (después de quebrar el ratón, el tablet, los mandos a distancia, las piezas y componentes electrónicos, etc..)<br />
<br />
Con todo esto no me queda otra..., robaré horas al sueño y a mi preciosa pareja..., empiezo!.<br />
<br />Unknownnoreply@blogger.com0