Esta semana os enseñamos a crear un vehículo robot con Arduino a control remoto el cual controlaremos desde nuestro smartphone a través de conexión bluetooth. Este tutorial está pensado para gente totalmente principiante, que quiera aprender a crear proyectos desde cero con Arduino y con el que aprenderéis un montón de cosas (usar motores DC, conectar nuestro smartphone por bluetooth con Arduino, controlar LEDs y bocinas, etc).
El proyecto se ha creado usando un kit de inicialización de Arduino por un precio de tan solo 15 euros, el cual incluía la placa Arduino, la base del robot, los motores y sus ruedas y mucho más.
Como siempre, hemos creado una versión en vídeo en nuestro canal de Youtube. En el vídeo explicamos todo detalladamente, y podréis ver el resultado final en movimiento. También mostramos el montaje del robot en detalle. Os lo dejamos aquí abajo por si le queréis echar un ojo.
Componentes
Necesitaremos los siguientes componentes para el robot Arduino a control remoto:
- Kit Robot Arduino. En nuestro caso, hemos usado un kit de inicialización muy básico, el cual nos costó tan solo 15 euros. Este kit incluía lo siguiente:
- Placa Arduino UNO. Este será el cerebro de nuestro robot.
- Controlador de motores L298N. Necesario para controlar de forma electrónica el sentido de giro de los motores.
- Dos motores de corriente continua. Se encargarán de mover las ruedas del robot.
- Ruedas para el robot.
- Resistencias. En nuestro caso vamos a usar 2 resistencias de 220Ohm para encender un par de LEDs.
- Cables, para hacer las conexiones.
- Un porta pilas y 4 pilas AA. Para alimentar todo el circuito.
- Módulo bluetooth. Lo necesitaremos para conectar nuestro smartphone con la placa Arduino. En nuestro caso usamos el módulo bluetooth HC-08, pero cualquier módulo compatible con Arduino valdrá.
- Un placa de pruebas. Para hacer las conexiones más cómodamente y no tener que soldar los componentes, podemos usar una placa de pruebas, y pegarla o atornillarla a la base de nuestro robot.
- Opcionalmente, para darle un extra al robot, podemos añadir 2 LEDs para simular las luces de un vehículo y una bocina o buzzer, para reproducir sonidos.
Circuito
El circuito que usaremos es el siguiente:
Todo el circuito será alimentado con 4 pilas AA. Tanto la placa Arduino como el módulo controlador de motores L298N serán alimentados directamente por las 4 pilas, usando los pines Vin de cada uno de ellos. Ya que ambos pueden soportar tensiones de hasta 12V.
Por otro lado, el módulo bluetooth, tiene que ser alimentado con 5V, por ello, usaremos la salida de 5V que incluye la placa Arduino para alimentar el HC-08.
Además, conectaremos los dos motores al controlador de motores L298N, y usaremos los 4 pines llamados IN1, IN2, IN3 y IN4 para la comunicación con Arduino (conectados a los pines 7, 6, 5 y 4 en nuestro caso). Estos 4 pines se encargan de controlar el sentido de giro de los 2 motores que soporta.
El módulo también tiene 2 pines extra, ENA y ENB, los cuales nos permiten controlar la velocidad de giro de los motores. Sin embargo en nuestro caso, queremos que vayan siempre a la máxima velocidad, por lo tanto, usaremos los «jumpers» que vienen incluidos, para interconectar esos pines con los pines que tienen justo detrás. De este modo, le indicamos al módulo que vayan a la máxima velocidad posible (si no queda claro esta parte, os invito a ver el vídeo donde explico en detalle este punto).
Para la comunicación entre Arduino y el módulo bluetooth, necesitamos solo 2 pines. Uno de ellos se usará para transmitir datos y otro para recibir datos que vengan de Arduino. En este caso, los conectamos a los pines 2 y 3 de Arduino, tal como se muestra en el esquema de conexiones de arriba.
Adicionalmente, podemos añadir, de forma opcional un par de LEDs y una bocina. Estos irán conectados a los pines digitales 8, 9 y 10 de Arduino. Para asegurarnos de no quemar los LEDs, es recomendable usar una resistencia de 220Ohm o similar.
Código
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 | /* Gamepad module provides three different mode namely Digital, JoyStick and Accerleometer. You can reduce the size of library compiled by enabling only those modules that you want to use. For this first define CUSTOM_SETTINGS followed by defining INCLUDE_modulename. Explore more on: https://thestempedia.com/docs/dabble/game-pad-module/ */ #define CUSTOM_SETTINGS #define INCLUDE_GAMEPAD_MODULE #include <Dabble.h> //Variables int motorA_1 = 7; int motorA_2 = 6; int motorB_1 = 5; int motorB_2 = 4; int ledA = 8; int ledB = 9; int bocinaPin = 10; void setup(){ // put your setup code here, to run once: Serial.begin(250000); // make sure your Serial Monitor is also set at this baud rate. Dabble.begin(9600); //Enter baudrate of your bluetooth.Connect bluetooth on Bluetooth port present on evive. //pines de salida pinMode(motorA_1, OUTPUT); pinMode(motorA_2, OUTPUT); pinMode(motorB_1, OUTPUT); pinMode(motorB_2, OUTPUT); pinMode(ledA, OUTPUT); pinMode(ledB, OUTPUT); pinMode(bocinaPin, OUTPUT); } void loop() { Dabble.processInput(); if (GamePad.isUpPressed()){ Serial.print("Adelante"); adelante(); } else if (GamePad.isDownPressed()){ Serial.print("Atras"); atras(); } else if (GamePad.isLeftPressed()){ Serial.print("Izquierda"); izquierda(); } else if (GamePad.isRightPressed()){ Serial.print("Derecha"); derecha(); } else if(GamePad.isCirclePressed()){ Serial.print("Circulo"); luces_on(); } else if(GamePad.isSquarePressed()){ Serial.print("Cuadrado"); luces_off(); } else if(GamePad.isTrianglePressed()){ Serial.print("Triangulo"); bocina(); } else if(GamePad.isCrossPressed()){ Serial.print("Equis"); rafagas(); } else{ para(); } } void adelante(){ digitalWrite(motorA_1,HIGH); digitalWrite(motorA_2,LOW); digitalWrite(motorB_1,HIGH); digitalWrite(motorB_2,LOW); } void atras(){ digitalWrite(motorA_1,LOW); digitalWrite(motorA_2,HIGH); digitalWrite(motorB_1,LOW); digitalWrite(motorB_2,HIGH); } void derecha(){ digitalWrite(motorA_1,LOW); digitalWrite(motorA_2,HIGH); digitalWrite(motorB_1,HIGH); digitalWrite(motorB_2,LOW); } void izquierda(){ digitalWrite(motorA_1,HIGH); digitalWrite(motorA_2,LOW); digitalWrite(motorB_1,LOW); digitalWrite(motorB_2,HIGH); } void para(){ digitalWrite(motorA_1,LOW); digitalWrite(motorA_2,LOW); digitalWrite(motorB_1,LOW); digitalWrite(motorB_2,LOW); } void luces_on(){ digitalWrite(ledA, HIGH); digitalWrite(ledB, HIGH); } void luces_off(){ digitalWrite(ledA, LOW); digitalWrite(ledB, LOW); } void bocina(){ digitalWrite(bocinaPin, HIGH); delay(1000); digitalWrite(bocinaPin, LOW); } void rafagas(){ digitalWrite(ledA, HIGH); digitalWrite(ledB, HIGH); delay(300); digitalWrite(ledA, LOW); digitalWrite(ledB, LOW); delay(300); digitalWrite(ledA, HIGH); digitalWrite(ledB, HIGH); delay(300); digitalWrite(ledA, LOW); digitalWrite(ledB, LOW); delay(300); } |
El código de nuestro robot es bastante sencillo.
Definiremos los diferentes pines de salida que usaremos para controlar los motores, los LEDs y la bocina. Y a continuación inicializamos la comunicación con Dabble. Dabble es la aplicación que estaremos usando para controlar nuestro robot y hacer la comunicación entre el smartphone y la placa Arduino. Si os interesa, os dejo la web de github del proyecto Dabble, donde podréis encontrar más ejemplos de código para usar con su aplicación: https://github.com/STEMpedia/Dabble
La aplicación que necesitamos para controlar nuestro robot es la aplicación oficial de Dabble, os dejo los enlaces tanto para Android como para iOS:
Android: https://play.google.com/store/apps/details?id=io.dabbleapp
iOS: https://apps.apple.com/us/app/dabble-bluetooth-controller/id1472734455
En el código definimos una seria de funciones, las cuales usaremos para ordenar al robot ir adelante, atrás, girar, encender las luces, etc. En el vídeo explico un poco más en detalle el código.
Debéis aseguraros de instalar la librería Dabble.h en vuestro IDE de Arduino. Si no la tenéis instalada, podéis hacerlo desde el administrador de bibliotecas de Arduino.
Una vez instalada la librería, solo tendremos que cargar el código en Arduino y listo.
Conclusiones
El robot Arduino a control remoto, es un proyecto ideal para aquellos que se estén iniciando en el mundillo de Arduino, o incluso para aquellos que ya sean más expertos, y les apetezca crear su propio robot, ya que este tipo de proyectos se pueden ampliar enormemente, añadiendo funcionalidades extras y complejas al robot.
También es un proyecto muy interesante para hacerlo con niños, y así introducirlos en el mundo de la programación de robótica. Ya que aprenderán multitud de cosas (primeros pasos con Arduino, programación, control de motores, utilización de sensores, comunicación bluetooth, etc).
Además, como os mostramos, es un proyecto que puede hacerse con un presupuesto muy apretado, desde menos de 20 euros.
Desde luego es uno de los proyectos que más recomendamos hacer a todos los apasionados de la electrónica y la robótica, al tratarse de un proyecto muy divertido de hacer y con el que se aprende mucho.
Si os gustan este tipo de proyectos con Arduino, echadle un ojo a nuestra categoría Arduino de nuestro blog. Esperemos os haya gustado el proyecto, como siempre, gracias por leernos y ¡nos vemos en el siguiente proyecto!