Construye un Spybot controlado por Bluetooth con Arduino
Componentes y suministros
- Arduino UNO × 1
- Módulo Bluetooth HC‑06 × 1
- Proto Shield Arduino × 1 (o cualquier protoboard soldable con headers)
- Shield Adafruit Motor/Stepper/Servo V2 × 1
- Servo de rotación continua SM‑S4306R × 1
- Motor DC (genérico) × 4
- Neumático para motor × 4
- Cables de conexión (genéricos) × 8 (para motores)
- Portapilas 4×AA × 2
- Pilas AA × 8
- Teléfono móvil × 1 (usado Nokia Lumia 520)
- Soporte para móvil × 1
- Chasis personalizado × 1 (tabla de madera simple)
Aplicaciones y servicios en línea
- Johnny‑Five (framework JavaScript para robótica con Arduino)
Sobre el proyecto
Breve introducción
Este es un coche de cuatro ruedas controlable vía conexión Bluetooth. El coche puede sostener cualquier teléfono móvil que se use como cámara IP. Decidí hacer este robot con JavaScript usando un servidor web Node donde puedo monitorizar a dónde va el robot.
Puedes ver el circuito de las partes principales en la figura 1.

Tras arrancar el servidor obtengo una pantalla con una introducción sobre el control y una ventana para la vista de cámara (figura 2).

Y sí, este diseño es responsivo.
El chasis
En esta versión del bot decidí fabricar el chasis yo mismo. Si no tienes taladro o buscas una solución más fácil, puedes comprar una amplia variedad de carrocerías de coche de plástico.
Opté por hacer mi propio chasis y no fue tan fácil como parece. La regla más importante es que debes colocar las ruedas lo más cerca posible entre sí si quieres usar dirección diferencial para girar. Puedes leer los errores principales y reglas básicas de física en: enlace.
Otro reto fue cómo fijar los motores DC al chasis. En mi caso no tenía piezas especiales, así que usé bridas (150/3,5). Para fijar bien las ruedas tuve que taladrar los agujeros lo más precisos posible y usar 2 bridas por motor. Desafortunadamente hay posibilidad de que los motores no queden lo suficientemente rectos y el coche se desvíe un poco a izquierda o derecha al ordenar adelante/atrás.
Las baterías
Para alimentar las placas y los motores decidí usar una única fuente de alimentación DC. El chasis no tenía espacio para un portapilas de 8×AA, así que tuve que personalizar: uní dos portapilas de 4×AA con 2 tornillos entre sí, taladrando el plástico.
Alimentación
En mi caso alimento la placa Arduino Uno con 8 pilas AA recargables. Esto da potencia suficiente para el shield de motores también. Hay un jumper en este shield que es extraíble, así que el shield no recibe potencia del Arduino. En ese caso puedes alimentar el shield por separado usando los pines de potencia del mismo. Puedes leer sobre diferentes opciones de alimentación en: enlace.
Conexión inalámbrica
Usé un módulo Bluetooth HC‑06 para establecer conexión entre el coche y mi computadora. Quería usar la menor cantidad de cables posible, así que decidí construir un shield Arduino personalizado colocando el módulo Bluetooth en un proto shield vacío, haciendo el cableado bajo el shield y soldando headers para el mecanismo de acoplamiento correcto. Puedes ver el resultado en la figura 3 y 4.


Lo bueno es que puedes desacoplar el módulo Bluetooth del shield en cualquier momento porque no está soldado a la placa.
Para configurar el módulo Bluetooth, sigue las instrucciones de: enlace.
Movimiento
El robot puede moverse adelante, atrás y girar usando dirección diferencial. El soporte de la cámara va acoplado a un servo de rotación continua para poder mirar alrededor con el teléfono sin mover el coche. Puedes ver una breve demostración en el video.
Teléfono móvil
Usé un Nokia Lumia 520 y la aplicación Win IP Camera, disponible en la tienda: enlace.
Sobre el código
Como desarrollador JavaScript decidí crear un servidor web Node para la página de control y usar librerías modernas para la apariencia y sintaxis. Puedes ver la lista completa en mi GitHub y la siguiente sección.
Opté por modularización tanto en frontend como backend. Aquí está el punto de entrada de la aplicación:
var boardModule = require('./src/boardModule'),
servoModule = require('./src/servoModule'),
motorModule = require('./src/motorModule');
boardModule.initBoard().then(function() {
motorModule.initMotors();
servoModule.initServo();
});
En el frontend también uso separación por módulos:
import {moveWheels, stopWheels} from './wheelsControl';
import {moveServo, stopServo} from './servoControl';
document.onkeydown = checkKeyDown;
document.onkeyup = checkKeyUp;
function checkKeyDown(e) {
moveWheels(e.keyCode);
moveServo(e.keyCode);
}
function checkKeyUp(e) {
stopWheels(e.keyCode);
stopServo(e.keyCode);
}
Para la base de código completa consulta mi repositorio GitHub arriba.
Librerías de software
- express.js – para mejorar nuestra aplicación Node.js
- johnny‑five – API JavaScript para controlar Arduino
- socket.io – para websockets y comunicación entre backend y frontend
- susy – para crear layout y diseño responsivo
- google material design – para elementos de material design
- gulpJS – para automatización de tareas
- BabelJS – para transpilar ECMAScript 6
- Browserify – para soporte de módulos
Últimas palabras
Soy principiante en este mundo IoT y este es mi primer proyecto. No pretendo haber usado soluciones óptimas, pero espero que encuentres información útil en esta guía.
Código
Repositorio GitHub: https://github.com/dominikfilkus/arduino-spybot-V2
Esquemáticos
arduino-spybot.fzz
Proceso de manufactura
- Guía Profesional de Animación Bitmap en Pantalla Táctil ILI9341 2.4″ con Shield para Arduino
- Sistema de Iluminación DMX Controlado por Web – Controlador Maestro Arduino
- FlickMote: Mando IR por gestos para Smart Home
- TV‑B‑Gone DIY con Arduino: Mando universal para apagar cualquier TV
- Construye un Reloj Maestro LED Personalizado con Alarma – Visible desde 12 Metros
- Reloj HSV: Reloj Vibrante y Personalizable para Entusiastas de Arduino
- Vehículo Controlado por Android con Raspberry Pi, Arduino y Motor Shield: Guía Completa
- Find Me: Localizador Inteligente de Objetos con Arduino y Bluetooth
- Soluciones de Alimentación Optimizadas para Proyectos Arduino
- Tres en raya con Arduino, matriz LED MAX7219 y carcasa de cartón
- Construye un Robot Cuadrúpedo Inteligente con Arduino: Guía Paso a Paso