Introduction: Micro Robot Con Adafruit Gemma

About: Músico, matemático, computación, ciencia... insolente y subversivo, pero siempre propositivo

En este instructable les muestro como construir un pequeño robot con el micro-controlador de Adafruit que se llama Gema. Solamente mostraré como armarlo y controlar los motores, les dejo la tarea de colocarle algún sensor para hacerlo que siga la luz o cualquier otra cosa.

Step 1: Materiales

Ocupamos:

  1. Adafruit Gemma (en Costa Rica los pueden conseguir acá)
  2. 2 x resistencias de 270 ohmn
  3. 2 x micro motores DC (como estos, o estos en Costa Rica)
  4. 2 x Transistores NPN BC337 (en Costa Rica)
  5. Batería Lipo (como esta)
  6. micro breadboard (este tipo)

Step 2: Chasis (impreso En 3D)

El chasis lo pueden descargar en el archivo adjunto, o pueden modificadorlo a gusto en este link de Tinkercad

Step 3: Motores

A los dos motores hay que soldarles unos cables. Como se ve en la foto, soldar un cable rojo de un motor con uno azul del otro motor. A los cables que quedan sueltos, soldarles una extensión, pues esos cables son muy pequeños.

Una vez los motores Dc con cables listos, colocarlos en el chasis del motor, como se ve en la foto. Yo pego los motores al chasis con goma caliente para asegurarme que no se vayan a salir con el tiempo, pero esto no es necesario.

Step 4: Transistores

Los transistores que vamos a usar se llaman NPN BC337. Un transistor permite es como un switch electrónico que permite regular el paso de corriente. Es como una llave de paso que a través de un impulso eléctrico se puede abrir y cerrar.

Este transistor que utilizaremos se le conoce como NPN y esto se refiere que el switch se hace limitando el paso de electrones del emisor al colector. Como se ve en la foto, por la pata 3, el emisor, entra corriente y fluye en dirección al colector. La pata 2, que es la base, es por donde mandamos un voltaje alto HIGH, para permitir el paso de corriente, y uno bajo LOW, para detenerlo.

A través del controlador, mandamos una señal por uno de los pines en HIGH o LOW, para controlar el funcionamiento del motor.

Los transitores los vamos a colocar en el micro-breadboard para facilitar las conexiones, esto lo veremos en el siguiente paso

Step 5: Conexiones

COn la parte plana de frente, en la foto se ve como conectamos el transistor. La pata izquierda, la conectamos a tierra, la del centro a una resistencia de 270 Ohmn, y la derecha la conectamos directo al motor DC.

Lo primero es soldar la resistencia de 270. Una al pin D0, y la otra al pin D1 del Gemma. También hay que soldar un cable corto al GND. Ya que el cautín está caliente, soldemos el cable del centro de los motores, el que tiene soldado un cable rojo con uno azul del motor DC, a la conexión de 3Vo que tiene el Gemma (todo se ve en las fotos).

Luego colocamos los transistores en el micro-breadboard, de manera que queden uno frente al otro (cara plana contra cara plana), compartiendo una fila del breadboard, están el colector de cada transistor. La base de cada transistor se conecta a cada una de las resistencias. El emisor del transistor, entonces se conecta a el cable libre de cada motor.

Yo pegué luego el Gemma con goma caliente al chasis, para que quede firme.

Step 6: Código Y Gemma

Codigo

El código es extremadamente sencillo. En la sección de setup, simplemente inicializamos los pines:

pinMode(0,OUTPUT);
pinMode(1,OUTPUT);

Luego, construyo una pequeña función que pone a funcionar a el motor de la derecha o el de la izquierda. La función o que hace es ponerlo a caminar por un tiempo y luego apagarlo. Esto lo hice así simplemente para hacer pulsos de movimiento, es decir, nunca funcionan los dos motores en forma simultánea, sino que el movimiento hacia adelante ocurre por alternación derecha izquierda. Esto será muy útil al luego incluir algún tipo de sensor para hacer un robot que responda a un reflejo. El código se ve así:

void moveLeft(int time) {
  digitalWrite(0, HIGH);
  delay(time);
  digitalWrite(0, LOW);
}

En la función moveLeft(int time), simplemente enciende el motor conectado al pin D0 por time milisegundos y luego lo apaga. hay una función similar moveRight, que hace lo mismo para el motor conectado al pin D1.

El código principal loop:

moveLeft(TIME);
moveRight(TIME);
for (int i = 0; i < 5; i++) {
  moveLeft(200);
  moveRight(200);
}

Se mueve a un lado, luego al otro, y luego uno alternando tiempos cortos de un lado a otro, para moverse hacia adelante. Eso es todo.

Cargado al Gemma

Para explicación detallada de como subir al Gemma y que se necesita en el Arduino IDE, lean este tutorial. A diferencia de otras placas, el Gemma no les aparece en el puerto serial. sino que lo cargan ene el modo bootloader que tiene el Gemma. Pero en la guía de adafruit explican mejor.

Step 7: Funcionando Y Modificaciones

Listo. Ahora debería funcionar como en el vídeo.

¿Qué mas? bueno, ya que tiene control sobre su movimiento, el Gemma tiene un puerto analógico libre, el A1. Allí podrían conectar un sensor de luz, y hacer algún tipo de algoritmo para que el pequeño robot se dirija hacia la luz de forma reflexiva.