Project Bot es un cuaderno de campo sobre robótica. Basando principalmente sus objetivos con tecnología Arduino con el fin, a largo plazo, de diseñar un robot tanto de software como de hardware libre.

domingo, 23 de enero de 2011

Nos vamos de compras

Como ya os comenté, en algún momento me tocaría hablar de dónde, qué y cómo comprar. Pues bien, empecemos por lo más básico.

Lo primero que necesitamos para hacer nuestro robot es una controladora, en este caso nos hemos centrado en Arduino por determinados factores (manejabilidad, hardware libre...). Como ya hablamos en la primera entrada del blog, existen unas cuantas versiones dentro de arduino, desde la típica "Uno" hasta la curiosa "LilyPad" que es para adaptarla a la ropa. En la página oficial encontraréis los distribuidores de arduino organizados por países:

http://arduino.cc/en/Main/Buy

Si vives en España, he de destacar la tienda BricoGeek, donde realicé mi primera compra importante. Tienen una gran variedad de productos de electrónica, con sus respectivos manuales en pdf para saber como conectarlos, etc. Además poseen un blog donde veréis muchísimos proyectos de los cuales podréis tomar ideas. Hay otras tantas tiendas en España, pero como en estas navidades, se agotaron del mercado las placas arduino y me toco adquirirla en InMotion. Ambas tiendas son muy rápidas en su envío.

Otras cosas útiles que necesitaréis para empezar es una placa de prototipo. La mejor opción para clasificar y organizar el cableado. Es aconsejable para esto que compréis muchos cables de colores para hacer uno código bueno de entrada/salida, polaridad, etc. Además no está de más que invirtáis en la calidad del cable, unos buenos jumpers nos facilitarán mucho el trabajo (a pesar de no tener la medida exacta que queramos).

Para la parte que no irá sobre la placa de prototipo, es decir, los sensores, motores y demás, necesitaréis un buen soldador. Existen muchos y de muchas potencias, yo principalmente uso uno de tipo lápiz de 30W y uno de tipo pistola. Como la temática del soldador puede extenderse demasiado, una buena página que he encontrado sobre soldadores y el arte de como soldar bien es esta:

http://www.planetaelectronico.com/cursillo/tema1/tema1.1.html

Un tema a parte del soldador y que tal vez no le deis tanta importancia al principio, es el estaño. Hay tipos y tipos, a veces, como el cable, hay que pensar un poco en él y pararnos a ver detenidamente que clase de estaño preferimos.

A partir de aquí es cuando damos libertad a nuestra imaginación: leds, LDR, servos, motores DC, altavoces, sensores de todo tipo... dependiendo en lo que queráis trabajar. En las tiendas donde encontrasteis la arduino encontraréis también todo este material, además de las, no tan abundantes, tiendas de barrio de electrónica.

Como veis, podemos encontrar el material por diferentes partes. Puesto que la arduino no la encontraréis en tiendas cercanas y en las tiendas cercanas es probable que no encontréis los sensores que queréis, os aconsejo pensar en lo que queréis antes de comprar y hacer un buen pedido junto con la arduino para que los gastos de envío salgan más rentables. En cuanto a las herramientas, como el soldador, y los útiles, como el cable o el estaño, recomiendo visitar algunas tiendas cercanas puesto que los precios y calidades pueden variar mucho.

Con esto doy por cerrado el tema. Espero que os haya servido de ayuda para todos vosotros que queréis iniciaros en este mundillo.

sábado, 22 de enero de 2011

Ejemplo básico de Wiring e interfaz del software

Buenas, antes de dar paso a la entrada quería disculparme por no actualizar tan a menudo el blog como se espera, pero como pone en la cabecera: es un cuaderno de campo, lo que significa que actualizaré cuando tenga tiempo y progresos con el robot que estoy montando. Actualmente no he podido dar señales de vida a causa de los exámenes, pero ahora que vuelvo a tener tiempo ya he pensado en unas cuantas entradas que publicar.

El tema que hoy vamos a tocar son los ejemplos más básicos que podréis realizar con vuestra placa arduino, unos cuantos leds y algún que que otro componente más. Una vez instalado el software arduino, al abrirlo os encontraréis con esta interfaz que tenemos a la derecha. El programa está en ingles, pero será sencillo hacernos con él. El botón [↑] sirve para abrir nuestros códigos o algunos que ya vienen de serie ordenados por categorías (Básicos, Digitales, Analogicos, Sensores, Pantallas...).

Como ejemplo más básico tenemos el programa "Blink". Su función es hacer parpadear el led colocado en el pin 13 durante 1 segundo encendido, 1 segundo apagado.

Cada programa, por sencillo que sea, constará de 3 o 4 partes bien diferenciadas en el código, lo que facilita el entendimiento de estos. En este caso he modificado el ejemplo "Blink" para poder ver estas partes fácilmente:


/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.

This example code is in the public domain.
*/

int ledPin = 13; // LED connected to digital pin 0

void setup()
{
pinMode(ledPin, OUTPUT); // set ledPin pin as output
}

void loop()
{
intermitente(); // wait for a second
}

void intermitente()
{
digitalWrite(ledPin, HIGH); // set the LED on
delay(1000); // wait for a second
digitalWrite(ledPin, LOW); // set the LED off
delay(1000);
}

  1. La 1º parte es donde definiremos los nombres y el valor del pin en donde se encuentran los componentes, así como constantes y demás. Por ejemplo en:
    int ledPin = 13; // LED connected to digital pin 13
    Vemos que para definir  un componente usaremos un integer, que será el pin donde está conectado. Las barras "//" nos servirán para comentar las lineas y así explicar el código, algo realmente útil para programas largos. Un consejo que os doy desde aquí es que el nombre que le debéis dar a las cosas sea uno realmente significativo, es mucho más útil tener "SensorDerecha" que tener "SD".

  2. La 2º parte: el Setup, es donde definiremos que pines son de entrada y cuales de salida. Puesto que hemos definido con un nombre cada pin en la 1º parte del código, en esta parte utilizaremos directamente el nombre:
    void setup()
    {
    pinMode(ledPin, OUTPUT); // set ledPin pin as output
    }
  3. Como vemos, las salidas son OUTPUT y las entradas, lógicamente, INPUT. También podremos llamar a "Serial.begin(9600);" y con eso en el loop, escribiremos para mandarlo al ordenador, a un lcd...
  4. La 3º parte es el Loop, donde se ejecuta el programa:
    void loop() { intermitente(); // wait for a second }
  5. Como vemos, tenemos una función llamada "intermitente()" la cual no hemos definido en ningún sitio, de esto de ocupará la apartado 4º. 
  6. En esta "parte" es donde definiremos las diferentes funciones de nuestro programa. Hay que tener en cuenta como se actualizan los sensores y determinadas cosas, pero encapsulando el código de esta forma, nos facilitará el trabajo y evitaremos tener un loop interminable con repeticiones del código. En el caso que estamos estudiando, la función intermitente se definirá de esta forma:

    void intermitente() { digitalWrite(ledPin, HIGH); // set the LED on delay(1000); // wait for a second digitalWrite(ledPin, LOW); // set the LED off delay(1000); }
    En este caso podríamos haber puesto directamente la función intermitente en el loop, pero decidí ponerlo así en este ejemplo para que veamos las diferentes partes del código. Así como hemos metido una función, podemos poner tantas como queramos bajo la estructura:

    void Nombre_funcion() { //Código que realiza }
Y con esto acabaría nuestro código, ahora tocaría compilar y subirlo a nuestra arduino para pobrar que todo vaya bien.

En cuanto a los ejemplos, no creáis que me olvido de ellos, pero me ha parecido que está fuera de lugar poner multitud de ejemplos pues eso se apartaría de mi visión hacía el blog como cuaderno de campo. Pero no voy a haceros quedaros con las ganas después de tanta expectación, a parte de los ejemplos que encontraréis en el propio software de arduino, podéis visitar la página dedicada a ello en wiring:

http://wiring.org.co/learning/basics/index.html

Y como regalo extra, en esta página de Ikkaro encontraréis otros ejemplos (uno muy visual es hacer las luces del coche fantástico):

http://www.ikkaro.com/Tutoriales-basicos-arduino

Con esto me despido hasta la próxima entrada, que supongo que será el donde y como adquirir la placa arduino, además de una posible entrada sorpresa en estos días.

martes, 11 de enero de 2011

Sobre Arduino y su lenguaje

Hoy empiezo oficialmente a publicar en el blog mis pequeños pasos por este gran mundo de la robótica y no me a parecido mejor forma que empezar hablando de Arduino pero, ¿qué es?

Arduino es una plataforma de hardware libre basada en una sencilla placa de entradas y salidas con un entorno de desarrollo que implementa el lenguaje de programación Processing/Wiring.

Esta plataforma nos permite poder hacer todo tipo de proyectos sin tener que adquirir una licencia. Es bastante sencilla de programar y sus tutoriales se extienden por toda la red de redes, así que nos vendrá muy bien para empezar con algo entre las manos. Otro punto a favor de esta plataforma son sus diferentes versiones para los diferentes usos que les queráis dar o el presupuesto económico que tengáis (ya hablaremos del presupuesto para los proyectos en alguna otra entrada).
Podréis encontrar todas las versiones en su web:


http://arduino.cc/en/Main/Hardware (os la pongo en inglés puesto que la versión española no está actualizada)

Yo personalmente, he escogido la Mega2560 puesto que su memoria, sram y número de pines me convenía para un proyecto en expansión como será el robot.

Pero, ¿que es eso del lenguaje Processing/Wiring?

Vamos por partes,

Processing no es solamente un lenguaje de programación orientado a la creación visual, si no todo una plataforma de creación de aplicaciones computacionales altamente interactivas que no solo se alimentan de los eventos producidos por los usuarios, si no por una gran cantidad de librerías que permiten conectarse a un sin numero de plataformas y aplicativos que enriquecen las aplicaciones y le permiten producir una gran cantidad de acciones sobre el mundo virtual de la computadora.

Es en processing de donde surge el lenguaje wiring para microcontroladores:

El wiring es un entorno de programación de entradas/salidas de código abierto para explorar las artes electrónicas, los medios materiales, la enseñanza y el aprendizaje de la programación informática y creación de prototipos con electrónica.

Este es el lenguaje en el que trabaja la plataforma Arduino. Con el uso veremos que es bastante intuitivo y simplemente con las pocas ayudas que nos da, sobre la sintaxis, Arduino en su web oficial, seremos capaces de dar nuestros primero pasos:


http://arduino.cc/en/Reference/HomePage

Hasta aquí dejamos el tema del lenguaje wiring aparcado, en la próxima entrada hablaré sobre ejemplos básicos que nos ayudarán a introducirnos mejor en la temática de los sensores y demás.

martes, 4 de enero de 2011

Bienvenidos a Project Bot!

Por ahora la página está bajo construcción y, por tanto, estará continuamente cambiando colores, estructura y demás (eso por no decir que no se publicará nada hasta su apertura oficial). Si has llegado por casualidad a este blog y la temática de la robótica te interesa como principiante, te ruego que estés atento a su pronta inauguración.