Robot Móvil Controlado por Node.js en Tiempo Real vía Bluetooth
Componentes y Suministros
| Arduino UNO | 1 |
| Driver Motor L298N (Dual H-Bridge) | 1 |
| Módulo Bluetooth HC-05 | 1 |
| Cables jumpers | Varios |
| Batería 9V | 2 |
| Motores DC 12V con reductor | 2 |
| Chasis 2 ruedas + rueda loca | 1 |
Sobre el Proyecto
Idea y Objetivo
Node.js destaca en aplicaciones tiempo real con WebSockets. Aplicando ese concepto a IoT, construí un rover que se comunica con un servidor Node.js vía Bluetooth, y se controla desde una página web móvil servida por ese servidor.
Requisitos Previos
- Conocimientos básicos de Node.js, sockets y driver L298N.
- PC con Node.js instalado (versión 11.15 recomendada para compatibilidad con
node-gyp).
Paso 1: Construir el Rover

Usa un kit chasis 2WD (fácil de conseguir). Arduino UNO y L298N van encima, cada uno alimentado por su batería 9V independiente. El Arduino alimenta el HC-05.
Esquema de Conexiones

- L298N: Alimentado por batería 9V. Salidas a motores A y B. No quites el jumper del regulador 5V. Advertencia: >12V daña el regulador 5V integrado.
- Arduino UNO: Alimentado por otra batería 9V (Vin + GND común).
- HC-05: VCC → 5V Arduino, GND → GND. TXD → RX (Pin 0), RXD → TX (Pin 1).
- Control L298N: EN1, EN2 → pines PWM Arduino. IN1-IN4 → pines digitales Arduino.
Flujo de Datos

- Usuario accede a web (ej.
192.168.x.x:8080). - Clic en botón → evento Socket.io → Servidor Node.
- Servidor envía comando por Bluetooth al HC-05.
- HC-05 → Serie → Arduino UNO.
- Arduino controla L298N.
Paso 2: Configurar Servidor Node.js
Instala paquetes:
npm install express socket.io ejs node-bluetooth node-gyp
Crea servidor Express + Socket.io + página web (EJS) con botones de control. Cada clic emite evento al servidor, que escribe al puerto serie Bluetooth. Ver código en GitHub.

Paso 3: Código Arduino
Comunicación serie simple: el servidor envía cadenas terminadas en 'T' (ej. "forwardT"). Arduino lee hasta 'T' y actúa.
const int en1=9, en2=3, inp1=2, inp2=4, inp3=7, inp4=8;
char charRead; String inputString="";
void setup() {
Serial.begin(9600);
pinMode(en1,OUTPUT); pinMode(en2,OUTPUT);
pinMode(inp1,OUTPUT); pinMode(inp2,OUTPUT);
pinMode(inp3,OUTPUT); pinMode(inp4,OUTPUT);
}
void loop() {
if(Serial.available()){
charRead=Serial.read();
if(charRead!='T') inputString+=charRead;
else{
if(inputString=="forward"){ /* adelante */ }
else if(inputString=="backward"){ /* atrás */ }
else if(inputString=="fleft"){ /* izq adelante */ }
else if(inputString=="fright"){ /* der adelante */ }
else if(inputString=="bleft"){ /* izq atrás */ }
else if(inputString=="bright"){ /* der atrás */ }
else if(inputString=="break"){ /* freno */ }
else if(inputString=="maxspeed"){ analogWrite(en1,250); analogWrite(en2,250); }
else if(inputString=="medspeed"){ analogWrite(en1,180); analogWrite(en2,180); }
else if(inputString=="lowspeed"){ analogWrite(en1,90); analogWrite(en2,90); }
else{ /* stop */ }
inputString="";
}
}
}
Mejoras Futuras
- Control por voz.
- Evitación de obstáculos.
- Base de datos con estadísticas (distancia, velocidad media/máx).
- Sensores temperatura, luz, humedad con registro periódico.
Próxima versión: "Voice Controlled Rover using Mobile".
Proceso de manufactura
- Monitorización en tiempo real de temperatura y humedad vía web en Raspberry Pi 4
- Ventilador controlado por temperatura: sistema DIY con relé para refrigeración de muebles multimedia
- De Luz Solar de $4 a Nodo Sensor Inalámbrico Inteligente: MSP430 + nRF24L01+ para Monitorización de Jardín
- Convierte tu Raspberry Pi 4 en un servidor web y crea tu propio sitio
- Transforme su Coche RC en un Vehículo Controlado por Bluetooth
- Transforma un viejo coche RC en un vehículo controlado por joystick con Arduino
- Coche RC Wi‑Fi con carga inalámbrica Qi: Kit de coche teledirigido sin cables
- Brazo Robótico de 6 Grados de Libertad Controlado por Nunchuk con Arduino
- Construye un Vehículo Robótico Inalámbrico Controlado por Sensor IR
- Soluciones eficientes de servidor web para microcontroladores con recursos limitados
- Despliegue de un servidor web con TLS en un ESP8266 de 3 $ en menos de 30 minutos