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