{"id":133,"date":"2013-03-24T17:58:52","date_gmt":"2013-03-24T16:58:52","guid":{"rendered":"http:\/\/pepechorva.com\/wordPress\/?p=133"},"modified":"2020-03-29T01:55:07","modified_gmt":"2020-03-29T00:55:07","slug":"ardutanque","status":"publish","type":"post","link":"https:\/\/pepechorva.com\/myblog\/ardutanque\/","title":{"rendered":"Ardutanque v1.0"},"content":{"rendered":"<p>Despu\u00e9s de un tiempo sin publicar, me he decidido a terminar la primera versi\u00f3n del ardutanque. Se trata de un control rudimentario, en plan R\/C pero por bluetooth desde un dispositivo Android.<!--more--><\/p>\n<p>A partir de los posts anteriores, donde explico c\u00f3mo montar el tanque y c\u00f3mo controlar los motores, he seguido desarrollando el proyecto, en el cual, faltaba un elemento esencial, el control.<\/p>\n<p>\u00c9ste ha sido posible gracias a una aplicaci\u00f3n para m\u00f3vil que encontr\u00e9 hurgando por el playStore, la cual ten\u00eda implemetado el control en 8 direcciones de un coche, mas encendido\/apagado de luces y control de la velocidad del mismo. La aplicaci\u00f3n es y permite el control tanto con botones (como un mando de consola) o con los aceler\u00f3metros del m\u00f3vil.<br \/>\nLa aplicaci\u00f3n en cuesti\u00f3n se llama <a title=\"Bluetooth RC Controller\" href=\"https:\/\/play.google.com\/store\/apps\/details?id=braulio.calle.bluetoothRCcontroller\" target=\"_blank\" rel=\"noopener noreferrer\">Bluetooth RC Controller<\/a><\/p>\n<figure id=\"attachment_143\" aria-describedby=\"caption-attachment-143\" style=\"width: 290px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/pepechorva.com\/myblog\/wp-content\/uploads\/2013\/03\/unnamed.jpg\"><img fetchpriority=\"high\" decoding=\"async\" class=\"size-medium wp-image-143\" src=\"http:\/\/pepechorva.com\/myblog\/wp-content\/uploads\/2013\/03\/unnamed-300x180.jpg\" alt=\"Aplicaci\u00f3n de Andico para el control de un coche r\/c mediante bluetooth con android y arduino\" width=\"300\" height=\"180\" srcset=\"https:\/\/pepechorva.com\/myblog\/wp-content\/uploads\/2013\/03\/unnamed-300x180.jpg 300w, https:\/\/pepechorva.com\/myblog\/wp-content\/uploads\/2013\/03\/unnamed.jpg 383w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-143\" class=\"wp-caption-text\">Aplicaci\u00f3n de Andico para el control de un coche r\/c mediante bluetooth con android y arduino<\/figcaption><\/figure>\n<p>El tanque, en su primera versi\u00f3n, no est\u00e1 cargado de sensores, l\u00e1ser\u2026 simplemente lleva los motores, un driver L298, un Arduino UNO y un m\u00f3dulo bluetooth. Vamos a ver c\u00f3mo est\u00e1 montado en &nbsp;un esquema:<\/p>\n<figure id=\"attachment_135\" aria-describedby=\"caption-attachment-135\" style=\"width: 290px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/pepechorva.com\/myblog\/wp-content\/uploads\/2013\/03\/tanque_bb-e1364144181164.png\"><img decoding=\"async\" class=\"wp-image-135 size-medium\" src=\"http:\/\/pepechorva.com\/myblog\/wp-content\/uploads\/2013\/03\/tanque_bb-e1364144181164-300x118.png\" alt=\"Esquema del circuito de control del tanque\" width=\"300\" height=\"118\" srcset=\"https:\/\/pepechorva.com\/myblog\/wp-content\/uploads\/2013\/03\/tanque_bb-e1364144181164-300x118.png 300w, https:\/\/pepechorva.com\/myblog\/wp-content\/uploads\/2013\/03\/tanque_bb-e1364144181164-768x301.png 768w, https:\/\/pepechorva.com\/myblog\/wp-content\/uploads\/2013\/03\/tanque_bb-e1364144181164.png 1000w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-135\" class=\"wp-caption-text\">Esquema del circuito de control del tanque<\/figcaption><\/figure>\n<p>La comunicaci\u00f3n por bluetooth desde el movil es sencilla, el m\u00f3vil env\u00eda un caracter por cada bot\u00f3n pulsado, aqu\u00ed podemos ver los comandos utilizados:<\/p>\n<ul>\n<li><span class=\"Apple-style-span\" style=\"line-height: 15px;\">Forward -&gt; F<\/span><\/li>\n<li>Back -&gt; B<\/li>\n<li>Left -&gt; L<\/li>\n<li>Right -&gt; R<\/li>\n<li>Forward Left -&gt; G<\/li>\n<li>Forward Right -&gt;I<\/li>\n<li>Back Left -&gt; H<\/li>\n<li>Back Right -&gt; J<\/li>\n<li>Stop -&gt; S<\/li>\n<li>Front Lights On -&gt; W (upper case)<\/li>\n<li>Front Lights Off -&gt; w (lower case)<\/li>\n<li>Back Lights On -&gt; U (upper case)<\/li>\n<li>Back Lights Off -&gt; u (lower case)<\/li>\n<li>Speed 0 -&gt; 0 (Zero)<\/li>\n<li>Speed 10 -&gt; 1<\/li>\n<li>Speed 20 -&gt; 2<\/li>\n<li>Speed 30 -&gt; 3<\/li>\n<li>Speed 40 -&gt; 4<\/li>\n<li>Speed 50 -&gt; 5<\/li>\n<li>Speed 60 -&gt; 6<\/li>\n<li>Speed 70 -&gt; 7<\/li>\n<li>Speed 80 -&gt; 8<\/li>\n<li>Speed 90 -&gt; 9<\/li>\n<li>Speed 100 -&gt; q<\/li>\n<\/ul>\n<p>Estos datos se recogen en el arduino por medio de la librer\u00eda SoftSerial:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\">if (mySerial.available()){\nordenRecibida = mySerial.read();\nSerial.println(ordenRecibida);\n}\n<\/pre>\n<p><code><\/code><\/p>\n<p><code><\/code>Para controlar las orugas del tanque, he creado dos librer\u00edas (nota mental: deber\u00eda completarlas y liberarlas) para el control de un motor y del tanque (con 2 motores).<\/p>\n<p>La primera es sencilla, se basa en el control de un motor, aqui tenemos la declaraci\u00f3n de la clase motor:<code><br \/>\n<\/code><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\">#ifndef Motor_h\n#define Motor_h\n\nclass Motor{\nprivate:\nint pinAvance;\nint pinRetroceso;\nint pinVelocidad;\n\nvoid ajustarVelocidad(int velocidad);\n\npublic:\nMotor();\nMotor(int pinAvance, int pinRetroceso, int pinVelocidad);\n\n\/\/setters\nvoid setMotor(int pinAvance, int pinRetroceso, int pinVelocidad);\n\nvoid avance(int velocidad);\nvoid retroceso(int velocidad);\nvoid paro();\n};\n#endif\n<\/pre>\n<p><code><\/code><\/p>\n<p><code><\/code><\/p>\n<p>Es decir, un motor s\u00f3lo puede estar parado, girando en un sentido o en sentido contrario.<\/p>\n<p>Pero un tanque tiene dos motores, cada uno impulsa a una oruga, y adem\u00e1s quiero que gire. Bueno, esta parte ya no depende del motor, sino del objeto tanque. En \u00e9l, introduciremos los dos objetos motor y podremos realizar giros, avances, control de velocidad\u2026<\/p>\n<p>Aqu\u00ed est\u00e1 la declaraci\u00f3n de la clase tanque:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\">#ifndef Tanque_H\n#define Tanque_H\n#include \"Motor.h\"\n\nclass Tanque {\nprivate:\nMotor motorIzquierdo;\nMotor motorDerecho;\n\npublic:\nTanque();\nTanque(int pinAvanceMIz, int pinRetrocesoMIz, int pinVelocidadMIz, int pinAvanceMDer, int pinRetrocesoMDer, int pinVelocidadMDer );\n\nvoid setMotorIzquierdo(int pinAvance, int pinRetroceso, int pinVelocidad);\nvoid setMotorDerecho(int pinAvance, int pinRetroceso, int pinVelocidad);\n\nvoid avance(int velocidad);\nvoid retroceso(int velocidad);\nvoid giroIzquierda(int velocidad);\nvoid giroDerecha(int velocidad);\n\nvoid adelanteIzquierda(int velocidad);\nvoid atrasIzquierda(int velocidad);\nvoid adelanteDerecha(int velocidad);\nvoid atrasDerecha(int velocidad);\n\nvoid parada();\n};\n#endif<\/pre>\n<p><code><\/code><\/p>\n<p>Este c\u00f3digo y el .ino de control b\u00e1sico est\u00e1 disponible en <a title=\"tank controller\" href=\"https:\/\/github.com\/pepechorva\/tank_controller\" target=\"_blank\" rel=\"noopener noreferrer\">mi repositorio de Github. <\/a><\/p>\n<p>Os dejo, que jugar con el tanque desde el m\u00f3vil vicia \ud83d\ude42<\/p>\n<figure id=\"attachment_139\" aria-describedby=\"caption-attachment-139\" style=\"width: 290px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/pepechorva.com\/myblog\/wp-content\/uploads\/2013\/03\/CAM00159.jpg\"><img decoding=\"async\" class=\"size-medium wp-image-139\" src=\"http:\/\/pepechorva.com\/myblog\/wp-content\/uploads\/2013\/03\/CAM00159-300x225.jpg\" alt=\"El ardutanque correteando alegremente por el pasillo de casa\" width=\"300\" height=\"225\" srcset=\"https:\/\/pepechorva.com\/myblog\/wp-content\/uploads\/2013\/03\/CAM00159-300x225.jpg 300w, https:\/\/pepechorva.com\/myblog\/wp-content\/uploads\/2013\/03\/CAM00159-768x576.jpg 768w, https:\/\/pepechorva.com\/myblog\/wp-content\/uploads\/2013\/03\/CAM00159-1024x768.jpg 1024w, https:\/\/pepechorva.com\/myblog\/wp-content\/uploads\/2013\/03\/CAM00159-1200x900.jpg 1200w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-139\" class=\"wp-caption-text\">El ardutanque correteando alegremente por el pasillo de casa<\/figcaption><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Despu\u00e9s de un tiempo sin publicar, me he decidido a terminar la primera versi\u00f3n del ardutanque. Se trata de un control rudimentario, en plan R\/C pero por bluetooth desde un dispositivo Android.<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"image","meta":{"footnotes":""},"categories":[17,18,2,8,9,12],"tags":[26,27,29,31,34],"class_list":["post-133","post","type-post","status-publish","format-image","hentry","category-cat-arduino","category-cat-codigoc","category-cat-electronica","category-cat-codigo","category-cat-proyectos","category-cat-no-categoria","tag-arduino","tag-ardutanque","tag-diy","tag-electronica","tag-s5-codigo","post_format-post-format-image"],"_links":{"self":[{"href":"https:\/\/pepechorva.com\/myblog\/wp-json\/wp\/v2\/posts\/133","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pepechorva.com\/myblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pepechorva.com\/myblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pepechorva.com\/myblog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/pepechorva.com\/myblog\/wp-json\/wp\/v2\/comments?post=133"}],"version-history":[{"count":5,"href":"https:\/\/pepechorva.com\/myblog\/wp-json\/wp\/v2\/posts\/133\/revisions"}],"predecessor-version":[{"id":400,"href":"https:\/\/pepechorva.com\/myblog\/wp-json\/wp\/v2\/posts\/133\/revisions\/400"}],"wp:attachment":[{"href":"https:\/\/pepechorva.com\/myblog\/wp-json\/wp\/v2\/media?parent=133"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pepechorva.com\/myblog\/wp-json\/wp\/v2\/categories?post=133"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pepechorva.com\/myblog\/wp-json\/wp\/v2\/tags?post=133"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}