{"id":1742,"date":"2014-07-30T12:52:10","date_gmt":"2014-07-30T10:52:10","guid":{"rendered":"http:\/\/guimi.net\/blogs\/hiparco\/?page_id=1742"},"modified":"2014-07-31T09:56:31","modified_gmt":"2014-07-31T07:56:31","slug":"btcontrol-es","status":"publish","type":"page","link":"http:\/\/guimi.net\/blogs\/hiparco\/btcontrol\/btcontrol-es\/","title":{"rendered":"BTControl"},"content":{"rendered":"<p><a name=\"menu\"><\/p>\n<h1>BTCONTROL<\/h1>\n<p><\/a><br \/>\n[<a href=\"http:\/\/guimi.net\/blogs\/hiparco\/btcontrol\">ENGLISH VERSION<\/a>]<\/p>\n<table border=\"0\">\n<tr>\n<td><img decoding=\"async\" src=\"\/imgs\/blog\/hiparco\/btcontrol\/logo.png\"><\/td>\n<td>\n<ul>\n<li><a href=\"#intro\">INTRODUCCI\u00d3N<\/a>\n<li><a href=\"#primo\">BTControl &#8211; PRIMO<\/a>\n<li><a href=\"#mando\">BTControl &#8211; MANDO<\/a>\n<li><a href=\"#conexion\">CONECTAR ROBOT<\/a>\n<li><a href=\"#problemas\">SOLUCI\u00d3N DE PROBLEMAS<\/a>\n<li><a href=\"#desarrolladores\">DESARROLLADORES<\/a>\n<ul>\n<li><a href=\"#template\">PLANTILLA DE C\u00d3DIGO ARDUINO<\/a><\/ul>\n<li><a href=\"#creditos\">CR\u00c9DITOS<\/a>\n<\/ul>\n<\/td>\n<\/tr>\n<\/table>\n<p>Descargue <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=net.guimi.btcontrol\">BTControl<\/a><\/p>\n<hr width=\"50%\">\n<a name=\"intro\"><\/p>\n<h2>INTRODUCCI\u00d3N<\/h2>\n<p><\/a><br \/>\n<b>BTControl<\/b> permite enviar se\u00f1ales pre-definidas a un dispositivo conectado mediante Bluetooth.<br \/>\nSu uso principal es para controlar robots realizados con <a href=\"http:\/\/arduino.cc\/\">Arduino<\/a> y similares. \u00a1Y es software libre! (<a href=\"https:\/\/github.com\/Guimi0\/btcontrol\">C\u00f3digo en GitHub<\/a>).<\/p>\n<p>Tiene dos sistemas de control, el modo <b>Primo<\/b> y el modo <b>Mando<\/b>.<\/p>\n<p><a href=\"http:\/\/www.primo.io\">Primo<\/a> es un juego basado en Arduino cuyo objetivo es guiar a un peque\u00f1o robot mediante la creaci\u00f3n de secuencias de instrucciones utilizando bloques de instrucci\u00f3n de colores.<\/p>\n<p>El juego original se compone de dos partes: el robot y el programador.<br \/>\n<b>BTControl &#8211; Primo<\/b>, permite sustituir el programador de madera.<\/p>\n<p><b>BTControl &#8211; Mando<\/b> est\u00e1 concebido para ser usado como control a distancia de forma similar a los veh\u00edculos de radio-control.<br \/>\nAdem\u00e1s incluye 10 botones de funciones (De A a J) y 5 botones de Primo.<\/p>\n<p>Presentaci\u00f3n:<br \/>\n<iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"\/\/www.youtube.com\/embed\/I3HQQKwanYA\" frameborder=\"0\" allowfullscreen><\/iframe><br \/>\nDemo completa:<br \/>\n<iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"\/\/www.youtube.com\/embed\/VZykmznC_hA\" frameborder=\"0\" allowfullscreen><\/iframe><\/p>\n<p><a href=\"#menu\">Ir al \u00edndice<\/a><\/p>\n<hr width=\"50%\">\n<a name=\"primo\"><\/p>\n<h2>BTControl &#8211; PRIMO<\/h2>\n<p><\/a><br \/>\n<img decoding=\"async\" src=\"\/imgs\/blog\/hiparco\/btcontrol\/Primo.png\"><\/p>\n<h3>C\u00d3MO FUNCIONA EL PROGRAMADOR DE PRIMO<\/h3>\n<p>En secuencia, se ponen bloques de colores que indican adelante, gira a la izquierda o a la derecha.<br \/>\nAl presionar el bot\u00f3n rojo se env\u00eda al robot el mensaje generado, que comienza a seguir las instrucciones.<br \/>\nAdem\u00e1s existe un bloque (verde redondo) que permite ejecutar los cuatro bloques del rect\u00e1ngulo verde (Rutina).<\/p>\n<h3>SIGNIFICADO DE LOS BLOQUES<\/h3>\n<ul>\n<li>Rojo [flecha recta]: Avanzar\n<li>Amarillo [giro]: Girar a la derecha\n<li>Azul [giro]: Girar a la izquierda\n<li>Verde [Rutina]: Ejecuta los cuatro bloques del rect\u00e1ngulo verde\n<li>Gris [posici\u00f3n]: Indica que no hay ning\u00fan bloque (se ignora)<\/ul>\n<p><a href=\"#menu\">Ir al \u00edndice<\/a><\/p>\n<hr width=\"50%\">\n<a name=\"mando\"><\/p>\n<h2>BTControl &#8211; MANDO<\/h2>\n<p><\/a><br \/>\n<img decoding=\"async\" src=\"\/imgs\/blog\/hiparco\/btcontrol\/Mando.png\"><\/p>\n<h3>C\u00d3MO FUNCIONA EL MANDO DE CONTROL<\/h3>\n<p>El mando tiene una rueda de control en el lado derecho que permite controlar un robot de forma similar a los veh\u00edculos de radio-control.<br \/>\nMientras se indica una direcci\u00f3n el robot continua avanzando, hasta que se devuelve el control al centro, indic\u00e1ndose al robot que pare.<br \/>\nTambi\u00e9n 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.<br \/>\nAdem\u00e1s incluye 10 botones de funciones (De A a J) que, seg\u00fan el robot, pueden permitir controlar luces, sonido y cualquier otra funci\u00f3n del robot.<\/p>\n<p><a href=\"#menu\">Ir al \u00edndice<\/a><\/p>\n<hr width=\"50%\">\n<a name=\"conexion\"><\/p>\n<h2>CONECTAR ROBOT<\/h2>\n<p><\/a><br \/>\nBTControl permite controlar robots emparejados mediante Bluetooth.<br \/>\nLa opci\u00f3n &#8220;<i>Conexiones<\/i>&#8221; del men\u00fa de configuraci\u00f3n muestra el control de bluetooth de su dispositivo, que permite emparejar dispositivos.<br \/>\nLos dispositivos emparejados aparecen en el men\u00fa de BTControl, para que seleccione c\u00f3modamente el que desea utilizar.<\/p>\n<p>Tambi\u00e9n puede activar en la configuraci\u00f3n la opci\u00f3n &#8220;Auto-Conectar&#8221; que intenta conectar autom\u00e1ticamente con el \u00faltimo dispositivo con el que se conect\u00f3.<\/p>\n<p>Si conecta autom\u00e1ticamente a un dispositivo y quiere conectar con otro diferente, deshabilite la opci\u00f3n &#8220;Auto-Conectar&#8221;.<br \/>\n<a href=\"#menu\">Ir al \u00edndice<\/a><\/p>\n<hr width=\"50%\">\n<a name=\"problemas\"><\/p>\n<h2>SOLUCI\u00d3N DE PROBLEMAS<\/h2>\n<p><\/a><\/p>\n<h3>El dispositivo que quiero utilizar no aparece en el men\u00fa<\/h3>\n<p>Utilice la configuraci\u00f3n de Bluetooth para emparejar el dispositivo. Si sigue sin aparecer pruebe a reiniciar el programa.<\/p>\n<h3>El dispositivo no conecta correctamente<\/h3>\n<h3>Ocurren errores al enviar las se\u00f1ales<\/h3>\n<p>Pruebe a:<\/p>\n<ol>\n<li>Desde la configuraci\u00f3n de Bluetooth borre el dispositivo\n<li>Reinicie ambos dispositivos\n<li>Vuelva a emparejar el dispositivo<\/ol>\n<p><a href=\"#menu\">Ir al \u00edndice<\/a><\/p>\n<hr width=\"50%\">\n<a name=\"desarrolladores\"><\/p>\n<h2>DESARROLLADORES<\/h2>\n<p><\/a><br \/>\nEl robot debe disponer de un m\u00f3dulo Bluetooth operativo (<a href=\"http:\/\/guimi.net\/blogs\/hiparco\/category\/arduino\/\">ejemplos en mi web<\/a>).<br \/>\nBTControl env\u00eda se\u00f1ales de un solo caracter que el robot debe interpretar al recibir.<br \/>\nLas se\u00f1ales enviadas pueden modificarse en &#8220;Configuraci\u00f3n&#8221;, pero si no se modifica son las siguientes:<\/p>\n<ul>\n<li>Se\u00f1ales de Primo*:\n<ul>\n<li>Delante (Rojo): V\n<li>Izquierda (Azul): W\n<li>Derecha (Amarillo): Y<\/ul>\n<li>Se\u00f1ales tipo Primo (desde el mando):\n<ul>\n<li>Stop (Verde): X\n<li>Detr\u00e1s (Rojo): Z<\/ul>\n<li>Se\u00f1ales de mando de control:\n<ul>\n<li>N\u00fameros del 1 al 9, siendo el 1 delante-izquierda, 2 delante, &#8230; 5 parado, &#8230; 9 atr\u00e1s-derecha<\/ul>\n<li>Botones de funci\u00f3n:\n<ul>\n<li>Botones de A a J env\u00edan el caracter indicado<\/ul>\n<\/ul>\n<p>[*] En el modo Primo, al pulsar el bot\u00f3n rojo (ejecutar), BTControl compone el mensaje programado y le a\u00f1ade un &#8216;0&#8217; al final.<\/p>\n<p>Puede recuperar los datos originales desde el men\u00fa de configuraci\u00f3n, pulsando la tecla men\u00fa y seleccionando &#8220;Carga preferencias originales&#8221;.<\/p>\n<p><a name=\"template\"><\/p>\n<h3>Plantilla de c\u00f3digo Arduino<\/h3>\n<p><\/a><br \/>\n<a href=\"\/imgs\/blog\/hiparco\/btcontrol\/BTControl.ino\">Descargar c\u00f3digo<\/a><\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n\/*\r\n ***********************************\r\n *            BTCONTROL            *\r\n ***********************************\r\n * 2014 - Guimi (http:\/\/guimi.net) *\r\n ***********************************\r\n *\r\n * Este programa implementa un robot controlado por bluetooth utilizando los comandos pre-definidos del programa\r\n * BTControl para Android (BTControl - 2014 Guimi - http:\/\/guimi.net)\r\n *\r\n * El programa requiere de un modulo Bluetooth HC-05 para la comunicacion\r\n *\r\n * El ciclo principal escucha las instrucciones recibidas por Bluetooth y si las reconoce las ejecuta\r\n *\r\n * Para DEBUG se debe configurar el modulo serial a 9600 baudios con &quot;Ambos NL &amp; CR&quot;\r\n *\r\n * 2014 - Guimi (http:\/\/guimi.net)\r\n *\r\n *\/\r\n\r\n\/\/ DEBUG\r\n\/\/----------\r\n#define DEBUG false \/\/ Indica si debemos realizar DEBUG mediante el puerto serie\r\n\r\n\r\n\/\/ LIBRERIAS\r\n\/\/----------\r\n#include &lt;SoftwareSerial.h&gt; \/\/Librer\u00eda que permite establecer comunicacion serie en pins diferentes al 0 y 1\r\n\r\n\r\n\/\/ CONSTANTES\r\n\/\/-----------\r\n#define BT_Rx 10 \/\/ Recepcion BT\r\n#define BT_Tx 11 \/\/ Transmision BT\r\n#define LED_ESTADO 13 \/\/ Pin del LED que marca el estado\r\n\r\n\r\n\/\/ VARIABLES\r\n\/\/----------\r\nint caracter; \/\/ Caracter recibido\r\n\r\n\r\n\/\/ MODULOS\r\n\/\/--------\r\nSoftwareSerial BT(BT_Tx,BT_Rx); \/\/ Inicializamos el BT, indicando los pines de Tx y Rx\r\n\r\n\r\n\/\/ FUNCION SETUP\r\n\/\/--------------\r\nvoid setup() {\r\n  \/\/ Definimos cada pin como entrada o salida\r\n  pinMode(LED_ESTADO,OUTPUT);\r\n\r\n  \/\/ Indicamos que aun no hemos iniciado\r\n  digitalWrite(LED_ESTADO, LOW);\r\n\r\n  \/\/ Esperamos a que este encendido el modulo BT\r\n  delay(500);\r\n  \/\/ Preparamos la comunicacion mediante el modulo BT\r\n  BT.begin(9600);\r\n  delay(500);\r\n  BT.flush();\r\n\r\n  \/\/ Preparamos la comunicacion mediante el puerto serie y el modulo BT\r\n  if (DEBUG) {\r\n    Serial.begin(9600);\r\n    \r\n    \/\/ Notificamos que estamos listos\r\n    Serial.write(&quot;Preparado:\\n&quot;);\r\n  }\r\n\r\n  \/\/ Indicamos el inicio\r\n  digitalWrite(LED_ESTADO, HIGH);\r\n\r\n}\r\n\r\n\r\n\/\/ FUNCION LOOP\r\n\/\/-------------\r\nvoid loop() {\r\n\r\n  \/\/ Si hay algo pendiente en el puerto Serial lo transmitimos\r\n  \/\/ de forma transparente al modulo BT (que lo envia directamente al aparato vinculado)\r\n  if (Serial.available()) {\r\n    \/\/ Escribimos en el puerto BT lo que leemos en el puerto serie\r\n    BT.write(Serial.read());\r\n  }\r\n\r\n\r\n  \/\/ Si hay algo pendiente en el puerto BT lo transmitimos\r\n  \/\/ de forma transparente al puerto serie y buscamos comandos conocidos\r\n  if (BT.available()) {\r\n    \/\/ Buscamos comandos conocidos\r\n    \/\/---------------------------- \r\n    \/\/ Leemos el puerto\r\n    caracter = BT.read();\r\n    \/\/ Escribimos en el puerto serie lo que leemos en el puerto BT\r\n    if (DEBUG) Serial.write(caracter);\r\n\r\n    switch (caracter) {\r\n      \/\/ CARACTER 0\r\n      \/\/------------------------------\r\n      case '0':\r\n        break;\r\n\r\n\r\n      \/\/ RUEDA DE CONTROL (MOVIMIENTO)\r\n      \/\/------------------------------\r\n      \/\/ Los ponemos los primeros porque necesitan la respuesta mas inmediata\r\n      case '1':\r\n        break;\r\n      case '2':\r\n        break;\r\n      case '3':\r\n        break;\r\n      case '4':\r\n        break;\r\n      case '5':\r\n        break;\r\n      case '6':\r\n        break;\r\n      case '7':\r\n        break;\r\n      case '8':\r\n        break;\r\n      case '9':\r\n        break;\r\n\r\n        \r\n      \/\/ BOTONES DE FUNCION (A-J)\r\n      \/\/------------------------------\r\n      case 'A':\r\n        break;\r\n      case 'B':\r\n        break;\r\n      case 'C':\r\n        break;\r\n      case 'D':\r\n        break;\r\n      case 'E':\r\n        break;\r\n      case 'F':\r\n        break;\r\n      case 'G':\r\n        break;\r\n      case 'H':\r\n        break;\r\n      case 'I':\r\n        break;\r\n      case 'J':\r\n        break;\r\n\r\n\r\n      \/\/ BOTONES PRIMO Y SIMILARES\r\n      \/\/------------------------------\r\n      case 'V':\r\n        break;\r\n      case 'W':\r\n        break;\r\n      case 'X':\r\n        break;\r\n      case 'Y':\r\n        break;\r\n      case 'Z':\r\n        break;\r\n\r\n    \r\n      default: \r\n        break;\r\n\r\n    }\r\n\r\n  }\r\n}\r\n<\/pre>\n<p><a href=\"\/imgs\/blog\/hiparco\/btcontrol\/BTControl.ino\">Descargar c\u00f3digo<\/a><\/p>\n<p><a href=\"#menu\">Ir al \u00edndice<\/a><\/p>\n<hr width=\"50%\">\n<a name=\"creditos\"><\/p>\n<h2>CR\u00c9DITOS<\/h2>\n<p><\/a><br \/>\n<a href=\"http:\/\/guimi.net\"><img decoding=\"async\" src=\"\/imgs\/blog\/hiparco\/btcontrol\/guimi.png\"><\/a><br \/>\nBTControl realizado por <a href=\"http:\/\/guimi.net\">G\u00fcimi<\/a><\/p>\n<p>Imagen de fondo (<a href=\"http:\/\/www.publicdomainpictures.net\/view-image.php?image=26031&#038;picture=light-wood-texture\">light_wood_texture<\/a>) de Petr Kratochvil.<\/p>\n<p><a href=\"http:\/\/www.primo.io\">Primo<\/a> realizado por <a href=\"http:\/\/solidlabs.co\/\">Solid Labs<\/a><\/p>\n<p><a href=\"#menu\">Ir al \u00edndice<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>BTCONTROL [ENGLISH VERSION] INTRODUCCI\u00d3N BTControl &#8211; PRIMO BTControl &#8211; MANDO CONECTAR ROBOT SOLUCI\u00d3N DE PROBLEMAS DESARROLLADORES PLANTILLA DE C\u00d3DIGO ARDUINO CR\u00c9DITOS Descargue BTControl INTRODUCCI\u00d3N BTControl permite enviar se\u00f1ales pre-definidas a un dispositivo conectado mediante Bluetooth. Su uso principal es para controlar robots realizados con Arduino y similares. \u00a1Y es software libre! (C\u00f3digo en GitHub). Tiene [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1734,"parent":1733,"menu_order":0,"comment_status":"open","ping_status":"open","template":"","meta":{"footnotes":""},"class_list":["post-1742","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"http:\/\/guimi.net\/blogs\/hiparco\/wp-json\/wp\/v2\/pages\/1742","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/guimi.net\/blogs\/hiparco\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/guimi.net\/blogs\/hiparco\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/guimi.net\/blogs\/hiparco\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/guimi.net\/blogs\/hiparco\/wp-json\/wp\/v2\/comments?post=1742"}],"version-history":[{"count":10,"href":"http:\/\/guimi.net\/blogs\/hiparco\/wp-json\/wp\/v2\/pages\/1742\/revisions"}],"predecessor-version":[{"id":1759,"href":"http:\/\/guimi.net\/blogs\/hiparco\/wp-json\/wp\/v2\/pages\/1742\/revisions\/1759"}],"up":[{"embeddable":true,"href":"http:\/\/guimi.net\/blogs\/hiparco\/wp-json\/wp\/v2\/pages\/1733"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/guimi.net\/blogs\/hiparco\/wp-json\/wp\/v2\/media\/1734"}],"wp:attachment":[{"href":"http:\/\/guimi.net\/blogs\/hiparco\/wp-json\/wp\/v2\/media?parent=1742"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}