jueves, 13 de junio de 2013

Papa, ¿Y qué es la electricidad?


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.

Esta entrada de hoy la he desarrollado atendiendo al reclamo de todos aquellos miles y miles de comentarios (¿¿¿ :-D ???) que me estáis poniendo en cada una de las entradas pidiéndome que explique fundamentos más básicos.

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…

Carga eléctrica
Lo primero a entender, creo yo, es que todo en este mundo tiene una determinada carga eléctrica. Es sencillo. Estamos hechos de átomos que tienen electrones y protones (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 plutonio) 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).

Diferencia de potencial (Voltaje - V)
Atendiendo a lo anterior todos los cuerpos tienen un potencialeléctrico, la diferencia de potencial (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 (volts), y típicamente se representa con una letra ‘V’ (como la de los lagartos…).
.
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.


Corriente eléctrica (Intensidad - I)
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 intensidad, y suele representarse por la letra ‘I’ y medirse en amperios.
.
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).

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 generador de corriente (como por ejemplo una pila) 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.

Resistencia eléctrica (Resistencia - R)
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 ohms (ohmios) que se representan a su vez con el símbolo (Ω).

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).

Comprendiendo la ley de Ohm
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.
Esto nos lleva a la ley de Ohm:
  •  que dice: V = I * R
  • pero también puede expresarse como: I = V / R
  • o como: R = V / I

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.

El ejemplo de las bañeras de agua
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.

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.
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…

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;  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.

Y cuando el cielo nos caiga sobre la tierra
Y ahora otro pequeño ejemplo gráfico para ilustrar todo esto.
.
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 ionizado. Es entonces cuando vemos que toda la diferencia de potencial entre nubes, o entre estas y la tierra produce esas maravillas que son los rayos 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).

jueves, 6 de junio de 2013

Controlar un servomotor con Arduino: magia


Y ahora que ya nos hemos hecho mayores, vamos a empezar a ver cosas más divertidas. La primera de ellas, controlar un servomotor HS-311 con Arduino.

Este servo, muy conocido y usado, suele venir al comprar el kit de iniciación básico de Arduino con sus accesorios.

Antes de empezar, comentar que he tomado prestada la información básica de esta entrada desde aquí (NOOBotics), y también de la página de Arduino UNO, y que las dos me han sido muy útiles.

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:

  • Cable rojo del servo al positivo (pin marcado como 5V de Arduino)
  • Cable negro del servo al negativo (uno de los marcados como GND de Arduino)
  • Cable amarillo del servo al PIN 9 de Arduino (o a cualquiera de los PINs marcados como PWM: Pulse Width Modulation, o modulación por ancho de pulsos), por donde se enviará la señal de control al servo.

Pero..., ¿Cómo funciona el servomotor?. Me gusta que te hagas esta pregunta. :-D  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í.

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.

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.

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.
Para hacer una analogía gráfica, podríamos decir que el servo que utilizábamos 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.

Hasta aquí todo fantástico, Los mundos de Yupi!. 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º.
Bueno, pues de lo primero que habrá que hacer por código es establecer los anchos de pulso en microsegundos que se corresponderán con la posición mínima y con la máxima del servo.

¿Y que es el ancho de pulso o PWM?. Pues una buena explicación la he encontrado aquí. 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... :-).

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.

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... ¿¿¿???).

 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 API o librería de servos!!!. 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.

#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);   } }
Básicamente lo que hace el programa es:
  • Incluye la librería "Servo.h"
  • Inicia unas variables, entre ellas un objeto "myservo"
  • Asocia (con attach) 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.
  • 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í... :-( 
  • Y luego entra en un bucle donde (con write) 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.
A parte de lo que veis (el programa) esta lo que no veis: la librería "Servo.h" y lo que hay detrás "Servo.cpp" (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... ;-)

Esta librería es la que se encarga de comunicar y transformar a bajo nivel 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.

Ala!. Y ponlo ya en marcha que por hoy ya esta!.
;-)

viernes, 31 de mayo de 2013

Arduino 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.

Arduino es una maravilla. Paradigma del hardware libre, 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.

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.

Manos a la obra!. Seguidamente vamos a ver como empezar a utilizar Arduino.

NOTA: 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 Español como en la Inglesa.

1 - Adquirir una placa Arduino. De cualquier modelo. Yo uso una Arduino UNO.


2 - Conectar la Placa al puerto USB del ordenador. 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.

3 - Descargar sofware de aquí. Descargar y luego instalar, claro.

4 - Abrir entorno IDE de Arduino. Tras instalar aparecerá un entorno IDE como este:


5 - Configurar entorno para el acceso a Arduino. Lo primero que hay que hacer es:
  • Ir al menú de Herramientas>Tarjetas y seleccionar el modelo de tarjeta Arduino. Como he dicho en mi caso es Arduino UNO. 
  • Ir al menú de Herramientas>Puerto Serial 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... :-)

6 - Cargar el primer ejemplo básico: Blink. Ir al menú Archivo>Ejemplos>01.Basics>Blink.
Este ejemplo simplemente hace parpadear a un LED. Pero claro, hay que conectar el LED. Considerar también que el lenguaje de programación de Arduino esta basado en C/C++, aunque también se puede utilizar otros como Scratch.

7 - Conectar un LED al Arduino. 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...

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, toma de tierra).

8 - Cargar el programa al Arduino. 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 del entorno IDE del Arduino.

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

martes, 28 de mayo de 2013

Recursos externos Lego WeDo

Y 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 entradas anteriores). Misterio resuelto.

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

Para tan glorioso logro, salvar los temas mecánicos que a mi particularmente no se me dan nada bien, he encontrado por ahí 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.

Aquí podéis descargar un didáctico documento PPT donde explica el uso de ruedas y ejes. 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.

Esto otro en cambio explica el uso de palancas. 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.

Yendo un poco más allá en este otro vemos el uso muy didáctico de poleas, donde también muestra diversas formas de uso de las correas (vamos, las gomas de pollo amarillas que vienen con wedo).


Y también este específico sobre el uso de engranajes, que también me ha sido muy instructivo.


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:


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 Marine Helicopter.


Espero que todos estos recursos externos sean de vuestro interés, y del de vuestros peques.

viernes, 24 de mayo de 2013

Cochecito: el primer robot de verdad

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?

Un cochecito robot hecho con las piezas Lego WeDo, y programado con Scratch.

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.

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.

A modo ilustrativo podéis ver alguna que otra imagen de como ha quedado este cochecito.

Ah, y lo siento por la parte trasera..., el paquete Lego WeDo básico solo trae dos ruedas... :-(
Para las traseras he tenido que hacer un apaño...

NOTA: 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.

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...
:-(.

¿Alguien de los numerosos seguidores de este blog podría constatar esto?. Gracias...

ACTUALIZACION: 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.

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.

Pero no funciona...

lunes, 20 de mayo de 2013

Y por fin, Lego WeDo

Y 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 Lego WeDo que adquirí hacen un mes y la dejé sin abrir esperando este momento.

¿Y como hacer para programar los robots hechos con WeDo?. Pues para empezar, con Scratch.
Pasos básicos:

  1. Descarga Scratch v1.4 (la versión 2.0 de momento es solo online) desde "http://scratch.mit.edu/scratch_1.4/", e instálalo.
  2. 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".
  3. Conectar el HUB Lego WeDo al puerto USB del ordenador.
  4. Conectar los sensores o motores de WeDo al HUB.










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

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.

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.

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

Para aprender más sobre la programación de Scratch con Lego WeDo, aquí tenéis este documento básico.

sábado, 11 de mayo de 2013

Programación para niños: Scratch

Hoy 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.

Y hoy, programación para niños es Scratch.
Click para vídeo
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.

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".

Este es el código del programa en Scratch.
Como podéis ver es bien sencillo. Instrucciones simples, en castellano, con colores, con representación gráfica de los bucles, etc.

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.

¿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 Scratch para Arduino, y Scratch para Lego WeDo, y seguramente para muchos más "scratch para ...".

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.

NOTA: Scratch es fantástico, pero para mi nene de 6 años (que solo está empezando a aprender a leer), ojalá pueda utilizar el Software de Lego WeDo. Mirad esto, que maravilla:



miércoles, 8 de mayo de 2013

De la teoría a la práctica

En la anterior entrada comentaba un primer circuito eléctrico 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 protoboard.
Esta es una de las más típicas y prácticas para empezar:


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:


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.


Podéis ver también aquí un ejemplo de esto.

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 Arduino en la tienda Ro-botica de Barcelona.

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.






domingo, 5 de mayo de 2013

El primer circuito eléctrico

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".

Y un primer circuito eléctrico puede ser el de encender un LED con una pila. Yo utilicé una pila de petaca de 4.5V, y claro, el primer LED se petó, aunque otros aguantaron.

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.


Oks. Pues ahí va. Primer circuito para niños. Fácil, ¿no?. Pero al nene le gustará.



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.

Y con esto un poco de calculo de ley de Ohm básica, que dice que:
R (Resistencia) = V (Voltaje) / I (Intensidad)

Vamos a suponer que:
  • 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).
  • El LED está diseñado para soportar una intensidad de unos 20mA (mili Amperios = 0,02 Amperios).
  • El voltaje de la pila es de 4.5V.
Pues con estos datos tenemos que según dicha ley de Ohm: R =  V(4,5 - 2) / I(0,02) = 125 Ohms.
Pues eso, que para que el diodo aguante bien (con los datos del ejemplo) necesitará una resistencia de unos 125 Ohms.

Muy bien ahora solo falta encontrar esa resistencia. 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.

Pues bien. Nada más por hoy. Espero que vuestros nenes se lo pasen bien con esto, y vosotros si sois principiantes también.

El origen

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.

¿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...

Temáticas
¿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 (Scratch), robótica (Lego WeDo), electrónica (Arduino), y tantas otras cosas que irán apareciendo.

La base
¿Cual es mi base para todo esto?. ¿Sobre robótica?. Ninguna!. ¿Ninguna? Ninguna!.
¿Y sobre inteligencia artificial? Ninguna. ¿Pero...? Ninguna!!!.
¿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!!!.
¿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...
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...

Dedicación
¿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..)

Con todo esto no me queda otra..., robaré horas al sueño y a mi preciosa pareja..., empiezo!.