HueBot o GüeBot

Continuando en mi camino de hacer distintas partes de un robot humanoide, esta vez le tocó a los ojos.

Siempre me preguntaba cómo hacer para crear ojos que giren hacia arriba/abajo y hacia los costados.

Así nació esta primera versión de HueBot o GüeBot, el robot de ojos de huevos.

Pensando en cómo darle estética al robotito, recordé mis tuppers comprados para esto mismo (para hacer robotitos). Así que lo armé de tal manera que el giro vertical fue reemplazado por una especie de apertura de párpados.

La estructura de conexiones es igual a la de la mano robótica, pero esta vez, al utilizar tres servomotores, no fue necesario agregar las pilas.

El próximo desafío es el de agregar sensores o manejarlo a través del BlueTooth.

El código hasta ahora:

#include <Servo.h>

 Servo myservo1; 
 Servo myservo2;
 Servo myservo3;

 void setup() {
 myservo1.attach(9);
 myservo2.attach(10);
 myservo3.attach(6);
 }
 void loop() {
 //arriba
 myservo1.write(15); 
 delay(2000);
 delay(1000);
 //abajo
 myservo1.write(40); 
 delay(2000);
 //izquierda
 myservo2.write(40);
 myservo3.write(40);
 delay(500);
 //derecha
 myservo2.write(80);
 myservo3.write(80);
 delay(1000);
 //izquierda
 myservo2.write(50);
 myservo3.write(50);
 delay(2000);
 }

Mover un servo motor utilizando el celular

En la entrada anterior expliqué cómo conectar el Módulo Bluetooth HC-06 al arduino y enviar mensajes desde el celular a través de una app llamada Bluetooth SPP.

Modo Control

Hasta ahora lo utilizamos en modo “terminal”. Ya podemos pasar al modo “Control” de la aplicación (en el menú de hamburguesa – las tres rayitas)

Comenzamos investigando qué recibe el Arduino cuando tocamos cada tecla. Para ello, abrimos el monitor serie y pulsamos los botones. Recibe una A, una B, una C, una D y cuando soltamos, una Z.

Por lo tanto, modificamos el programa para que nos avise qué recibe cada vez que tocamos una flecha. Vamos a pedirle que cuando se oprime el botón hacia arriba nos devuelva “Arriba”, y eso mismo con todos los botones:

void setup()  
 {
   Serial.begin(9600);
 }
 void loop() 
 {
   if (Serial.available())
   {
     char dato=Serial.read();
     Serial.print("Dato recibido: ");
     Serial.println(dato);
     if (dato=='B') {
       Serial.println("Abajo");
     }
        if (dato=='A') {
       Serial.println("Arriba");
     }
        if (dato=='C') {
       Serial.println("Izquierda");   
     }
        if (dato=='D') {
       Serial.println("Derecha");
     }
   }
 }

Y el resultado, al tocar las flechas:

Conectando el Servo Motor Tower Pro Micro Servo 9g

Si nunca utilizaste el servo motor, comenzá por aprender a utilizarlo, por ejemplo, con esta entrada: Servo motor 9g Tower Pro

Ahora vamos a hacer esas mismas conexiones, repasando:

  • cable anaranjado: va a un pin de tipo PWD (los de la tilde de la eñe)
  • cable color marrón: GND (tierra)
  • cable color rojo: +5v

El problema es que tenemos el pin de +5v ocupado por el módulo HC-06, así que vamos a tener que conectar el módulo de Bluetooth y el Servo a una breadboard / placa de pruebas, y de allí sacar un cable para el pin de Arduino llamado +5v

Ahora le agregamos unas líneas a nuestro programa, para que se mueva el servo motor al presionar los botones:

#include <Servo.h>
 
Servo myservo;   

void setup()  
 {
   Serial.begin(9600);
   myservo.attach(9);
 }

void loop() 
 {
   if (Serial.available())
   {
     char dato=Serial.read();
     Serial.print("Dato recibido: ");
     Serial.println(dato);
     if (dato=='B') {
       Serial.println("Abajo");
       myservo.write(90);
         delay(15); 
     }
        if (dato=='A') {
       Serial.println("Arriba");
       myservo.write(0);
         delay(15); 
     }
        if (dato=='C') {
       Serial.println("Izquierda"); 
       myservo.write(180);  
     }
        if (dato=='D') {
       Serial.println("Derecha");
       myservo.write(45);
     }
   }
 }

Como el servo no gira 360 grados, los botones no lo mandan exactamente arriba, abajo, derecha, izquierda. Ya mejoraremos eso en otra entrada.

Módulo Bluetooth en Arduino

Hace mucho tiempo me compré un kit de domótica que no llegué a usar. Hoy que tengo un ratito me puse a probar el módulo Bluetooth HC-06 (el que tiene cuatro pines).

Las conexiones se realizan de la siguiente manera:

  • VCC va a 5v
  • GND a GND
  • TX al pin RX (el 0 en mi Arduino)
  • RX al pin TX (el 1 en mi Arduino)

Muy importante: cuando TX y RX están conectados, Arduino da error al descargar el programa. Eso significa que si lo utilizamos de esta manera necesitamos desconectar ambos pines y resetear la placa cada vez que vamos a descargar código al arduino. Esto se resuelve utilizando la librería SoftwareSerial para conectar otros pines.

Tomé el primer código del sitio naylampmechatronics.com

void setup()  
{
  Serial.begin(9600);
}

void loop() 
{
  if (Serial.available())
  {
    char dato=Serial.read();
    Serial.print("Dato recibido: ");
    Serial.println(dato);
  }
}

Conectar el celular al Bluetooth HC-06

Lo primero que hay que hacer es instalarse una app, por ejemplo Bluetooth SPP.

Me costó muchísimo esta parte. No lograba entender lo que estaba ocurriendo. Según se explica en varios posteos, en el módulo bluetooth HC-06:

  • La luz roja titilando significa que está visible pero no conectado
  • La luz roja encendida fija significa que la conexión se estableció

Lo que a mí me funcionó es lo siguiente:

  • Encender el bluetooth del celular y poner “buscar”. No me aparecía ninguno de los nombres que figuran en los distintos posteos, así que probé conectarme a uno que aparecía y se conectó (con el pin 0000, también podría ser 1234). Aún así la luz seguía titilando, por eso mi confusión.
  • En la aplicación de celular (Bluetooth SPP en mi caso), poner “Conectar”. Recién allí deja de titilar la luz del HC-06

Una vez establecida la conexión, ya podemos escribir en el celular y ver el resultado en el monitor serie (que se visualiza desde el menú Herramientas del Arduino IDE):

¡Bien! Ya estamos recibiendo contenido desde el celular al Arduino, y podemos verlo en el monitor serie.

En el próximo posteo voy a mostrar cómo manejar un servo motor a través de la app del celular, con Arduino y el módulo Bluetooth HC-06.

¡Borré un foro con todas sus conversaciones! Pero lo recuperé.

Hoy me volvió a pasar (¡sí, ya me había pasado!) que en un momento de distracción, en lugar de eliminar otra cosa eliminé un foro… que estaba en uso. Pensé muy mal de Moodle… no podía ser tan fácil equivocarse!

Entré en pánico.

Hasta que luego de un ratito me acordé de la existencia de la Papelera de reciclaje del curso, donde se guardan durante 7 días los elementos eliminados.

Esta opción aparece sólo cuando se acaba de borrar algo, pero cuando la papelera está vacía no aparece en el menú.

Al acceder a esta opción, podemos hacer clic en “Restaurar”, y respirar nuevamente con tranquilidad…