BTCONTROL
Descargue BTControl
INTRODUCCIÓN
BTControl permite enviar señales pre-definidas a un dispositivo conectado mediante Bluetooth.
Su uso principal es para controlar robots realizados con Arduino y similares. ¡Y es software libre! (Código en GitHub).
Tiene dos sistemas de control, el modo Primo y el modo Mando.
Primo es un juego basado en Arduino cuyo objetivo es guiar a un pequeño robot mediante la creación de secuencias de instrucciones utilizando bloques de instrucción de colores.
El juego original se compone de dos partes: el robot y el programador.
BTControl – Primo, permite sustituir el programador de madera.
BTControl – Mando está concebido para ser usado como control a distancia de forma similar a los vehículos de radio-control.
Además incluye 10 botones de funciones (De A a J) y 5 botones de Primo.
Presentación:
Demo completa:
BTControl – PRIMO
CÓMO FUNCIONA EL PROGRAMADOR DE PRIMO
En secuencia, se ponen bloques de colores que indican adelante, gira a la izquierda o a la derecha.
Al presionar el botón rojo se envía al robot el mensaje generado, que comienza a seguir las instrucciones.
Además existe un bloque (verde redondo) que permite ejecutar los cuatro bloques del rectángulo verde (Rutina).
SIGNIFICADO DE LOS BLOQUES
- Rojo [flecha recta]: Avanzar
- Amarillo [giro]: Girar a la derecha
- Azul [giro]: Girar a la izquierda
- Verde [Rutina]: Ejecuta los cuatro bloques del rectángulo verde
- Gris [posición]: Indica que no hay ningún bloque (se ignora)
BTControl – MANDO
CÓMO FUNCIONA EL MANDO DE CONTROL
El mando tiene una rueda de control en el lado derecho que permite controlar un robot de forma similar a los vehículos de radio-control.
Mientras se indica una dirección el robot continua avanzando, hasta que se devuelve el control al centro, indicándose al robot que pare.
También incluye 5 botones similares a los controles de Primo. Estos botones causan que el robot realice movimientos discretos, con un tiempo establecido para cada uno.
Además incluye 10 botones de funciones (De A a J) que, según el robot, pueden permitir controlar luces, sonido y cualquier otra función del robot.
CONECTAR ROBOT
BTControl permite controlar robots emparejados mediante Bluetooth.
La opción “Conexiones” del menú de configuración muestra el control de bluetooth de su dispositivo, que permite emparejar dispositivos.
Los dispositivos emparejados aparecen en el menú de BTControl, para que seleccione cómodamente el que desea utilizar.
También puede activar en la configuración la opción “Auto-Conectar” que intenta conectar automáticamente con el último dispositivo con el que se conectó.
Si conecta automáticamente a un dispositivo y quiere conectar con otro diferente, deshabilite la opción “Auto-Conectar”.
Ir al índice
SOLUCIÓN DE PROBLEMAS
El dispositivo que quiero utilizar no aparece en el menú
Utilice la configuración de Bluetooth para emparejar el dispositivo. Si sigue sin aparecer pruebe a reiniciar el programa.
El dispositivo no conecta correctamente
Ocurren errores al enviar las señales
Pruebe a:
- Desde la configuración de Bluetooth borre el dispositivo
- Reinicie ambos dispositivos
- Vuelva a emparejar el dispositivo
DESARROLLADORES
El robot debe disponer de un módulo Bluetooth operativo (ejemplos en mi web).
BTControl envía señales de un solo caracter que el robot debe interpretar al recibir.
Las señales enviadas pueden modificarse en “Configuración”, pero si no se modifica son las siguientes:
- Señales de Primo*:
- Delante (Rojo): V
- Izquierda (Azul): W
- Derecha (Amarillo): Y
- Señales tipo Primo (desde el mando):
- Stop (Verde): X
- Detrás (Rojo): Z
- Señales de mando de control:
- Números del 1 al 9, siendo el 1 delante-izquierda, 2 delante, … 5 parado, … 9 atrás-derecha
- Botones de función:
- Botones de A a J envían el caracter indicado
[*] En el modo Primo, al pulsar el botón rojo (ejecutar), BTControl compone el mensaje programado y le añade un ‘0’ al final.
Puede recuperar los datos originales desde el menú de configuración, pulsando la tecla menú y seleccionando “Carga preferencias originales”.
Plantilla de código Arduino
/* *********************************** * BTCONTROL * *********************************** * 2014 - Guimi (http://guimi.net) * *********************************** * * Este programa implementa un robot controlado por bluetooth utilizando los comandos pre-definidos del programa * BTControl para Android (BTControl - 2014 Guimi - http://guimi.net) * * El programa requiere de un modulo Bluetooth HC-05 para la comunicacion * * El ciclo principal escucha las instrucciones recibidas por Bluetooth y si las reconoce las ejecuta * * Para DEBUG se debe configurar el modulo serial a 9600 baudios con "Ambos NL & CR" * * 2014 - Guimi (http://guimi.net) * */ // DEBUG //---------- #define DEBUG false // Indica si debemos realizar DEBUG mediante el puerto serie // LIBRERIAS //---------- #include <SoftwareSerial.h> //Librería que permite establecer comunicacion serie en pins diferentes al 0 y 1 // CONSTANTES //----------- #define BT_Rx 10 // Recepcion BT #define BT_Tx 11 // Transmision BT #define LED_ESTADO 13 // Pin del LED que marca el estado // VARIABLES //---------- int caracter; // Caracter recibido // MODULOS //-------- SoftwareSerial BT(BT_Tx,BT_Rx); // Inicializamos el BT, indicando los pines de Tx y Rx // FUNCION SETUP //-------------- void setup() { // Definimos cada pin como entrada o salida pinMode(LED_ESTADO,OUTPUT); // Indicamos que aun no hemos iniciado digitalWrite(LED_ESTADO, LOW); // Esperamos a que este encendido el modulo BT delay(500); // Preparamos la comunicacion mediante el modulo BT BT.begin(9600); delay(500); BT.flush(); // Preparamos la comunicacion mediante el puerto serie y el modulo BT if (DEBUG) { Serial.begin(9600); // Notificamos que estamos listos Serial.write("Preparado:\n"); } // Indicamos el inicio digitalWrite(LED_ESTADO, HIGH); } // FUNCION LOOP //------------- void loop() { // Si hay algo pendiente en el puerto Serial lo transmitimos // de forma transparente al modulo BT (que lo envia directamente al aparato vinculado) if (Serial.available()) { // Escribimos en el puerto BT lo que leemos en el puerto serie BT.write(Serial.read()); } // Si hay algo pendiente en el puerto BT lo transmitimos // de forma transparente al puerto serie y buscamos comandos conocidos if (BT.available()) { // Buscamos comandos conocidos //---------------------------- // Leemos el puerto caracter = BT.read(); // Escribimos en el puerto serie lo que leemos en el puerto BT if (DEBUG) Serial.write(caracter); switch (caracter) { // CARACTER 0 //------------------------------ case '0': break; // RUEDA DE CONTROL (MOVIMIENTO) //------------------------------ // Los ponemos los primeros porque necesitan la respuesta mas inmediata case '1': break; case '2': break; case '3': break; case '4': break; case '5': break; case '6': break; case '7': break; case '8': break; case '9': break; // BOTONES DE FUNCION (A-J) //------------------------------ case 'A': break; case 'B': break; case 'C': break; case 'D': break; case 'E': break; case 'F': break; case 'G': break; case 'H': break; case 'I': break; case 'J': break; // BOTONES PRIMO Y SIMILARES //------------------------------ case 'V': break; case 'W': break; case 'X': break; case 'Y': break; case 'Z': break; default: break; } } }
CRÉDITOS
BTControl realizado por Güimi
Imagen de fondo (light_wood_texture) de Petr Kratochvil.
Primo realizado por Solid Labs